ultimo aggiornamento 27 luglio 2014


 

La scheda qui presentata è un piccolo Shield che misura 43x57mm che collegato ad una scheda Arduino permette l'utilizzo del modulo sonoro LPM11162 con cui è possibile la memorizzazione e la riproduzione di file audio in formato wave,
Rappresenta l'evoluzione del primo prototipo montato utilizzando una Proto Shield V.4.
Nello Shield è presenti uno stadio alimentatore, uno di interfaccia per adattamento delle tensioni, tra il processore Arduino e il modulo LPM11162, uno stadio amplificatore, un led di segnalazione e un pulsante di reset del processore.
Modello presentato in
questa pagina
Nuova versione

 

 

 

 

 Stadio di alimentazione

Stadio necessario per fornire la tensione di 3.3V per l'alimentazione del modulo LPM11162.    La tensione è derivata da quella di +5V fornita dalla scheda Arduino
E' utilizzato il regolatore LM317LZ, la tensione d'uscita è dimensionata a 3.3V tramite le due resistenze da 240Ω e 390Ω.

 

LM317LZ Regolatore di tensione regolabile
Piedinatura Datasheet Foto dell'integrato

Stadio adattatore di livelli

Il modulo LPM11162 funziona con una tensione di alimentazione di +3.3V, e anche le comunicazioni seriale e i segnali di reset e busy sono e devono essere a questa tensione, il processore Arduino ha una logica a +5V.
Per questo motivo è necessario adattare i livelli uscenti ed entranti dal modulo.
Per quelli entranti (RX - Reset) è sufficiente un partitore realizzato con due resistenze che abbassano la tensione.
Per quelli uscenti si sono utilizzati due transistor BC337 che "trasferiscono" il segnale dalla tensione di +3.3V a +5V.

Transistor BC337  (NPN Switching and Amplifier Applications )
Piedinatura Datasheet Foto del transistor (contenitore plastico)

Amplificatore

Il segnale audio analogico in uscita dal pin 9 del modulo LPM11162  è connesso ad un amplificatore con  LM386. Questo circuito integrato è molto diffuso perché con pochi componenti esterni è in grado di pilotare direttamente un piccolo altoparlante, il package è un piccolo DIP8 e si tratta di un componente economico.
Lo schema utilizzato nello shield è il più semplice realizzabile.      I pin 1 ed 8 sono previsti per una regolazione del guadagno dell'amplificatore nel range 20÷200.
Se lasciati aperti il guadagno è quello minimo, quindi l'ampiezza del segnale sull'altoparlante sarà 20 volte quella di ingresso sul pin 3, mentre inserendo come indicato nello schema un condensatore elettrolitico da 10 µF l'amplificazione sarà pari a 200.
Al pin di ingresso arriva il segnale audio proveniente dal modulo opportunamente attenuato dal trimmer R11 da 10K.
Questa attenuazione è necessaria per limitare il valore massimo del segnale ingresso all'LM386 in modo da non far saturare l'uscita. Tramite il trimmer possiamo poi effettuare una regolazione del volume quando necessario.
l condensatore da 47nF e la resistenza da 10Ω in serie sull'uscita dell'amplificatore sono necessari per rendere stabile l'amplificatore come indicato nel datasheet.
C'è poi un condensatore di disaccoppiamento in serie all'altoparlante che costituisce un blocco in corrente continua.

LM 386  Low Voltage Audio Power Amplifier
Piedinatura Datasheet Foto dell'integrato

Modulo LPM1162

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.
Le quattro linee RX, TX, Busy, Reset sono connesse al processore Arduino tramite uno stadio adattatore di livelli.
L'uscita analogica è collegata all'amplificatore audio di potenza che pilota un altoparlante.
Per la programmazione del modulo si deve collegare 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.

LPM11162 Modulo audio/voce
lpm11162_pin.jpg lpm11162_foto.jpg
Piedinatura Datasheet Foto dell'integrato

Led di segnalazione e pulsante

E' disponibile un led connesso alla porta digitale 6 del processore Arduino, il led è connesso ad una resistenza limitatrice.
Per effettuare il reset del processore Arduino è presente un pulsante connesso al pin reset del connettore da cui vengono anche prelevate le tensioni +5V e Vin per alimentare il circuito


Tasto RESET

Led di segnalazione

Foto della scheda montata

 

Schema elettrico

Elenco componenti

C1,2,4,6,7,9

10 µF 35V elettrolitico verticale

C3,5

100 nF multistrato

C 8

100 µF 35V elettrolitico verticale

C10

47 nF ceramico

P1

10k trimmer orizzontale

R2

240 Ώ 1/4W 5%

R3

390 Ώ 1/4W 5%

R4,6,7,8,9

10 kΏ 1/4W 5%

R5

15 kΏ 1/4W 5%

R10

1 kΏ 1/4W 5%

R11

1,5 k Ώ 1/4W 5%

R13

150 Ώ 1/4W 5%

R14

10 Ώ 1/4W 5%

  IC1

 LM317L

  IC2

 LPM11162 + 2 pin strip femmina 1x6

  IC3

 LM386 + zoccolo SIL 8 pin

LED

Led rosso 3mm

 T1,T2

 BC337 o BC 547

JP1

Pinhead maschio-1x08

JP3,4

