Lettore "mp3" super economico per Arduino

L'articolo di oggi parla del modulo WTV020SD-16P.
Questo modulo ci permette di riprodurre dei brani salvati su una microSD,
e grazie ad Arduino possiamo scegliere quale brano far partire e in quale momento.



Dato che questo dispositivo non è assolutamente perfetto, comincio con elencarne i pregi ed i difetti.

I pro sono:
- Prezzo (su eBay va tra i 2.5 e i 10 euro)
- Dimensioni (circa 2x2 centimetri)
- Può essere collegato direttamente ad un piccolo altoparlante o ad un amplificatore
- Può funzionare anche in modo autonomo senza Arduino
- Legge i file direttamente da una microSD

Gli svantaggi invece sono:
- Il dispositivo non legge direttamente file mp3 ma file AD4. Prima di caricarli bisogna convertirli con questo tool
- I file audio devono avere un volume basso, per questo a volte bisogna modificarli con programmi adatti (io uso Audacity che è free)
- La scelta della scheda microSD è molto critica, infatti accetta schede con capacità massima di 2GB e non tutte funzionano.

Per informazioni aggiuntive riguardo alla conversione dei file audio, vi rimando a questo ottimo tutorial (in inglese)

Comunque sia alla fine sono riuscito a farlo andare, ecco un video dimostrativo sul funzionamento del dispositivo:


Passiamo alla realizzazione,

per prima cosa scaricate questi file audio e metteteli nella SD
mettete la SD nel lettore ed effettuate il collegamento visto sopra, per aiutarvi  vi metto anche lo schema elettrico:



Fatto questo scaricate questa libreria, mettetela nel posto giusto e caricate su Arduino questo sketch:

  1. #include <Wtv020sd16p.h>
  2. const int resetPin = 2;
  3. const int clockPin = 3;
  4. const int dataPin = 4;
  5. const int busyPin = 5;
  6. const int buttonPin =  8;  
  7. int buttonState = 0;
  8. const int buttonPin2 =  9;  
  9. int buttonState2 = 0;
  10. Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);
  11. void setup()
  12. {
  13.   wtv020sd16p.reset();
  14.   pinMode(buttonPin, INPUT);
  15.   digitalWrite(buttonPin, HIGH);
  16.   pinMode(buttonPin2, INPUT);
  17.   digitalWrite(buttonPin2, HIGH);
  18. }
  19. void loop()
  20. {
  21.   buttonState = digitalRead(buttonPin);
  22.   if (buttonState == LOW)
  23.   {
  24.     wtv020sd16p.asyncPlayVoice(1);
  25.   }
  26.   buttonState2 = digitalRead(buttonPin2);
  27.   if (buttonState2 == LOW)
  28.   {
  29.     wtv020sd16p.stopVoice();
  30.   }
  31. }

Spero vi torni utile nei vostri progetti, Ciao!!

Seguimi sulle mie pagine per rimanere sempre aggiornato sui nuovi post!

6 commenti:

  1. Ciao e complimenti per i progetti. Ma come si fai con Fritzing ad ottenere quei collegamenti "ondulati", c'è una opzione ?? Grazie

    RispondiElimina
  2. ciao secondo te è possibile inserire il segnale in uscita in un amplificatore stereo rendendo tutto piu cazzuto ?
    Ottimo tutorial grazie

    RispondiElimina
    Risposte
    1. Si puoi, al posto dell'altoparlante ci metti un jack e lo metti nell'aux dell'ampli. Il problema è la bassa qualità dell'audio in uscita da questo cosino.. Tra l'altro il suono è pure mono..

      Elimina
  3. Ciao Daniele, ma se io volessi far riprodurre dei file mp3 dal telefono, come si fa? Che strumenti hardware dovrei usare?
    Grazie

    RispondiElimina
  4. Ciao Daniele, innanzitutto grazie per i tuoi progetti, sono molto utili e chiari.
    Volevo chiederti qualche specifica e consiglio sullo speaker. Ho fatto un paio di tentativi con alcuni, ma il risultato è sempre un disturbo senza nessuna nota.
    C'è qualche speaker adatto? Anche acquistabile su internet

    Grazie ancora, Antonio

    RispondiElimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Altri Post