Sommario:
- Passaggio 1: ingredienti
- Passaggio 2: collegare i sensori a ultrasuoni alla scheda ottasonica
- Passaggio 3: collegare il convertitore di livello logico alla scheda ottasonica
- Passaggio 4: collegare il convertitore di livello logico al Raspberry Pi
- Passaggio 5: collega Raspberry Pi 5V a Octasonic 5V
- Passaggio 6: installazione del software
- Passaggio 7: fai un po' di musica
- Passaggio 8: controllo dei gesti
- Passaggio 9: creazione di un allegato
- Passaggio 10: risoluzione dei problemi e passaggi successivi
Video: Pianoforte ad ultrasuoni Pi con controlli gestuali!: 10 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Questo progetto utilizza sensori a ultrasuoni HC-SR04 economici come input e genera note MIDI che possono essere riprodotte tramite un sintetizzatore sul Raspberry Pi per un suono di alta qualità.
Il progetto utilizza anche una forma base di controllo gestuale, in cui lo strumento musicale può essere cambiato tenendo le mani sui due sensori più esterni per alcuni secondi. Un altro gesto può essere utilizzato per spegnere il Raspberry Pi una volta terminato.
Il video sopra mostra il prodotto finito in una semplice custodia tagliata al laser. C'è un video più approfondito più avanti in questo tutorial che spiega come funziona il progetto.
Ho creato questo progetto in collaborazione con The Gizmo Dojo (il mio makerspace locale a Broomfield, CO) per realizzare alcune mostre interattive che possiamo portare agli eventi STEM/STEAM locali e alle Maker Faires.
Si prega di controllare anche la documentazione e i tutorial più recenti su https://theotherandygrove.com/octasonic/ che ora include informazioni su una versione Python di questo progetto (questa istruzione è stata scritta per la versione Rust).
Passaggio 1: ingredienti
Per questo istruibile, avrai bisogno dei seguenti ingredienti:
- Raspberry Pi (2 o 3) con scheda SD
- 8 sensori a ultrasuoni HC-SR04
- Tabellone ottasonico breakout
- Convertitore di livello logico bidirezionale
- Cavi jumper femmina-femmina 32 x 12" per il collegamento dei sensori a ultrasuoni
- Cavi jumper femmina-femmina da 13 x 6" per il collegamento di Raspberry Pi, Octasonic e convertitore di livello logico
- Alimentatore adatto per Raspberry Pi
- Altoparlanti per PC o simili
Consiglierei di utilizzare un Raspberry Pi 3 se possibile poiché ha più potenza di calcolo, risultando in un suono più reattivo e piacevole. Può funzionare bene con un Raspberry Pi 2 con un piccolo ritocco, ma non proverei a utilizzare il Raspberry Pi originale per questo progetto.
I sensori a ultrasuoni HC-SR04 hanno 4 connessioni: 5 V, GND, Trigger ed Echo. In genere, Trigger ed Echo sono collegati a pin separati su un microcontrollore o Raspberry Pi, ma ciò significa che è necessario utilizzare 16 pin per collegare 8 sensori, e questo non è pratico. È qui che entra in gioco la scheda breakout Octasonic. Questa scheda si collega a tutti i sensori e ha un microcontrollore dedicato che monitora i sensori e quindi comunica con il Raspberry Pi tramite SPI.
HC-SR04 richiede 5V e il Raspberry Pi è solo 3,3V, quindi è per questo che abbiamo bisogno anche del convertitore di livello logico che collegherà il Raspberry Pi alla scheda di breakout Octasonic.
Passaggio 2: collegare i sensori a ultrasuoni alla scheda ottasonica
Utilizzare 4 ponticelli femmina-femmina per collegare ciascun sensore ad ultrasuoni alla scheda, facendo attenzione a collegarli nel modo corretto. La scheda è progettata in modo che i pin siano nello stesso ordine dei pin del sensore a ultrasuoni. Da sinistra a destra sulla scheda, i pin sono GND, Trigger, Echo, 5V.
Passaggio 3: collegare il convertitore di livello logico alla scheda ottasonica
Il Raspberry Pi e la scheda Octasonic comunicano tramite SPI. SPI utilizza 4 fili:
- Ingresso master, uscita slave (MISO)
- Master Out, Slave In (MOSI)
- Orologio seriale (SCK)
- Selezione slave (SS)
Inoltre, dobbiamo collegare l'alimentazione (5V e GND).
Il convertitore di livello logico ha due lati: una bassa tensione (LV) e un'alta tensione (HV). Il Raspberry si collegherà al lato LV poiché è a 3,3 V. L'Octasonic si collegherà al lato HV poiché è 5V.
Questo passaggio serve per collegare l'Octasonic al lato HV del convertitore di livello logico
Vedere la foto allegata a questo passaggio che mostra quali pin devono essere collegati al convertitore di livello logico.
Le connessioni dall'Octasonic al convertitore di livello logico dovrebbero essere le seguenti:
- 5V ad alta tensione
- SCK a HV4
- MISO a HV3
- MOSI a HV2
- da SS a HV1
- GND a GND
Passaggio 4: collegare il convertitore di livello logico al Raspberry Pi
Il Raspberry Pi e la scheda Octasonic comunicano tramite SPI. SPI utilizza 4 fili:
- Ingresso master, uscita slave (MISO)
- Master Out, Slave In (MOSI)
- Orologio seriale (SCK)
- Selezione slave (SS)
Inoltre, dobbiamo collegare l'alimentazione (3,3 V e GND). Il convertitore di livello logico ha due lati: una bassa tensione (LV) e un'alta tensione (HV). Il Raspberry si collegherà al lato LV poiché è a 3,3 V. L'Octasonic si collegherà al lato HV poiché è a 5V.
Questo passaggio serve per collegare il Raspberry Pi al lato LV del convertitore di livello logico
Le connessioni dal Raspbery Pi al convertitore di livello logico dovrebbero essere le seguenti:
- 3.3V a LV
- GPIO11 (SPI_SCLK) a LV4
- GPIO09 (SPI_MISO) a LV3
- GPIO10 (SPI_MOSI) a LV2
- GPIO08 (SPI_CE0_N) da SS a LV1
- GND a GND
Usa il diagramma allegato a questo passaggio per individuare i pin corretti sul Raspberry Pi!
Passaggio 5: collega Raspberry Pi 5V a Octasonic 5V
C'è un ultimo filo da aggiungere. Dobbiamo effettivamente alimentare la scheda Octasonic con 5V, quindi lo facciamo collegando uno dei pin 5V del Raspberry Pi al pin 5V sull'intestazione dell'AVR Octasonic. Questo è il pin in basso a sinistra nel blocco di intestazione dell'AVR (questo è il blocco 2 x 3 in alto a destra della scheda). Vedere la foto allegata che mostra dove si trova il blocco AVR.
Vedi l'altro diagramma allegato per trovare il pin 5V sul Raspberry Pi.
Passaggio 6: installazione del software
Installa Raspian
Inizia con un'installazione pulita di Raspbian Jessie, quindi aggiornalo all'ultima versione:
sudo apt-get update
sudo apt-get upgrade
Abilita SPI
Devi abilitare SPI sul Raspberry Pi affinché questo progetto funzioni! Usa l'utility di configurazione Raspberry Pi per farlo.
È anche importante riavviare il Pi dopo aver abilitato SPI affinché abbia effetto
Installa FluidSynth
Fluidsynth è un fantastico sintetizzatore MIDI software gratuito. Puoi installarlo dalla riga di comando con questo comando:
sudo apt-get install fluidsynth
Installa il linguaggio di programmazione Rust
Ultrasonic Pi Piano è implementato nel linguaggio di programmazione Rust di Mozilla (è come C++ ma senza i bit negativi). È quello che usano tutti i ragazzi fighi di questi tempi.
Segui le istruzioni su https://rustup.rs/ per installare Rust. Per risparmiare tempo, le istruzioni sono di eseguire questo comando. Puoi accettare le risposte predefinite a qualsiasi domanda durante l'installazione.
NOTA: dalla pubblicazione di questo istruibile, ci sono alcuni problemi con l'installazione di Rust sul Raspberry Pi. Cattivo tempismo:-/ ma ho modificato il comando seguente per aggirare il problema. Speriamo che risolvano presto questo problema. Sto lavorando alla creazione di un'immagine che le persone possono scaricare e masterizzare su una scheda SD. Se lo desideri, per favore contattami.
export RUSTUP_USE_HYPER=1curl https://sh.rustup.rs -sSf | SH
Scarica il codice sorgente Ultrasonic Pi Piano
Il codice sorgente per il codice sorgente Ultrasonic Pi Piano è ospitato su github. Ci sono due opzioni per ottenere il codice. Se hai familiarità con git e github, puoi clonare il repository:
git clone [email protected]:TheGizmoDojo/UltrasonicPiPiano.git
In alternativa, puoi scaricare un file zip con il codice più recente.
Compila il codice sorgente
cd UltrasonicPiPiano
costruzione del carico --rilascio
Prova il codice
Prima di passare alla creazione della musica nel passaggio successivo, assicuriamoci che il software funzioni e che possiamo leggere dati validi dai sensori.
Utilizzare il seguente comando per eseguire l'applicazione. Questo leggerà i dati dai sensori e li tradurrà in note MIDI che verranno poi stampate sulla console. Mentre muovi la mano sui sensori, dovresti vedere i dati generati. In caso contrario, passare alla sezione relativa alla risoluzione dei problemi alla fine di questa istruzione.
corsa di carico --rilascio
Se sei curioso, il flag "--release" dice a Rust di compilare il codice nel modo più efficiente possibile, al contrario dell'impostazione predefinita "--debug".
Passaggio 7: fai un po' di musica
Assicurati di essere ancora nella directory in cui hai scaricato il codice sorgente ed esegui il comando seguente.
Questo script "run.sh" si assicura che il codice sia stato compilato e quindi esegue il codice, inviando l'output a fluidsynth.
./run.sh
Assicurati di avere altoparlanti amplificati collegati al jack audio da 3,5 mm sul Raspberry Pi e dovresti sentire la musica mentre muovi le mani sui sensori.
Se non senti musica e hai un monitor HDMI collegato, è probabile che l'uscita audio vada lì. Per risolvere questo problema, esegui semplicemente questo comando e riavvia il Pi Piano:
sudo amixer cset numid=3 1
Modifica del volume
Il volume (o "guadagno") è specificato con il parametro "-g" di fluidsynth. È possibile modificare lo script run.sh e modificare questo valore. Tieni presente che piccoli cambiamenti in questo parametro comportano un grande cambiamento di volume, quindi prova ad aumentarlo di piccole quantità (come 0,1 o 0,2).
Passaggio 8: controllo dei gesti
Guarda il video allegato a questo passaggio per una dimostrazione completa del progetto, incluso il funzionamento dei controlli gestuali.
Il concetto è molto semplice. Il software tiene traccia di quali sensori sono coperti (entro 10 cm) e quali no. Questo si traduce in 8 numeri binari (1 o 0). Questo è molto conveniente, poiché una sequenza di 8 numeri binari crea un "byte" che può rappresentare numeri compresi tra 0 e 255. Se non conosci già i numeri binari, ti consiglio vivamente di cercare un tutorial. I numeri binari sono un'abilità fondamentale da imparare se vuoi saperne di più sulla programmazione.
Il software mappa lo stato corrente dei sensori su un singolo byte che rappresenta il gesto corrente. Se quel numero rimane lo stesso per un numero di cicli, il software agisce su quel gesto.
Poiché i sensori a ultrasuoni non sono super affidabili e possono esserci interferenze tra i sensori, dovrai esercitare un po' di pazienza quando utilizzi i gesti. Prova a variare la distanza a cui tieni le mani dai sensori e l'angolo a cui tieni le mani. Prova anche a tenere qualcosa di piatto e solido sui sensori per riflettere meglio il suono.
Passaggio 9: creazione di un allegato
Se vuoi rendere questa una mostra permanente ed essere in grado di mostrarla alle persone, probabilmente vorrai creare una sorta di recinto. Questo potrebbe essere fatto di legno, cartone o molti altri materiali. Ecco un video che mostra il recinto su cui stiamo lavorando per questo progetto. Questo è realizzato in legno, con fori praticati per tenere in posizione i sensori a ultrasuoni.
Passaggio 10: risoluzione dei problemi e passaggi successivi
Risoluzione dei problemi
Se il progetto non funziona, di solito è dovuto a un errore di cablaggio. Prenditi il tuo tempo per ricontrollare tutte le connessioni.
Un altro problema comune è non riuscire ad abilitare SPI e riavviare il pi.
Visita https://theotherandygrove.com/octasonic/ per la documentazione completa, compresi i suggerimenti per la risoluzione dei problemi, con articoli specifici su Rust e Python e anche informazioni su come ottenere supporto.
Prossimi passi
Una volta che il progetto funziona, consiglio di sperimentare il codice e provare diversi strumenti musicali. I codici degli strumenti MIDI sono compresi tra 1 e 127 e sono documentati qui.
Vuoi un singolo strumento musicale con ogni sensore che suona un'ottava diversa? Forse vorreste invece che ogni sensore fosse uno strumento separato? Le possibilità sono quasi illimitate!
Spero che ti sia piaciuto questo istruibile. Metti mi piace se l'hai fatto, e assicurati di iscriverti a me qui e al mio canale YouTube per vedere i progetti futuri.
Consigliato:
Redbear BLE Nano V2 Controlli personalizzati con PfodApp -- Nessuna codifica richiesta: 6 passaggi
Controlli personalizzati Redbear BLE Nano V2 con PfodApp - Nessuna codifica richiesta: aggiornamento: 15 settembre 2017 - Questo istruibile è stato aggiornato per utilizzare l'ultima versione di RedBear BLE Nano, V2. La versione precedente di questa istruzione, destinata a RedBear BLE Nano V1.5, è disponibile qui. Aggiornamento del 15 novembre - 2017 Allora
Impara i tasti del pianoforte con Makey Makey: 6 passaggi (con immagini)
Impara i tasti del pianoforte con Makey Makey: l'ho costruito per una notte di Instuctables alla Maker Station. Questo gioco ti aiuta a imparare dove sono le note sulla tastiera di un pianoforte attraverso il gioco. Il nostro gruppo è stato invitato a far parte di un Maker Station Pavilion a una fiera dell'istruzione. Parlando con educa
Pianoforte fruttato veloce con MIDI: 6 passaggi (con immagini)
Quick Fruit Piano con MIDI: questo è un pianoforte capacitivo davvero semplice. Tocca frutta, lattine di soda, bottiglie d'acqua, strisce di fogli di alluminio, ecc. E ottieni musica polifonica per pianoforte dal tuo computer. Ora che il software è scritto, il progetto non dovrebbe richiedere più di
Adafruit Feather NRF52 Controlli personalizzati, nessuna codifica richiesta: 8 passaggi (con immagini)
Controlli personalizzati Adafruit Feather NRF52, nessuna codifica richiesta: aggiornamento 23 aprile 2019 - Per i grafici di data/ora utilizzando solo Arduino millis(), vedere Arduino Data/ora tracciamento/registrazione utilizzando Millis() e PfodApp L'ultimo pfodDesigner V3.0.3610+ gratuito generato schizzi Arduino completi per tracciare i dati rispetto a data / ora u
Modulo tastiera Pianoforte con LED RGB: 5 passaggi (con immagini)
Modulo tastiera Pianoforte con LED RGB: IntroCiao signore e signori, benvenuti nel mio primo tutorial! Oggi ti insegnerò come creare un pianoforte con i componenti principali che sono un modulo tastiera e un cicalino piezoelettrico e farlo suonare DO-RE-MI e così via. Il modulo tastiera m