Pinhead maschio -1x06

AP

Pin head polarizzato 2x1

  RESET

 Pulsante da CS


Files formato EAGLE

Per chi usa il programma EAGLE per disegnare i propri circuiti, ho creato il simbolo con il modello 3d, per ulteriori informazioni vedere la pagina di istruzioni.

 

Realizzazione pratica.

Per la costruzione della scheda si procederà iniziando dalla realizzazione del circuito stampato il cui lato rame in scala 1:1 è riportato sotto, in alternativa si può utilizzare un pezzo di basetta millefori cove visibile nelle foto del prototipo.
Per la sua realizzazione si utilizzerà una basetta in vetronite (monofaccia) di dimensioni 43x57 mm, il metodo potrà essere quello della fotoincisione o del trasferimento termico utilizzando i cosiddetti fogli blu (PRESS-N-PELL), in questo caso ricordo che l’immagine delle tracce del circuito dovrà essere speculare.

Circuito stampato.

Una volta inciso il rame, si verificherà in controluce o mediante l’utilizzo di un multimetro che non vi siano cortocircuiti soprattutto tra le piste più vicine.
Si passerà quindi alla foratura della stessa, utilizzando principalmente una punta da 0,8 mm, mentre si utilizzeranno una da 1mm per le pin strip.
In seguito si potrà passare al posizionamento e alla saldatura dei componenti seguendo lo schema visibile sotto.

Disposizione dei componenti.

Per la saldatura si utilizzerà un piccolo saldatore a punta fine, della potenza di circa 25 – 30 W.
S’inizierà dai vari ponticelli continuando con le resistenze, si potrà quindi, procedere con il pulsante, lo zoccolo dell' integrato, i condensatori.   Si concluderà con le pin strip e i connettori.
Terminato la saldatura si potrà inserire l'integrato IC2 (Modulo LPM1162) e IC3 (LM386) nell' apposito zoccolo facendo attenzione alla tacca di riferimento.

Alcune fasi del montaggio

Foto del prototipo originale

Test dello shield


Programma test

/*
 shield_lpm11162.pde
 Programma per testare lo shield per LPM11162, vengono
 attivati due relè mentre viene emesso il messaggio vocale
 corrispondente
 
 Vengono utilizzati i seguenti pin
 Pin +5V         -> Alimentazione
 Pin GND         -> Alimentazione
 Pin Vin         -> Alimentazione Motori
 Pin Digital 2   -> Pin 2 RESET modulo LPM11162
 Pin Digital 3   -> Pin 3 TX modulo LPM11162
 Pin Digital 4   -> Pin 4 RX modulo LPM11162
 Pin Digital 5   -> Pin 5 BUSY modulo LPM11162
 Pin Digital 6   -> Pin 6 led su shield LPM11162
 Pin Digital 8   -> Attiva relè 1
 Pin Digital 9   -> Attiva relè 2
 Pin Digital 10  -> Pulsante su ProShield
 Pin Digital 13  -> Pin 13 led su ProShield
 
 Creato il 27/06/2012
 da Adriano Gandolfo <http://www.adrirobot.it>
 This example code is in the public domain.
 */


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

LPM11162 audio(3,4,2);   //Arduino tx, Arduino rx, reset
const int led_1 = 6;     // Pin 6 Led su shield LPM11162
const int led_2 =  13;   // Pin 13 led su ProShield
const int rele_1 =  8;   // Pin 8 Relè 1
const int rele_2 =  9;   // Pin 9 Relè 2
const int pulsante =  10;   // Pulsante su ProShield

// variabile:
int buttonState = 0;   // variabile per lettura stato pulsante

void setup(){
  pinMode (led_1, OUTPUT);  
  pinMode (led_2, OUTPUT);
  pinMode (rele_1, OUTPUT);
  pinMode (rele_2, OUTPUT);
  pinMode (pulsante, INPUT);

  if ( audio.synch() )
  {
    audio.bridge();
  }
  audio.begin(9600);
}

void loop()

{
  // legge lo stato del pulsante:
  digitalWrite(rele_1, HIGH);
  digitalWrite(rele_2, HIGH);
  digitalWrite(led_1, LOW);
  digitalWrite(led_2, LOW);
  delay (1000);
  buttonState = digitalRead(pulsante);

  // Controlla se il pulsante è premuto.
  // se si il valore di buttonState è HIGH:
  if (buttonState == HIGH) 
  {     
    digitalWrite(led_1, HIGH);   // Accende led Rosso su shield LPM11162
    digitalWrite(rele_1, LOW);
    audio.volume(50);
    //delay (500);
    audio.play("rele1.wav"); // Pronuncia frase
    delay (2000);
    digitalWrite(rele_2, LOW);
    audio.play("rele2.wav"); // Pronuncia frase
    delay (2000);
    digitalWrite(led_2, HIGH);
    //delay (2000);
    digitalWrite(rele_1, HIGH);
    digitalWrite(rele_2, HIGH);
    audio.play("emergenza.wav"); // Pronuncia frase
    delay (3000);
  } 
  else {
    // turn LED off:
    digitalWrite(led_1, LOW);
    digitalWrite(led_2, LOW);
  }
}

 

Elenco revisioni
27/07/2014 Corretto refuso sul valore di C8
29/10/2012 Emissione preliminare