ultimo aggiornamento 29 ottobre 2012


 

Nota: la pagina è basata su informazioni e immagini del sito LPElettronica

LPM11162 Arduino Library

LPM11162 Arduino Library è una libreria open-source per il controllo dei moduli audio LPM11162 con Arduino, la libreria fornisce alcune semplici funzioni ed invia comandi seriali al modulo audio per riprodurre i file programmati.


Libreria per Arduino

 

 

 

homotix

PCBA

OurPCB

Modalità di collegamento
Arduino può essere collegato al modulo audio LPM11162 usando fino a 3 linee di collegamento:

Linea TX
Con una sola linea TX Arduino invia comandi al modulo audio LPM11162 per attivare la riproduzione di file WAV e regolarne il volume.

Linea /BUSY
La linea di /BUSY (opzionale) permette ad Arduino di riconoscere quando la riproduzione di un file WAV è terminata, per avviare la successiva se necessario

Linea /RESET
Pilotando con Arduino la linea di /RESET del modulo LPM11162 allo startup (opzionale), è possibile inviare comandi seriali solo quando il modulo audio è pronto dopo il reset.

Ecco alcuni schemi di collegamento tra modulo audio LPM11162 e scheda Arduino. Sono illustrati 3 schemi, dal più semplice con una sola linea al più completo con 3 linee.
Per ogni schema vengono descritte le caratteristiche, i vantaggi e la configurazione della libreria da utilizzare.

Collegamento 1 linea (TX)

In questo schema l'unica linea di collegamento tra Il modulo audio LPM11162 ed Arduino è il TX seriale. Poiché il modulo audio richiede una alimentazione a 3.3V mentre Arduino lavora a 5V, è necessario portare il livello di uscita di Arduino da 5V a 3.3V, quindi è stato inserito un partitore resistivo con resistenze da 15KΩ e 10KΩ.
Utilizzando la libreria gratuita LPM11162 Arduino Library è necessario specificare che si utilizza solo la linea TX chiamando la funzione begin() come segue:

AudioModule.begin(4, LPM_NO_PIN, LPM_NO_PIN, 9600);

Il primo parametro è il pin di Arduino usato per il TX (pin 4), il secondo e terzo parametro sono i pin usati per controllare /RESET e /BUSY del modulo audio ed in questo caso valgono LPM_NO_PIN, cioè non usati.
La linea di /RESET del modulo audio LPM11162 (pin 2) è lasciata non collegata, quindi il modulo audio uscirà dal reset appena riceverà alimentazione.
Affinché tutto funzioni correttamente è necessario assicurarsi di non trasmettere comandi quando il modulo audio è ancora in reset.

Collegamento 2 linee (TX, /RESET)

In questo schema è stato incluso anche un collegamento per controllare la linea di /RESET del modulo audio LPM11162. Al momento dell'inizializzazione della libreria LPM11162 Arduino Library tramite la funzione begin() il modulo audio viene resettato e da quel momento è pronto a ricevere comandi per riprodurre file WAV:

AudioModule.begin(4, 3, LPM_NO_PIN, 9600);

Inizializzando la libreria in questo modo il pin 3 di Arduino sarà usato per pilotare il reset del modulo audio LPM11162 all'avvio.
Questo collegamento elimina il rischio allo startup di inviare comandi quando ancora il modulo deve uscire dal reset e quindi non pronto a riceverli. Anche in questo caso è necessario un partitore per portare il livello da 5V a 3.3V, ma i valori delle resistenze usate devono essere dell'ordine di 1KΩ per pilotare correttamente il reset del modulo audio, poiché al suo interno c'è una resistenza di pull-up da 4.7KΩ.

Collegamento 3 linee (TX, /RESET, /BUSY)

Questo è lo schema più completo, include anche la possibilità di leggere lo stato del pin /BUSY del modulo audio. Il pin /BUSY viene portato a 0 durante la riproduzione di un file WAV, quindi Arduino ha la possibilità di sapere se la riproduzione è ancora in corso oppure no. In questo modo può attendere, ad esempio, di completare un messaggio vocale prima di lanciarne un altro, creando così delle frasi.
La LPM11162 Arduino Library deve essere inizializzata in questo modo:

AudioModule.begin(4, 3, 2, 9600);

Il terzo parametro delle funzione indica che il pin 2 di Arduino sarà usato per leggere lo stato del pin /BUSY del modulo LPM11162. Come si può vedere, tra i due pin è presente un circuito con BJT che costituisce un traslatore di livello per fare in modo che l'uscita /BUSY del modulo audio a 3.3V arrivi in ingresso al pin 2 di Arduino con livello di 5V come richiesto. Come BJT può andare bene un classico BC337.

Per leggere lo stato della linea /BUSY è disponibile la seguente funzione di libreria che ritorna un valore 0 se la riproduzione di un file WAV è in corso, oppure 1 in caso contrario:

AudioModule.isBusy();

Installazione ed uso di LPM11162 Arduino Library

La libreria LPM11162 Arduino Library impiega una emulazione della porta seriale tramite pin di I/O sfruttando un'altra libreria molto diffusa, la NewSoftSerial. Questo consente il collegamento al modulo audio con qualsiasi pin e non ci obbliga ad usare i pin specifici della porta seriale.
Quindi il primo passo da fare per iniziare è scaricare la libreria NewSoftSerial ed installarla sul proprio PC copiando il contenuto dello ZIP nella cartella libreries della propria installazione dell'ambiente di sviluppo per Arduino.
A questo punto si può procedere ad installare anche la LPM11162 Arduino Library , scompattandola sempre nello stesso percorso.
All'interno della cartella libreries troveremo ora la cartella LPM11162 che contiene la libreria.
Al suo interno abbiamo anche Examples contenente a sua volta tre esempi di codice che utilizza la libreria nelle varie tipologie di collegamento previste.

