Proponiamo, in questo articolo, un simpaticissimo simulatore del verso di un uccellino, realizzato con la scheda ESPertino e il buzzer a corredo con lo STARTER KIT. Variando i parametri di chiamata di una funzione è possibile cambiare il verso del volatile.
Introduzione
Imitare il verso degli uccelli, digitalmente, è cosa assai facile. E' sufficiente, infatti, effettuare uno "sweep" di frequenza (vedi figura 1) per ottenere un realistico suono. A ogni modo, le condizioni principali per raggiungere lo scopo sono essenzialmente due:
- Lo sweep deve essere molto veloce;
- La frequenza d'inizio e di fine deve risultare abbastanza alta, diciamo almeno 4000 Hz.
Connessioni elettriche
Lo schema elettrico risulta essenziale ed è sufficiente collegare il buzzer dello STARTER KIT alla porta 5 di ESPertino, come mostrato in figura 2. In questa maniera si può anche controllare il suo stato logico attraverso il relativo diodo Led onboard. E' possibile inserire, nella linea, una resistenza di limitazione dal basso valore ohmico, per una eventuale protezione. Essa non è strettamente necessaria.
Lo sketch
Il programma utilizza la funzione setup() esclusivamente per configurare la porta di uscita alla quale risulta collegato il buzzer. La funzione loop() attua all'infinito, invece, le generazioni del verso del volatile. A tale scopo sono state create due diverse funzioni:
- uccellino_calante(), che genera uno sweep a frequenza discendente;
- uccellino_crescente(), che genera uno sweep a frequenza ascendente.
I parametri passati a esse sono i seguenti:
- Start: durata (in microsecondi) del semiperiodo iniziale del segnale;
- Stop: durata (in microsecondi) del semiperiodo finale del segnale;
- Durata: durata (in numero cicli) del suono prodotto;
- Pausa: pausa di attesa dopo il suono prodotto.
#define PIN_BUZZER 5 // Pin per il buzzer void setup() { pinMode(PIN_BUZZER,OUTPUT); digitalWrite(PIN_BUZZER,LOW); } void loop() { uccellino_calante(90,130,50,100); uccellino_calante(120,130,20,60); uccellino_calante(120,130,20,60); uccellino_calante(120,130,20,60); uccellino_calante(120,130,20,60); uccellino_calante(120,130,20,60); uccellino_calante(120,130,20,100); uccellino_crescente(120,100,50,300); uccellino_calante(120,130,40,60); uccellino_calante(120,130,40,60); uccellino_crescente(120,100,50,800); } void uccellino_calante(int start,int stop,int durata,int pausa) { for(int p=start;p<=stop;p++) { for(int k=1;k<=durata;k++) { digitalWrite(PIN_BUZZER,HIGH); delayMicroseconds(p); digitalWrite(PIN_BUZZER,LOW); delayMicroseconds(p); } } delay(pausa); } void uccellino_crescente(int start,int stop,int durata,int pausa) { for(int p=start;p>=stop;p--) { for(int k=1;k<=durata;k++) { digitalWrite(PIN_BUZZER,HIGH); delayMicroseconds(p); digitalWrite(PIN_BUZZER,LOW); delayMicroseconds(p); } } delay(pausa); }
Utilizzo
E' sufficiente fornire la tensione alla scheda ESPertino, dopo averla programmata, per ascoltare, sul buzzer, il verso dell'uccellino. L'esempio proposto si avvale di undici chiamate alle funzioni generatrici ed è, sicuramente, migliorabile. Non è una cifra elevata ma se si creano nuovi suoni con tante invocazioni alle procedure in più, i risultati saranno di qualità maggiore. Si potrebbe anche effettuare una parametrizzazione "casuale" degli argomenti passati, in modo che il suono prodotto risulti sempre differente. La forma d'onda di quella dello sketch proposto è mostrata in figura 3.
E' possibile ascoltare qui sotto il verso dell'uccellino prodotto dal prototipo illustrato nell'articolo.
Conclusioni
Invitiamo i lettori a proporre versi più realistici o interessanti, scrivendo nei commenti le proprie sequenze delle funzioni uccellino_calante() e uccellino_crescente(). Buona sperimentazione a tutti con lo STARTER KIT di ESPertino.
Registrando il reale verso degli uccelli, in un bosco, e riproducendolo a velocità diverse (magari rallendandolo) si scoprono tante cose interessanti della natura.
Non usate il richiamo per attirare gli uccelli, nella caccia.
Sarebbe codardo e disumano.
Concordo pienamente Giovanni,
Sto provando la scheda, ma non riesco ad installarla; cioè ho la sensazione che il PC non la riconosca. Quando lancio Arduino IDE dal menù strumenti quale scheda devo settare ? Nel menù strumenti Espertino non c’è! Ci sono tanti Arduino, Lilli pad, Adafruit, ecc… come devo fare ??
Saluti grazie
Arrivederci
Salve Andrea, se può esserle utile a questo link ci sono alcune informazioni sulla gestione della scheda https://it.emcelettronica.com/la-nuova-scheda-espertino-per-liot, in particolare nella sezione “INSTALLAZIONE DELLE LIBRERIE”.
Salve,
grazie a tutti per aver condiviso questo interessante articolo sul canto dell’uccellino…
Ci ho lavorato un pò sopra ed il risultato è stato questo:
https://youtu.be/VcY8dLjhRh8
I miei studenti sono rimasti molto contenti !!
So che sembra uno scherzo ma non lo è: per caso avreste anche il programma che simula il canto del gallo, o della gallina ??
Grazie di nuovo, saluti
Andrea
Come detto non è uno scherzo…chiedere è lecito, rispondere è cortesia! Avete il programma che simula il canto della gallina (o del gallo)? Basta un si o un no, Oppure sapreste cortesemente indicarmi dove posso trovarlo? Grazie mille saluti a tutti
Andrea
Salve Andrea, ci dispiace informarla che non abbiamo a disposizione questo programma.
Un cordiale saluto