Realizar projetos para o atual cenário da Internet das Coisas, explicando de uma forma bem simples, consiste na troca de dados entre uma placa e um destino remoto (uma plataforma Cloud, por exemplo). Mas uma coisa crítica é escolher um hardware que suporte os protocolos de rede mais comuns, a fim de inseri-la facilmente no contexto IoT. Para facilitar a vida dos técnicos e engenheiros, diversas empresas visam facilitar esta escolha com módulos prontos, bem como disponibilizam softwares de exemplo e bibliotecas de fácil utilização, o que torna a etapa de prototipação de um projeto muito rápida. Um módulo interessante que vem nessa direção é o Wifi ESP8266 NodeMCU, e o motivo é simples: trata-se de uma placa de pequenas dimensões onde estão disponíveis I/Os (Entradas e Saídas), regulação de tensão, conectividade USB onde inserimos a programação (em Lua ou pela Arduino IDE), interfaces de comunicação serial e conectividade WI-FI (utilizando o ESP8266 12-E). Com isso notamos que esta placa é um ótimo ponto de partida para projetos envolvendo IoT (Internet das Coisas).
Neste artigo daremos os nossos primeiros passos com esta placa de desenvolvimento, desde as principais características de hardware criar o nosso primeiro programa para inserir neste NodeMCU.
NodeMCU - principais características de hardware
Esta placa que chamamos de NodeMCU é uma placa de desenvolvimento para o chip ESP8266 12-E que se encontra soldada no Módulo. Ou seja, toda a execução da programação, gerenciamento de memórias e conectividade WiFi ficam por conta do Chip ESP8266 12-E.
As principais características de hardware do NodeMCU são:
- Alimentação da placa e carregamento de programas: feitos através de um cabo micro-USB comum.
- ESP8266 12-E: quanto à processamento, o destaque é possuir um processador 32 bits e frequência de operação de 80MHz (default) ou 160MHz (selecionável).
- Memória Flash e RAM: conta com até 4MB de memória Flash para programação (a quantidade de memória Flash disponível depende da versão da placa) e 128KB de memória RAM
- Temperatura de operação: -40ºC até +125ºC
- Alimentação do ESP8266 12-E: possui regulador de tensão de 5V (tensão de alimentação da placa) para 3,3V (tensão de alimentação do ESP8266 12-E)
- WI-FI: opera no padrão 802.11 b/g/n, na frequência 2.4GHz.
- Segurança do WI-FI: suporta as encriptações WPA e WPA2
- Antena do WI-FI: embutida/desenhada na própria placa), sem possibilidade de utilização de antena externa.
- Atualização de software: via cabo USB ou sem fio (OTA - Over The Air)
- Entradas e Saídas: há 9 GPIOs (D0, D1, ... D8), que podem operar tanto como entradas e saídas digitais (incluindo saídas PWM).
- Corrente máxima drenada por output: 12mA.
- ADC: um canal, sendo a resolução de ADC igual a 10 bits.
- Disponibiliza um LED (ligado ao GPIO D0) para o usuário.
- Interfaces seriais: 1 interface I²C, 1 Interface HSPI e 2 UARTs.
Como pode ser observado, apresenta um hardware bastante interessante para aplicações IoT.
IMPORTANTE: o ESP8266 12-E não é tolerante à entradas em nível 5V, assim como em suas interfaces e periféricos. Portanto, todas as entradas e manipulações de periféricos (incluindo comunicações seriais) devem ocorrer, obrigatoriamente, com nível de tensão máximo 3,3V.
Programando o NodeMCU
As duas formas de se programar o NodeMCU mais populares na Internet são:
- Arduino IDE - Exatamente da mesma forma que se programa um Arduino comum.
- Utilizando linguagem LUA
Embora bastante interessante, a linguagem LUA não é a melhor escolha para quem quer começar seus estudos e experimentos no NodeMCU. A razão disso é que o conteúdo (bibliotecas e exemplos disponíveis na Internet) envolvendo a programação do NodeMCU em linguagem LUA, é muito escasso se comparado a programá-lo como um Arduino. Portanto, para facilitar o aprendizado vamos programar utilizando o Arduino IDE
Preparação da Arduino IDE para programação do NodeMCU
A preparação da Arduino IDE para a programação do NodeMCU requer primeiramente que seja feito o download e instalação da Arduino IDE. O NodeMCU pode ser programado em Arduino IDE’s de versões iguais ou superiores a 1.6.7. Sendo assim, baixe e instale a versão mais recente no site oficial do Arduino: https://www.arduino.cc/en/main/software
Depois de baixar e instalar o Arduino IDE, vamos baixar as bibliotecas necessárias para programar o NodeMCU. Lembrando que “bibliotecas” são pacotes de códigos próprios para que o Arduino IDE envie o necessário para que possamos colocar o nosso primeiro código dentro do NodeMCU. Para isso, siga o procedimento abaixo:
1. Na Arduino IDE, clique em “Arquivo > Preferências”. Observe a figura 2.
2. Na janela de preferências, no campo “URLs adicionais de Gerenciadores de Placas” insira a seguinte informação:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Feito isso, clique em Ok.
3. Agora, no menu Ferramentas, clique na opção: “Placa > Gerenciador de Placas”. Observe a figura 3.
4. Na janela do Gerenciador de Placas, há um campo de buscas. Digite neste campo o texto “nodemcu” (sem as áspas) e aguarde. A busca irá retornar uma única opção (“esp8266 by ESP8266 Community”). Clique nela e depois em “Instalar”.
Observe a figura 4.
5. Aguarde a Arduino IDE baixar o conteúdo necessário e fazer automaticamente a instalação (pode demorar alguns minutos, dependendo de sua velocidade de conexão com a Internet).
6. Após a conclusão da instalação, feche a janela do Gerenciador de Placas
Neste ponto, todos os recursos necessários já estão instalados, o que permite avançar para a programação do NodeMCU propriamente dita.
Driver para Windows
Se você utiliza Windows, dependendo da versão utilizada pode ser necessário instalar manualmente o driver para o conversor USB-Serial presente no NodeMCU. Para isso, siga os procedimentos deste site aqui: https://www.robocore.net/tutoriais/como-instalar-o-driver-do-nodemcu.html
Como fazer o nosso primeiro programa para o NodeMCU
É chegada a hora de fazer o nosso primeiro programa para o NodeMCU! Para isso, faremos o tradicional “Hello world” do mundo dos embarcados, vamos piscar um LED. O LED irá alternar entre aceso e apagado a cada meio segundo. Para isso, siga o procedimento abaixo:
1. Verifique se o NodeMCU está conectado via cabo USB no seu computador.
2. Na tela do Arduino IDE, clique em “Ferramentas”, depois na opção “Porta”, no menu que aparecer selecione a porta de seu NodeMCU (se o driver do conversor USB-serial do NodeMCU para Windows estiver ok, será a única opção disponível).
3. Ainda no menu “Ferramentas”, na opção “Placa”, selecione a opção “NodeMCU 1.0 (ESP-12E Module)”. Veja a figura 5.
4. Agora vamos criar o nosso primeiro programa. Para isso copie o código abaixo e cole-o na sessão de código da Arduino IDE. Neste código temos o estado do GPIO D0 (GPIO = porta programável de entrada e saída , neste nosso caso D0 está ligado um LED)o qual contém, na própria placa do NodeMCU, um LED ligado) é alternado entre aceso e apagado a cada meio segundo.
Sobre este o LED, é importante ressaltar o seguinte: o LED foi ligado de tal maneira que seu acionamento é invertido em relação ao estado de D0. Ou seja:
- Se D0 está em estado alto (HIGH), o LED apaga.
- Se D0 está em estado baixo (LOW), o LED acende.
Por favor, leia atentamente os comentários presentes no código-fonte.
//Header do equipamento
#include
void setup() {
//Configura o GPIO D0 como saída.
//No NodeMCU, o GPIO D0 é ligado diretamente a um LED na própria placa.
//Para o projeto do pisca-LED isso é ótimo, pois dessa forma não é exigido
//nenhum componente de hardware além do próprio NodeMCU e cabo de
//alimentação.
pinMode(D0, OUTPUT);
}
void loop() {
//Acende o LED e aguarda meio segundo
digitalWrite(D0, LOW);
delay(500);
//Apaga o LED e aguarda meio segundo
digitalWrite(D0, HIGH);
delay(500);
}
5. Agora precisamos enviar este código para dentro do módulo, para isso clique em “Carregar” (botão com uma seta para a direita, conforme destacado na figura 6) e aguarde , o Arduino IDE irá compilar (transformar o código em linguagem de máquina) e inserir o programa compilado no NodeMCU. Este processo pode demorar alguns segundos.
6. Finalizado o processo, basta observar o LED de sua placa. Ele estará piscando na frequência programada.
Com isso terminamos o primeiro programa no NodeMCU: o pisca LED.
Indo além
Conforme mostrado, o hardware do NodeMCU oferece muitos recursos, permitindo a realização de muitos projetos de complexidades diversas, seja no contexto IoT ou não. Uma vez que estivermos familiarizado com a Arduino IDE e a programação do NodeMCU podemos ir muito além.
Há muito material de boa qualidade na Internet, inclusive em português, com projetos para o NodeMCU. Segue abaixo os endereços de alguns blogs e sites com um bom conteúdo para o NodeMCU:
https://www.filipeflop.com/?s=nodemcu&post_type=post
https://www.embarcados.com.br/
http://pedrominatel.com.br/pt/