Funzioni di LPM11162 Arduino Library
Ecco l'elenco completo delle funzioni contenute nella libreria:

- begin(txpin, resetpin, busypin, baudrate)

Configura la libreria e l'hardware per comunicare con il modulo audio LPM11162 . Il primo parametro txpin è il pin utilizzato come TX per i comandi seriali inviati al modulo audio, il secondo parametro resetpin è il pin utilizzato per controllare il reset del modulo audio, busypin è il pin di Arduino con il quale possiamo leggere lo stato della linea /BUSY del modulo LPM11162 per sapere se la riproduzione di un file WAV è ancora in corso. Infine l'ultimo parametro baudrate è il baudrate usato nella comunicazione seriale, tipicamente 9600.

- end()
All'opposto di begin() rilascia interamente le risorse hardware e software impegnate per la comunicazione con il modulo audio LPM11162, quindi sarà possibile ad esempio sfruttare un pin utilizzato in precedenza per il modulo audio per altre funzioni. In realtà non ha un vero uso pratico, è presente solo per completezza.

- play(FileName)
Inizia la riproduzione del file WAV il cui nome è specificato come parametro della funzione, ad esempio "MyFile.wav".

- stop()
Interrompe la riproduzione del file WAV che è in corso.

- volume(volume)
Regola il livello del volume di riproduzione audio passando un numero tra 0 e 100 come parametro per indicare il volume.

- isBusy()
Legge lo stato del pin /BUSY del modulo LPM11162. Questa informazione è utile per sapere se la riproduzione di un file WAV è ancora in corso.

- reset(resetLevel)
Pilota direttamente il pin /RESET del modulo LPM11162. Generalmente non usata, ma può essere utile in qualche caso particolare.

Utilizzo di LPM11162 Arduino Library

Utilizzare la libreria è molto semplice e gli esempi contenuti all'interno dello ZIP sono in genere sufficienti ad illustrare il tutto.
Riportiamo comunque una breve spiegazione per maggiore chiarezza:

#include <NewSoftSerial.h>
#include <LPM11162.h>

LPM11162 AudioModule;

void setup()
{
AudioModule.begin(4, 3, 2, 9600); //Parameters: tx pin, reset pin, busy pin, baudrate.

AudioModule.volume(50);

}


void loop()
{
AudioModule.play("MyFile.wav");
delay(2000);
}

E' necessario includere due header file: LPM11162.h per l'uso della LPM11162 Arduino Library e NewSoftSerial.h per l'uso della libreria NewSoftSerial alla quale la libreria per il modulo audio si appoggia.
Il passo successivo è dichiarare una istanza del modulo audio LPM11162 con LPM11162 AudioModule.
Questo significa che d'ora in poi potremo chiamare tutte le funzioni definite all'interno della libreria utilizzando il nome AudioModule.
Utilizzando più moduli audio potremmo dichiarare altre istanze con nomi diversi in modo da poterci riferire a quello desiderato nel chiamare una certa funzione di libreria.
All'interno della funzione standard di Arduino Setup() dobbiamo collocare le funzioni di inizializzazione che vogliamo chiamare all'avvio del sistema, quindi nel nostro caso la funzione begin() per configurare i pin usati per il modulo audio LPM11162 ed il baudrate, e la funzione volume() per settare il livello di volume desiderato per la riproduzione dei file WAV.
Nell'esempio il primo parametro della begin() è il pin di trasmissione TX che viene associato al pin 4, il secondo parametro è il pin usato per il reset (nell'esempio il pin 3), il terzo parametro è il pin di ingresso che per leggere lo stato della linea di /BUSY per sapere se il modulo audio sta riproducendo un file WAV oppure no (nell'esempio pin 2). L'ultimo parametro è semplicemente il baudrate con cui vogliamo comunicare, il tipico 9600 va benissimo.
Per quanto riguarda invece la funzione volume() ha un unico parametro che è il livello di volume per la riproduzione, da 0 a 100. Nell'esempio viene impostato a metà (che comunque coincide anche con il default).
L'altra funzione standard di Arduino Loop() costituisce il task principale che viene eseguito appunto in loop, cioè ciclicamente, dopo l'esecuzione della Setup().
Nell'esempio viene chiamata la funzione di libreria play() assegnando come parametro il nome del file WAV che vogliamo riprodurre (MyFile.wav).
Dobbiamo aver precedentemente programmato il file audio MyFile.wav sul modulo audio LPM11162, tipicamente con l'apposito programmatore.
Chiamando questa funzione il file audio viene immediatamente riprodotto, poi c'è un delay di 2 sec per dare modo al file di terminare e la riproduzione inizierà nuovamente con una nuova chiamata della Loop() dall'inizio

Utilizzo Arduino in modalità "Bridge"

Utilizzando Arduino con il programma Tookit (versione 5.5.1B o superiore) è possibile gestire il modulo senza l'utilizzo un apposito programmatore

Istruzioni:

NOTE:

 

 

 

Elenco revisioni
29/10/2012 Emissione preliminare
Private Policy Cookie Policy Termini e Condizioni