AN002 - Sintesi vocale con circuito a microcontrollore

Vediamo un esempio di progetto di un semplice sistema di sintesi vocale a microcontrollore basato sul modulo LPM11162. Poichè il collegamento tra il microcontrollore ed il modulo audio in questo caso è di tipo seriale (SERIAL-MODE), lo schema è generico in quanto è possibile impiegare qualunque tipo di microcontrollore, dai più diffusi della famiglia PIC Microchip (PIC16F84, PIC16F628, PIC16F876,...) ai potenti ATMEGA AVR (ATMEGA8, ATMEGA32, ATMEGA8515,...) ai piccoli ed economici ATTINY AVR (ATTINY84, ATTINY2313,...), come pure i pratici BasicStamp, Clubloc o Arduino.

L'idea di fondo è memorizzare nel modulo audio LPM11162 i messaggi vocali che vogliamo riprodurre sotto forma di file wave ed inviare poi i comandi di Play, Stop, Volume dal microcontrollore per controllarne la riproduzione.

Per la memorizzazione dei file audio sul modulo possiamo fare uso di un collegamento seriale con un PC sul quale lanciamo l'utility LPM11162 ToolKit, gratuitamente scaricabile dal sito. In pochi secondi programmeremo sul modulo audio i file wave che ci interessano e saremo in grado di riprodurli!


Ecco lo schema a blocchi con i pochi componenti necessari:

Schema_Sintesi_Vocale1

Nel progetto che proponiamo la scheda progettata dovrà emettere alcune parole, per esempio pronunciare i sette giorni della settimana. Andiamo per passi:

 

Descrizione

 

Il modulo audio LPM11162 è un piccolo componente con una memoria flash interna progettato per memorizzare e riprodurre file wave grazie a pochi semplici comandi seriali. Nella scheda riportata sopra schematicamente un microcontrollore (per esempio un PIC o un AVR) è connesso tramite una porta seriale UART al modulo audio, la cui uscita analogica è collegata a sua volta ad un amplificatore audio di potenza che pilota un altoparlante.
Abbiamo dotato la scheda di un connettore di programmazione tramite il quale possiamo collagare un PC e scaricare all'interno del modulo audio i file wave che saranno riprodotti come sintesi vocale. Una volta che tramite il PC avremo programmato i messaggi all'interno del modulo audio il microcontrollore dovrà soltanto inviare il comando di Play (indicando il nome del file wave da riprodurre) per iniziare la riproduzione del file.
Nell'esempio programmeremo il modulo audio con sette file wave, ognuno corrispondente alla pronuncia di un giorno della settimana (Lunedi.wav, Martedi.wav, Mercoledi.wav,...). Teniamo presente che il modulo LPM11162 consente la memorizzazione fino ad un massimo di 128 file wave, che certamente non sono pochi!

 

Programmazione da PC

 

LPM11162 ToolKit è un'applicazione per il controllo del un modulo LPM11162 tramite porta seriale di un PC. Grazie ad LPM11162 ToolKit è possibile programmare file wave nel modulo audio ed anche riprodurli. Nell'esempio di progetto queste funzioni sono estremamente utili per velocizzare lo sviluppo:

1) con LPM11162 ToolKit programmiamo i file wave sulla scheda di sintesi vocale ed eliminiamo così la necessità di prevedere la procedura di programmazione del modulo nel firmware del microcontrollore;

2) con le funzioni di "Play File", "Stop" e "Volume" di LPM11162 ToolKit possiamo riprodurre i file wave che abbiamo già programmato. In questo modo si può verificare il funzionamento dello stadio finale audio e dello speaker. Sentiremo "parlare" la scheda di sintesi vocale ancora prima di aver programmato il suo microcontrollore!

 

Il microcontrollore

