Interruptor Wifi para Lâmpada - Aplicativo

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:

Dando continuidade no nosso projeto, apresentaremos hoje o aplicativo para celular. Para acompanhar o projeto desde o início, acompanhe a série de artigos aqui no Embarcados, onde apresentamos o passo a passo de cada etapa.

 

Como mencionado nos artigos anteriores, o aplicativo de celular foi desenvolvido para sistemas Android utilizando a ferramenta do MIT App Inventor, uma ferramenta criada para desenvolver aplicativos através de programação por Scratch, onde você arrasta os blocos e monta sua aplicação. Para conhecer mais sobre a ferramenta e saber como utilizar, acompanhe este artigo aqui no Embarcados.

 

 

Aplicativo e usabilidade

 

O aplicativo é totalmente aberto, assim como todo o projeto, portanto, o arquivo .apk e o arquivo .aia estão disponíveis no github. O arquivo .aia pode ser importado no APP Inventor e qualquer item do projeto pode ser modificado.

 

A usabilidade do app é simples, ao iniciar ele busca pelo arquivo .txt com o IP do módulo para fazer a conexão, caso não encontre ele iniciará desconectado. Quando desconectado, um campo permite inserir ou editar o IP do módulo. Esse IP deve ser o mesmo gravado no ESP8266-01, como demostrado na etapa do firmware desta série.

 

Com o app conectado ao módulo, um checkbox e dois botões são habilitados, os botões servem para ligar e desligar a lâmpada, já o checkbox serve para controlar a função Led. Essa função controla o led do hardware para funcionar de forma inversa à lâmpada. Caso tenha dúvida, leia trecho do artigo sobre o firmware onde essa função é criada.

 

Um campo abaixo da lâmpada indica o seu estado atual, assim como a imagem da lâmpada também se altera conforme ela é ligada ou desligada. Este mesmo campo pode indicar falha na conexão caso o aplicativo não receba retorno do hardware.

 

No App Inventor o aplicativo é separado em Interface (Designer), onde criamos a tela com a disposição dos componentes, e Lógica (Blocks), onde montamos os blocos que compõem a parte lógica do aplicativo.

 

 

Interface

 

A interface do nosso aplicativo contém alguns itens para interagir com o módulo:

  • Um campo para inserir o IP que foi gravado nó módulo;

  • Um botão para conectar/desconectar ao módulo;

  • Um checkbox para ativar/desativar a função Led;

  • Um campo adicional para o Status da lâmpada e indicações de falha;

  • Dois botões para ligar e desligar a lâmpada.

 

Cada elemento tem uma configuração adequada para ter uma melhor aparência na tela. Essas configurações podem ser analisadas e modificadas no arquivo do projeto. Abaixo temos uma imagem da interface do aplicativo.

 

Interruptor Wifi para Lâmpada - Área de designer do App Inventor
Figura 1 - Área de designer do App Inventor

 

 

Lógica

 

A lógica do aplicativo é dividida em algumas etapas, onde é feita a inicialização, conexão, controle, comunicação, filtro de mensagem e detecção de erros.

 

Na inicialização, algumas variáveis são criadas. O arquivo texto com o endereço IP do módulo é aberto, caso ele exista. Ao receber o texto do arquivo, o app preenche o endereço do módulo.

 

Bloco chamado na inicialização do aplicativo, onde as variáveis são criadas e o arquivo texto é buscado.
Figura 2 - Bloco de inicialização.

 

Na etapa de conexão, caso já tenha o IP do módulo, o app tenta fazer a conexão ao iniciar. Caso ainda não tenha, o endereço pode ser inserido na caixa de texto. Ao clicar em conectar, além de tentar fazer a conexão, o app cria o arquivo .txt com o endereço do módulo no celular para a próxima vez que o aplicativo for aberto. Caso a conexão já esteja estabelecida, é possível desconectar do módulo.

 

Bloco responsável por tentar fazer a conexão com o módulo WiFiLamp.
Figura 3 - Bloco de conexão.

 

Na etapa de controle, podemos ligar e desligar a lâmpada ou ligar e desligar a função Led, ao tentar fazer uma dessas ações, o bloco de comunicação é chamado.

 

Blocos que fazem o controle da lâmpada e da função Led.
Figura 4 - Blocos de controle.

 

Na comunicação, caso a conexão esteja estabelecida, é possível enviar comandos ao módulo ou fazer requisições do status atual. Ao receber alguma resposta do módulo, o bloco Web é chamado para tratar as informações e mostrar na tela.

 

Bloco que é chamado sempre que uma resposta é enviada para o aplicativo.
Figura 5 - Bloco de recepção Web.

 

Um bloco adicional foi criado para filtrar a mensagem recebida e retornar apenas a informação que nos interessa. Este bloco é chamado pelo módulo Web sempre que uma informação é recebida.

 

Bloco responsável por filtrar a mensagem recebida e retirar a informação necessária.
Figura 6 - Bloco de filtro de mensagem.

 

Existe ainda um bloco adicional que é responsável por detectar falha na recepção e informar ao usuário.

 

