Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Neste instrutível, mostro como converter uma lâmpada LED simples alimentada por bateria em um dispositivo IoT.
Este projeto inclui:
- de solda;
- programação ESP8266 com Arduino IDE;
- fazendo aplicativo android com MIT App Inventor.
O objeto de interesse é esta lâmpada em forma de lua que comprei na gearbest. Mas realmente este tutorial pode ser adaptado a qualquer dispositivo de baixa tensão DC (dispositivos com alimentação AC requerem circuitos adicionais).
Suprimentos
- Smartphone Android (versões do Android 7-9 testadas).
- Ferramentas de solda.
- Prototipagem de PCB (protoboard).
- Placa ESP-12E (ou outro devboard com microcontrolador ESP8266).
- Conversor USB-serial para programação.
- Vários valores diferentes de componentes passivos (resistores e capacitores).
(Opcional. Consulte a seção "Diagrama de bloco")
- 3,3V@500mA LDO IC.
- Placa conversora de nível lógico 3,3V-5V.
- Fonte de alimentação 5V DC.
Etapa 1: ideia
A lâmpada lunar é alimentada por uma célula Li-ION 18650 e tem 3 modos de operação:
- desligado;
- manual;
- auto.
No modo manual, a lâmpada é controlada com o botão, cada vez que pressiona o LED muda o estado da luz (azul aceso, laranja aceso, ambos aceso, apagado), a intensidade da luz muda enquanto mantém o botão pressionado. No modo automático, os estados da luz LED mudam batendo ou sacudindo a própria lâmpada.
Decidi adicionar ESP8266 para atuar como um servidor web que escuta solicitações e simula o pressionamento de botões. Eu não queria quebrar a funcionalidade da lâmpada original, apenas queria adicionar recursos de controle adicionais sobre o WiFi, então escolhi ESP para simular o pressionamento de botões em vez de controlar diretamente os LEDs. Além disso, isso me permitiu interagir minimamente com o circuito original.
Quando o protótipo foi feito, ele dirigiu ~ 80mA constantemente com a bateria desligada (~ 400mA com brilho total). A corrente de espera é alta porque o ESP8266 funciona como um servidor e sempre está conectado ao WiFi e escuta as solicitações. A bateria se esgotou depois de um dia e meio apenas no estado desligado, então mais tarde decidi usar a porta de carregamento USB das lâmpadas para alimentar todos os componentes eletrônicos da fonte de alimentação externa de 5V e a bateria descarregada todos juntos (mas isso é opcional).
Etapa 2: Diagrama de blocos
No diagrama de blocos, você pode ver quais circuitos serão adicionados e como os circuitos existentes serão modificados. No meu caso, removi a bateria completamente e coloquei um curto-circuito nos carregadores de bateria, entrada com saída (novamente, isso é opcional). Blocos transparentes no diagrama indicam componentes que são ignorados (embora o botão de pressão ainda funcione como originalmente planejado).
De acordo com a documentação, o ESP8266 tolera apenas 3,3 V, no entanto, existem muitos exemplos em que o ESP8266 funciona perfeitamente bem com 5 V, portanto, o conversor de nível lógico e o LDO de 3,3 V podem ser deixados de fora, no entanto, mantive a prática recomendada e adicionei esses componentes.
Usei 3 pinos de E / S ESP8266 e pino ADC. Um pino de saída digital é para simular o pressionamento de botão, duas entradas digitais para detectar quais LEDs de cor estão acesos (a partir disso, podemos descobrir em qual estado o MCU está e qual é o próximo após o pressionamento do botão). O pino ADC mede a tensão de entrada (por meio de um divisor de tensão), é assim que podemos monitorar o nível de carga restante da bateria.
Como fonte de alimentação externa eu uso carregador de telefone antigo 5V @ 1A (não use carregadores rápidos).
Etapa 3: Programação
Em poucas palavras, o programa funciona assim (para obter mais informações, consulte o próprio código):
ESP8266 se conecta ao seu ponto de acesso WiFi cujas credenciais você deve inserir no início da programação anterior do código, ele obtém o endereço IP do servidor DHCP do seu roteador, para descobrir o IP que você precisará mais tarde, você pode verificar as configurações de DHCP da interface da web do roteador ou definir debugging flag in code to 1 e você verá o que IP ESP obteve no monitor serial (você deve reservar esse IP nas configurações de seus roteadores para que o ESP sempre obtenha o mesmo IP na inicialização).
Quando o MCU inicializado sempre executa a mesma rotina para sempre:
- Verifique se ainda está conectado ao AP, senão tente reconectar até obter sucesso.
-
Aguarde o cliente fazer uma solicitação HTTP. Quando a solicitação acontece:
- Verifique a tensão de entrada.
- Verifique em que estado estão os LEDs.
- Corresponda a solicitação de HTTP com os estados de LED conhecidos (azul aceso, laranja aceso, ambos aceso e apagado).
- Simule tantos pressionamentos de botão conforme necessário para atingir o estado solicitado.
Descreverei brevemente as instruções de programação, se for sua primeira vez programando ESP8266 MCU, procure instruções mais detalhadas.
Você precisará do Arduino IDE e do conversor de interface serial USB (por exemplo, FT232RL). Para preparar o IDE, siga estas instruções.
Siga o diagrama do circuito para conectar o módulo ESP-12E para programação. Algumas dicas:
- use fonte de alimentação externa de 3.3V@500mA (na maioria dos casos, a fonte de alimentação serial USB não é suficiente);
- verifique se o conversor USB-serial é compatível com o nível lógico de 3,3 V;
- verifique se os drivers do conversor USB-serial foram instalados com sucesso (a partir do gerenciador de dispositivos do Windows) também você pode verificar se funciona corretamente no IDE, apenas com os pinos RX e TX curtos, do que no IDE selecione a porta COM, abra o monitor serial e escreva algo, se tudo funcionar você deve ver o texto que está enviando aparecendo no console;
- por algum motivo, só consegui programar o ESP quando conectei o conversor serial USB ao PC e, em seguida, liguei o ESP de uma fonte externa de 3,3 V;
- depois de programar com sucesso, não se esqueça de puxar GPIO0 alto na próxima inicialização.
Etapa 4: esquemático e solda
Siga o esquema para soldar todos os componentes ao protoboard. Conforme mencionado antes, alguns componentes são opcionais. Eu usei KA78M33 3.3V LDO IC e esta placa conversora de nível lógico da sparkfun, alternativamente, você pode fazer o conversor como mostrado no esquema (você pode usar qualquer mosfet de canal N em vez de BSS138). No caso de você continuar usando a bateria Li-ION, a rede de alimentação de + 5V será o terminal positivo da bateria. A voltagem de referência do ADC ESP8266 é de 1V, meus valores de divisor de resistor escolhidos permitem medir a voltagem de entrada de até 5,7V.
Deve haver 5 conexões para a lâmpada PCB original: + 5V (ou + bateria), GND, botão de pressão, sinais PWM das lâmpadas MCU para controlar LEDs azuis e laranja. Se você está alimentando a lâmpada a partir de uma fonte de 5 V, como eu fiz, você vai querer dar um curto no pino IC VCC dos carregadores de bateria com o pino OUTPUT, dessa forma todos os componentes eletrônicos serão alimentados diretamente de + 5V e não do carregador de bateria OUTPUT.
Siga a segunda imagem para todos os pontos de solda que você precisa fazer nas lâmpadas PCB.
NOTAS:
- Se você decidiu fazer um curto + 5V com saída IC do carregador de bateria, remova a bateria completamente antes de fazer isso, você não deseja conectar + 5V diretamente a uma bateria.
- Preste atenção em qual pino do botão você solda a saída do ESP, porque 2 pinos de um botão são conectados ao aterramento e você não quer entrar em curto-circuito quando a saída do ESP ficar ALTA, é melhor verificar com o multímetro.
Etapa 5: aplicativo Android
O aplicativo Android foi feito com o MIT app inventor, para baixar um aplicativo e / ou clone o projeto para você mesmo, acesse este link (você precisará de uma conta do Google para acessá-lo).
Na primeira inicialização, você precisará abrir as configurações e inserir o endereço IP do ESP8266. Este IP será salvo, portanto, não há necessidade de inseri-lo novamente após a reinicialização do programa.
App testado com vários dispositivos Android 9 e Android 7.