Dart Fener parlante con Arduino Nano e DF player mini mp3

Un Dart Fener parlante: ti metti davanti a lui e gli parli e lui risponde con delle frasi del film, rigorosamente a caso

Aprile 23, 2018

Questo progetto è inutile, ma fa ridere.

Ecco qui la dimostrazione in questo elegante video:

https://www.instagram.com/p/BfWJ6cahj5f/?taken-by=giuliopons

Il progetto è stato realizzato con questi componenti:

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:

Author

PHP expert. Wordpress plugin and theme developer. Father, Maker, Arduino and ESP8266 enthusiast.

Recommended

Come costruire un saturimetro

Come costruire un saturimetro rudimentale con Arduino, modificando un sensore KY-039 per il battito cardiaco.

Aprile 25, 2020

Hacking del sistema di irrigazione Claber

Modificare il sistema di irrigazione della Claber per utilizzarlo con Arduino e una app realizzata ad hoc

Novembre 1, 2019

Telefono Vintage: Trasformazione di un Vecchio Telefono a Rotella

Breve riassunto del progetto del telefono vintage

Giugno 1, 2024

Stampare PCB per i progetti con Arduino non è difficile (parte II)

Tra i miglioramenti possibili, uno dei più affascinanti e complessi è passare dalla breadboard al circuito stampato, cioè passare dall'ammasso di fili e componenti saldati o precariamente connessi al supporto solido, professionale e compatto della scheda elettronica.

Giugno 9, 2020

Dalla breadboard al circuito stampato (parte I)

Stufo di saldare? Proviamo a fare i PCB

Maggio 8, 2020

Trasformazione di uno zaino vintage di Millet Walter Bonatti

Retrofitting di un vecchio zaino, hacking di un oggetto vintage, l'ho migliorato? O l'ho peggiorato?

Febbraio 9, 2020