Bloco que detecta erro por falta de retorno do módulo WiFiLamp.
Figura 7 - Bloco de detecção de erro.

 

Uma imagem completa com todos os blocos do aplicativo está disponível no repositório do projeto.

 

 

Conclusão

 

Com mais essa etapa agora temos o hardware funcionando, o módulo ESP-01 com o firmware gravado e o aplicativo está criado. A única coisa que falta é instalar e usar. No próximo artigo iremos demostrar como fazer a instalação do módulo de duas formas diferentes e fazer a apresentação do conjunto funcionando. Caso tenha alguma dúvida ou sugestão sobre o aplicativo deixe seu comentário. Até a próxima.

Outros artigos da série

<< Interruptor Wifi para Lâmpada - FirmwareInterruptor Wifi para Lâmpada - Instalação >>
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
 
5 Comment threads
7 Thread replies
3 Followers
 
Most reacted comment
Hottest comment thread
6 Comment authors
LeonardoJosemar Alves de Carvalhojose luizRicardo LimaJosemar Alves de Carvalho Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Leonardo
Visitante
Leonardo

É possível fazer o aplicativo e conseguir acessar o ESP de qualquer lugar sem estar na mesma rede? Como seria?Obrigado .

jose luiz
Visitante
jose luiz

oi Josimar suas materias são espetaculares e muito instrutivo parabens , estou fazendo uma varredura no artigo todo. Rapaz me socorre por favor, eu gostaria do codigo deste artigo para duas lampadas, porque amei o reset deste danado, ele nao falha mesmo , muito show. existe esta possibilidade?

Ricardo Lima
Visitante
Ricardo Lima

Olá Josemar, parabéns pelo projeto.
Já desenvolvi alguns projetos com arduino e app porem com comunicação via Bluetooth.
Atualmente estou tentando trabalhar com ESP8266 e sou um pouco leigo no assunto e gostaria de saber se este seu projeto ele funciona através de uma rede local onde o esp troca informações com o app via um roteador ou se o esp cria sua própria rede?

Josemar Alves de Carvalho
Visitante
Josemar

Ola Ricardo.

Fico feliz que tenha curtido o projeto.
Nesse projeto o ESP conecta na rede WiFi, o celular também deve estar conectado pela mesma rede WiFi. As mensagens são trocadas via HTTP utilizando o método GET.
No artigo anterior da série demonstrei como conectar o ESP na rede WiFi e enviar um GET pela rede.

Precisando de ajudar é só falar.

Abraço.

Ricardo Lima
Visitante
Ricardo Lima

Olá Josemar!
Então eu estou tentando criar uma aplicação semelhante porem ao invés de utilizar as IOs do ESP, tenho interesse em um projeto onde envio a informação do app para o ESP e do ESP para o arduino via serial, onde o celular e o ESP estão conectados na mesma rede.
Você já desenvolveu algo semelhante?
Obrigado pela atenção
Abraço!

Josemar Alves de Carvalho
Visitante
Josemar

Ricardo, neste projeto eu envio uma requisição pelo aplicativo para o ESP, o ESP abre o pacote, identifica a mensagem, executa e retorna ao app o novo estado da lâmpada.
O seu caso parece ser bem semelhante, porem você não precisa executar e responder ao Aplicativo, só precisa enviar a informação via serial para o arduino.
Pegue o firmware que eu usei para esse projeto, com ele você já terá toda a estrutura do que precisa.

Ricardo Lima
Visitante
Ricardo Lima

Ok, obrigado Josemar!
Vou tentar desenvolver, caso eu tenha alguma duvida eu faço contato!
Valeu

Ricardo Lima
Visitante
Ricardo Lima

Olá Josemar td bem? Então estou desenvolvendo um projeto com ESP, arduino e um app, peguei como base o seu projeto e fiz como vc sugeriu, eu envio uma mensagem do app para o ESP e do ESP via serial para o arduino e desta maneira conseguiu acionar uma determinada saída no arduino... Mas estou com um problema pois só estou conseguindo realizar um numero limitado de comandos... Tirei um print da porta serial do arduino. Não sei se estou certo mas parece que quando aperto um botão no app, o arduino recebe algo pela serial do ESP e ele… Leia mais »

André Melo
Visitante
André Melo

Olá amigos.
Estou estudando esse artigo e investindo tempo nesse trabalho.
Minha dúvida é: ele foi testado e funcionou corretamente?

Josemar Alves de Carvalho
Visitante
Josemar

Ola Andre.

Obrigado por gastar seu tempo no projeto, suas conclusões serão muito importantes, principalmente para que eu posso atualizar o projeto. Se puder, peço que compartilhe conosco.

Eu tenho módulos funcionando em casa sem problemas, assim como proposto no projeto.

Claro que quanto mais pessoas testarem, mais poderemos melhorar o projeto.

Estou preparando um ultimo artigo para demonstrar claramente como fazer a instalação.

Abraço.

phfbertoleti
Visitante
phfbertoleti

Muito bom!