Faire de la musique avec un lecteur floppy et un Arduino

Bonjour à tous, aujourd'hui est un grand jour puis-ce que c'est notre premier tuto sur l'Arduino !

Comme d'habitude, une petite démo :

Eh oui, nous allons faire de la musique avec un lecteur de disquette (floppy en anglais) !

1. Introduction

Pour ceux qui auraient vécu dans une grotte ces dernières années, ce hack à fait un gros buz il y a maintenant quelques années. J'ai longtemps été frustré de ne pas pouvoir essayer mais ce temps est révolu car j'ai en ma possession : un Arduino Uno !

Eh c'est quoi un Arduino ?

C'est une plateforme open-source d'électronique programmée qui est basée sur une simple carte à microcontrôleur (de la famille AVR) et un logiciel pour écrire/compiler/transférer les programmes vers la carte à microcontrôleur.
Uno est une des nombreuses déclinaisons de Arduino, il en existe beaucoup d'autres, comme Leonardo, Due, Esplora, Mini et j'en passe.

Arduino Uno
Arduino Uno

Derrière ce nom se cache toute une communauté active, donc vous n'aurez aucun mal à trouver de la documentation ou même de l'aide sur le net ;)

En somme, Arduino = 1 carte à microcontrôleur + 1 outil de développement + 1 communauté active. Le logiciel et le matériel sont open-source.

Ouais ok, mais tu vas pas nous faire croire que c'est le lecteur floppy qui fait du son quand même ?

Eh bien si ! c'est le lecteur disquette et rien d'autre qui fait de la "musique".

Comme toujours, le principe est relativement simple à comprendre.
Ce qui produit le son typique des lecteurs disquette est le moteur servant à déplacer la tête de lecture. Lorsque la tête se déplace d'avant en arrière (et inversement) de manière très rapide, le moteur entre en résonance et créé une fréquence audible.
Le but ici est de contrôler cette fréquence. Pour cela, il suffit de contrôler la durée pendant laquelle la tête de lecture avance et recule. C'est aussi simple que ça.
Après, c'est par l'expérience que l'on détermine les "notes" jouées par le lecteur disquettes.

Pour ce tutoriel, vous allez avoir besoin de :

  • 1 Arduino et son câble USB
  • Au moins 1 lecteur disquettes (si vous en avez plusieurs c'est tant mieux)
  • Du fils à strap
  • Si possible, la nappe de votre FDD, sinon les fils suffiront
  • 1 alimentation de PC (ou de quoi alimenter votre FDD, par exemple une alimentation de labo)

Allez, place à la pratique !

2. Partie hardware

Tout d'abord, nous allons commencer par comprendre à quoi correspondent les broches au dos du FDD.

Floppy pinout Table des corresponsdances

Voici les signaux qui vont nous intéresser :

  • /DRVS(A/B) : sert à sélectionner le lecteur A ou B
  • /DIR : défini le sens dans lequel le moteur va tourner
  • /STEP : fait avancer (ou reculer selon /DIR) le moteur d'un "pas" (il s'agit en effet d'un moteur pas à pas)

Le / devant le nom des signaux signifie qu'ils sont actifs au niveau logique bas (0), pour les activer il faudra donc les relier à la masse.

Comme on peut le voir sur le schéma, les pin supérieurs sont les pins PAIRES et les pins inférieurs sont les pins IMPAIRES. Ces dernières ne sont autres que les masses.

De manière générale, les ordinateur ont un à deux lecteurs floppy, A et B. Pour sélectionner le FDD A, il faut relier les broches 13 et 14 (/DRVSA), pour sélectionner le FDD B, il faut relier les broches 11 et 12 (/DRVSB). Pour ma part j'ai choisi le B.

Sélection du lecteur disquettes

Pour relier les broches, je vous conseil d'utiliser un jumper, c'est plus propre et moins galère que de souder ;)

A ce stade, lorsque vous alimentez votre lecteur disquette, la LED en façade devrait s'allumer, signe que votre FDD est activé.

Alimentation du lecteur floppy LED allumée en façace du lecteur floppy

Petit rappel sur les alimentations de PC : pour les démarrer, il faut relier le fil VERT du connecteur 24 broches à un fil NOIR (une masse).

Maintenant que votre FDD est activé, vous pouvez vérifier les commandes moteur. Pour cela rien de plus simple :
faites se toucher les broches 19 et 20 (signal /STEP) pour faire bouger votre moteur dans un sens. Recommencez cette fois-ci en ayant également relié les broches 17 et 18 (signal /DIR) et votre moteur se déplace dans l'autre sens.
Si rien ne se passe, vous pouvez changer de FDD, il est mort :P

FDD pinout

Maintenant que vous êtes sûr que votre lecteur disquettes fonctionne, il ne reste plus qu'à le relier aux entrées/sorties de l'Arduino comme ceci :

Cablage du FDD à l'Arduino

