Crie Animações LED Incríveis Controladas via Web com Raspberry Pi e Arduino
Componentes e Materiais
| Componente | Quantidade | Observações |
|---|---|---|
| Raspberry Pi 3 Model B | 1 | |
| Arduino UNO | 1 | Arduino Nano também serve. Arduino Mega pode ser necessário para mais pixels LED. |
| Fita NeoPixel (WS2812) | 1 | Qualquer fita LED WS2812 pode ser usada. |
Aplicativos e Serviços Online
- Arduino IDE
Sobre o Projeto
Visão Geral do Projeto
A biblioteca Arduino Light Animation (ALA) permite controlar LEDs e executar animações coloridas com mínimo esforço. Oferece mais de 30 animações predefinidas e várias paletas de cores. Para mais detalhes, visite meu blog.
Este projeto introduz uma placa Raspberry Pi 3 que fornece uma página web para controlar animações, cores e velocidade a partir de um smartphone ou PC via navegador. Veja um vídeo curto do AlaWeb em ação.
São necessários poucos componentes:
- Fita LED RGB WS2812: Contém vários LEDs RGB endereçáveis individualmente via interface de um fio, permitindo controle total da cor de cada LED.
- Arduino: O famoso microcontrolador executará a biblioteca ALA para acionar a fita LED, recebendo comandos do Raspberry Pi via porta serial USB. Pode usar Uno, Nano ou Mega.
- Raspberry Pi: Pequeno PC que fornecerá a página web para controlar parâmetros de iluminação e animação.
O projeto é simples se você conhece Arduino e Raspberry Pi. Dividi em duas etapas para guiar na configuração.
Ligação (Wiring)
Fitas LED WS2812 são fáceis de conectar. Basta fornecer energia suficiente para todos os LEDs. Para fitas muito curtas (até 10 LEDs), pode alimentar diretamente da porta USB, mas para fitas longas precisa de uma boa fonte. Como ponto de partida, sugiro usar o pino 5V do Arduino para alimentar a fita, como no vídeo.
- GND do Arduino → GND da WS2812
- 5V do Arduino → 5V da WS2812
- Pino 6 do Arduino → Pino Ctrl/Din da WS2812

Se quiser acionar mais pixels, deve fornecer mais energia. O cálculo é simples: cada LED RGB consome 60mA no branco full. Exemplo: fita de 2m com 60 LED/m → 2 * 60 * 60mA = 7.2A. Necessita fonte 5V 7.2A.
Conecte sua fonte, Arduino e fita WS2812 assim:
- GND da fonte → GND do Arduino e GND da WS2812
- 5V da fonte → Pino 5V do Arduino e 5V da WS2812
- Pino 6 do Arduino → Pino CTRL da WS2812

Note que alimentando o pino 5V do Arduino você o alimenta também, não precisando de segunda fonte no conector barril. Tenha muito cuidado com este esquema porque o pino 5V bypassa o regulador e proteções. Para detalhes, leia este guia.
Para mais detalhes sobre esquemas de ligação de fitas WS2812, leia este guia.
Configuração do Arduino
Conecte seu Arduino à porta USB do PC. Abra o Arduino IDE e o Gerenciador de Bibliotecas (Sketch > Incluir Biblioteca > Gerenciar Bibliotecas) para instalar a última versão da biblioteca ALA.
Abra o exemplo RgbStripSerial (Arquivo > Exemplos > ALA > RgbStripSerial) e verifique se a constante NUM_PIXELS corresponde ao número de LEDs da sua fita. Lembre-se: para mais de 10 pixels, use o esquema de ligação melhorado.
Faça upload do sketch (Ctrl+U ou Sketch > Upload). Se houver problemas, verifique o tipo de placa e porta no menu Ferramentas.
Abra o Monitor Serial (Ferramentas > Monitor Serial) e verá uma mensagem de boas-vindas.

Defina 'Newline' no canto inferior direito e certifique-se que baud rate é 9600.
Agora teste os seguintes comandos (em negrito, sem espaços):
- A=101 – liga os LEDs
- A=251 – executa animação 'larson scanner'
- P=2 – define paleta arco-íris
- A=242 – outra animação
Legal, né?
Experimente diferentes comandos e combinações seguindo esta referência rápida:
- A=[código animação] – Define a animação. Códigos disponíveis no arquivo AlaLed.h.
- B=[brilho] – Define brilho (0-100).
- D=[duração] – Define duração em ms do ciclo da animação. Valores típicos 500-5000.
- C=[cor] – Define cor em hex RGB, ex: E8A240.
- P=[paleta] – Define paleta (0-5).
Agora vamos controlar as animações do seu smartphone.
Configuração do Raspberry Pi
Nesta parte, configuraremos o Raspberry Pi para rodar um pequeno servidor web que controle a fita LED via navegador. O mesmo aplicativo roda em qualquer PC com Python 3.
Pré-requisito: Raspberry Pi já configurado e rodando o último Raspbian OS (testado com Stretch) e conectado à internet.
Primeiro, instale bibliotecas Python 3:
sudo pip3 install pyserial flask
Crie diretório do projeto:
mkdir /home/pi/AlaWeb
cd /home/pi/AlaWeb
Baixe o repositório AlaWeb e extraia:
wget https://github.com/bportaluri/AlaWeb/archive/master.zip
unzip master.zip
Todo software está pronto. Conecte a porta USB do Arduino ao Raspberry Pi. O aplicativo AlaWeb baixado comunicará com o Arduino via conexão serial USB.
cd AlaWeb-master
sudo python3 AlaWeb.py
O AlaWeb listará todas as portas seriais USB e tentará detectar o Arduino automaticamente. Se ficar em loop, interrompa e tente passando o nome da porta:
sudo python3 AlaWeb.py /dev/ttyACM0
Se tudo ok, verá algo assim:

Abra um navegador e acesse a URL exibida. Obterá uma página cheia de botões para controlar a fita LED via web.
Divirta-se!

Código
AlaWeb: Pequeno servidor web em Python/Flask para controlar animações via navegador. GitHub
ALA: Biblioteca Arduino Light Animation para simplificar desenvolvimento de animações com LEDs/fitas. Detalhes: Blog | GitHub
Esquemáticos
Processo de manufatura
- Construa um Sistema Rápido e Confiável de Detecção de Incêndio com Samsung SAMI, Arduino UNO e Raspberry Pi
- Construa um Sistema Aeropônico Automatizado com Raspberry Pi e Sensor de Umidade
- Construa um Robô com Raspberry Pi e Python: Guia Completo
- Construa um Robô de Streaming de Vídeo Controlado por Internet com Arduino e Raspberry Pi
- gatoBot: Robô Controlado via Web com Raspberry Pi Zero W e Streaming de Vídeo Ao Vivo
- Painel de Controle para Flight Simulator 2020 com Arduino Nano – Display LCD e CDI
- Painel de Chaves e LEDs para Microsoft Flight Simulator 2020 com Arduino
- Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
- Construa um Robô Quadrúpede Inteligente com Arduino: Guia Passo a Passo
- Arduino e MPU6050: Controle Preciso de Servomotores SG90 e MG996R