Come abbiamo detto, i messaggi vocali vengono programmati nel modulo audio tramite un collegamento seriale con il PC. Dunque il microcontrollore deve soltanto preoccuparsi di usare i comandi di Play, Stop, Volume quando vuole riprodurre un messaggio (vedi l'articolo tecnico AN005 o il datasheet del modulo audio per i dettagli sui comandi). Il collegamento tra il microcontrollore ed il modulo audio prevede fino a 4 linee, ma se il nostro microcontrollore è molto piccolo o comunque vogliamo riservare dei pin per altri usi è possibile ridurre il numero di collegamenti fino ad 1 sola linea!

Vediamo in dettaglio le varie modalità di collegamento:

 

LPM11162_TypicalApp

Collegamento a 4 fili:

 

- N.1 linea di /RESET con la quale il microcontrollore può mantenere in reset il modulo audio all'avvio fino a quando non è pronto per comunicare con esso;
- N.2 linee di comunicazione seriale (TX/RX). Con la linea TX il microcontrollore invia il carattere di autobaudrate subito dopo il reset per consentire al modulo audio di riconoscere il baudrate con il quale proseguirà il resto della comunicazione, ed invia anche i vari comandi. Invece sulla linea RX il microcontrollore riceve le informazioni di avvio che il modulo audio invia subito dopo il ricevimento del carattere di autobaudrate. Le informazioni inviate sono la versione di firmware ed il module ID.
- N.1 linea di /BUSY tramite la quale il modulo audio comunica al microcontrollore quando è occupato nell'esecuzione di un comando. Ad esempio nell'esecuzione del comando di Play la linea rimarrà bassa per tutta la durata della riproduzione del file wave, pertanto il microcontrollore può capire se la riproduzione è ancora in corso oppure no.

 

Collegamento a 3 fili:

 

Nello schema di collegamento a 4 fili si può notare come in effetti la linea di /RESET non sia strettamente necessaria.
Infatti è possibile collegare al pin di reset del modulo audio una classica rete RC con condensatore verso massa e resistenza verso l'alimentazione del modulo. Con questa rete, quando il circuito viene alimentato si mantiene il modulo in reset (livello basso) per un tempo determinato dalla costante RC. La rete va dimensionata generare un reset di durata superiore a tPU (>10ms, vedi datasheet).

 

Collegamento a 2 fili:

 

Se vogliamo possiamo fare a meno anche della linea di /BUSY.
Il datasheet del modulo audio indica un tempo massimo per l'esecuzione di ciascun comando. Dopo l'invio di un comando il microcontrollore può attendere un tempo superiore a quello specificato per l'esecuzione di quel comando invece di monitorare la linea di /BUSY per sapere se è completato.
Esiste un solo comando per il quale il datasheet non può indicare un tempo massimo di esecuzione, ed è il comando di Play. In questo caso il tempo di esecuzione è pari alla durata di riproduzione del file wave, pertanto il datasheet non fornisce un tempo massimo, ma in realtà in certe applicazioni questo dato non è fondamentale. Infatti sapendo a priori la durata dei file wave che si andranno a riprodurre è possibile prevedere nel firmware del microcontrollore delle attese pari alla durata dei singoli file wave.

 

Collegamento a 1 filo:

 

L'ultimo passo nella riduzione del numero di collegamenti è l'eliminazione della linea di comunicazione seriale RX.
Come abbiamo detto su questa linea il modulo audio comunica all'avvio alcune informazioni di servizio (versione firmware e module ID), che possono essere utili per esempio nella segnalazione a LP ELETTRONICA di un eventuale problema con un proprio modulo, ma in realtà non hanno particolare interesse nell'applicazione di un sintetizzatore vocale.
Per questo motivo è possibile rimuovere il collegamento seriale RX del microcontrollore ed attendere dopo l'invio del carattere di autobaudrate un tempo maggiore di tAC (>150ms, vedi datasheet) durante il quale il modulo trasmette le informazioni di servizio che al microcontrollore non interessano.
Queste informazioni, possono comunque essere sempre lette tramite LPM11162 ToolKit collegando la scheda di sintesi vocale al PC.

 

Amplificatore finale audio

Il segnale audio analogico in uscita dal pin AUDIO-OUT del modulo è connesso ad uno stadio finale di potenza per il pilotaggio di un altoparlante.
In funzione della potenza che si desidera ottenere è possibile realizzare circuiti diversi; nel nostro caso abbiamo preso come esempio il diffuso LM386 che risulta di piccolo ingombro, basso costo e semplice utilizzo. Non può erogare grosse potenze, ma è sufficiente per esempio per connettere un piccolo altoparlante da 0.25W/8Ω di quelli normalmente usati in qualunque radiolina.
Un dato interessante da tenere in considerazione è il fatto che probabilmente il sintetizzatore vocale non dovrà "parlare" di continuo, ma emetterà parole, messaggi e suoni soltanto in funzione di certi eventi che dipendono dell'applicazione in cui è utilizzato. Questo permette di dimensionare lo stadio finale audio anche per potenze molto superori senza la necessità di grossi dissipatori, poichè pur avendo delle elevate potenze di picco da smaltire la potenza media dissipata dallo stadio finale sarà molto bassa se i periodi di silenzio saranno mediamente molto più lunghi dei periodi di suono. Con questa considerazione si può pensare di usare anche altri amplificatori di potenza in classe AB (tipo TDA2030, TDA2050, ...) che con pochi componenti possono erogare notevoli potenze d'uscita senza necessità di dissipatore.

 

Interfaccia di programmazione

La scheda ausiliaria utilizzata come interfaccia di programmazione per il modulo LPM11162 è semplicemente un adattatore di livelli RS232. Può impiegare un classico MAX232 o simili e se sul connettore  prevediamo un pin di alimentazione possiamo alimentare l'interfaccia dalla scheda di sintesi vocale senza bisogno di alimentazioni esterne.
Con un connettore DB9 femmina si può connettere l'interfaccia al PC con un comune cavo seriale ed utilizzare LPM11162 ToolKit per la programmazione.

http://www.lpelettronica.it/index.php?page=shop.product_details&product_id=136&flypage=flypage.tpl&pop=0&option=com_virtuemart&Itemid=1
 
RSS
 
icon rssCon il feed RSS ricevi aggiornamenti in tempo reale su tutte le novità del sito.

Iscriviti subito al feed RSS!

Social

icon fb circle icon tw circle icon g circle icon rss circle

Prodotti nello Shop
7805 - Regolatore 5V
7805 - Regolatore 5V
Morsetto 4 poli PCB
Morsetto 4 poli PCB
Pinzetta ricurva per assemblaggi
Pinzetta ricurva per assemblaggi
Potenziometro 1K
Potenziometro 1K
CD4011 - Quad 2-Input NAND (2pz)
CD4011 - Quad 2-Input NAND (2pz)
Pasta termica 25gr
Pasta termica 25gr
Home