NodeMCU – primeiros passos (MIC160)

Escrito por Pedro Bertoleti

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.

 

Figura 1 - placa de desenvolvimento NodeMCU e ao lado somente o Chip ESP8266 12-E.
Figura 1 - placa de desenvolvimento NodeMCU e ao lado somente o Chip ESP8266 12-E.

 

 

As principais características de hardware do NodeMCU são:

  1. Alimentação da placa e carregamento de programas: feitos através de um cabo micro-USB comum.
  2. 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).
  3. 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
  4. Temperatura de operação: -40ºC até +125ºC
  5. 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)
  6. WI-FI: opera no padrão 802.11 b/g/n, na frequência 2.4GHz.
  7. Segurança do WI-FI: suporta as encriptações WPA e WPA2
  8. Antena do WI-FI: embutida/desenhada na própria placa), sem possibilidade de utilização de antena externa.
  9. Atualização de software: via cabo USB ou sem fio (OTA - Over The Air)
  10. Entradas e Saídas: há 9 GPIOs (D0, D1, ... D8), que podem operar tanto como entradas e saídas digitais (incluindo saídas PWM).
  11. Corrente máxima drenada por output: 12mA.
  12. ADC: um canal, sendo a resolução de ADC igual a 10 bits.
  13. Disponibiliza um LED (ligado ao GPIO D0) para o usuário.
  14. 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:

  1. Arduino IDE - Exatamente da mesma forma que se programa um Arduino comum.
  2. 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.

 

 

Figura 2 - Menu Arquivo > Preferências
Figura 2 - Menu Arquivo > Preferências

 

 

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.

 

 

Figura 3 - Menu Ferramentas > Placa > Gerenciador de Placas
Figura 3 - Menu Ferramentas > Placa > Gerenciador de Placas

 

 

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.

 

 

Figura 4 - Gerenciador de Placas da Arduino IDE
Figura 4 - Gerenciador de Placas da Arduino IDE

 

 

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.

 

 

Figura 5 - seleção da placa NodeMCU
Figura 5 - seleção da placa NodeMCU

 

 

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.

 

 

Figura 6 - botão de compilação e upload de programa para o NodeMCU
Figura 6 - botão de compilação e upload de programa para o NodeMCU

 

 

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/