Si vous souhaitez brancher un second lecteur floppy, il vous suffira de relier la broche 18 (/DIR) à la borne 5 de l'Arduino et la broche 20 (/STEP) à la borne 4 de l'Arduino. Pour un troisième, 18 vers 7 et 20 vers 6 ... etc

Photo du câblage floppy vers Arduino

3. Partie software

3.1 Téléchargement des sources et installation des librairies

Nous arrivons maintenant à la partie que je qualifierais de chiante.

Pour la suite de ce tuto, je suppose que vous utilisez la version 8 de Java et que vous utiliez Windows.

Tout d'abord il va falloir télécharger quelques trucs :

Commencez par installer l'Arduino software. Ensuite installez le JDK 8u131 with NetBeans 8.2. Clonez ou télécharger MoppyClassic et gardez ça de côté pour le moment.

Ensuite et après téléchargé la librarie TimerOne pour Arduino, décompessez l'archive puis rendez-vous dans le dossier créé et copiez son contenu. Rendez vous ensuite dans le dossier Arduino/librairies situé généralement dans Mes documents, créez un dossier nommé TimerOne et collez-y le tout.

Copie des fichiers librairies Arduino

Voilà, les librairies Arduino sont installées et prêtes à l'emploi.

3.2 Première connexion entre l'Arduino et votre ordinateur

Ici, je pars du principe que vous connectez votre Arduino à votre PC pour la première fois et donc que les drivers de ce dernier ne sont pas installés. Si tel n'est pas le cas, vous pouvez passer directement à la section suivante.

La procédure d'installation décrite ici n'est valable que pour Windows. A vous de l'adapter à votre OS.

Commencez par brancher votre Arduino à votre PC à l'aide du câble USB. Là Windows devrait vous dire qu'il n'a pas réussi à identifier le périphérique USB. Rendez vous dans le gestionnaire de périphriques. Là vous voyez que l'Arduino est effectivement en périphérique inconnu.

Périphérique inconnu

Double cliquez dessus et faites Mettre à jour le pilote puis Rechercher un pilote sur mon Ordinateur. Là, sélectionnez le dossier où vous avez installé (ou extrait) Arduino Software et laissez-le chercher. Normalement, Windows doit trouver le driver.

Une fois les drivers installés, notez sur quel port votre Arduino est connecté.

Arduino connecté COM3

Maintenant, nous allons établir une connexion entre le PC et l'Arduino, pour celà, lancez l'Arduino software.
Ensuite, vérifiez que le bon port est sélectioné : Outils → Port série → COMx

Connection Arduino port série

Maintenant, nous allons charger un programme sur notre Arduino : Fichier → Exemples → 01.Basics → Blink.
Ensuite cliquez sur le petit check vert et enfin sur la flèche verte "téléverser" .

Si tout se passe bien, vous devriez voir la LED notée L de l'Arduino clignoter à 1Hz, signe que nous avons bien réussi à charger un programme depuis l'ordinateur vers l'Arduino.

3.3 Compilation et exécution du code

Nous sommes maintenant fin prêts à charger le code dans notre Arduino ! Le code source se trouve dans l'archive Moppy que vous avez téléchargé de github: Arduino/Moppy/Moppy.ino.

Chargez-le dans votre Arduino à l'aide de l'Arduino software comme nous venons de le faire avec le fichier d'exemple.
Ensuite, ouvrez NetBeans et chargez le projet MoppyDesk (File > Open Project) qui se trouve dans l'archive Moppy, dans Java/MoppyDesk.
Cliquez sur la flèche verte en haut pour exécuter le projet.

Dans la fenêtre qui s'ouvre, sélectionnez le type d'input, ici MIDfile. Chargez votre fichier midi en cliquant sur Load sequence. Il y en a fichiers dans le dossier samplesongs mais vous pouvez en télécharger d'autres ou mieux, en composer vous-même !

Ensuite, cochez autant de de voies que vous avez de lecteurs floppy et sélectionnez le port sur lequel votre Arduino est connecté. Cliquez maintenant sur Connect.

Il ne reste plus qu'à cliquer sur Start et la magie opère !

Fenêtre NetBeans

Si vous avez suivi les étapes sans rien zapper, ça devrait fonctionner tout seul.

Certain lecteurs ont besoin d'avoir une disquette d'insérée pour fonctionner, à vous de voir si le vôtre en a besoin ou pas. Certaines musiques passent mieux que d'autres. Il m'est arrivé de n'avoir aucun son avec certaines musiques, il suffit d'en changer.

Si comme moi vous n'avez qu'un seul lecteur disquette, vous pouvez essayer de le brancher sur différentes voies de l'Arduino, pour certains morceaux vous obtiendrez un meilleur rendu.

Sources: [1] [2] [3]

Vos réactions (0) :

  1. Sois le/la premier(e) à commenter cet article !
Tu as besoin d'aide ? Utilise le Forum plutôt que les commentaires.

Un commentaire ?

* Champs obligatoires
Utilisation des données

Afin d'améliorer ton expérience utilisateur, nous utilisons des cookies 🍪