Interruptor Wifi para Lâmpada - Firmware

Interruptor Wifi para Lâmpada - Instalação
Este post faz parte da série Interruptor Wifi para Lâmpada. Leia também os outros posts da série:

Seguindo nosso projeto de um interruptor WiFi para lâmpada, hoje daremos mais um passo. Iremos nesse artigo preparar a inteligência do nosso projeto, o firmware que será gravado no ESP8266-01.

 

Caso tenha perdido a primeira etapa do nosso projeto, poderá conferir os detalhes no nosso primeiro artigo da série, onde fizemos a apresentação do projeto e apresentamos o hardware proposto.

 

 

Correções no circuito

 

Antes de começarmos a falar do firmware temos que fazer algumas atualizações no nosso projeto. O circuito proposto na versão inicial apresentou algumas instabilidades na inicialização do ESP-01. Isso ocorre pois o módulo pode entrar em modo programação e não iniciar o firmware corretamente. Fiz um artigo explicando como configurar os GPIOs do ESP-01 para evitar esse problema.

 

A versão atualizada do circuito também está disponível no github assim como o layout modificado da placa. O esquema elétrico pode ser conferido na imagem a seguir:

 

Esquema elétrico do projeto.
Figura 1 - Esquema Elétrico

 

 

Firmware do ESP8266-01

 

O firmware foi desenvolvido e gravado no ESP utilizando a IDE do arduino. Para fazer a configuração da IDE para utilizar os módulos ESP e para saber como gravar o módulo no mesmo ambiente podemos seguir este artigo disponibilizado aqui mesmo no Embarcados.

 

O firmware foi codificado para conectar na sua rede WiFi. Para isso, é necessário, no código, inserir o nome da sua rede (SSID) e a senha. Para evitar que o módulo pegue um IP diferente cada vez que se conectar, precisamos fixa-lo, ajustando o IP, DNS e máscara da rede no código.

 

A estrutura do código é simples, ele recebe uma requisição do aplicativo através do método GET e responde enviando uma mensagem via HTTP, essa mensagem segue a seguinte estrutura: [{Lampada:XX,Led:XX}]. XX é o estado da lâmpada que pode ser ON ou OFF, ZZ é o estado da função Led (falaremos sobre essa função mais a frente). A requisição do app pode solicitar o status da lâmpada e função led (/?status), controlar a lampada (/?lamp=on/off) ou a função led (/?led=on/off).

 

Controlando o sistema via browser.
Figura 2 - Simulação via browser

 

Esse projeto foi pensado para ser algo fácil e didático, a segurança das informações não foram consideradas. As mensagens trocadas não contêm nenhum tipo de criptografia e podem ser vistas facilmente através de qualquer browser. Caso precise de algum tipo de segurança sinta-se livre para modificar o código como quiser.

 

A função led foi pensada para ajudar a encontrar o interruptor quando o ambiente está escuro. Dessa forma, um led irá operar de forma inversa à lâmpada. Sempre que a lâmpada estiver desligada o led estará ligado. Seja por questão de economia de energia ou simplesmente por estar atrapalhando o sono quando em um quarto, você pode não querer este led aceso. Para isto poderá desligar a função.

  

Alem de ser controlada pelo aplicativo, a lâmpada também pode ser ligada ou desligada ao receber um pulso de um botão ou interruptor. A função que faz o tratamento da chave no ESP-01 já faz um debounce por software para evitar ruídos. Caso tenha algum problema com o código ou tenha que retirar o ESP da placa, aproveitamos a modificação do circuito para inserir na placa um jumper que permite fazer o acionamento da lâmpada direto pelo interruptor. A placa pode ser adquirida com a equipe MAZZA G-TEC que está apoiando este projeto em conjunto com o Embarcados.

 

Segue o código que deve gravado no ESP8266-01:

 

 

