AFIntelliLight – ESP8266 para embutir na tomada

Escrever sobre ESP8266 se tornou um padrão. Cada dia que passa, mais novidades surgem e são realmente baseadas nas necessidades que se apresentam. Esse módulo da AF Eletrônica é o melhor exemplo disso, e é da industria nacional, o que dá mais orgulho!

Apresentação do AFIntelliLight

AFIntelliLight
AFIntelliLight

Esse módulo diminuto (compare seu tamanho na foto) foi projetado para ser embutido na caixa de interruptores/tomadas. Um slot para ESP8266-01 foi disposto do mesmo lado do relé e logo adiante, o slot para o USB-serial.  Ao lado do ESP8266 você encontrará os botões para colocar o ESP8266 em modo de gravação, de modo que você não precisará sequer removê-lo para gravar um novo firmware ou subir um programa.

O modulo AFIntelliLight tem uma fonte protegida integrada, assim você poderá entrar diretamente com tensão AC (de 100V à 240V @50-60Hz) diretamente, em qualquer lugar do Brasil e em países com frequência de 50Hz.




O nome AFIntelliLight é apenas uma lembrança a um recurso disponível nesse módulo. Repare que ele possui 2 bornes verdes, que podem ser utilizados para acionamento do relé, simplesmente fechando o circuito em ground. Isso possibilita colocar um botão de momento qualquer para acionar o relé (um botão tipo campainha, botão de reset etc). Claro, a reação é tratada pelo ESP8266, portanto é necessário programação, e aproveitando essa apresentação, disponibilizarei o código para que você possa utilizá-lo com nenhum (ou com o mínimo de) esforço.

Programar para o AFIntelliLight

Hoje o AFIntelliLight tem um apk para Android, caso você não pretenda se dar ao trabalho de programar nada. É um programa com mudança de estado parecido com o MQTT Dashboard, mas de comunicação direta com o dispositivo, ou seja, você compra, instala e usa. Todavia, se desejar programá-lo e integrá-lo à sua IoT utilizando MQTT ou se desejar rodar um webserver nele, você encontra os passos aqui no site.

No video abaixo você vê a praticidade de instalação e a operação através do botão pulsador e também pelo aplicativo.

Para programá-lo, podemos utilizar o Aptana Studio, Pycharm, ESPlorer, entre outros. Eu gosto de utilizar o ESPlorer porque é uma IDE criada para ESP8266 para programação em Lua e Python. Vou apresentar um pouco mais da IDE antes de seguirmos  para o código, talvez eu consiga lhe mostrar as benéfices propiciadas por ela.

Programar no ESPlorer

Normalmente eu coloco o firmware MicroPython, cujo firmware disponibilizo nesse link do github. Já mostro em outro tópico mais abaixo como fazer o flashing do firmware, não há riscos, você poderá fazê-lo tranquilamente.

Tendo instalado o firmware, você poderá então iniciar a utilização do ESPlorer IDE – uma IDE desenvolvida pelos russos. Faça o download nesse link, então execute-o após sua extração. Eu só utilizo Linux e chamo o programa por linha de comando, abrindo um terminal. O processo pós download é o seguinte:

E a IDE se abrirá, ainda configurada para utilização com NodeMCU, ou seja, para programação em Lua.

ESPlorer IDE
ESPlorer IDE

Essa imagem é de outro artigo que escrevi, onde exemplifiquei a utilização da IDE utilizando NodeMCU e por conseqüente, a linguagem Lua (perdoe-me pela trema, mas é incabível a utilização da palavra ‘conseqüente’ sem ela).

Nessa interface, a única configuração que voce precisará modificar é justamente a escolha do firmware em questão. No nosso caso, devemos selecionar “MicroPython” em “Settings”.

Seleção do firmware
Seleção do firmware
Interrupções com ESP8266

