Table des matières:

Piano à ultrasons Pi avec commandes gestuelles ! : 10 étapes (avec photos)
Piano à ultrasons Pi avec commandes gestuelles ! : 10 étapes (avec photos)

Vidéo: Piano à ultrasons Pi avec commandes gestuelles ! : 10 étapes (avec photos)

Vidéo: Piano à ultrasons Pi avec commandes gestuelles ! : 10 étapes (avec photos)
Vidéo: АСМР 🏆🔥[Гарри Поттер и Кубок огня] [Глава 20-29] Чтение шепотом 📚 ASMR whisper [Harry Potter] 2024, Novembre
Anonim
Image
Image
Piano à ultrasons Pi avec commandes gestuelles !
Piano à ultrasons Pi avec commandes gestuelles !

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

Connectez les capteurs à ultrasons à la carte Octasonic
Connectez les capteurs à ultrasons à la carte Octasonic
Connectez les capteurs à ultrasons à la carte Octasonic
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

Connectez le convertisseur de niveau logique à la carte Octasonic
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

Connectez le convertisseur de niveau logique au Raspberry Pi
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

Connectez Raspberry Pi 5V à Octasonic 5V
Connectez Raspberry Pi 5V à Octasonic 5V
Connectez Raspberry Pi 5V à Octasonic 5V
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é: