NodeMCU (ESP8266) o módulo que desbanca o Arduino e facilitará a Internet das Coisas…

A partir de 2005 o Arduino se tornou a principal ferramenta de makers e hobbistas para a o prototipação de projetos eletrônicos. Pois bem, eis que em meados de 2014 surgiu um concorrente à altura (eu diria muito superior): O ESP8266, um módulo eletrônico muito menor, mais veloz, potente e muito mais barato do que o Arduino, além de já possuir conexão Wi-Fi.

Com isso, esse módulo possibilita os mais diversos projetos, conectados à Internet e é possível programá-lo usando o mesmo software e linguagem do Arduino. O potencial do ESP é tão grande que ele venceu o prêmio de hardware do ano (2015/16) pelo IoT Awards.

Algumas informações sobre ele:

Confusão de nomes, quem é quem?

ESP8266 (na verdade ESP8266EX) é um chip de arquitetura 32 bits com Wi-Fi integrado, medindo apenas 5mm x 5mm E produzido pela companhia chinesa Espressif.
O seu tamanho tão pequeno dificulta a utilização, mesmo soldá-lo é uma tarefa complicada, então uma outra empresa chinesa, a AI-Thinker, passou a produzir módulos utilizando o chip e colocando alguns componentes extras (Memória adicional, memória EEPROM, antena…).
Esses módulos sofrem rápidas atualizações e começaram a ser chamados por números, os mais conhecidos são:

  • ESP-01 – que contava apenas com 8 conectores, e servia mais para ser utilizado como um módulo para o Arduino;
  • ESP-07 – que foi bastante vendido, contava com 16 pinos, antena de cerâmica e conector para antena externa;
  • E o ESP-12E – Uma atualização do ESP-12, que conta com 22 pinos, entre esses pinos extras estão os da interface SPI, que possibilita ligarmos vários módulos ao ESP (displays, cartões SD, e diversos ‘shields’…)

Agora vamos ao NodeMCU

A gravação dos módulos ESP não é das mais simples, é necessário um conversor USB/Serial (FTDI), para que os dados possam ser passados do computador para o módulo. Outro ponto dos módulos ESP é que eles utilizam 3,3V (inclusive alguns conversores só possuem saída de 5V), o que não é uma tensão fácil de obter.
O NodeMCU é constituído por um módulo ESP-12E, um conversor FTDI, e um regulador de tensão de 5 para 3,3V e possui o espaçamento entre os pinos padrão (2,54mm) o que nos permite conectá-los à placas de prototipação (protoboard), e sua programação é bem mais simples,
sendo necessário apenas ligar um cabo USB que também serve como alimentação para o circuito. O projeto original foi pensado para se utilizar a linguagem de programação Lua (Brasileira inclusive) mas é possível fazer upload dos códigos em outra linguagem normalmente.

Várias empresas lançaram diferentes versões, a “original” NodeMCU, as mais acessíveis WeMos e DOIT, e as mais confiáveis SparkFun Thing e Adafruit HUZZAH.

O NodeMCU

Tamanho

Nesta imagem podemos ver o Arduino Uno, um NodeMCU e um shield Wi-Fi. O NodeMCU faz o papel dos outros dois componentes juntos, ou seja, é capaz de receber programação e já tem uma interface Wi-Fi, possibilitando uma imensa gama de projetos.



Vamos aos números:
O Arduino Uno mede aproximadamente 5,3cm x 7,9cm e o shield Wi-Fi tem praticamente o mesmo tamanho (é usado em cima do Arduino Uno, não há aumento no espaço utilizado), já o NodeMCU mede 2,5m x 5,1cm, um terço o tamanho do Arduino, isso sem contar na possibilidade de usar apenas o chip principal, que mede apenas 2,4cm x 1,6cm (quase 11 vezes menor).

Hardware

Neste quesito a vitória do NodeMCU é mais expressiva, o Arduino UNO possui um microcontrolador (ATMega 328P) de 16MHz (velocidade de processamento, um celular atual é aproximadamente 100 vezes mais veloz), possui uma memória RAM de 2KB (Memória onde são armazenadas as variáveis, os valores que você salva no meio do código) e uma memória flash de 32KB (espaço para armazenamento do programa em si).
Já o NodeMCU possui um processador (Tensilica LX106) que pode atingir até 160MHz (10 vezes mais rápido que o Arduino), uma memória RAM de 20KB e uma memória flash de 4MB! (Tão grande que é possível fazer download de uma atualização do próprio código!). Os shields Wi-Fi mais comuns possuem conexões 802.11 b e g (11MBps e 56MBps de limite de velocidade, respectivamente). Já o ESP possui as mesmas conexões além da 802.11n que possui um limite 300MBps de velocidade e tem um alcance até duas vezes maior.

Preço

Aqui a situação fica melhor ainda! Nos sites chineses é possível encontrar um ESP8266 por até US$1,70 e um NodeMCU por menos de US$2,30 (menos de 12 reais), um Arduino UNO original não sai por menos de 20 dólares. No mercado brasileiro, usando apenas um site como comparação um NodeMCU sai por aproximadamente R$70, e um ESP8266-12E por R$45. Um Arduino UNO cópia está saindo por R$60 e um shield Wi-Fi não sai por menos de R$250… Ou seja, o custo-benefício do ESP/NodeMCU é altíssimo e é possível encontrá-lo a preços mais acessíveis no MercadoLivre, por exemplo.

Facilidade

Como foi dito, a programação do ESP8266 pode ser feita de várias maneiras:

  • Em C, através da SDK do fabricante (Espressif)
  • Em Lua, que é a linguagem oficial do NodeMCU
  • E em C++*, a mesma linguagem no Arduino

A mais simples de ser utilizada é a linguagem do Arduino, as bibliotecas são muito completas, sendo necessário pouca programação para já conectar o ESP no seu roteador Wi-Fi e fazer as mais diferentes e úteis aplicações. O código de exemplo abaixo, procura por todas as redes nas redondezas e as imprime na tela juntamente com a potência do sinal e o tipo de encriptação.

 


#include "ESP8266WiFi.h"

void setup() {
Serial.begin(115200);

// Set WiFi to station mode and disconnect from an AP if it was previously connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);

Serial.println("Setup done");
}

void loop() {
Serial.println("scan start");
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0)
Serial.println("no networks found");
else
{
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i)
{
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
delay(10);
}
}
Serial.println("");
delay(5000);
}

Contras

Claro que nem tudo são flores, um dos pontos negativos do ESP é a presença de somente uma entrada analógica, o que dificulta a utilização de muitos sensores simples, além disso, o valor máximo aceito nessa entrada é de 1 Volt, sendo necessário algumas conversões para obter o valor desejado. Há também um número menor de portas digitais, mas nada que comprometa a maioria dos projetos.

E aí?

É fácil evidenciar a enorme vantagem que o ESP/NodeMCU leva sobre outros dispositivos, ele mescla o hardware potente e de baixo custo das manufaturas chinesas com a facilidade de programação do Arduino, que nasceu na Europa mas é difundido pelo mundo todo. Este pequeno chip, como a mídia especializada sempre diz, é claramente um IoT enabler, tem tudo para estar presente nos mais diversos gadgets daqui pra frente. E a Espressif já anunciou a pré-produção do ESP32, um chip ainda melhor que o 8266 com processador dual core, 500KB de RAM e Bluetooh 4.0