07 abril 2017

NodeMCU ESP8266 - Arduino Day 2017


Dia 1º de abril foi o Arduino Day, evento que ocorre mundialmente para comemorar o Movimento Maker principalmente na área de designers e eletrônica.

Aqui na região da baixada santista, tivemos o evento em 2016, e agora em 2017. O evento deste ano foi superior em quantidade de participantes, e também na qualidade das palestras. Maiores informações sobre o evento, podem ser obtidas no blog Engenheiro Caiçara.Tive a oportunidade de participar falando do NodeMCU ESP8266, e esse post fará um resumo do que foi apresentado lá.

ESP8266
 
É um SoC (System on a Chip) fabricado pela Espressif Systems, popularizado por volta de 2012, principalmente pela comunidade do mundo Maker devido seu baixo custo. Ele implementa toda a pilha TCP/IP e o padrão 802.11 b/g/n. Possui um microcontrolador interno. O primeiro módulo foi o ESP-01, ele era programado diretamente utilizando a linguagem LUA, ou através do Arduino UNO com suas bibliotecas.
ESP-01
Atualmente o encapsulamento do ESP8255 está no módulao ESP-12E, com o microcontrolador Tensilica L106 32-bit, com clock de 80 MHz, Spi, I2C, conexão serial RX/TX e 10 portas GPIO (sendo que 4 podem ser utilizadas como PWM). Continua sendo possível programá-lo diretamente, sem a necessidade do Arduino, somente através de um módulo FTDI para fazer a conexão USB.

ESP-12E

ESP-12E conectado através de módulo FTDI


NodeMCU ESP12-E
É uma plataforma de hardware Open-source de desenvolvimento para o ESP12-E. Além de programá-lo diretamente através da Linguagem Lua, é possível utilizar firmwares para diferentes linguagens como Espruino (JavaScript próximo ao Node.js), ESP-Open-SDK (Linguagem C), ESP-Open-RTOS (Linguagem C também), Micropyton (Python) e Arduino IDE (linguagem C++);

A vantagem em se trabalhar com o Arduino IDE está em aproveitar todas bibliotecas para se trabalhar com sensores já implementadas para o mundo Arduino. A única atenção que deve se ter é que o ESP8266 trabalha com 3V, e não 5V como o Arduino UNO, e isso talvez requeira algumas adaptações nas montagens eletrônicas dos módulos para Arduino.
NodeMCU ESP12-E
É necessário instalar a biblioteca referente ao ESP dentro do Arduino IDE. Isso é possível a partir da versão 1.6 do Arduino IDE. Um tutorial detalhado sobre como realizar essa instalação e implementação pode ser vista no blog FlipeFlop.

Para o Arduino Day realizei a montagem abaixo, com dois LEDs, e uma chave push button ligado a um resistor de 10K, conforme a imagem abaixo.

Sketch feito no Fritzing
Foi uma demonstração de como usar o NodeMCU como um "WebServer", onde é possível controlar a intensidade com que a Led vermelho pisca. O Led verde mostra o status da conexão WiFi, ele piscando demonstra que está tentando conectar no WiFi, ele ligado direto indica que dispositivo conectado no WiFi. O push button quando acionado faz com que o Led Vermelho pare de piscar. Pressionando-o novamente, ele volta a piscar.

O ESP retorna sempre uma página HTML com um botão de +, e outro botão de -. Quando pressionado um botão, ele envia uma requisição HTTP para o ESP com a string "more", quando o botão + é pressionado, e uma string "less" quando o botão - é pressionado.

O código trata a requisição recebida e altera o valor da variável "intensidade", fazendo com que o Led pisque mais rápido, ou mais devagar. O mesmo código do sketch de exemplo Blink do Arduino foi utilizado para fazer o Led piscar.

O código pode ser visto na minha página do github.

O próximo post espero fazer esse mesmo código com Mycropython!

Espero ter ajudado, até a próxima!