Giochiamo con Arduino: strumento musicale ad ultrasuoni “no touch”

Strumento musicale ad ultrasuoni con Arduino

Questo semplice progetto è nato durante un corso sull'utilizzo di Arduino con i miei alunni ed ha preso spunto dall'uso dei sensori ad ultrasuoni per il parcheggio delle automobili nei quali viene emesso un suono tanto più acuto (a frequenza maggiore) quanto minore è la distanza che separa il nostro paraurti da quello dell’automobile vicina. L’idea è stata quella di realizzare uno “strumento musicale” che emette le note con il solo movimento del palmo della mano del “musicista”. Aumentando la distanza della mano dal sensore, aumenta la frequenza emessa da un buzzer, ovvero da un componente elettronico in grado di generare toni ed utilizzato spesso per attirare l'attenzione. Chiaramente, con questo metodo non è possibile generare delle frequenze precise che corrispondono ad altrettante note, quindi non si tratta di uno strumento musicale degno di questo nome, ma di una sperimentazione didattica che consente di acquisire nozioni di elettronica giocando.

Principio di funzionamento

Dopo aver realizzato il progetto ho effettuato una ricerca a ritroso scoprendo che l'idea di realizzare uno strumento musicale in grado di emettere un suono senza alcun contatto con il musicista nacque agli inizi del 1900 e prese il nome (anche se francesizzato) del suo ideatore Theremin. Con questo strumento formato da due oscillatori ad alta frequenza, il musicista, muovendo delicatamente le mani vicino a due antenne, con una ne controlla il volume, e con l'altra la frequenza dei suoni emessi. Oggi la stessa idea può essere realizzata avendo la possibilità di utilizzare microcontrollori e sensori a basso costo. In un articolo pubblicato sul blog di Elettronica Open Source, l'autore ha illustrato il progetto di uno strumento musicale che emette frequenze diverse in base all'intensità luminosa rilevata da una fotoresistenza. Per poter ridurre al minimo i costi, nel nostro progetto abbiamo utilizzato Arduino Uno e alcuni componenti facilmente reperibili: un sensore ultrasonico HC-SR04, un buzzer o cicalino piezoelettrico (presente nei vari kit di Arduino), un interruttore a tre posizioni, due diodi LED di colore diverso e due resistori da 220 Ω. Attraverso questi componenti abbiamo realizzato il semplice strumento musicale.

La distanza rilevata in centimetri dal sensore viene moltiplicata per un coefficiente per ottenere la frequenza da inviare al buzzer. E’ stato utilizzato un interruttore o selettore a tre posizioni, tramite il quale scegliere due coefficienti diversi e quindi suonare con due gamme di frequenze. In particolare, se il selettore è nella posizione 0 (centrale) il buzzer è disabilitato; in questo modo eviteremo il suono continuo dello strumento che si attiverebbe in presenza della sola alimentazione. Se il selettore è nella posizione 1 il software moltiplica il numero di centimetri per un coefficiente di valore = 20 e quindi le frequenze generate varieranno da 0 Hz, quando la mano è a contatto con il sensore, fino alla frequenza ottenuta dal prodotto della distanza massima in cm, dalla mano del musicista al piano di appoggio del sensore, moltiplicata  x 20 (opzione bassa frequenza segnalata dall’accensione del LED giallo). Se, infine, il selettore è nella posizione 2 il software moltiplica il numero di centimetri per un coefficiente di valore = 50 e quindi le frequenze generate varieranno da 0 Hz quando la mano è a contatto con il sensore fino alla distanza massima x 50 (opzione alta frequenza segnalata dall’accensione del LED rosso). A seconda della scala scelta, la frequenza massima dipenderà chiaramente dall’altezza del piano su cui poggia lo strumento e dall’altezza del musicista.

Componenti utilizzati

Sensore ultrasonico HC-SR04: come illustrato in Figura 1, il funzionamento del nostro sensore a quattro pin consiste nell’inviare attraverso lo spazio un segnale sonoro trasmesso utilizzando il pin Trigger Pulse a 40 kHz, e quindi ben al di sopra della soglia massima udibile dall’uomo che teoricamente è dell’ordine di 20 kHz, ma scende drasticamente all’aumentare dell’età. Tale frequenza, non essendo percepita dall’orecchio umano, evita di disturbarci durante il funzionamento del dispositivo. Questo segnale sarà poi riflesso da eventuali ostacoli, tornerà indietro e sarà ricevuto tramite il pin Echo Pulse. Conoscendo la velocità del suono (circa 340 m/s a 20°C) e misurando il tempo impiegato dallo stesso per percorrere la distanza di andata e ritorno, è possibile calcolare la distanza percorsa utilizzando la formula:

spazio = velocità x tempo

Principio di funzionamento del sensore ad ultrasuoni.

Figura 1: principio di funzionamento del sensore ad ultrasuoni