Mesmo sem o aplicativo, podemos começar a fazer simulações com nosso código utilizando um browser, só precisamos digitar na URL o IP do nosso módulo seguido da requisição que desejamos:

  • http://192.168.0.118/?lamp=off
  • http://192.168.0.118/?led=on
  • http://192.168.0.118/?status

 

Para isso precisamos estar conectados na mesma rede que o ESP.

 

 

Conclusão

 

Estamos finalizando mais uma etapa do nosso projeto, no próximo artigo faremos nosso aplicativo para Android utilizando a ferramenta APP Inventor do MIT. Se tiver alguma dúvida ou problema com o código deixe seu comentário para que possamos ajudar. Até a próxima.

Outros artigos da série

<< Interruptor Wifi para Lâmpada - HardwareInterruptor Wifi para Lâmpada - Aplicativo >>
Este post faz da série Interruptor Wifi para Lâmpada. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Josemar Alves de Carvalho
Formado em Engenharia Elétrica com ênfase em Eletrônica pela Universidade São Judas Tadeu em 2014, atua em São Paulo com desenvolvimento de sistemas embarcados para controle de acesso. Apaixonado por eletrônica e sistemas embarcados, teve seu primeiro contato com microcontroladores no ensino técnico em 2008 e desde então utiliza-os em suas "invenções".

12
Deixe um comentário

avatar
 
6 Comment threads
6 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
8 Comment authors
GustavoWELLINGTON RODRIGUES COSTADIEGO APARECIDO GONCALVESAlessandro PinhoPaulo Henrique Amigoni Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Gustavo
Visitante
Gustavo

Alguém conseguiu descobrir o que e o VR "U" ?

WELLINGTON RODRIGUES COSTA
Visitante
WELLINGTON RODRIGUES COSTA

Caso queira adicionar botões na página web . Tipo liga. desliga o que teria que fazer no codigo

Alessandro Pinho
Visitante
Alessandro Pinho

Queria usar a mesma estrutura do código porém em rede externa

Paulo Henrique Amigoni
Visitante
Paulo Henrique Amigoni

Vou testar ... mais gostaria de saber se vc tem algo desse jeito mais usando junto o interruptor three way ... caso ele pode ligar pela web e desligar pelo interruptor e vice versa

Josemar Alves de Carvalho
Visitante
Josemar

Ola Paulo Henrique.

Este projeto foi pensado para usar um interruptor simples (ou um botão qualquer). Por conta da distancia dos interruptores não acho que atualmente seja viável utilizar interruptores paralelos. Talvez uma modificação no código ajude, vou pensar nisso e fazer alguns testes.

É possível ligar e desligar tanto pelo interruptor quanto pelo celular utilizando a rede wifi. O módulo e o celular tem que estar na mesma rede.

Abraço.

Paulo Henrique Amigoni
Visitante
Paulo Henrique Amigoni

Show de bola...
mais ainda não testei o seu cod ... mais da para adaptar porque eu to usando um sensor de tensão tbm .. então sei qual é o status que ta a lampada .. se ela ta ligada ou desligada

Josemar Alves de Carvalho
Visitante
Josemar

Isso mesmo, através do comando STATUS o módulo te retorna o estado da lâmpada.

DIEGO APARECIDO GONCALVES
Visitante
DIEGO APARECIDO GONCALVES

Josemar, também sou formado pela USJT. Tenho uma dúvida em relação a esta questão. Se por algum motivo cai o sinal do Wifi.. Eu consigo controlar a lâmpada?

Bitous
Visitante
Rogerio Morais

Gostei muito deste Artigo, muito fácil e claro!
E já faz quase tudo o que eu precisava e com EQ ainda pra ajudar!

Josemar Alves de Carvalho
Visitante
Josemar

Bom que gostou Rogério, logo estará disponível o artigo sobre o aplicativo.

Carlos Oliveira
Visitante
Carlos Oliveira

Parabéns pelo artigo, bem didático.

Josemar Alves de Carvalho
Visitante
Josemar

Obrigado Carlos, que bom que curtiu.