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
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

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.
#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);
}











