Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Bienvenue à tous, J'aimerais vous montrer ma propre interface numérique musicale. Je l'ai fait pendant mon diplôme technique en son, c'est mon mémoire de recherche. Pour commencer, je me suis demandé comment puis-je composer de la musique sans DAW, avec des fournitures recyclées et possibilité de jouer en standalone.
Dans ce instructable, je vais vous apprendre comment utiliser la communication série pour envoyer/recevoir des informations de capteurs (analogiques et numériques) d'Arduino à Raspberry pi vers le logiciel puredata pour déclencher un son.
Les matériaux requis sont:
x1 Framboise PI3
x1 Boîter de protection PI3
x1 Micro SD (32G)
x1 Arduino UNO
x1 Capteur IR Sharp GP2Y0E02B
x1 planche à pain
x1 Jauge de test de plaque (0,2)
x28 Résistance 10MΩ
x2 Résistance 1.8kΩ
x1 Résistance 10kΩ
x20 Cosses Mâle/Femelle
x1 Support de soudure
x1 bobine d'étain (1 mètre)
x1 fer à souder
x25 Sangles Flexibles Mâle/Mâle
Étape 1: Capteurs
J'ai utilisé 4 piézoélectriques provenant de la télécommande Harmonix XBOX 360 "Guitar Hero".
J'ai utilisé un capteur IR Sharp GP2Y0E02B. Pour tous ces capteurs, j'ai fait un assemblage de pull-up pour un fonctionnement efficace…
Ainsi, empiriquement, j'ai trouvé une valeur de résistance au capteur de bouton et au capteur IR. Cependant, j'ai testé le piézoélectrique afin de connaître la pleine échelle de celui-ci, et la valeur de résistance fixe requise et appliquée pour les 4 capteurs analogiques.
Étape 2: Montage de traction
Après avoir testé le piézoélectrique avec un générateur de tension, j'ai fixé la valeur de la résistance à 7MΩ.
Le pull-up de l'ensemble de résistance du bouton était de 10 kΩ.
Pour le capteur IR, j'ai utilisé deux résistances de 1, 8kΩ entre respectivement la tension d'alimentation et SDA (données) et SCL (horloge).
Soyez prudent car les valeurs de ces résistances sont pour RTX Arduino UNO; quelque chose à savoir sur l'entrée d'impédance Arduino: 10MΩ.
Vous pouvez voir le montage du pull-up sur la dernière photo de cette étape; J'ai fixé les straps piézoélectrique en 0 1 2 3 pins sur UNO, bouton strap en 2 pin digital mais communique la valeur sur 6 pin sur UNO et capteur IR strap en 4 5 pins sur UNO, l'ensemble des entrées analogiques de l'Arduino Uno.
Étape 3: Coder Arduino
Pour m'assurer que l'opération était efficace, j'ai testé envoyer/recevoir des informations de capteurs vers Arduino.
J'ai mis des fichiers en description mais vous pouvez les trouver dans la section exemples de la programmation Arduino Genuino, sauf capteur IR car il n'est pas complet, j'ai modifié quelques informations dans la section "définir" comme "shift" et j'ai changé le calcul de mesure pour qu'il soit régulier dans les variations de distance. Vous avez probablement vu "Wire" dans le code du capteur IR. En effet j'ai utilisé le protocole I2C pour communiquer. Je vous invite à voir le protocole I2C, très intéressant, vous pouvez utiliser celui-ci pour transmettre en temps réel tous les capteurs numériques que vous souhaitez.
Étape 4: Les deux communications série Arduino Raspberry
Oui: D
Comme vous pouvez le voir sur la première photo, le lien Arduino-Raspberry est une prise USB.
J'ai trouvé un moyen de recevoir les informations des capteurs directement par PureData Extended qui est installé dans Raspberry PI. Pourquoi PureData Extended ? Car la version Vanilla n'utilise pas la même librairie qu'une application en environnement Raspbian.
Alors lancez StandardFirmata dans Arduino Genuino pour corriger les E/S et les variations de valeur de la bonne manière !
Pour récupérer les informations de valeur dans Raspberry PI, 2 protocoles existent: Firmata et Msg.
J'ai choisi Firmata pour une raison, il était plus simple d'obtenir des informations dans PureData via le patch Pduino, un environnement.
Je vous invite à découvrir Msg si vous utilisez le protocole OSC.
Étape 5: Patch PureData reçu
En effet, après des semaines de codage sur Genuino, j'ai réussi à recevoir toutes les informations de mes capteurs en une seule page, cela a permis de voir les variations en temps réel grâce à Pduino, un patch dans Puredata, section librairies extra.
A partir de cette étape, on ne touche plus au code Arduino. Les informations de la valeur sont lisibles.
Comme je l'ai remarqué à l'étape 3, j'ai reçu des informations du bouton numérique en analogique 6 broches, il était simple de voir le fonctionnement efficace de la communication. Tout en une seule ligne.
Étape 6: Développement PureData
PureData est un langage spécifique et vous devez passer votre temps libre pour réussir à faire un joli patchwork.
Certains correctifs PureData seront disponibles dans GitHub.
J'espère que ce que j'ai écrit ici vous a aidé à démarrer votre propre projet proche du mien.