Taula de continguts:
- Pas 1: Ingredients
- Pas 2: connecteu els sensors d'ultrasons a la placa Octasonic
- Pas 3: connecteu el convertidor de nivell lògic a la placa Octasonic
- Pas 4: connecteu el convertidor de nivell lògic al Raspberry Pi
- Pas 5: connecteu Raspberry Pi 5V a Octasonic 5V
- Pas 6: Instal·leu el programari
- Pas 7: Feu música
- Pas 8: control de gestos
- Pas 9: fer un recinte
- Pas 10: resolució de problemes i passos següents
Vídeo: Piano Pi ultrasònic amb controls de gest !: 10 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Aquest projecte utilitza sensors d’ultrasons HC-SR04 com a entrades i genera notes MIDI que es poden reproduir a través d’un sintetitzador al Raspberry Pi per obtenir un so d’alta qualitat.
El projecte també utilitza una forma bàsica de control de gestos, on es pot canviar l'instrument musical mantenint les mans sobre els dos sensors més externs durant uns segons. Es pot utilitzar un altre gest per apagar el Raspberry Pi un cop hàgiu acabat.
El vídeo anterior mostra el producte acabat en un recinte senzill tallat amb làser. Més endavant, en aquest instructiu, hi ha un vídeo més profund que explica com funciona el projecte.
Vaig crear aquest projecte conjuntament amb The Gizmo Dojo (el meu espai de creació local a Broomfield, CO) per fer algunes exposicions interactives que podem portar a esdeveniments locals STEM / STEAM i Maker Fires.
Consulteu també la documentació i els tutorials més recents a https://theotherandygrove.com/octasonic/, que ara inclou informació sobre la versió Python d’aquest projecte (aquest instructiu s’ha escrit per a la versió Rust).
Pas 1: Ingredients
Per a aquesta instrucció, necessitareu els ingredients següents:
- Raspberry Pi (2 o 3) amb targeta SD
- 8 sensors d'ultrasons HC-SR04
- Taula Octasonic Breakout
- Convertidor de nivell de lògica bidireccional
- Filferros de pont femella-femella de 32 x 12 "per connectar els sensors d'ultrasons
- Cables de pont femení-femella de 13 x 6 "per connectar el convertidor de nivell Raspberry Pi, Octasonic i Logic
- Font d'alimentació adequada per al Raspberry Pi
- Altaveus de PC o similars
Si és possible, recomanaria utilitzar un Raspberry Pi 3, ja que té més potència informàtica, donant com a resultat un so més sensible i agradable. Pot funcionar bé amb un Raspberry Pi 2 amb una mica de modificació, però no intentaria fer servir el Raspberry Pi original per a aquest projecte.
Els sensors ultrasònics HC-SR04 tenen 4 connexions: 5V, GND, Trigger i Echo. Normalment, Trigger i Echo es connecten a pins separats d’un microcontrolador o Raspberry Pi, però això vol dir que haureu d’utilitzar 16 pins per connectar 8 sensors, i això no és pràctic. Aquí és on entra la placa de sortida Octasonic. Aquesta placa es connecta a tots els sensors i té un microcontrolador dedicat que supervisa els sensors i es comunica amb el Raspberry Pi mitjançant SPI.
L'HC-SR04 requereix 5V i el Raspberry Pi només és de 3,3V, per això és per això que també necessitem el convertidor de nivell lògic que connecti el Raspberry Pi a la placa de sortida d'Octasonic.
Pas 2: connecteu els sensors d'ultrasons a la placa Octasonic
Utilitzeu 4 cables femella-femella per connectar cada sensor d'ultrasons a la placa, tenint cura de connectar-los de la manera correcta. La placa està dissenyada de manera que els pins estiguin en el mateix ordre que els pins del sensor d'ultrasons. D'esquerra a dreta al tauler, els passadors són GND, Trigger, Echo, 5V.
Pas 3: connecteu el convertidor de nivell lògic a la placa Octasonic
La placa Raspberry Pi i Octasonic es comuniquen mitjançant SPI. SPI utilitza 4 cables:
- Master In, Slave Out (MISO)
- Master Out, Slave In (MOSI)
- Rellotge en sèrie (SCK)
- Selecció esclau (SS)
A més, hem de connectar l'alimentació (5V i GND).
El convertidor de nivell lògic té dues cares: una de baixa tensió (VT) i una alta tensió (HV). El gerd es connectarà al costat BT, ja que és de 3,3 V. L’Octasonic es connectarà al costat de l’alta tensió ja que és de 5 V.
Aquest pas serveix per connectar l'Octasonic al costat HV del convertidor de nivell lògic
Vegeu la foto adjunta a aquest pas que mostra quins pins s’haurien de connectar al convertidor de nivell lògic.
Les connexions des del convertidor Octasonic al nivell lògic haurien de ser les següents:
- 5V a HV
- SCK a HV4
- MISO a HV3
- MOSI a HV2
- SS a HV1
- GND a GND
Pas 4: connecteu el convertidor de nivell lògic al Raspberry Pi
La placa Raspberry Pi i Octasonic es comuniquen mitjançant SPI. SPI utilitza 4 cables:
- Master In, Slave Out (MISO)
- Master Out, Slave In (MOSI)
- Rellotge en sèrie (SCK)
- Selecció esclau (SS)
A més, hem de connectar l'alimentació (3,3 V i GND). El convertidor de nivell lògic té dues cares: una de baixa tensió (VT) i una alta tensió (HV). El gerd es connectarà al costat BT, ja que és de 3,3 V. L’Octasonic es connectarà al costat de l’alta tensió ja que és de 5 V.
Aquest pas serveix per connectar el Raspberry Pi al costat BT del convertidor de nivell lògic
Les connexions des del Raspbery Pi al convertidor de nivell lògic han de ser les següents:
- 3,3 V a BT
- GPIO11 (SPI_SCLK) a LV4
- GPIO09 (SPI_MISO) a LV3
- GPIO10 (SPI_MOSI) a LV2
- GPIO08 (SPI_CE0_N) SS a LV1
- GND a GND
Utilitzeu el diagrama adjunt a aquest pas per localitzar els pins correctes al Raspberry Pi.
Pas 5: connecteu Raspberry Pi 5V a Octasonic 5V
Hi ha un cable final per afegir. En realitat, hem d’alimentar la placa Octasonic amb 5V, de manera que ho fem connectant un dels pins Raspberry Pi de 5V al pin de 5V de la capçalera AVR d’Otasonic. Aquest és el pin inferior esquerre del bloc de capçalera AVR (aquest és el bloc de 2 x 3 a la part superior dreta del tauler). Vegeu la foto adjunta on es troba el bloc AVR.
Consulteu l’altre diagrama adjunt per trobar el pin de 5V al Raspberry Pi.
Pas 6: Instal·leu el programari
Instal·leu Raspian
Comenceu amb una instal·lació neta de Raspbian Jessie i actualitzeu-la a la versió més recent:
sudo apt-get update
sudo apt-get upgrade
Activa SPI
Heu d’habilitar SPI al Raspberry Pi perquè aquest projecte funcioni. Utilitzeu la utilitat Configuració de Raspberry Pi per fer-ho.
També és important reiniciar el Pi després d’habilitar SPI perquè tingui efecte
Instal·leu FluidSynth
Fluidsynth és un increïble sintetitzador MIDI de programari lliure. Podeu instal·lar-lo des de la línia d'ordres amb aquesta ordre:
sudo apt-get install fluidsynth
Instal·leu el llenguatge de programació Rust
Ultrasonic Pi Piano s’implementa en el llenguatge de programació Rust de Mozilla (és com C ++ però sense els bits dolents). És el que fan servir tots els nens divertits en aquests dies.
Seguiu les instruccions a https://rustup.rs/ per instal·lar Rust. Per estalviar temps, les instruccions són executar aquesta ordre. Podeu acceptar les respostes predeterminades a qualsevol pregunta durant la instal·lació.
NOTA: Des que es publica aquest document instructiu, hi ha alguns problemes relacionats amb la instal·lació de Rust al Raspberry Pi. Mal temps: - / però he modificat l'ordre següent per solucionar el problema. Esperem que ho solucionin aviat. Estic treballant en la creació d’una imatge que la gent pugui descarregar i gravar en una targeta SD. Si voleu això, poseu-vos en contacte amb mi.
export RUSTUP_USE_HYPER = 1curl https://sh.rustup.rs -sSf | sh
Baixeu-vos el codi font d'Ultrasonic Pi Piano
El codi font del codi font Ultrasonic Pi Piano està allotjat a github. Hi ha dues opcions per obtenir el codi. Si esteu familiaritzat amb git i github, podeu clonar la reposició:
git clone [email protected]: TheGizmoDojo / UltrasonicPiPiano.git
Com a alternativa, podeu descarregar un fitxer zip del darrer codi.
Compileu el codi font
cd UltrasonicPiPiano
construcció de càrrega - alliberament
Proveu el codi
Abans de començar a fer música al següent pas, assegurem-nos que el programari s’executa i que podem llegir dades vàlides dels sensors.
Utilitzeu l'ordre següent per executar l'aplicació. Això llegirà les dades dels sensors i les traduirà a notes MIDI que després s’imprimiran a la consola. En moure la mà sobre els sensors, hauríeu de veure que es generen dades. Si no és així, aneu a la secció de resolució de problemes al final d’aquest instructiu.
càrrega de càrrega - alliberament
Si teniu curiositat, el senyalador "--release" indica a Rust que compili el codi de la manera més eficaç possible, a diferència de la configuració predeterminada "--debug".
Pas 7: Feu música
Assegureu-vos que encara esteu al directori on heu baixat el codi font i executeu l'ordre següent.
Aquest script "run.sh" assegura que el codi s'ha compilat i, a continuació, executa el codi, canalitzant la sortida en fluidsynth.
./run.sh
Assegureu-vos que teniu altaveus amplificats connectats a la presa d’àudio de 3,5 mm del Raspberry Pi i que heu d’escoltar música mentre passeu les mans pels sensors.
Si no escolteu música i teniu connectat un monitor HDMI, és probable que la sortida d'àudio hi vagi. Per solucionar-ho, simplement executeu aquesta ordre i reinicieu el Pi Piano:
sudo amixer cset numid = 3 1
Canvi de volum
El volum (o "guany") s'especifica amb el paràmetre "-g" a fluidsynth. Podeu modificar l'script run.sh i canviar aquest valor. Tingueu en compte que els petits canvis en aquest paràmetre comporten un gran canvi de volum, així que intenteu augmentar-lo en petites quantitats (com ara 0,1 o 0,2).
Pas 8: control de gestos
Vegeu el vídeo adjunt a aquest pas per obtenir una demostració completa del projecte, inclòs el funcionament dels controls gestuals.
El concepte és molt senzill. El programari fa un seguiment de quins sensors estan coberts (a menys de 10 cm) i quins no. Això es tradueix en 8 nombres binaris (1 o 0). Això és molt convenient, ja que una seqüència de 8 nombres binaris fa un "byte" que pot representar nombres entre 0 i 255. Si encara no coneixeu els nombres binaris, us recomano buscar un tutorial. Els números binaris són una habilitat fonamental per aprendre si voleu obtenir més informació sobre la programació.
El programari assigna l’estat actual dels sensors a un sol byte que representa el gest actual. Si aquest nombre es manté durant diversos cicles, el programari actua sobre aquest gest.
Com que els sensors d'ultrasons no són molt fiables i hi pot haver interferències, caldrà que tingueu paciència quan utilitzeu els gestos. Proveu de variar la distància que manteniu a les mans dels sensors, així com l'angle que manteniu a les mans. També freda, intenteu mantenir alguna cosa plana i sòlida sobre els sensors per reflectir millor el so.
Pas 9: fer un recinte
Si voleu que aquesta sigui una exposició permanent i pugueu mostrar-la a la gent, probablement voldreu fer algun tipus de recinte. Això es podria fer de fusta, cartró o molts altres materials. Aquí teniu un vídeo que mostra el recinte en què estem treballant per a aquest projecte. Està fet de fusta, amb forats forçats per mantenir els sensors d'ultrasons al seu lloc.
Pas 10: resolució de problemes i passos següents
Resolució de problemes
Si el projecte no funciona, normalment es deu a un error de cablejat. Preneu-vos el temps per comprovar totes les connexions.
Un altre problema habitual és que no s’activa l’SPI i es reinicia el pi.
Visiteu https://theotherandygrove.com/octasonic/ per obtenir documentació completa que inclou consells de resolució de problemes, amb articles específics de Rust i Python, i també informació sobre com obtenir assistència.
Propers passos
Un cop tingueu el projecte en funcionament, us recomano experimentar amb el codi i provar diferents instruments musicals. Els codis d’instruments MIDI es troben entre l’1 i el 127 i es documenten aquí.
Voleu un sol instrument musical amb cada sensor que toqui una octava diferent? Potser voldríeu que cada sensor fos un instrument independent? Les possibilitats són gairebé il·limitades.
Espero que us hagi agradat aquest instructiu. Si us plau, agradi i assegureu-vos de subscriure-m'hi aquí i al meu canal de YouTube per veure futurs projectes.
Recomanat:
Adafruit Feather NRF52 Controls personalitzats, no cal codificació: 8 passos (amb imatges)
Adafruit Feather NRF52 Controls personalitzats, sense necessitat de codificació: actualització del 23 d’abril de 2019 - Per a trames de data / hora que utilitzen només Arduino millis (), consulteu Arduino Data / Hora de dibuix / registre mitjançant Millis () i PfodApp L’última generació gratuïta de pfodDesigner V3.0.3610 + esbossos complets d'Arduino per representar dades en funció de la data / hora u
Laberint controlat per gest: 8 passos (amb imatges)
Laberint controlat per gestos: m'agrada jugar amb laberint de laberint. Sempre he volgut controlar un d'aquests jocs de laberint de laberint mitjançant gestos o mòbils. Em vaig inspirar per crear aquest laberint de marbre del laberint imprès en 3D de blic19933 controlat pel vostre dispositiu Android en lloc d’usar
Control d'un anell LED Neopixel amb un sensor de gest: 3 passos (amb imatges)
Control d’un anell de led Neopixel amb un sensor de gest: en aquest tutorial jugarem amb un sensor de gest (APDS-9960) i un anell de neopixel per aprendre a combinar-los amb un Arduino UNO. gestos esquerra - dreta animant el moviment del led cap a la dreta o cap a l'esquerra, i fins a
Mesura de cabal amb mesuradors de cabal d'aigua (ultrasònic): 5 passos (amb imatges)
Mesura de cabal amb mesuradors de cabal d’aigua (ultrasònics): l’aigua és un recurs crític per al nostre planeta. Els éssers humans necessitem aigua cada dia. I l’aigua és necessària per a diverses indústries i els humans la necessitem cada dia. A mesura que l’aigua s’ha tornat més valuosa i escassa, la necessitat d’un control eficaç i de l’home
Robòtica manual sense fils controlada per gest i veu: 7 passos (amb imatges)
Robòtica manual sense fils controlada per gest i veu: bàsicament aquest era el nostre projecte universitari i, a causa de la manca de temps per enviar aquest projecte, ens vam oblidar de fer fotos d'alguns passos. També hem dissenyat un codi amb el qual es pot controlar aquesta mà robòtica mitjançant gest i veu alhora, però a causa de l