AN011 - Installazione ed uso di LPM11162 Arduino Library

La LPM11162 Arduino Library impiega una emulazione della porta seriale tramite pin di I/O sfruttando la libreria SoftwareSerial inclusa nell'ambiente Arduino (IDE 1.x). Questo consente il collegamento al modulo audio con qualsiasi pin.

Installazione della libreria

L'installazione della libreria è molto semplice:

  • scaricare lo ZIP contenente la libreria
  • chiudere l'ambiente di sviluppo Arduino se in uso
  • scompattare il contenuto dello ZIP all'interno della cartella libraries dell'ambiente Arduino

    InstallazioneArduino1
  • avviare l'ambiente Arduino (IDE 1.x)
  • verificare che la libreria sia stata riconosciuta dall'IDE caricando il codice di esempio

    InstallazioneArduino2

  •  compilare il codice di esempio cliccando sul pulsante Verifica

    InstallazioneArduino3

  • attendere il completamento della compilazione ed assicurarsi che sia avvenuta con successo

 

Funzioni di LPM11162 Arduino Library

Ecco l'elenco completo delle funzioni contenute nella libreria:

  • begin(baudrate)
    Configura la libreria e l'hardware per comunicare con il modulo audio LPM11162 con il baudrate selezionato, 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 "test.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.

  • synch()
    Verifica la presenza del collegamento con il Toolkit per la programmazione dei file WAV sul modulo LPM11162. Il collegamento avviene attraverso la COM virtuale dedicata ad Arduino grazie alla quale i dati possono transitare sulla porta USB di Arduino.
    Se il collegamento con il Toolkit è presente è possibile entrare in modalità Bridge chiamando la funzione bridge(). In questa modalità Arduino farà da ponte tra i dati ricevuti dal PC sulla porta USB ed il modulo audio LPM11162. Così sarà possibile programmare il modulo audio ed utilizzare tutte le funzioni del Toolkit.

  • bridge()
    Con questa funzione la libreria Arduino entra in modalità Bridge. In questa modalità Arduino realizza un ponte tra la connessione USB di collegamento al PC e le linee di comunicazione del modulo LPM11162. In questo modo il modulo audio può comunicare direttamente con il PC ed è possibile utilizzare il Toolkit per controllare tutte le funzioni del modulo LPM11162, tra cui ovviamente la programmazione dei file WAV.
    Prima di chiamare la funzione bridge() assicurarsi di aver stabilito la connessione con il Toolkit tramite la funzione synch().

 

Utilizzo di LPM11162 Arduino Library

Utilizzare la libreria è molto semplice ed il codice di esempio è in genere sufficiente ad illustrare il tutto. Riportiamo comunque una breve spiegazione per maggiore chiarezza.

La configurazione completa di collegamento tra modulo LPM11162 ed Arduino utilizza 4 linee (vedi l'articolo tecnico AN009 per maggiori dettagli):

Schema Arduino4Wire

NOTA IMPORTANTE: per realizzare il partitore di adattemento del livelli sulla linea di /RESET è necessario utilizzare due resistenze dell'ordine di 1KΩ o anche meno. Nello schema sopra sono utilizzate una 470Ω e una 820Ω. Vedi l'articolo tecnico AN009 per maggiori dettagli sullo schema.

I pin di Arduino che vengono utilizzati devono essere configurati nel codice:

ArduinoIDE_small

#include <SoftwareSerial.h>
#include <LPM11162.h>


#define LPM11162_RX     4 //Arduino TX (out)
#define LPM11162_TX     5 //Arduino RX (in)
#define LPM11162_RESET  3 //(out)
#define LPM11162_BUSY   2 //(in)


LPM11162 audio(LPM11162_RX,
               LPM11162_TX,
               LPM11162_RESET,
               LPM11162_BUSY);

void setup()
{
    if( audio.synch() )

    {
        audio.bridge();
    }

    audio.begin(9600);
    audio.volume(50);
}


void loop()
{
    audio.play("test.wav");

    while( audio.isBusy() );

    delay( 2000 );
}

E' necessario includere due header file: LPM11162.h per l'uso della LPM11162 Arduino Library e SoftwareSerial.h per l'uso della libreria SoftwareSerial alla quale la libreria per il modulo audio si appoggia.

Il passo successivo è dichiarare una istanza del modulo audio LPM11162 con la configurazione dei pin utilizzata:

LPM11162 audio(LPM11162_RX,
               LPM11162_TX,
               LPM11162_RESET,
               LPM11162_BUSY);

Questo significa che d'ora in poi potremo chiamare tutte le funzioni definite all'interno della libreria utilizzando il nome audio. Utilizzando più moduli LPM11162 potremmo dichiarare altre istanze con nomi diversi in modo da poterci riferire a quello desiderato nel chiamare una certa funzione di libreria.

Nel caso in cui la linea opzionale di /BUSY non fosse utilizzata (vedi articolo tecnico AN009) l'inizializzazione dovrebbe essere come segue:

LPM11162 audio(LPM11162_RX,
               LPM11162_TX,
               LPM11162_RESET,
               LPM_NO_PIN);

All'interno della funzione standard di Arduino Setup() dobbiamo collocare le funzioni di inizializzazione che vogliamo chiamare all'avvio del sistema.
Nel nostro caso la funzione synch() verifica se è presente un collegamento con il Toolkit tramite la COM virtuale dedicata ad Arduino (connessione USB) ed in caso positivo entra in modalità Bridge chiamando la funzione bridge().
Se invece la connessione con il Toolkit non viene rilevata il codice prosegue chiamando prima la funzione begin() che inizializza il baudrate a 9600 bps e poi la volume() per impostare il livello di volume al 50%.

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 (test.wav).
Chiamando questa funzione il file audio viene immediatamente riprodotto, poi tramite la funzione isBusy() utilizzata dentor il while si attende il completamento del Play. Infine c'è un delay di 2 sec per poi iniziare nuovamente con una nuova chiamata della Loop().

 
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
Potenziometro 47K
Potenziometro 47K
Scheda fotosensibile 10x16cm singolo layer
Scheda fotosensibile 10x16cm singolo layer
Pinza a punta dritta
Pinza a punta dritta
PIC16F628A-I/P
PIC16F628A-I/P
Cavetto flessibile Blu (5mt)
Cavetto flessibile Blu (5mt)
Display LCD 16x2 Verde
Display LCD 16x2 Verde
Home