NodeMCU ESP8266 - As placas para IoT
Hoje, abordaremos as placas que praticamente popularizaram o uso de IoT na comunidade maker e também para uso doméstico, as famosas Node MCU ESP8266. Vamos conhecer um pouco da história delas e de como programar efetivamente elas para usarmos no nosso dia a dia.
Let's Go.
História
Com a popularidade do ESP-01 que abordamos anteriormente, o uso de IoT se tornou mais comum, desta forma, muitos projetos que usavam o Chip Esp8266 surgiram. Logo, a fabricante também iria embarcar nessa nova empreitada. Então foram surgindo alguns kits de desenvolvimento, mas o que vingou mesmo foi o NodeMCU.
O Node MCU, Node de Nó e MCU de Micro Controller Unit (Ou Micro Unidade Controlador), é um projeto Open Source de um kit de desenvolvimento para IoT, que se baseia no Chip ES8266-12, ou ESP-12 e ESP-12E respectivamente. E sim, tem diferenças, poucas mas tem, sendo originalmente projetada para rodar a linguagem de programação Lua (Sim, isso mesmo, ela não é usada a IDE do Arduino). É usado o software ESPlorer, (https://esp8266.ru/esplorer), Uma IDE que precisa do Java instalado para rodar.
O NodeMCU Foi rapidamente adotada pela comunidade do Arduino, que deu um jeito de usar a *Arduino IDE para programar no NodeMCU na linguagem da IDE, em C/C++. Desta forma, sua popularidade explodiu. Bom, eu cheguei a testar programar em Lua, mas dava muito erro e acabei usando a Arduino IDE mesmo já que seu suporte é assustadoramente fenomenal. Além disso, para poder usar o NodeMCU é necessário instalar os Drivers do Chip Serial CH340 manualmente, a não ser que esteja no Ubuntu, já que normalmente este driver já vem instalado na distro.
*Lembrem-se, se vocês programarem nela com a Arduino IDE, nunca mais vão poder usar Lua e ESPlorer para programar no NodeMCU, será necessário instalar o Firmware de fábrica para poder usar-la com Lua novamente.
Após este resumo vamos agora abordar um pouco das placas em si.
Os Kits de Desenvolvimento
Bom, como podem averiguar, o NodeMCU é um Kit de Desenvolvimento para o ESP12, ou seja, a "placa" serve apenas para gravar os programas nela, sendo importante mesmo o Modulo WiFi ESP12 ou ESP12E. Nas imagens abaixo é possivel ver que o Módulo WiFi que vem incorporado no NodeMCU é do mesmo tamanho de um ESP01, mas ele não possui pinos adequados que permitam usar ele numa PCB normalmente, já que ele é soldado por cima da placa como um SMD.
Então basicamente, o "restante" da placa, é só para poder usar o Módulo adequadamente, por isso se chama de “Kit de Desenvolvimento”. É possivel adquirir apenas o módulo separadamente, mas deve ter cuidado pois ele não tem espaço nos pinos que permitam colocar em uma protoboard ou PCB e ele funciona com 3.3V, então é muito fácil queimar ele.
Mas pera lá, na imagem do banner, existem 3 placas de tamanhos diferentes, então qual devo usar? Bom, para responder essa pergunda é simples, qualquer uma serve. Mas é mais fácil achar a V3, que é a mais atual. Essas placas como mencionado no Post sobre o ESP-01, funcionam com 3.3 Volts, então nem todo modulo arduino vai poder ser usado por ela sem um divisor de tensão, vamos falar sobre elas.
NodeMCU DevKit 0.9
Este aqui, que é muito bonito, foi basicamente o primeiro dos NodeMCU a surgir, possuindo o Módulo ESP-12, possuindo vários pinos, mas basicamente apenas pouco mais da metade deles você poderia usar normalmente.
Sendo uma placa bem larga, o que torna complicado de usar numa Protoboard, já que ocupa quase todo o espaço mesmo. Ela utiliza o Conversor serial CH340, então é necessário instalar o Driver para poder programar nela.
Especificações:
- Modulo ESP-12 32Bits
- Clock de 80 MHz
- Memoria Flash de 4MB
- Memoria de 80 KB
- Input de 5-9 Volts
- Tensão de Operação de 3.3 volts
- 1 Pino Analogico
- 11 Pinos digitais com PWM;
- Conversor USB Serial UART CH340G
Como pode perceber, os pinos são nomeados de forma diferente do Arduino, no Arduino os pinos possuiam uma ordem e você usava o que queria, já nas NodeMCU e as placas que usam ESP8266 no geral, os pinos são chamados de GPIO, então para usar no Arduino IDE é necessario colocar o numero do pino digital. Então se no diagrama você for usar por exemplo o Pino GPIO16 que é o D0, você vai ter que colocar 16 na IDE do Arduino para usar o Pino.
NodeMCU DevKit 1.0 V2
Este carinha aqui é a evolução do anterior, e é o mais util dos três, possui o módulo ESP-12E sua placa é bem mais fina, o que facilita seu uso numa protoboard, e vem com o driver serial CP210, que é um driver que o Windows reconhece bem mais fácil e é um drive bem fácil de se achar.
Ela possui no geral as mesmas caracteristicas da placa anterior, só mudando o módulo usado e seu tamanho no geral. Ela não é tão estilosa quanto a anterior, mas tem o seu charme :)
É possivel notar que esta placa é bem mais fina que a anterior e possui a mesma quantidade de pinos, apesar de ter mais GPIO's, na pratica apenas 11 deles você pode usar.
Especificações:
- Modulo ESP-12E 32Bits
- Clock de 80 MHz
- Memoria Flash de 4MB
- Memoria de 80 KB
- Input de 5-9 Volts
- Tensão de Operação de 3.3 volts
- 1 Pino Analogico
- 13 Pinos digitais, na pratica apenas 11 são usavéis e com PWM
- Conversor USB Serial CP2102
NodeMCU DevKit 1.0 Lolin ou “V3”
Sendo considerado por mim como a ‘piorzinha de se usar das três’ (Eu explico), esta aqui possui o Módulo ESP-12E, sendo um DevKit 1.0 também, possui os mesmos pinos das versões anteriores, mas diferente da anterior vem com o chip CH340 como a primeira.
O ‘problema’ dela, é que é a maior das 3, sendo muito larga o que ocupa praticamente todo o espaço numa protoboard. Isso torna ela exageradamente grande, e não é estilosa como a primeira e nem muito prática como a segunda, mas por ser o kit mais recente é o mais fácil de se achar, sendo bem barado relativamente e possui um custo beneficil grande.
É possivel observar que esta placa possui os mesmos atributos da V2, mas não é “Original”, por isso ela é conhecida como Lolin, mas seu custo benefício atraiu muitos entusiastas.
Especificações:
- Modulo ESP-12E 32Bits
- Clock de 80 MHz
- Memoria Flash de 4MB
- Memoria de 80 KB
- Input de 5-9 Volts
- Tensão de Operação de 3.3 volts
- 1 Pino Analogico
- 13 Pinos digitais, na pratica apenas 11 são usavéis e com PWM
- Conversor USB Serial CH340G
Olhando lado a lado, é possivel notar a diferença entre elas e suas dimensões, já que a V2 é a mais util para usar em PCB e a V1 tem a vantágem de ser elegante.
Legal cara, mas já que são 3 placas, acho que deve ser diferente a forma de programar nelas, não é?
É, mais ou menos, a diferença na pratica é que vocês vão selecionar o tipo de placa pela propria IDE do Arduino quando selecionar.
Usando a IDE do Arduino
Seguindo o tutorial que foi abordado no Post do ESP-01, vocÊ percebeu que tem muitas placas ESP8266 lá, incluindo a NodeMCU. Então para programar para uma placa em específico basta selecionar o modelo do DevKit que você tem, se é a 0.9 ou 1.0.
Mas tem uma pegadinha ai, o Pino LED_BUILTIN que é o pino do LED interno do módulo, pode ser diferente entre a versão V2 e V3, Já que na V2 o pino fica no GPIO02, e na V3 o Pino fica na GPIO16.
Então dependendo da sua versão, você vai ter que mudar qual o pino do led, por questões de usabildiade mesmo.