Questo progetto è inutile, ma fa ridere.
Ecco qui la dimostrazione in questo elegante video:
Il progetto è stato realizzato con questi componenti:
- DF Mini Player
- Scheda Micro SD (la più piccola che trovate)
- Arduino Nano
- Scheda millefori
- Sensore microfono
- Speaker (potete anche riciclarlo da una vecchia radio)
- I soliti led
- tre resistenze (2 da 220 ohm e 1 da 1k ohm)
- ponticelli o cavetti vari
- testa di darth vader
Il software che gira sull’Arduino Nano (scaricabile qui, la libreria per il player MP3 utilizzata nello sketch è “DFPlayer Mini Mp3 by Makuna“, è presente nelle librerie dell’Arduino IDE, ho usato la Versione 1.0.1) campiona continuamente l’audio cercando di individuare quando c’è un segnale audio che dura alcuni secondi. Non controlla solo che il segnale dal microfono superi un valore di soglia, ma memorizza una sequenza di valori in modo da poter stabilire se il suono continua nel tempo oppure no.
In questo modo si può simulare una chiacchierata (senza senso) e Dart non comincia a parlare per i fatti suoi, soltanto perché magari una porta ha sbattuto.
I campioni audio sono registrate su una scheda Micro SD letta tramite il lettore DF Mini Player, un vero e proprio lettore di file mp3 che funziona con 5V e si collega facilmente ad Arduino. L’altoparlante potete riciclarlo da qualche vecchia radio oppure acquistarlo online.
Qui trovate gli mp3 dellla voce di Darth Fener ritagliati da video Youtube e inseriti in file numerati come richiesto dalla scheda DF Mini.
Questo lo schema di assemblaggio dei componenti con tutte le sue parti:
Utilizzare un microfono con Arduino
Il microfono è un sensore con tre pin, V
, G
, e output
che fornisce una tensione variabile a seconda delle onde sonore che lo colpiscono. Il segnale può essere letto da un input analogico, come il pin A0
di Arduino.
La maggior parte dei programmi che si trovano illustrano il funzionamento usando un valore di soglia: legge A0
, se supera il valore di 300 allora accendi una lucina. Ma la natura del suono è molto più complessa e un semplice valore di soglia non è sufficiente per identificare una voce che parla. Per identificare il parlato è necessario analizzare l’onda sonora, scomporla istantaneamente in frequenze e individuare i pattern che identificano delle sillabe. Tuttavia non è possibile farlo con un Arduino Nano, anche se ho trovato delle librerie che consentono di calcolare la trasformata di Fourier del segnale in ingresso e di individuarne le frequenze.
Ho capito quindi come sia possibile realizzare un dispositivo che identifica, ad esempio, una sequenza di due frequenze, tipo un fischio bitonale, con cui si può comandare un relay.
Tornando al microfono, non è possibile identificare una persona che parla (almeno non semplicemente) e ho quindi cercato un compromesso.
La gallery con le foto della costruzione del Dart Fener parlante e altri dettagli: