Introduction: Projeto Lumos

O projeto Lumos consiste na construção de uma luminária controlada a partir de um smartphone conectado à mesma rede móvel ou WiFi. Para controlar a luminária foi desenvolvido um aplicativo Android, que permite apagar e acender a luz utilizando além de um botão, comandos de voz, graças a integração com o Google Assistente.

Aplicabilidade: o projeto pode ser aplicado em ambientes residenciais para projetos de automação residencial.

Supplies

Para a realização deste projeto foram utilizados os seguintes itens:

  • Sonoff Basic
  • Módulo Conversor Usb 2.0 Para Rs232 Ttl Cp21024
  • Jumpers Fêmea/Fêmea
  • Smartphone Android
  • Luminária comum

Step 1: Conhecendo O Sonoff

O Sonoff é um dispositivo IoT (Internet das coisas) que permite acionar cargas AC através do WiFi. A versão Basic possui um relé, um chip ESP8285, um regulador de tensão AC DC que permite alimentar a placa e memória flash. Este dispositivo já vem de fábrica com um firmware que é capaz de fazer com que o módulo se conecte ao servidor na nuvem através de uma rede WiFi e permite que todo o controle da placa seja feito remotamente a partir do aplicativo eWeLink disponível para download na App Store e no Google Play. Este dispositivo foi escolhido para o projeto, pois utiliza uma placa que já possui um módulo WiFi integrado e é um produto de mercado completo com bom acabamento externo e preço justo. Porém, o firmware de fábrica não foi utilizado, apenas o hardware. Desta forma, o primeiro passo a ser realizado é a construção do programa que será enviado para a placa do Sonoff.

Step 2: Configurando a IDE De Desenvolvimento

Para o desenvolvimento do programa, foi utilizado o software open source Arduíno IDE. Nele é possível desenvolver e realizar upload do programa diretamente para a placa conectada ao computador.

Porém por padrão a IDE não possui as configurações necessárias para a placa que estamos utilizando, visto isso precisamos adicionar uma nova URL de Gerenciadores de Placas nas Preferencias do Sistema e então fazer o download da placa ESP8266 (semelhante à ESP8285) pelo Gerenciador de Placas.

Após a finalização do download é necessário realizar as seguintes configurações no menu Ferramentas:

  • Placa: "Generic ESP8285 Module"
  • Flash Mode: DOUT
  • Flash Size: 1MB (FS:64KB OTA:~470KB)

Step 3: Instalando O Driver Da Placa

Antes de conectar a nossa placa ao computador, é necessário instalar seu driver.

É possível encontrá-lo neste site para diversos sistemas operacionais.

Step 4: Criando O Programa Para a Placa

O programa representado nas imagens deste passo é composto por 5 métodos e abaixo explico cada um deles.

Setup:

Este é o primeiro método a ser executado ao conectar a placa à uma fonte de energia. A primeira ação a ser realizada é a conexão da placa à uma rede WiFi utilizando nome e senha informados no código, aqui é possível informar mais de uma rede como opção e a placa se conectará a rede com maior sinal disponível. Caso a placa se conecte com sucesso à alguma rede, será iniciado um servidor HTTP contendo uma API que expõe os métodos POST e GET. Esta API é acessada a partir do IP da placa na rede que é exibido no console logo após a conexão.

loop:

Esta é uma função padrão que executa os comandos que são colocados nela infinitamente enquanto a placa estiver conectada na energia. O comportamento desejado neste caso, é que a placa fique em estado de espera aguardando pelos requests feitos pelos clientes conectados à API.

handleRoot:

Este método é chamado quando é realizada um request com o método GET na API. Ele é responsável por exibir uma página HTML contendo um botão que executa o método handleLED. Este método permite testar o programa utilizando um browser.

handleLED:

Este é o principal método do programa, ele é chamado quando é realizado um request com o método POST na API e também quando o botão do HTML exibido a partir do método handleRoot é acionado. Ele é responsável por inverter o estado do relé conectado à placa, ou seja, caso o relé esteja aberto, ao acionar a função ele é fechado. Caso o mesmo esteja fechado, ao acionar a função ele é aberto. Após conectar o Sonoff à luminária, isto fará com que a mesma acenda ou apague a lampada.

handleNotFound:

Este método envia uma resposta HTTP 404, caso seja feito um request para uma URI não existente.

Step 5: Fazendo O Upload Do Programa Para a Placa

Após finalizar o desenvolvimento do programa, é necessário realizar o upload do mesmo para a placa para que possamos testar o que foi feito.

O primeiro passo é abrir o Sonoff e conectar a sua placa ao conector USB utilizando os jumpers (vide seção de supplies deste tutorial). É importante lembrar que os pinos da placa devem ser conectados aos seus respectivos pinos no conector USB, apenas o pino de 5V não será utilizado.

O segundo passo é conectar a placa ao computador utilizando o modo flash, para isso é necessário segurar o botão de reset existente na placa enquanto o conector é ligado à porta USB do computador.

Após conectada, é possível no Arduíno IDE selecionar a porta em que a mesma está ligada. Feito isso, compile o código utilizando o botão "Verificar" e faça o upload utilizando o botão "Carregar".

Step 6: Conectando O Sonoff À Luminária

A luminária escolhida para o projeto é uma luminária comum que possui um interruptor em seu fio. Este interruptor foi substituído pelo Sonoff.

Para conectar os cabos, é necessário se atentar os lados do Sonoff que estão indicados como "Input" e "Output". Sendo que no lado "Input" deve ser conectada a ponta que vem da tomada e do lado "Output", a ponta que vai para a lampada.

Outro ponto importante, é que os fios não devem se cruzar, ou seja, se o fio azul foi conectado do lado direito no lado "Input", deve ser conectado também do lado direito no lado "Output".

Step 7: Criando O Aplicativo Android

Conforme explicado anteriormente, para que possamos acender ou apagar a lampada da luminária é necessário realizar um request na API exposta pela placa. Para realizar esta chamada, foi desenvolvido um aplicativo Android integrado ao Google Assistente que permite abri-lo utilizando comandos de voz.

Para o desenvolvimento do aplicativo foi utilizada a IDE Android Studio, que permite programar aplicativos Android nativos utilizando a linguagem de programação Java.

A interface do aplicativo é simples e possui apenas um botão que permite acender ou apagar a lampada. Este botão realiza uma chamada POST ao método handleLED da API exposta no IP da placa conectada à internet.

É importante lembrar que para que o método funcione, o smartphone precisa estar conectado a mesma rede da placa, visto que estamos utilizando o IP como forma de identificação da API.

Para que o aplicativo tenha integração com o Google Assistente, basta adicionar um "intent filter" ao arquivo de manifesto do aplicativo (vide seção Referências).

Por fim, para enviar o aplicativo para um smartphone conectado ao computador é preciso ativar o modo desenvolvedor no dispositivo, conectá-lo ao computador e clicar na opção "Run app" disponível na IDE.

Step 8: Testando a Luminária