O Led Endereçável (também chamado muitas vezes de Neopixel) é um componente que permite interessantes efeitos visuais, pois os leds RGB podem ser acionados individualmente e das mais variadas formas e cores. Neste post vamos mostrar como você conecta e programa o led endereçável com ESP8266 ESP-01.

Na imagem acima temos o Kit Módulo Wifi ESP8266 ESP-01S com anel de led RGB, que usamos para testar os leds endereçáveis.

O ESP-01S com Neopixel

O kit mencionado acima contém o cabo de conexão de 3 vias, um anel de led com 16 leds endereçáveis WS2812 e uma placa de controle com botão de reset, além do módulo ESP8266 ESP-01S.

O ESP8266 ESP-01S é uma versão mais atualizada do já conhecido ESP-01. As diferenças básicas:

  • O ESP-01 tem 512 KB de memória flash e o ESP-01S tem 1 MB
  • Led “Power” vermelho no ESP-01, sendo que no ESP-01S não temos led para indicar que o módulo está energizado
  • No ESP-01 temos um led azul conectado no TX, e no ESP-01S o led azul está conectado na GPIO2

Isso não afeta em praticamente nada a programação do módulo, que é feita da mesma maneira nos dois modelos.

Kit Neopixel Led Endereçável ESP8266 ESP01

Antes de mais nada você terá que soldar o cabo de conexão no anel de leds, seguindo a seguinte ordem:

  • Vermelho no pino 5V do anel de leds
  • Preto no GND
  • Amarelo no pino DI

Um pino vai ficar sem conexão por enquanto (o DO). Sem problemas, pois esse pino serve para ligarmos mais leds endereçáveis em sequência.

O outro lado do cabo você vai conectar na placa de controle, conforme imagem abaixo. Não tem erro, já que o cabo só encaixa de um jeito:

Detalhe conexão led endereçável

Na placa temos também dois pinos de alimentação, que vai de 3.7 a 5 VDC. (Preste atenção na polaridade!)

Conector Alimentação

Isso permite por exemplo que você conecte uma bateria de lítio no conjunto, que assim pode funcionar de forma independente.

Instalação da biblioteca Neopixelbus

A programação do ESP-01S é feita de forma separada, ou seja, você não consegue programar o módulo diretamente, sendo necessário retirá-lo do soquete e usar um gravador externo.

Para gravação do ESP-01, recomendo que você siga os passos do post Gravando firmware NodeMCU no ESP8266 ESP-01, principalmente no que se refere a conexão do módulo e programação via serial.

Com o módulo preparado para programação, entre na IDE do Arduino e no menu Arquivo -> Preferências coloque a seguinte URL no campo URLs Adicionais de Gerenciadores de Placas:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Isso fará com que as placas da linha ESP8266 apareçam no menu Ferramentas -> Placas, onde você vai selecionar a opção Generic ESP8266 Module.

Placa ESP8266 IDE Arduino

Para a programação vamos usar a biblioteca Neopixelbus, que você instala a partir da própria IDE do Arduino, em Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. No gerenciador, procure por Neopixelbus na parte superior e depois clique em Instalar:

Instalação biblioteca Neopixel Neopixelbus na IDE Arduino

Agora que temos a biblioteca instalada, vamos ao programa.

Programando o led endereçável

Carregue o programa abaixo no ESP-01. Ele vai acender os 16 leds do anel de forma alternada, por meio de um laço FOR dentro do loop do programa.

Apesar de simples, algumas considerações sobre o programa e o seu funcionamento junto com essa biblioteca: apesar de definirmos na linha 10 o pino de controle (PixelPin), ele é “ignorado” pela biblioteca, pois por padrão ela usa a GPIO2 para o ESP-01.

Se você for usar outros módulos ESP8266, também tem a opção de usar a GPIO3. Deixei as duas opções no programa, para efeitos de teste. Para maiores informações confira o exemplo NeopixelTest da biblioteca Neopixelbus.

Na linha 7 definimos o número de leds no anel; no caso, 16 leds WS2812.

//Programa: Led enderecavel com ESP8266 ESP-01
//Autor: Arduino e Cia

#include <NeoPixelBus.h>

//Numero de leds enderecaveis no anel
const uint16_t PixelCount = 16;

//Pino de conexao (ignorado quando se usa ESP8266)
const uint8_t PixelPin = 2;

#define colorSaturation 128

//Modo DMA para ESP8266 - Usa GPIO3
//NeoPixelBus<NeoGrbFeature, NeoEsp8266Dma800KbpsMethod> strip(PixelCount, PixelPin);
//NeoPixelBus<NeoRgbFeature, NeoEsp8266Dma400KbpsMethod> strip(PixelCount, PixelPin);

//Modo UART para ESP8266 - Usa GPIO2
NeoPixelBus<NeoGrbFeature, NeoEsp8266Uart1800KbpsMethod> strip(PixelCount, PixelPin);
//NeoPixelBus<NeoRgbFeature, NeoEsp8266Uart1400KbpsMethod> strip(PixelCount, PixelPin);

RgbColor black(0);

void setup()
{
  Serial.begin(115200);
  
  //Inicializa os leds
  strip.Begin();
  strip.Show();
}


void loop()
{
  //Acende todos os leds alternando as cores
  for (int i = 0; i <= 15; i++)
  {
    int cor_r = random(0, 255);
    int cor_g = random(0, 255);
    int cor_b = random(0, 255);
    RgbColor varios(cor_r, cor_g, cor_b);
    strip.SetPixelColor(i, varios);
    strip.Show();
    delay(100);
  }

  //Aguarda 2 segundos
  delay(20000);

  //Apaga os leds
  for (int i = 0; i <= 15; i++)
  {
    strip.SetPixelColor(i, black);
    strip.Show();
    delay(100);
  }

  //Aguarda 2 segundos
  delay(2000);
}

No próximo post sobre este kit vamos acionar o ESP-01 com anel de leds usando um smartphone. Até lá!

Gostou? Confira outros posts usando o ESP8266 aqui mesmo no Arduino e Cia!

5/5 - (2 votes)