domenica 12 marzo 2017

Neopixel and ESP8266 - Blynk esempio

Di certo il mondo dei leds ha avuto un gran salto avanti, nella semplicità d'utilizzo, dopo l'uscita delle NeoPixel.
Esistono numerosi esempi d'utilizzo delle NeoPixel per Arduino, ma quest'oggi le utilizzeremo con la nostra ESP8266.

Striscia NeoPixel


Prima di tutto, dobbiamo definire l'Hardware/Software necessario:

  • FastLed library: per controllare le neopixel, all'inizio, si utilizzava la libreria Adafruit.
    Successivamente si può utilizzare la libreria FastLed, molto più completa e versatile, anche per l'integrazione con la ESP.
  • Level shifter: le NeoPixel sono controllate con un segnale di controllo D0 di 5V, ricordo che la ESP genera segnali fino a 3.3V. Come risolvo?
    Semplice, level shifter! In pratica, porta un segnale a 3.3V - ESP - a 5V - NeoPixel - .
  • Blink library: come tutti gli altri progetti del filone Blynk.

Funzionamento level shifter


Collegamenti:

Diamo una veloce occhiata allo schema di "montaggio":

Lato telefono:

Creiamo un nuovo progetto utilizzano zeRGBa:


Ricordiamoci d'impostare "MERGE" nel comando zeRGBa.
Perchè? https://goo.gl/FouGEj

Codice:

Eccoci arrivati al sodo, per prima cosa includiamo le librerie necessari:

1
2
3
4
5
6
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
// ---------------------
//#define FASTLED_ESP8266_NODEMCU_PIN_ORDER
#include <FastLED.h>

Subito dopo inseriamo tutto il necessario per far capire alla libreria FastLed quanti pixel stiamo utilizzando e dove li colleghiamo. Brightness sarà la luminosità, da 0 a 255.

#include <FastLED.h>
#define NUM_LEDS 8
#define DATA_PIN 5 // D5
CRGB leds[NUM_LEDS];
#define BRIGHTNESS  128
char auth[] = "xxx";
char ssid[] = "xxx";
char pass[] = "xxx";
Nel Setup carichiamo tutti i dati inseriti qui sopra, compreso indirizzo e password della rete a cui la ESP si collegherà.
Il Loop caricherà solo il software necessario al funzionamento di Blynk.

La funzione per caricare il widget zeRGBa è la seguente:

BLYNK_WRITE(V1) {
  int R = param[0].asInt();
  int G = param[1].asInt();
  int B = param[2].asInt();

  showled(R, G, B);
}


Ad ogni acquisizione verrà chiamata la funzione showled, scritta come segue.
La funzione ha come parametri d'ingesso i 3 valori RGB in arrivo dall'app, riempirà successivamente tutti i led ad esso collegati. Infine con il comando "FastLED.show()" manda alla striscia NeoPixel tutti i colori selezionati.

void showled(int R, int G, int B) {
  //FastLED.clear();
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i].setRGB( R, G, B);
  }
  FastLED.show();
}



Note aggiuntive:
  • NeoPixel? nome tecnico?
    Le NeoPixel hanno come chip il "WS2811". Per vedere quali strisce sono compatibili con la libreria FastLed, leggete questo: https://goo.gl/9CTFKn categoria "3-Wire Chipsets".
  • Proprio non voglio comprare un level shifter, come faccio?
    Piccolo trucco: https://goo.gl/aYUcy1

Nessun commento:

Posta un commento