Projeto arduino que conectar a redes wi-fi e carrega um API Rest para receber comandos para acionar uma matrix de leds RGB
- Arduino IDE (arduino.cc)
- Bibliotecas da placa Wemos D1 (Tutorial para instalação)
- Biblioteca para controle de leds RGB FastLED (fastled.io)
- Biblioteca ArduinoJson versão 5 (tem que ser essa versão) (arduinojson.org)
- Postman (postman.com)
- Placa Wemos D1 (Wemos D1) ou (Wemos D1 Mini)
- Matriz de Leds RGB WS2812b (WS2812b)
- Conversor de Nível Lógico 3,3V para 5V (Conversor Step Up)
O hardware é basicamente constituído de 3 placas, sendo que uma é um conversor step up, para garatir que a saída 3v3 da Wemos não terá problema em pilotar a entrada de sinal 5V do WS2812b.
As legenda feiosa indica, pelas cores, qual sua função no circuito. Para os testes utilizei uma fonte de celular alimentando pelo conector USB mas dependendo da quantidade de leds que pretende utilizar recomendo usar uma fonte DC ligado na entrada P4 da Wemos.
Ao ligar a placa será possível receber os logs através do monitor serial do Arduino IDE, onde serão será possível verificar os logs do processo de conexão com a rede wireless configurada hardcoded. Para isso, será necessário manter a placa conectada à porta usb, utilizada para fazer a gravação do firmware. Ao final da inicialização, se as configurações de rede estiverem corretas, a saída no monitor serial do Arduino IDE será semelhando a seguinte
Connecting to WiFi AP..........
Connected to YourNetworkSSID --- IP:192.168.1.200
HTTP REST Server Started
Com esta informação já sabemos onde podemos enviar os comandos para controlar as cores dos leds WS2812b.
Nossa API tem apenas dois endpoints. O raiz retorna simplesmente um texto de saudação da API que é para mostrar o quando o nosso firmware é simpático.
Welcome to the ESP8266 REST Web Server
Enviando Post para alterar cor dos leds
O json enviado, no método POST, para a Wemos D1 tem duas informações, numLeds e status indicando a quantidade de leds WS2812b que serão alterardos e a cor respectivamente. Os status possível são:
- 1: Verde;
- 2: Vermelho;
- 3: Amarelo;
Para o nosso exemplo, o nosso endpoint será: http://192.168.1.200/leds
POST /leds HTTP/1.1
Host: 192.168.1.200
Connection: close
Content-Type: application/json
Content-Length: 35
{
"numLeds": 16,
"status": 1
}
O método GET retorná o conteúdo do último POST recebido
HTTP/1.1 200 Ok
Content-Type: application/json
Content-Length: 30
Connection: close
{"numLeds":16,"status":"1"}
