Luzes de Vela LED Controladas por Arduino: Projeto DIY de Iluminação Inteligente
Componentes e Materiais Necessários
| Componente | Quantidade | Observações |
|---|---|---|
| LED SMD RGB WS2812 (SparkFun) | 44 | Organizados em 11 módulos de 4 LEDs cada |
| Arduino Nano R3 | 1 | Controlador |
| Fotorresistor (LDR) | 1 | Ativação/desativação automática por luz ambiente |
| Canal de cabos IKEA "MONTERA" | 2 | Para esconder fiação |
| Header Macho 40 Posições 1 Linha (0.1") | 7 | Conectores para módulos LED |
| Conector Wire-to-Board M20-1060300 (3 pinos, 2.54mm) | 25 | 2 por módulo LED + extras |
| Contato M20-1180046 (M20 Series, Socket, Crimp, 22 AWG) | 1 pacote (100) | 6 por módulo LED (vêm em pacote de 100) |
Ferramentas Necessárias
- Ferro de solda (genérico)
Sobre o Projeto
Há um tempo comecei a trabalhar em um projeto para iluminar sutilmente nossa sala de átrio que fica um pouco sombria demais durante o outono e inverno. Queria algo com aparência mais natural do que luzes LED duras, preferencialmente a aparência viva de velas tremeluzentes.
Para os impacientes (que não querem rolar até o final para encontrar o vídeo), este é o resultado:
...e uma versão de Natal:
Agora, voltando à história:
Mas criar uma chama artificial realista não é uma tarefa fácil, então minha ideia foi colocar as luzes de forma que você não veja a "chama" diretamente, mas apenas a luz que ela produz, dançando na parede.
Como a sala é feita principalmente de paredes de vidro, a escolha óbvia foi deixar a luz ser projetada nas vigas brancas que sustentam as janelas. Decidi colocar as luzes na parte inferior da viga horizontal, projetando a luz para baixo nas vigas verticais.
Preparação e Planejamento
Como eu queria poder controlar cada "vela" individualmente, a escolha do LED foi fácil; obviamente deveria ser um conjunto de módulos LED baseados em WS2812, então pedi 100 LEDs individuais.
Como você pode ver na imagem acima, cada LED tem seis conexões – e uma direção marcada com uma seta no verso.
Duas das conexões são marcadas 5V, duas são GND e então há o Din (Data In) e o Dout (Data Out). Os dois 5V estão conectados e os dois GND também. Então, na prática, há quatro conexões: 5V, GND, Din e Dout.
Após alguns experimentos com diferentes números de LEDs por "vela", cheguei ao número quatro. Este número me permitiu fazer manipulações de luz interessantes suficientes em cada viga para criar uma aparência realista de vela sem demandar muitos LEDs.
No entanto, se eu tivesse que fazer novamente, teria pedido um conjunto de módulos LED 2x2, para simplificar a montagem.
O controlador não precisava ser muito avançado, e minha suposição era que um Arduino Nano seria suficiente.
A colocação do Arduino não era óbvia. No final, escolhi colocá-lo na própria viga horizontal, atrás do pilar grosso visível na primeira foto acima (bem à esquerda). O pilar está colocado no canto da sala onde as duas paredes de vidro se encontram (da qual a parede "direita" é mostrada na foto). Dessa forma, eu poderia ter os LEDs em duas strings paralelas – uma para cada parede – para minimizar o comprimento físico de cada string. Agora o comprimento total de cada string seria de cerca de 4 metros (13 pés) em vez de ter uma string com o dobro disso.
O Adafruit NeoPixel Überguide foi uma leitura muito boa aqui; se você planeja brincar com módulos LED WS2812, definitivamente deve lê-lo! Por exemplo, ele me disse por que é bom limitar o comprimento físico dos fios.
Escondendo os Cabos
...não foi tão difícil no meu caso, já que os LEDs seriam colocados na parte inferior da viga horizontal. Procurei um canal de cabos barato e encontrei um na IKEA (não sei se é irônico ou óbvio, sendo da Suécia).
Os módulos LED em si foram simplesmente colocados com fita adesiva dupla face forte.
Criando os Módulos LED
Como eu não queria soldar tudo junto em uma única string de comprimento total (imaginei o emaranhado de cabos que encontraria tentando instalar a coisa na parte inferior da viga), decidi construir os módulos LED com conectores para os cabos.
Os módulos LED deveriam ser colocados logo ao lado das vigas verticais para obter o máximo de luz refletida nelas. Eu também queria ter o cabo passando próximo à viga – e precisava respeitar a direção dos LEDs. Isso me levou a ter duas versões do módulo; uma configuração colocada na string indo para a direita do Arduino e outra indo para a esquerda.
As duas versões do módulo requeriam dois layouts de soldagem únicos, onde a principal diferença era manter o fluxo de dados indo do LED correto para o próximo.
Como os LEDs são bem pequenos, cerca de 9 milímetros de diâmetro (3/8"), não foi fácil soldá-los; e dada minha falta de experiência em soldagem, o resultado não é tão bonito. Mas funcionou.
A Soldagem
Passo 1 O primeiro exercício de soldagem foi colocar uma "gota" de solda na minúscula ilha metálica em cada LED.
O próximo passo foi conectar as conexões simples, retas e próximas.
Os cabos seguintes precisavam manter seu isolamento, já que passavam uns sobre os outros.
No total, havia cinco vigas em cada direção – mais a viga do canto – dando um total de onze vigas. Como cada módulo LED tinha quatro LEDs, o número total de LEDs individuais é 44.
Após alguns módulos, peguei o jeito, e no final eu conseguia soldar um módulo completo em cerca de 30 minutos.
O "Truque do Cabo Curto"
Muitos dos cabos minúsculos precisavam de isolamento, mas era difícil cortar apenas o isolamento suficiente em cada extremidade para expor o núcleo interno quando o comprimento total do cabo era menor que um centímetro.
Então descobri este truque (óbvio):
- Solde uma extremidade do cabo, dobre e corte no comprimento desejado. (Neste exemplo, a extremidade não soldada deve ser conectada ao Dout do LED inferior direito na imagem abaixo.)
- Deslize o isolamento um pouco para baixo.
- Corte o comprimento desejado do isolamento liberado.
- Deslize o isolamento de volta, expondo o núcleo na extremidade livre. Pronto!
Dessa forma, o comprimento exato do núcleo de cabo exposto podia ser criado, e o resultado ficou bem legal:
Finalizando os Módulos LED
No final, os módulos LED devem ser fixados de cabeça para baixo na viga, então o verso cheio de cabos soldados deve ser preparado para segurar a fita adesiva.
Acabei usando algum plástico plano aleatório que simplesmente cortei em quadrados. Estes foram simplesmente fixados aos módulos LED com cola quente.
Aqui estão todos os módulos completos! Hurra!
(Neste ponto era vital ter alguma marcação neles, para separar os que vão para a esquerda dos que vão para a direita!)
Os módulos completos foram facilmente fixados usando fita adesiva forte em seus versos agora planos.
Fazendo os Cabos
Felizmente eu tinha um rolo de cabo de extensão telefônica antigo por aí. Este cabo tinha quatro fios separados, o que era mais que suficiente, já que eu precisava de três fios (5V, GND e data).
Montar os soquetes fêmea sem a ferramenta de crimpagem especial não foi tão fácil, mas totalmente viável.
O canal de cabos foi facilmente montado; apenas corte em comprimentos adequados e use a fita adesiva pré-fixada para prendê-lo à viga horizontal.
É assim que um módulo montado finalizado se parece:
Ativação e Desativação Automática
Como não quero ligar as luzes manualmente quando escurece e desligar depois, coloquei um fotorresistor.
Não queria um simples ligar/desligar, mas uma mudança gradual da intensidade da luz durante o crepúsculo. Por esse motivo, precisei saber o valor analógico do meu fotorresistor no ponto da noite em que decidi que "luz do dia" virou "crepúsculo" e o ponto em que "crepúsculo" virou "escuridão".
No gráfico abaixo, a curva vermelha representa a leitura analógica do fotorresistor conforme muda durante um dia (não é uma leitura real abaixo, apenas meu desenho à mão livre). As duas linhas horizontais tênues marcam os dois níveis; a superior é o limite onde "luz do dia" vira "crepúsculo" e a inferior onde "crepúsculo" vira "escuridão". Então, quando a curva vermelha está acima da linha horizontal superior, considero que é DIA, e quando está abaixo da inferior, é NOITE.
A linha verde mais reta é a medição de luz do dia "limpa", ou seja, mínimo (0.0) durante a noite e máximo (1.0) durante o dia, e uma inclinação linear durante o crepúsculo.
Para saber as leituras analógicas reais, conectei quatro fotorresistores a um Arduino junto com uma tela LCD para mostrar os valores atual, mínimo e máximo dos quatro resistores. Usei quatro porque não sabia se tinha um ruim, então se a maioria tivesse aproximadamente a mesma leitura, eu saberia que estariam funcionando. Obviamente coloquei o dispositivo no mesmo local onde pretendia ter o Arduino controlando os LEDs no final. É assim que parecia:
Como o LCD é bastante limitado, mostrei a leitura de um fotorresistor por vez por cerca de cinco segundos. Então, durante o dia, passei de vez em quando e anotei os números num papel. (Obviamente eu poderia ter mantido conectado ao meu laptop e tido os números enviados na conexão serial, mas precisava do laptop durante o dia e não queria ficar no átrio o dia todo).
No final, decidi que é escuro abaixo de "630" e claro acima de "800". Mas esses números obviamente servem apenas para meu fotorresistor junto com o resistor de 10kΩ que usei em série, então não é uma verdade absoluta.
O Código Fonte do Arduino
Eu queria poder ter diferentes tipos de efeitos de iluminação, não apenas luzes de vela. Por esse motivo, construí o código fonte modular, tentando isolar os diferentes mecanismos em arquivos diferentes para facilitar a visão geral.
O arquivo principal .ino é mantido bem pequeno. Basicamente, apenas inicia tudo e chama Update() em algumas classes auxiliares (que por sua vez fazem o truque).
Atualmente, o código fonte tem suporte para dois efeitos diferentes; o efeito de luz de vela e um efeito "Natal". No momento, a escolha do efeito é hardcoded, o que significa que preciso recompilar o código se quiser trocar. No final, isso deve ser controlado usando um controle remoto – ou, ainda melhor, um smartphone. Veremos.
Código Completo
Todo o código fonte para o Arduino: https://github.com/emmellsoft/AtriumLighting
Esquemático
Nota: O projeto utiliza a biblioteca FastLED ou Adafruit NeoPixel para controle dos LEDs WS2812. O código modular permite fácil adição de novos efeitos de iluminação. A calibração do fotorresistor é essencial para o funcionamento correto da transição automática dia/noite.
Processo de manufatura
- Construa um Robô Raspberry Pi Controlado por Bluetooth com Feedback de Áudio
- Transforme um Carro RC Antigo em Veículo Controlado por Joystick com Arduino
- Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
- Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega
- Construa um Robô Controlado por Voz com Arduino Nano
- Construa um Robô Quadrúpede Inteligente com Arduino: Guia Passo a Passo
- PiBot: Robô Pianista Arduino para Performance Musical de Precisão
- Misturador de Cores RGB com Arduino – Projeto DIY para Iniciantes
- Dispositivo de Tratamento Radiônico EMR DIY com Arduino Nano
- Projetores LED RGB Externos com DMX – Alta Performance e Custo Acessível