Essa é uma ótima oportunidade para falarmos outra vez sobre interrupções. A vez mais recente que discorremos a respeito foi no “Controle de maturação da cerveja”. No caso, a interrupção foi utilizada para reiniciar o ESP8266 após um deep sleep. Agora a interrupção será externa, isto é, uma interrupção de origem periférica, advinda de um botão, por exemplo. Mas como escrever uma interrupção para o ESP8266? – É isso que veremos agora.

Indo por partes, a primeira coisa que você deve ter em mente é que uma interrupção externa deverá adentrar o sistema através de um GPIO. Assim sendo, é necessário configurar o pino do ESP8266 de modo que ele possibilite a recepção de um sinal. Nesse caso, a configuração básica do pino deve ser algo como:

Ou seja, criamos um objeto “pulse”, que é o GPIO 2, configurado como INPUT.

O objeto “pulse” tem um método chamado “irq”. Esse método recebe 2 parâmetros, sendo:

  • trigger – o gatilho;  origem da interrupção. Nesse artigo a interrupção vinha do RTC, do ALARM0.
  • handler – A função ou método que será executada na reação do evento. Vejamos mais a respeito.

Normalmente o handler acaba sendo uma função convencionada “callback”. Claro que pode ter o nome que desejar, mas seguindo o legado, vejamos um exemplo da função de callback:

Quando ocorrer o evento, essa função será chamada. Agora precisamos preparar o “trigger”, que na tradução direta é o gatilho, propriamente dito. A linha que ativará a interrupção no pino 0 fica assim:

Desse modo, o botão deve ser pressionado e somente quando liberado a interrupção é gerada. Todavia, existem 3 modos de configuração para reagir a um evento do pino:

Tendo esses conceitos, já podemos iniciar o teste do pulsador da nossa AFIntelliLight.

Declarando o callback

Nosso callback funcionará assim:

Você pode tanto copiar esse código aí acima como baixar o arquivo do github, criado para o parceiro AFEletronica, nesse link.




Para utilizá-lo, claro que você precisará instalar o firmware MicroPython. Eu disponibilizo um firmware que compilei para os parceiros, que você encontra aqui.

O tutorial para instalar o firmware está nesse outro artigo, na sessão “Trocando o firmware NodeMCU por MicroPython”. Não se preocupe, o procedimento é o mesmo para trocar qualquer firmware.

para habilitar a transferência de arquivos para o ESP8266, sugiro esse outro artigo, na sessão WEBREPL.

Quando você estiver com o programa dentro do MicroPython, bastarão 3 linhas:

Por fim, conecte um fio ao borne verde da esquerda (cuidado com a corrente alternada!) e toque-a rapidamente no borne da direita. Após um breve delay, o relé será acionado. É o que acontece quando você utiliza um botão de momento; ele fecha e abre o circuito.

Qual a vantagem em utilizar interrupção?

Essa é fácil de responder. Quando você utiliza interrupções, não precisa ficar preso a um loop. Além disso, seu programa pode executar outras tarefas e ao ocorrer uma interrupção, todas as demais tarefas param e o processador vai atender a interrupção.

O outro método de analisar pinos de GPIO é através de polling, verificando o estado de um a um, mas utilizar isso gasta recursos desnecessariamente.

No próximo post relacionado vou disponibilizar uma classe completa para controlá-lo utilizando MQTT.

Onde comprar

Essa belezinha pode ser adquirida na AFEletronica, e clicando aqui você vai direto para a página de especificações do produto. Se desejar fazer zeroconf, então você pode adquirir esse produto com o app Android (consideravelmente mais caro). Se desejar fazer “zerocusto”, motive-se a implementar MQTT ou um webserver, que mostrarei no próximo artigo relacionado!

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do bit Ao Byte – https://www.facebook.com/groups/dobitaobyte/

Projetos Arduino e Eletrônica – https://www.facebook.com/groups/projetosarduinoeletronica/

ESP8266 BR – https://www.facebook.com/groups/ESP8266BR/

Próximo post a caminho!

 

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Um comentário em “AFIntelliLight – ESP8266 para embutir na tomada

Comentários estão encerrados.