In un precedente articolo Shield con DFPlayer Mini – Costruzione abbiamo analizzato il nostro progetto.
Vedremo ora di effettuare un primo collaudo Shield DFPlayer Mini connesso ad Arduino per verificarne il suo corretto funzionamento.
Indice
Fasi del collaudo
In questo test si potrà verificare il funzionamento dei seguenti componenti:
- Collegamento del modulo DFPLayer mini con Arduino.
Vedere l’articolo DFPlayer Mini Riproduttore MP3 per Arduino; - Test del collegamento al display OLED OLED 0.96″ 128×64 -SSD1306.
Vedere articolo Display bicolore OLED 0.96″ 128×64 – SSD1306; - Test del led RGB a comando seriale tipo WS2812B.
Vedere articolo WS2812B LED RGB a controllo digitale;
Lo schema elettrico e il PCB può essere trovato scaricato dal sito OSHWLab a questo link
Librerie necessarie per i test
Per il test occorre caricare, se non lo avete già fatto, delle librerie che renderanno più facile la gestione dei componenti, queste sono:
- DFRobotDFPlayerMini per gestire il modulo audio tramite Arduino
- Adafruit NeoPixel per gestire il Led RGB WS2812B.
- Adafruit_SSD1306 gestire il display OLED
Libreria per DFPLayer mini
Per il collaudo Shield DFPlayer Mini la cui descrizione potere trovare nell’articolo DFPlayer Mini Riproduttore MP3 per Arduino , dovremo caricare la relativa libreria, quindi preparare una MicroSD con dei file audio da riprodurre attraverso l’altoparlante.
Per cui aprire sotto il menù Sketch, #include libreria, “Gestore Librerie”
e inserire nel campo ricerca “DFRobotDFPlayerMini” e quando apparirà basterà premere il tasto Installa,
Per altre informazioni su come installare le librerie vedete l’articolo Arduino – Tutorial, come installare una libreria
Preparazione della SD Card per il DFPlayer mini
La scheda di memoria utilizzata dal DFPLayer mini è del tipo MicroSD contrazione di Micro Secure Digital , per maggiori informazioni relative al tipo di memoria vedere il seguente link.
La scheda dovrà avere le seguenti caratteristiche: dimensioni massime di 23Gb ed essere formattate con file system (Fat16 o Fat32 ) oppure se possedete un Mac OS X, selezionare ExFat e poi copiare i file MP3
Sarà sufficiente trasferire i file presenti nel link, nella memoria MicroSD
Libreria gestione led RGB
Per la gestione del led WS2812B occorre istallare la libreria NeoPixel realizzata dalla ditta Adafruit .
Anche in questo caso aprire sotto il menù Sketch, #include libreria, “Gestore Librerie” e inserire nel campo ricerca “neopixel” e quando apparirà basterà premere il tasto Installa,
Scelta dei colori da mostrare dal red RGB
I Led tradizionali possono emettere un solo tipo di luce. All’interno di un led RGB sono presenti tre Led montati nello stesso involucro : Led rosso, verde e blu. Infatti RGB sta per Red, Green e Blue.
Miscelando i colori con le diverse intensità e, sovrapponendo quindi un colore sull’altro, si può avere una luce caratterizzata da diverse tonalità.
Per fare questo all’interno della libreria NeoPixel è possibile cambiare i colori tramite questa riga di codice
1 |
pixels.setPixelColor(0, pixels.Color(R, G, B)); |
All’interno delle parentesi tonde abbiamo i valori per R(red), G(green) e B(blue) separati da una virgola.
Il valore da inserire è compreso tra 0 e 255.
Per realizzare la tonalità che ci interessa possiamo usare l’applicazione fornita da questo sito.
Una volta scelto il colore voluto l’applicazione ci restituisce i tre valori (per esempio 0, 240, 60) che dovremo inserire del comando
1 |
pixels.setPixelColor(0, pixels.Color(0, 240, 60)); |
Libreria per gestione display OLED
Per utilizzare il display OLED è necessario installare l’apposita libreria. Può essere cercata tra le librerie installabili nell’IDE, basterà inserire nel campo di ricerca “Adafruit_SSD1306“.
Sarà anche mostrata una finestra che segnala che la libreria ha una dipendenza con la libreria grafica “Adafruit GFX Library“. Procedete premendo su “Install all”.
Schema equivalente del test
Sotto vediamo lo schema equivalente del collegamento dei componenti.
Utilizzando lo speciale shield, in realtà non è necessario effettuare nessun collegamento.
Il led RGB è saldato direttamente sul PCB, e sarà sufficiente inserire il modulo DFPlayer e il Display OLED nei rispettivi connettori.
Codice utilizzato
Sotto è riportato il codice utilizzato. All’inizio sono incluse tutte le librerie necessarie, abbiamo poi la definizione dei pin per la gestione della comunicazione seriale tra Arduino e il modulo DFPLayer mini e il led RGB.
Sono poi impostati il display OLED, il Led RGB e il DFPLayer Mini.
Nella sezione Setup() sono inizializzati i vari dispositivi utilizzando i valori precedentemente impostati. Viene visualizzato sul display un messaggio di presentazione e trasmesso un primo messaggio.
Nella sezione Loop() si ripete la routine test_DFPLayer () che accenderà in sequenza il led RGB di vari colori, con il nome mostrato sul display comunicato tramite il messaggio presente nella memoria MicroSD.
Come visibile, non è necessario indicare il nome completo del file, ma la sua posizione nell’elenco.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" #include <Wire.h> #include <Adafruit_SSD1306.h> #include <Adafruit_NeoPixel.h> #define PIN_RGB 7 //pin comando led RGB #define PIN_RX 2 #define PIN_TX 3 // Impostazione OLED #define OLED_ADDR 0x3C #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); //IMPOSTAZIONE LED RGB Adafruit_NeoPixel pixels = Adafruit_NeoPixel(1, PIN_RGB, NEO_GRB + NEO_KHZ800); //IMPOSTAZIONE DFPlayerMini SoftwareSerial ss(PIN_RX, PIN_TX); //RX, TX DFRobotDFPlayerMini mp3; int pausa = 300; void setup() { Serial.begin(9600); // initializza e pulisce display display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); delay(20); display.clearDisplay(); //Inizializza la libreria NeoPixel. pixels.begin(); //Inizializza modulo DFPlayer ss.begin(9600); if (!mp3.begin(ss)) { Serial.println("errore mp3"); for (;;); } mp3.volume(20); //Impsta il volume //Messaggio iniziale display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0, 0); display.println(" ADRIROBOT"); display.setCursor(0, 20); display.println("Shield for"); display.setCursor(0, 40); display.println(" DFPlayer"); display.display(); mp3.play(7); delay (6000); } void loop() { test_DFPLayer (); } void test_DFPLayer () { display.setTextSize(2); display.setTextColor(WHITE); display.clearDisplay(); display.setCursor(40, 0); display.println("TEST"); display.setCursor(20, 20); display.println("DFPlayer"); display.setTextSize(1); display.setCursor(15, 55); display.println ("www.adrirobot.it"); display.display(); delay (2000); //colore verde display.setTextSize(2); display.setCursor(30, 40); display.println("VERDE"); display.display(); int pausa = 20; verde (); mp3.play(1); delay (3000); //colore bianco display.fillRect(0, 40, 128, 15, SSD1306_BLACK); display.display(); display.setCursor(30, 40); display.println("BIANCO"); display.display(); bianco (); mp3.play(2); delay (3000); //colore rosso display.fillRect(0, 40, 128, 15, SSD1306_BLACK); display.display(); display.setCursor(30, 40); display.println("ROSSO"); display.display(); rosso (); mp3.play(3); delay (3000); //colore giallo display.fillRect(0, 40, 128, 15, SSD1306_BLACK); display.display(); display.setCursor(30, 40); display.println("GIALLO"); display.display(); giallo(); mp3.play(6); delay (3000); //colore blu display.fillRect(0, 40, 128, 15, SSD1306_BLACK); display.display(); display.setCursor(30, 40); display.println("BLU"); display.display(); blu(); mp3.play(4); delay (3000); //colore ciano display.fillRect(0, 40, 128, 15, SSD1306_BLACK); display.display(); display.setCursor(30, 40); display.println("CIANO"); display.display(); ciano (); mp3.play(5); delay (3000); } //Colore rosso void rosso () { pixels.setPixelColor(0, pixels.Color(255, 0, 0)); pixels.show(); delay(pausa); } //Colore verde void verde () { pixels.setPixelColor(0, pixels.Color(0, 255, 0)); pixels.show(); delay(pausa); } //Colore blu void blu () { pixels.setPixelColor(0, pixels.Color(0, 0, 255)); pixels.show(); delay(pausa); } //Colore bianco void bianco () { pixels.setPixelColor(0, pixels.Color(255, 255, 255)); pixels.show(); delay(pausa); } //Colore giallo void giallo () { pixels.setPixelColor(0, pixels.Color(255, 255, 0)); pixels.show(); delay(pausa); } //Colore ciano void ciano () { pixels.setPixelColor(0, pixels.Color(0, 204, 255)); pixels.show(); delay(pausa); } //Led spento void spento () { pixels.setPixelColor(0, pixels.Color(0, 0, 0)); pixels.show(); delay(pausa); } |