Mais um "projetinho"! A ideia é controlar via WiFi uma fita de LED RGB WS2812B e a minha opção de microcontrolador é o ESP32-C3.
Já falei bastante aqui sobre o WS2812B. Resumindo o que precisamos saber para este projeto, a fita de LED tem três sinais de entrada: alimentação, terra e controle. A alimentação é 5V e o sinal de controle é uma sequência de bits codificados onde a duração do nível alto indica se o bit é '0' ou '1'.
Hardware
Uma primeira preocupação é com a corrente consumida pelos LEDs. Segundo este site, cada LED pode consumir até 50 mA quando a intensidade das três cores for máxima. Supondo que eu vá ligar até uns 40 LEDs, a corrente pode chegar a 2A (fora o consumo do microcontrolador).
É preferível que esta corrente não passe pela plaquinha do microcontrolador, então a minha decisão foi bifurcar a alimentação recebida da fonte para ir para a placa e para a fita de LED. Ao invés de ligar direto, usei um MOSFET como chave, controlado por uma saída do microcontrolador. Para acionar corretamente o MOSFET no lado da alimentação ("high-side") é necessário um transistor NPN.
A opção pelo ESP32-C3 se baseou em alguns critérios:
- Precisa ter WiFi
- Não precisa de muitos GPIOs
- Não vai ter muito processamento
- O ESP32-C3 é barato
- Eu tenho várias plaquinhas com ele
Como a ideia é colocar tudo em uma caixa pequena, escolhi um módulo pequeno com o ESP32-C3. Minhas opções eram o XIAO e uma Core board do WeActStudio. Escolhi a segunda porque tem antena integrada.
O esquema da montagem ficou assim:
Software
Já que a ideia é controlar sem fio, porque não via browser? O ESP32-C3 serve uma única página com as seguintes opções:
- Modo
- Cor
- Intensidade
Minha primeira decisão foi usar a biblioteca ESP-WiFiSettings, que simplifica a configuração do WiFi. Esta biblioteca lembra qual foi a última rede conectada e tenta reconectar nela. Na primeira vez, ou se não conseguir conectar, o ESP é reconfigurado para o modo "Ponto de Acesso", criando uma rede WiFi. Conectando nela com um browser, é apresentada uma tela onde se configura a rede que se deseja utilizar.
Para apresentar a página, a WiFiSettings usa a biblioteca WebServer. É natural que eu use a mesma biblioteca para apresentar a minha página de configuração da fita. Procurei fazer as coisas o mais simples possível:
- A página é totalmente estática (nem sequer lembra a última seleção)
- Os modos suportados são bem elementares
- Coloquei apenas cinco opções de cores. Para ser preciso, onde está azul é na verdade branco-azulado e o mesmo com as outras cores.
- Cada cor usa somente 3 bits (0 a 7) para cada componente. A intensidade, de 0 a 5, determina o shift a ser feito.
O código está em https://github.com/dquadros/FitaLedWiFi.
Notas Para Quem Quiser Reproduzir o Projeto
Em teoria não é usada nenhuma característica específica da placa da WeActStudio ou mesmo do ESP32-C3. A montagem e o código devem funcionar com outros modelos de ESP32 e até mesmo com o ESP8266, eventualmente mudando os pinos utilizados.
Os modelos dos transistores foi escolhido pelo que tinha na gaveta. O transistor NPN pode ser praticamente qualquer um. O MOSFET precisa suportar os 2 amperes (tranquilo) e chavear com 5V.
Eu tive uma incompatibilidade entre o ESP-WiFiSettings 3.8.0 e o suporte ao ESP32 3.0.1. Eu resolvi retirando a chamada a esp_task_wdt_reset() em WiFiSettings.cpp. Não consegui determinar se o problema está na biblioteca ou no suporte ao ESP32, espero que este problema seja resolvido logo.
Nenhum comentário:
Postar um comentário