Il suono si muove più velocemente quando fa più caldo, ma in questa prima versione del progetto non è nostro interesse una misura precisa della distanza e quindi ci accontentiamo di misurarla senza tener conto del fattore di correzione dovuto alla variazione di temperatura e supponendo che sia costante e pari a 20°C.

Nello sketch la costante velocità è definita come: const float v=331.5+0.6*20.

Si può riscontrare comunque la presenza del coefficiente di correzione 0,6 moltiplicato per la temperatura presente nell’ambiente il cui valore, nel nostro caso, è costante e fissato a 20°C. Se volessimo essere più precisi, ci basterebbe quindi aggiungere nel progetto l’acquisizione della temperatura da memorizzare in una variabile che andrebbe sostituita al valore costante 20.

Il sensore scelto ha un range di misura da 2 cm a 4 m, un angolo di misura di 15 gradi e, come si può notare in Figura 2, utilizza 4 pin: 2 per l’alimentazione e 2 per gli impulsi sonori in trasmissione e ricezione:

  • 5 V Supply;
  • Trigger Pulse Input;
  • Echo Pulse Output;
  • 0 V Ground.

Il sensore HC-SR04 funziona ascoltando l’eco dei suoni, per cui deve essere posizionato in modo appropriato evitando che il suono rimbalzi contro un finto ostacolo come, ad esempio, il bordo della breadboard utilizzata per il montaggio dei componenti o un tavolo. Inoltre, il musicista dovrebbe mantenere la sua mano quanto più possibile perpendicolare al trasmettitore del sensore per evitare che una superficie inclinata rifletta il suono, deviandolo dalla direzione desiderata.

Sensore ad ultrasuoni HC-SR04

Figura 2: sensore ad ultrasuoni HC-SR04

Buzzer o cicalino piezoelettrico: è un componente elettronico in grado di generare toni sfruttando l'effetto piezoelettrico di un cristallo contenuto all’interno del dispositivo. La vibrazione del cristallo, provocata da una variazione di tensione, fa vibrare l’aria e quindi genera un suono. Ad esempio, applicando, con il comando digitalWrite, ai terminali del buzzer un’onda quadra di tensione variabile tra il valore HIGH (5 V su Arduino) e LOW (0 V) esso emetterà un suono. Nel nostro sketch abbiamo utilizzato la funzione incorporata e più potente tone (pin, frequenza, durata) che genera un tono dal pin indicato alla frequenza voluta espressa in herz. Il parametro durata è opzionale e rappresenta la durata del tono espressa in millisecondi. Il pin di Arduino utilizzato come output deve essere collegato al terminale positivo del componente visibile in Figura 3.

Buzzer piezoelettrico.

Figura 3: buzzer piezoelettrico

Interruttore a tre posizioni: un interruttore a tre posizioni, in Figura 4 potete vederne un esempio, (a volte definito ON-OFF-ON o SPTT) presenta 3 PIN: il comune (centrale o posizione 0) e i due di uscita (posizioni 1 e 2). Quando la levetta è in alto o in basso, il PIN comune è connesso ad uno dei due PIN di uscita; quando la levetta è in posizione centrale, il PIN comune non è connesso a nulla.

Interruttore a tre posizioni

Figura 4: interruttore a tre posizioni

LED di colore giallo e rosso: abbiamo utilizzato due LED che segnalano la posizione dell’interruttore ciascuno dei quali collegato in serie ad un resistore di 220 Ω per limitare la corrente; posizione 0 LED spenti, posizione 1 LED giallo acceso e LED rosso spento (opzione bassa frequenza), posizione 2 LED giallo spento e LED rosso acceso (opzione alta frequenza).

Realizzazione del progetto

Circuito elettrico

In Figura 5 trovate il circuito elettrico di una prima versione del progetto realizzato con fritzing, mentre in Figura 6 la foto del primo prototipo.

Circuito elettrico

Figura 5: circuito elettrico Versione 1.0

 

Collegamento elettrico dei componenti

Figura 6: collegamento elettrico dei componenti Versione 1.0

Sketch: lo sketch è spiegato tramite i commenti presenti in corrispondenza di quasi tutte le istruzioni. Analizziamolo per gli aspetti principali: la prima parte è dedicata alla dichiarazione dei pin utilizzati nel progetto tramite costanti globali di tipo intero. Abbiamo utilizzato due pin per l'interruttore o selettore (2 e 3), due pin per i LED (10 e 11), due per il sensore ad ultrasuoni (7 e 8) ed uno per il buzzer (9). Infine, la dichiarazione della costante v di tipo float contiene la velocità del suono espressa in metri al secondo: al valore costante 331.5 si aggiunge un fattore di correzione (0.6) che si moltiplica per la temperatura ambiente espressa in gradi centigradi (nel nostro caso supponiamo valga 20 °C). La velocità è di circa 340 m/s 0 1200 km/h. Le costanti e le variabili definite in questa sezione hanno validità globale, cioè possono essere utilizzate in tutte le sezioni che compongono il programma.
[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2827 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici e potrai fare il download in formato PDF eBook e Mobi per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend