Il WEMOS RGB LED Shield è appositamente progettato per essere utilizzato con le schede Wemos D1 Mini o Wemos D1 Mini Pro, su di esso sono presenti 7 led RGB tipo WS2812B.
Per altri shield specifici per Wemos D1 mini vedere l’articolo Wemos D1 mini – Raccolta Shield disponibili
Indice
Descrizione del modulo
Il WEMOS RGB LED Shield è stato realizzato dalla WEMOS appositamente, per essere utilizzato con le schede Wemos D1 Mini e Wemos D1 Mini Pro, su di esso sono presenti 7 led RGB tipo WS2812B.
Questi diodi LED RGB possono essere gestiti individualmente. Ognuno può produrre 256 tonalità del proprio colore, determinando un totale di 256x256x256 ossia 16.777.216 colori
Il canale dati per la comunicazione è seriale di tipo One-Wire, è possibile impostare a piacimento la frequenza di refresh, in modo da rendere impercettibili determinati giochi di luce.
L’alimentazione del LED è di 5V..
Wemos D1 mini (V3.1.0) |
Wemos D1 mini Pro (V1.1.0) |
Per informazioni del modulo Wemos D1 mini vedere articolo Modulo WeMos – LOLIN D1 mini
Caratteristiche del WEMOS RGB LED Shield
- Tensione di alimentazione: 5 VDC
- 7 LED RGB (WS2812B-mini) ciascuno con colore RGB a 24 bit
- 9 pin di controllo opzionali, impostazione predefinita: D4 (GPIO2)
Circuito elettrico
Nello schema sottostante è visibile come sono collegati i diodi LED RGB. Oltre ai due pin di alimentazione +5V e GND con il proprio condensatore da 100 nF. Ci sono due pin di collegamento per la gestione dei dati: DIN in ingresso e DOUT in uscita, in questo caso il segnale in uscita da DOUT è collegato al DIN del diodo successivo.
Posizione dei 7 diodi LED RGB
Sotto sono riportati i collegamenti dello shield. Si consideri comunque che di default sono utilizzati solo i pin: +5V, GND, D4 per la gestione dei led RGB.
Collegamenti dello shield
Sotto il dettaglio dello schema che mostra la possibilità di modificare il pin di gestione del led RGB. Questo di default è il pin D4.
Se si interrompe il Jumper SJ3, si può utilizzare uno qualsiasi dei pin disponibile su SJ1 o SJ2, sempre che non sia già utilizzato per altri scopi.
Sotto è riportato il dettaglio dei Jumper per la scelta della porta di gestione del LED RGB. Nel caso occorre interrompere il contatto su D4 ed effettuando un ponticello di stagno tra una qualsiasi delle piazzole con il nome della porta scelta e la piazzola centrale.
Alcune informazioni sul LED WS2812B
- Sorgente luminosa: 5050 RGB SMD (datasheet)
- Materiale : substrato di alluminio
- Livelli di colore : 256
- Angolo di luce: 180 °
- Emissione di colori chiari: bianco, rosso, giallo, blu, verde, ecc.
- Tensione di funzionamento standard: DC 5 V.
- Potenza: 0,3 W + / – 0,01%
Dove trovare il WEMOS RGB LED Shield
Il WEMOS RGB LED Shield, può essere acquistato presso il sito Homotix, codice WERGBSH
Il suo costo è di 3,92 € al momento della pubblicazione di questo articolo.
Se lo acquisterete presso il sito potrete usufruire di uno sconto inserendo l’apposito codice di sconto.
Test base del modulo
Per la prova dello shield sono necessari: Modulo Wemos D1 Mini e lo shield RGB LED.
Per la sua conformazione, lo shield può essere montato direttamente sul modulo Wemos D1 mini, in alternativa i moduli possono essere montati su una Dual base.
L’alimentazione potrà essere fornita da PC tramite il cavo USB a cui è collegato il modulo Wemos, oppure tramite una Power bank utilizzando sempre il cavo USB
Materiale occorrente
Wemos D1 Mini |
Wemos RGB LED |
Dual base
Video del test
Schema dei collegamenti
Alcune foto del test
Shield montato direttamente sul modulo Wemos D1 mini
Shield montato a lato del modulo Wemos D1 mini su una Dual base.
Libreria di gestione dei LED RGB
Per la gestione del led si utilizzerà la libreria NeoPixel realizzata dalla ditta Adafruit.
Per caricarla si dovrà inserire nel campo ricerca “neopixel” , quando apparirà basterà premere il tasto Installa. La versione ora disponibile è la 1.10.6
La scritta “INSTALLED” segnalerà l’avvenuta installazione della libreria.
Per utilizzarla nei vostri Sketch, occorrerà inserire come minimo queste linee
1 2 3 4 5 6 7 8 9 10 11 |
#include <Adafruit_NeoPixel.h> #define PIN D4 // Pin gestione led #define LED_NUM 7 // Numero led presenti Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800); void setup() { leds.begin(); // Si inizializza la libreria NeoPixel. leds.setBrightness(100); //Si regola la luminosità (0-255) } |
- Per maggiori informazioni relative ai comandi della libreria vedere la pagina su Adafruit.
- Per informazioni su come installare una libreria vedere l’articolo Arduino – Tutorial, come installare una libreria
Sketch del programma
Prima di caricare il programma, occorre verificare di aver impostato nell’IDE correttamente la scheda Wemos Di mini e che questa sia correttamente riconosciuta, verificando a quale porta risulta collegata.
Sketch del programma
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 |
#include <Adafruit_NeoPixel.h> #define PIN D4 // Pin gestione led #define LED_NUM 7 // Numero led presenti Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800); void setup() { leds.begin(); // Si inizializza la libreria NeoPixel. leds.setBrightness(100); //Si regola la luminosità } void led_set(uint8 R, uint8 G, uint8 B) { for (int i = 0; i < LED_NUM; i++) { leds.setPixelColor(i, leds.Color(R, G, B)); leds.show(); delay(50); } } void loop() { led_set(10, 0, 0);//red led_set(0, 0, 0); led_set(0, 10, 0);//green led_set(0, 0, 0); led_set(0, 0, 10);//blue led_set(0, 0, 0); } |
Lettura sensore Tilt tipo RPI-1031
Vediamo ora come visualizzare sullo shield RGB LED lo stato del sensore Tilt RPI-1031.
Il chip presente sul modulo in grado di rilevare l’inclinazione in quattro direzioni: avanti, indietro, a sinistra, a destra.
Materiale necessario
Dual Base |
Wemos D1 Mini |
Shield RGB LED |
Sensore Tilt Sensor 4 direzioni |
Cavi colorati M-F |
|
Descrizione del sensore utilizzato
Il funzionamento del RPI-1031 Tilt Sensor (vedere articolo RPI-1031 Tilt Sensor 4 direzioni) è molto semplice. All’interno del sensore è presente un led a infrarossi , che comunica con due ricevitori fotosensibili attraverso una superficie riflettente. Tra questi componenti e la superficie riflettente c’è una sorta di “copertura” che, a seconda del movimento del componente, può coprire il sensore IR o i ricevitori.
Spostando il sensore possiamo avere 4 stati :
- LED IR bloccato
- Ricevitore 1 oscurato
- Ricevitore 2 oscurato
- nessuno dei 3 bloccati o oscurati
Questi segnali vengono inviati ai pin S1 e S2 del modulo
Per cui in base alla combinazione dello stato logico di S1 e S2 sapremo come è inclinato il sensore
Schema dei collegamenti
Alcune foto del test
Sketch del programma
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 |
#include <Adafruit_NeoPixel.h> #define PIN D4 #define LED_NUM 7 #define tilt_s1 D5 #define tilt_s2 D6 Adafruit_NeoPixel leds = Adafruit_NeoPixel(LED_NUM, PIN, NEO_GRB + NEO_KHZ800); void setup() { leds.begin(); // Si inizializza la libreria NeoPixel. leds.setBrightness(100); //Si regola la luminosità } void loop() { //Spegne tutti i led colorWipe(leds.Color(0, 0, 0), 50); int position = getTiltPos(); //top if (position == 1) { //Accende il led 0 con il colore impostato leds.setPixelColor(1, leds.Color(255, 0, 0)); leds.show(); // Aggiorna colore } //right else if (position == 0) { //Accende il led 0 con il colore impostato leds.setPixelColor(2, leds.Color(255, 0, 0)); leds.setPixelColor(3, leds.Color(255, 0, 0)); leds.show(); // Aggiorna colore } //left else if (position == 3) { //Accende il led 0 con il colore impostato leds.setPixelColor(5, leds.Color(255, 0, 0)); leds.setPixelColor(6, leds.Color(255, 0, 0)); leds.show(); // Aggiorna colore } //bottom else if (position == 2) { //Accende il led 0 con il colore impostato leds.setPixelColor(4, leds.Color(255, 0, 0)); leds.show(); // Aggiorna colore } } int getTiltPos() { int s1 = digitalRead(tilt_s1); int s2 = digitalRead(tilt_s2); return (s1 << 1) | s2; //bitwise math to combine the values } // Riempie uno dopo l'altro i led con un colore void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < leds.numPixels(); i++) { leds.setPixelColor(i, c); leds.show(); delay(wait); } } |
Altro esempio di utilizzo
Alla pressione di uno dei pulsanti posti a lato del display OLED ( vedi articolo OLED Shield V2.1.0 – Wemos D1 mini) sarà indicato sul display il trasto premuto e sul modulo RGB LED si accenderà una coppia di led di colore BLU per il pulsante [A] e una coppia di led ROSSI per il pulsante [B].
Video del test
Wemos D1 mini – Raccolta Shield disponibili
Per la scheda Wemos D1 mini, prodotta dalla WEMOS/LOLIN sono disponibili vari shield che appartengono a varie categorie: Display & Interactive Shield, Environment, Power, Control, Others.
Per l’elenco vedere articolo Wemos D1 mini – Raccolta Shield disponibili