
Per dare la parola ad un progetto elettronico, da qualche tempo si trova sul mercato un modulo audio con slot MicroSD integrato con il quale realizzare in modo semplice un player comandato da pulsanti o comandato via seriale, ad esempio con un PIC o con Arduino
Il modulo è prodotto dalla 4DSystems (www.4dsystems.com.au), una azienda australiana che produce tra l'altro moduli LCD grafici molto interessanti.
Il modulo che vedremo oggi e' il chip audio SOMO-14D , in grado di riprodurre file audio salvati su una microSD (max 512 files su 2 Gb).
I file devono essere salvati nel formato mono ADPCM, anche se non è un formato comunissimo, sono disponibili free sulla rete molti convertitori che facilitano il compito del programmatore.
La stessa 4DSystems mette a disposizione (gratuitamente) un sw di conversione che in modo molto veloce converte .WAV o MP3 nel formato compatibile .ad4 (http://www.4dsystems.com.au/prod.php?id=74). Personalmente per ottimizzare la qualità di suoni o voce preconverto gli mp3 da stereo a mono con il sw AUDACITY, poi passo il file .wav o mp3 al SOMO Tool per la conversione definitiva in .ad4
Descrizione del modulo
Il controllo del modulo avviene in due modalità: KEY-MODE e SERIAL-MODE. Mediante il KEY-MODE il chip funziona in modo stand-alone ed è pilotabile tramite 3 semplici bottoni. La tensione richiesta per il funzionamento è di 3V e avendo già un piccolo amplificatore a bordo (realizzato con due linee PWM differenziali), occorre solo un semplice speaker da 0.5W e siamo a posto.
Per valutarne rapidamente potenzialità e qualità sonora nella modalità KEY-MODE, ho realizzato il circuitino su una breadboard seguendo lo schema base che prevede 4 pulsanti NA , un condensatore elettrolitico di livellamento ed un piccolo altoparlante da 8Ohm.
Alternativa al KEY-MODE è quella di utilizzare il SERIAL-MODE che permette di pilotare il modulo attraverso pochi pin di I/O di un microcontroller.
Volendo trovare una delle innumerevoli applicazioni per l'Arduino, questa puo' essere molto interessante da realizzare, anche per i principianti.
Bastano infatti 4 pin da collegare per utilizzare direttamente l'Arduino per pilotare la riproduzione del modulo. Per chi volesse cimentarsi può utilizzare lo sketch che consente di esplorare tutte le features del chip.
Andando più nel dettaglio, la modalità SERIAL-MODE espone una semplice interfaccia 2-wire verso qualsiasi microcontrollore attraverso due linee, CLK e DATA .
Nel protocollo di comunicazione sono previste tutte le operazioni fondamentali audio quali PLAY, PAUSE, STOP e le funzioni di controllo VOLUME e selezione BRANO. Il microcontroller scelto dovrà solamente inviare dei semplici comandi seriali a 16 bits secondo la codifica nella tabella seguente:
Campo di applicazione
Per la versatilità del modulo, una delle prime applicazioni che mi viene in mente e' nel campo della robotica, ma anche nel settore industriale o della sicurezza dove si renda necessario attivare un messaggio vocale allo scatenarsi di un determinato evento esterno.
Riporto un breve elenco di possibili applicazioni tratte dal datasheet:
- Controllo robotico e industriale.
- Dispositivi elevatori, Sicurezza, Controllo Accessi e di Avviso.
- Sistemi di annunci vocali.
- Automotive, Sensori di parcheggio, sistemi di navigazione GPS.
- Automazione per elettrodomestici o domotica.
- Impianti stradali: parking systems cittadini, caselli autostradali,
- Giochi, strumenti di apprendimento, libri parlanti e tutti gli effetti sonori presenti nei giochi.
Per la creazione dei messaggi vocali si possono utilizzare vari modi, oltre alla registrazione diretta (magari avendo una bella voce impostata) esistono in rete software su PC che effettuano il text-to-speech in italiano, basta poi salvare i file audio (convertiti in .ad4) sul supporto microSD per ottenere una libreria di messaggi specifica per ogni evento previsto.
Uno dei software più utili e ben fatto per questo scopo è DSpeech giunto alla versione 1.55.3.
Riassumo le caratteristiche principali del modulo rimandando tutti i dettagli al datasheet sul sito del produttore:
- Formato file 4-bit ADPCM (.ad4) con sampling rates da 6Khz fino a 32Khz.
- Due modalita' di interfacciamento:
- SERIAL MODE: Supporta una interfaccia 2-Wire (Data, Clock) compatibile con qualunque micro-controller.
- KEY-MODE: con tre pulsanti si accede a tutte le funzioni, senza necessita' di un controller (a meno che tu non voglia usare i bit del processore per simulare i pulsanti)
- Uscita audio realizzata con 2 linee differenziali PWM, che consente la connessione diretta di un altoparlante (8 Ohm/0.5W).
- Uscita audio aggiuntiva di maggiore qualita' (16-bit DAC) per connessione ad un amplificatore esterno.
- Slot micro-SD per contenere fino a 512 file audio, voce o musicali .
- Alimentazione singola da 3.0V a 3.8V DC
- Bassisimo consumo a riposo (8.0uA)
- Dimensioni ultra compatte: solo 18.3 x 20.8 mm (poco più grande dello slot MicroSD)
Ho trovato su youtube un interessante e completo videotutorial (In spagnolo) per Arduino che illustra passo passo come collegare il modulo audio nelle due modalità previste, e anche come suona.

Per “dare la parola ad un progetto”, ultimamente ho usato il VMusic2. A parte dei problemi iniziali con la versione firmware compatibile con un numero limitato di pendrive, alla fine il risultato è stato soddisfacente.
LA differenza sostanziale è che il Vmusic legge le chiavette usb e quindi in alcuni casi è più pratico. E, come dicevo sopra, con gli utlimi aggiornamenti firmware è compatibile con un largo numero di marche di pendrive.
(anche se i motivi (driver differenti?) di questa mancanza di compatibilità non riesco a comprenderla fino in fondo)
Anche i costi credo siano differenti però…
P.S. la FAT16 con la gestione della SD è disponibile anche in FTPmicro
Tutorial interessantissimo e molto chiaro. Però volevo capire una cosa: io sto facendo un progetto con arduino in cui dei sensori rilevano una distanza (per esempio da una parete) e la comunicano attraverso questo chip. Io ho preparato vari file audio con già registrati dei messaggi (esempio: “ostacolo a 50 metri”, “ostacolo a 40 metri”) e così via. La mia domanda è questa: è possibile fare in modo che arduino selezioni un determinato file audio e non uno casuale? Mi spiego: i sensori rilevano una distanza di 20 metri. Come faccio a fare in modo che arduino comunichi al somo di far partire il file audio che dice che l’ostacolo è a 20 metri e non un file audio a caso? grazie in anticipo per la risposta
simone
sono nuovo di arduino, molto nuovo, ma non dell'elettronica o dell'informatica, … in generale.
Sarei intressato a un corso di assembler, se davvero comincia da un livello… dilettanti, pagando ovviamente.
Sarei interessato ad arduino, non sò quale modello, sopratutto perchè mi è sembrato di capire che si
programma in assembler, quindi… dove trovo un manuale che comincia dall'inizio?, pagando se necessario.
Sarei grato a chiunque mi dà info in tal senso. [email protected]
saluti