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 |
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:
Salvataggio della libreria all'intermo dell'ultimo IDE 1.x per Arduino, cartella "libraries" dell'IDE
Caricamento dalla cartella "examples" dello sketch con esempio di codice, variazione se necessario dell'assegnazione dei pin TX, RX, Reset
Compilazione dello sketch e caricamento su Arduino
Lancio dell'applicazione Toolkit, selezione della COM utilizzata da Arduino (visibile anche in basso a destra nell'IDE) , selezione opzione "Arduino Bridge mode" sulla destra del pulsante "Connect"
Pressione "Connect" per collegarsi al modulo audio tramite Arduino ed utilizzo di Toolkit come di consueto.
NOTE:
Per l'utilizzo è necessario che nel modulo sia presente la versione di firmware 5.2 o superiore.
La versione del programma ToolKit sia la 5.5.1B o superiore
Al momento la modalità "bridge" non consente di eseguire l'aggiornamento firmware
Elenco revisioni | |
29/10/2012 | Emissione preliminare |