Table des matières:
- Étape 1: Ingrédients
- Étape 2: connectez les capteurs à ultrasons à la carte Octasonic
- Étape 3: Connectez le convertisseur de niveau logique à la carte Octasonic
- Étape 4: connectez le convertisseur de niveau logique au Raspberry Pi
- Étape 5: Connectez Raspberry Pi 5V à Octasonic 5V
- Étape 6: installer le logiciel
- Étape 7: Faites de la musique
- Étape 8: Contrôle des gestes
- Étape 9: faire un boîtier
- Étape 10: Dépannage et étapes suivantes
Vidéo: Piano à ultrasons Pi avec commandes gestuelles ! : 10 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Ce projet utilise des capteurs à ultrasons HC-SR04 bon marché comme entrées et génère des notes MIDI qui peuvent être jouées via un synthétiseur sur le Raspberry Pi pour un son de haute qualité.
Le projet utilise également une forme basique de contrôle gestuel, où l'instrument de musique peut être changé en tenant vos mains sur les deux capteurs les plus à l'extérieur pendant quelques secondes. Un autre geste peut être utilisé pour éteindre le Raspberry Pi une fois que vous avez terminé.
La vidéo ci-dessus montre le produit fini dans un simple boîtier découpé au laser. Il y a une vidéo plus approfondie plus loin dans cette instructable qui explique le fonctionnement du projet.
J'ai créé ce projet en collaboration avec The Gizmo Dojo (mon makerspace local à Broomfield, CO) pour créer des expositions interactives que nous pouvons emmener lors d'événements STEM/STEAM locaux et de Maker Faires.
Veuillez également consulter la dernière documentation et les derniers tutoriels sur https://theotherandygrove.com/octasonic/ qui comprend désormais des informations sur une version Python de ce projet (cet instructable a été écrit pour la version Rust).
Étape 1: Ingrédients
Pour cette instructable, vous aurez besoin des ingrédients suivants:
- Raspberry Pi (2 ou 3) avec carte SD
- 8 capteurs à ultrasons HC-SR04
- Platine de Déploiement Octasonic
- Convertisseur de niveau logique bidirectionnel
- Fils de raccordement femelle-femelle 32 x 12" pour connecter les capteurs à ultrasons
- Câbles de raccordement femelle-femelle de 13 x 6" pour connecter le convertisseur de niveau Raspberry Pi, Octasonic et Logic
- Alimentation adaptée pour le Raspberry Pi
- Haut-parleurs PC ou similaire
Je recommanderais d'utiliser un Raspberry Pi 3 si possible car il a plus de puissance de calcul, ce qui donne un son plus réactif et plus agréable. Cela peut fonctionner correctement avec un Raspberry Pi 2 avec un peu de réglage, mais je n'essaierais pas d'utiliser le Raspberry Pi d'origine pour ce projet.
Les capteurs à ultrasons HC-SR04 ont 4 connexions - 5V, GND, Trigger et Echo. En règle générale, Trigger et Echo sont connectés à des broches distinctes sur un microcontrôleur ou un Raspberry Pi, mais cela signifie que vous devrez utiliser 16 broches pour connecter 8 capteurs, ce qui n'est pas pratique. C'est là qu'intervient la carte de dérivation Octasonic. Cette carte se connecte à tous les capteurs et dispose d'un microcontrôleur dédié qui surveille les capteurs, puis communique avec le Raspberry Pi via SPI.
HC-SR04 nécessite 5V et le Raspberry Pi ne fait que 3,3V, c'est pourquoi nous avons également besoin du convertisseur de niveau logique qui connectera le Raspberry Pi à la carte de dérivation Octasonic.
Étape 2: connectez les capteurs à ultrasons à la carte Octasonic
Utilisez 4 cavaliers femelles-femelles pour connecter chaque capteur à ultrasons à la carte, en prenant soin de les connecter dans le bon sens. La carte est conçue de manière à ce que les broches soient dans le même ordre que les broches du capteur à ultrasons. De gauche à droite sur la carte, les broches sont GND, Trigger, Echo, 5V.
Étape 3: Connectez le convertisseur de niveau logique à la carte Octasonic
Le Raspberry Pi et la carte Octasonic communiquent via SPI. SPI utilise 4 fils:
- Entrée maître, sortie esclave (MISO)
- Sortie maître, entrée esclave (MOSI)
- Horloge série (SCK)
- Sélection esclave (SS)
De plus, nous devons connecter l'alimentation (5V et GND).
Le convertisseur de niveau logique a deux côtés - une basse tension (LV) et une haute tension (HV). Le Raspberry se connectera au côté BT puisqu'il est de 3,3V. L'Octasonic se connectera au côté HV puisqu'il est en 5V.
Cette étape sert à connecter l'Octasonic au côté HT du convertisseur de niveau logique
Voir la photo jointe à cette étape montrant quelles broches doivent être connectées au convertisseur de niveau logique.
Les connexions de l'Octasonic au convertisseur de niveau logique doivent être les suivantes:
- 5V à HT
- SCK à HV4
- MISO à HV3
- MOSI à HV2
- SS à HV1
- GND à GND
Étape 4: connectez le convertisseur de niveau logique au Raspberry Pi
Le Raspberry Pi et la carte Octasonic communiquent via SPI. SPI utilise 4 fils:
- Entrée maître, sortie esclave (MISO)
- Sortie maître, entrée esclave (MOSI)
- Horloge série (SCK)
- Sélection esclave (SS)
De plus, nous devons connecter l'alimentation (3,3 V et GND). Le convertisseur de niveau logique a deux côtés - une basse tension (LV) et une haute tension (HV). Le Raspberry se connectera au côté BT puisqu'il est de 3,3V. L'Octasonic se connectera au côté HT puisqu'il est en 5V.
Cette étape sert à connecter le Raspberry Pi au côté BT du convertisseur de niveau logique
Les connexions du Raspbery Pi au convertisseur Logic Level doivent être les suivantes:
- 3.3V à BT
- GPIO11 (SPI_SCLK) à LV4
- GPIO09 (SPI_MISO) à LV3
- GPIO10 (SPI_MOSI) à LV2
- GPIO08 (SPI_CE0_N) SS à LV1
- GND à GND
Utilisez le schéma joint à cette étape pour localiser les bonnes broches sur le Raspberry Pi !
Étape 5: Connectez Raspberry Pi 5V à Octasonic 5V
Il y a un dernier fil à ajouter. Nous devons réellement alimenter la carte Octasonic avec 5V, nous le faisons donc en connectant l'une des broches Raspberry Pi 5V à la broche 5V sur l'en-tête Octasonic AVR. Il s'agit de la broche en bas à gauche du bloc d'en-tête AVR (il s'agit du bloc 2 x 3 en haut à droite de la carte). Voir la photo ci-jointe montrant où se trouve le bloc AVR.
Voir l'autre schéma ci-joint pour trouver la broche 5V sur le Raspberry Pi.
Étape 6: installer le logiciel
Installer Raspian
Commencez par une nouvelle installation de Raspbian Jessie, puis mettez-la à jour vers la dernière version:
sudo apt-get mise à jour
sudo apt-get mise à niveau
Activer SPI
Vous devez activer SPI sur le Raspberry Pi pour que ce projet fonctionne ! Utilisez l'utilitaire de configuration Raspberry Pi pour ce faire.
Il est également important de redémarrer le Pi après avoir activé SPI pour qu'il prenne effet
Installer FluidSynth
Fluidsynth est un incroyable synthétiseur MIDI logiciel gratuit. Vous pouvez l'installer à partir de la ligne de commande avec cette commande:
sudo apt-get install fluidsynth
Installer le langage de programmation Rust
L'Ultrasonic Pi Piano est implémenté dans le langage de programmation Rust de Mozilla (c'est comme C++ mais sans les mauvais bits). C'est ce que tous les enfants cool utilisent de nos jours.
Suivez les instructions sur https://rustup.rs/ pour installer Rust. Pour vous faire gagner du temps, les instructions consistent à exécuter cette seule commande. Vous pouvez accepter les réponses par défaut à toutes les questions pendant l'installation.
REMARQUE: depuis la publication de cette instructable, il y a quelques problèmes avec l'installation de Rust sur le Raspberry Pi. Mauvais timing:-/ mais j'ai modifié la commande ci-dessous pour contourner le problème. Espérons qu'ils corrigeront cela bientôt. Je travaille sur la création d'une image que les gens peuvent télécharger et graver sur une carte SD. Si vous le souhaitez, merci de me contacter.
export RUSTUP_USE_HYPER=1curl https://sh.rustup.rs -sSf | sh
Téléchargez le code source Ultrasonic Pi Piano
Le code source du code source Ultrasonic Pi Piano est hébergé sur github. Il y a deux options pour obtenir le code. Si vous connaissez git et github, vous pouvez cloner le dépôt:
git clone [email protected]:TheGizmoDojo/UltrasonicPiPiano.git
Alternativement, vous pouvez télécharger un fichier zip du dernier code.
Compiler le code source
cd UltrasonicPiPiano
construction de cargaison -- libération
Tester le code
Avant de passer à la musique à l'étape suivante, assurons-nous que le logiciel fonctionne et que nous pouvons lire des données valides à partir des capteurs.
Utilisez la commande suivante pour exécuter l'application. Cela lira les données des capteurs et les traduira en notes MIDI qui seront ensuite imprimées sur la console. Lorsque vous déplacez votre main sur les capteurs, vous devriez voir des données générées. Sinon, passez à la section de dépannage à la fin de cette instructable.
cargo run --release
Si vous êtes curieux, l'indicateur "--release" indique à Rust de compiler le code aussi efficacement que possible, par opposition au paramètre par défaut "--debug".
Étape 7: Faites de la musique
Assurez-vous que vous êtes toujours dans le répertoire où vous avez téléchargé le code source et exécutez la commande suivante.
Ce script "run.sh" s'assure que le code a été compilé, puis exécute le code, en redirigeant la sortie vers fluidsynth.
./run.sh
Assurez-vous que vous avez des haut-parleurs amplifiés connectés à la prise audio 3,5 mm du Raspberry Pi et vous devriez entendre de la musique lorsque vous déplacez vos mains sur les capteurs.
Si vous n'entendez pas de musique et que vous avez un moniteur HDMI connecté, alors la sortie audio va probablement à la place. Pour résoudre ce problème, exécutez simplement cette commande, puis redémarrez le Pi Piano:
sudo amixer cset numid=3 1
Modification du volume
Le volume (ou "gain") est spécifié avec le paramètre "-g" à fluidsynth. Vous pouvez modifier le script run.sh et changer cette valeur. Veuillez noter que de petits changements dans ce paramètre entraînent un grand changement de volume, alors essayez de l'augmenter par petites quantités (comme 0,1 ou 0,2).
Étape 8: Contrôle des gestes
Voir la vidéo jointe à cette étape pour une démonstration complète du projet, y compris le fonctionnement des commandes gestuelles.
Le concept est très simple. Le logiciel garde une trace des capteurs qui sont couverts (à moins de 10 cm) et de ceux qui ne le sont pas. Cela se traduit par 8 nombres binaires (1 ou 0). C'est très pratique, car une séquence de 8 nombres binaires forme un "octet" qui peut représenter des nombres entre 0 et 255. Si vous ne connaissez pas déjà les nombres binaires, je vous recommande fortement de rechercher un tutoriel. Les nombres binaires sont une compétence fondamentale à acquérir si vous voulez en savoir plus sur la programmation.
Le logiciel mappe l'état actuel des capteurs à un seul octet représentant le geste actuel. Si ce nombre reste le même pendant un certain nombre de cycles, le logiciel agit sur ce geste.
Étant donné que les capteurs à ultrasons ne sont pas très fiables et qu'il peut y avoir des interférences entre les capteurs, vous devrez faire preuve de patience lors de l'utilisation des gestes. Essayez de varier la distance à laquelle vous tenez vos mains par rapport aux capteurs ainsi que l'angle auquel vous tenez vos mains. Essayez également de tenir quelque chose de plat et de solide sur les capteurs pour mieux refléter le son.
Étape 9: faire un boîtier
Si vous voulez en faire une exposition permanente et pouvoir la montrer aux gens, vous voudrez probablement faire une sorte de clôture. Cela pourrait être fait de bois, de carton ou de nombreux autres matériaux. Voici une vidéo montrant l'enceinte sur laquelle nous travaillons pour ce projet. Ceci est fait de bois, avec des trous percés pour maintenir les capteurs à ultrasons en place.
Étape 10: Dépannage et étapes suivantes
Dépannage
Si le projet ne fonctionne pas, il s'agit généralement d'une erreur de câblage. Prenez votre temps pour vérifier toutes les connexions.
Un autre problème courant est de ne pas activer SPI et de redémarrer le pi.
Veuillez visiter https://theotherandygrove.com/octasonic/ pour une documentation complète, y compris des conseils de dépannage, des articles spécifiques à Rust et Python, ainsi que des informations sur la façon d'obtenir de l'aide.
Prochaines étapes
Une fois que le projet fonctionne, je vous recommande d'expérimenter le code et d'essayer différents instruments de musique. Les codes d'instrument MIDI sont compris entre 1 et 127 et sont documentés ici.
Voulez-vous un seul instrument de musique avec chaque capteur jouant une octave différente ? Peut-être préféreriez-vous que chaque capteur soit un instrument distinct à la place ? Les possibilités sont presque illimitées !
J'espère que vous avez apprécié cette instructable. S'il vous plaît, aimez-le si vous l'avez fait, et assurez-vous de vous abonner à moi ici et à ma chaîne YouTube pour voir les futurs projets.
Conseillé:
Programmez n'importe quelle carte/module ESP8266 avec le micrologiciel des commandes AT : 5 étapes
Programmez n'importe quelle carte/module ESP8266 avec le micrologiciel de commandes AT : chaque module et carte ESP8266 peut être programmé de plusieurs manières : Arduino, python, Lua, commandes AT, beaucoup plus probablement… Les trois premiers d'entre eux sont les meilleurs pour un fonctionnement autonome, micrologiciel AT est pour utiliser ESP8266 comme module ou pour un test rapide avec TTL RS232 c
Commandes personnalisées Redbear BLE Nano V2 avec PfodApp - Aucun codage requis : 6 étapes
Commandes personnalisées Redbear BLE Nano V2 avec PfodApp -- Aucun codage requis : Mise à jour : 15 septembre 2017 -- Cette instructable a été mise à jour pour utiliser la dernière version de RedBear BLE Nano, V2. La version précédente de cette instructable, qui ciblait RedBear BLE Nano V1.5 est disponible ici. Mise à jour 15 novembre - 2017 Alors
Commandes personnalisées Adafruit Feather NRF52, aucun codage requis : 8 étapes (avec photos)
Contrôles personnalisés Adafruit Feather NRF52, aucun codage requis : mise à jour du 23 avril 2019 - Pour les tracés de date/heure utilisant uniquement Arduino millis(), voir Arduino Date/Time Plotting/Logging utilisant Millis() et PfodApp Le dernier pfodDesigner gratuit V3.0.3610+ généré compléter des croquis Arduino pour tracer des données par rapport à la date/heure u
Commandes AT pour le module Bluetooth (HC-05 avec broche EN et BOUTON) à l'aide de la carte Arduino ! : 5 étapes
Commandes AT pour module Bluetooth (HC-05 avec broche et bouton EN) à l'aide de la carte Arduino ! sur l'envoi de commandes AT au module pour le configurer/modifier (nom, mot de passe, baud ra
Préhension automatique à l'aide d'un capteur laser et de commandes vocales : 5 étapes (avec photos)
Saisie automatique à l'aide d'un capteur laser et de commandes vocales : Saisir des objets qui nous semblent une chose simple et naturelle à faire est en fait une tâche complexe. L'homme utilise le sens de la vue pour déterminer la distance de l'objet qu'il veut saisir. La main s'ouvre automatiquement lorsqu'elle se trouve à proximité de la