Sommario:

Pianoforte ad ultrasuoni Pi con controlli gestuali!: 10 passaggi (con immagini)
Pianoforte ad ultrasuoni Pi con controlli gestuali!: 10 passaggi (con immagini)

Video: Pianoforte ad ultrasuoni Pi con controlli gestuali!: 10 passaggi (con immagini)

Video: Pianoforte ad ultrasuoni Pi con controlli gestuali!: 10 passaggi (con immagini)
Video: Ldb ParadigmsForSoundDesign_02 (parte 1) Pagliei Tiso Cella 2024, Novembre
Anonim
Image
Image
Piano ad ultrasuoni Pi con controlli gestuali!
Piano ad ultrasuoni Pi con controlli gestuali!

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

Collegare i sensori a ultrasuoni alla scheda ottasonica
Collegare i sensori a ultrasuoni alla scheda ottasonica
Collegare i sensori a ultrasuoni alla scheda ottasonica
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

Collega il convertitore di livello logico alla scheda ottasonica
Collega 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

Collega il convertitore di livello logico al Raspberry Pi
Collega 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

Collega Raspberry Pi 5V a Octasonic 5V
Collega Raspberry Pi 5V a Octasonic 5V
Collega Raspberry Pi 5V a Octasonic 5V
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: