Características do NodeMCU do ESP8266 e como usá-lo com Arduino IDE

Tempo de leitura: 9 minutes

A Internet das Coisas (IoT) tem sido um campo de tendência no mundo da tecnologia. Isso mudou a maneira como trabalhamos. Objetos físicos e o mundo digital estão conectados agora mais do que nunca. Tendo isso em mente, a Espressif Systems (uma empresa de semicondutores sediada em Xangai) lançou um adorável microcontrolador habilitado para WiFi – ESP8266, a um preço inacreditável! Por menos de US $3, ele pode monitorar e controlar coisas de qualquer lugar do mundo – perfeito para praticamente qualquer projeto de IoT.

 

Módulo ESP-12E

A placa de desenvolvimento equipa o módulo ESP-12E contendo chip ESP8266 com microprocessador Tensilica Xtensa® LX106 RISC de 32 bits que opera em frequência de clock ajustável de 80 a 160 MHz e suporta RTOS.

Chip ESP-12E

  • Tensilica Xtensa® 32-bit LX106
  • 80 a 160 MHz Clock Freq.
  • RAM interna de 128kB
  • Flash externo de 4 MB
  • Transceptor Wi-Fi 802.11b/g/ n

Também há 128 KB de RAM e 4 MB de memória Flash (para programa e armazenamento de dados) apenas o suficiente para lidar com as grandes strings que compõem as páginas da web, dados JSON / XML e tudo o que jogamos em dispositivos IoT hoje em dia.

O ESP8266 integra transceptor Wi-Fi 802.11b/g/n HT40, para que ele possa não apenas se conectar a uma rede WiFi e interagir com a Internet, mas também pode configurar uma rede própria, permitindo que outros dispositivos se conectem diretamente a isto. Isso torna o ESP8266 NodeMCU ainda mais versátil.

 

Requisito de energia

Como a faixa de tensão operacional do ESP8266 é de 3V a 3,6V, a placa vem com um regulador de tensão LDO para manter a tensão estável em 3,3 V. Ele pode fornecer com segurança até 600mA, o que deve ser mais do que suficiente quando o ESP8266 extrai até 80mA durante as transmissões de RF. A saída do regulador também é dividida em um dos lados da placa e rotulada como 3V3. Este pino pode ser usado para fornecer energia a componentes externos.

Requisito de energia

  • Tensão operacional: 2,5 V a 3,6 V
  • Regulador integrado de 3,3 V 600 mA
  • Corrente operacional de 80mA
  • 20 µA durante o modo de suspensão

 

 

 

 

 

A energia para o ESP8266 NodeMCU é fornecida por meio do conector USB MicroB integrado. Alternativamente, se você tiver uma fonte de tensão regulada de 5 V, o pino VIN pode ser usado para alimentar diretamente o ESP8266 e seus periféricos.

Atenção:

O ESP8266 requer uma fonte de alimentação de 3,3 V e níveis lógicos de 3,3 V para comunicação. Os pinos GPIO não são tolerantes a 5 V! Se você quiser fazer a interface da placa com componentes de 5V (ou superior), você precisará fazer algumas mudanças de nível.

 

 

Periféricos e I/O

O ESP8266 NodeMCU tem um total de 17 pinos GPIO quebrados nos cabeçalhos dos pinos em ambos os lados da placa de desenvolvimento. Esses pinos podem ser atribuídos a todos os tipos de funções periféricas, incluindo:

  • Canal ADC – Um canal ADC de 10 bits.
  • Interface UART – a interface UART é usada para carregar o código serialmente.
  • Saídas PWM – Pinos PWM para escurecimento de LEDs ou controle de motores.
  • Interface SPI, I2C e I2S – interface SPI e I2C para conectar todos os tipos de sensores e periféricos.
  • Interface I2S – interface I2S se você deseja adicionar som ao seu projeto.

I/Os multiplexados

  • 1 canais ADC
  • 2 interfaces UART
  • 4 saídas PWM
  • Interface SPI, I2C e I2S

 

 

 

 

Graças ao recurso de multiplexação de pinos do ESP8266 (vários periféricos multiplexados em um único pino GPIO). Significa que um único pino GPIO pode atuar como PWM/UART/ SPI.

 

Interruptores integrados e indicador LED

O ESP8266 NodeMCU possui dois botões. Um marcado como RST localizado no canto superior esquerdo é o botão Reiniciar, usado, é claro, para reiniciar o chip ESP8266. O outro botão FLASH no canto esquerdo inferior é o botão de download usado durante a atualização do firmware.

Chaves e indicadores

  • RST – Reinicialize o chip ESP8266
  • FLASH – Baixe novos programas
  • LED azul – programável pelo usuário

 

 

 

 

A placa também possui um indicador LED que é programável pelo usuário e é conectado ao pino D0 da placa.

 

Comunicação em série

A placa inclui CP2102 USB-to-UART Bridge Controller da Silicon Labs, que converte o sinal USB em serial e permite que seu computador programe e se comunique com o chip ESP8266.

Comunicação em série

  • Conversor de USB para UART CP2102
  • Velocidade de comunicação de 4,5 Mbps
  • Suporte para controle de fluxo

 

 

 

Se você tiver uma versão anterior do driver CP2102 instalada em seu PC, recomendamos a atualização agora.

Drive CP2102

 

ESP8266 NodeMCU Pinout

O ESP8266 NodeMCU tem um total de 30 pinos que fazem interface com o mundo exterior. As conexões são as seguintes:

Por uma questão de simplicidade, criaremos grupos de pinos com funcionalidades semelhantes.

Pinos de alimentação Existem quatro pinos de alimentação viz. um pino VIN e três pinos de 3,3V. O pino VIN pode ser usado para alimentar diretamente o ESP8266 e seus periféricos, se você tiver uma fonte de tensão regulada de 5 V. Os pinos de 3,3 V são a saída de um regulador de voltagem integrado. Esses pinos podem ser usados para fornecer energia a componentes externos.

GND é um pino terra da placa de desenvolvimento ESP8266 NodeMCU.

Os pinos I2C são usados para conectar todos os tipos de sensores e periféricos I2C em seu projeto. Ambos I2C Master e I2C Slave são suportados. A funcionalidade da interface I2C pode ser realizada programaticamente e a frequência do clock é de 100 kHz no máximo. Deve-se observar que a frequência do clock I2C deve ser maior do que a frequência do clock mais lenta do dispositivo escravo.

Pinos GPIO ESP8266 NodeMCU tem 17 pinos GPIO que podem ser atribuídos a várias funções, como I2C, I2S, UART, PWM, controle remoto IR, luz LED e botão de forma programática. Cada GPIO habilitado digitalmente pode ser configurado para pull-up ou pull-down interno ou definido para alta impedância. Quando configurado como uma entrada, também pode ser definido para disparo de borda ou disparo de nível para gerar interrupções de CPU.

Canal ADC O NodeMCU é integrado com um SAR ADC de precisão de 10 bits. As duas funções podem ser implementadas usando ADC viz. Testando a tensão de alimentação do pino VDD3P3 e testando a tensão de entrada do pino TOUT. No entanto, eles não podem ser implementados ao mesmo tempo.

Pinos UART ESP8266 NodeMCU tem 2 interfaces UART, ou seja, UART0 e UART1, que fornecem comunicação assíncrona (RS232 e RS485), e pode se comunicar em até 4,5 Mbps. UART0 (pinos TXD0, RXD0, RST0 e CTS0) pode ser usado para comunicação. Suporta controle de fluido. No entanto, o UART1 (pino TXD1) apresenta apenas sinais de transmissão de dados, portanto, é geralmente usado para imprimir o registro.

SPI Pins ESP8266 apresenta dois SPIs (SPI e HSPI) nos modos escravo e mestre. Essas SPIs também oferecem suporte aos seguintes recursos de SPI de uso geral:

  • 4 modos de temporização da transferência do formato SPI
  • Até 80 MHz e os relógios divididos de 80 MHz
  • Até 64 bytes FIFO

Os pinos SDIO ESP8266 apresentam Interface de entrada / saída digital segura (SDIO) que é usada para fazer interface direta com cartões SD. SDIO de 25 MHz de 4 bits v1.1 e SDIO de 4 bits de 50 MHz v2.0 são suportados.

Pinos PWM A placa possui 4 canais de modulação por largura de pulso (PWM). A saída PWM pode ser implementada programaticamente e usada para acionar motores digitais e LEDs. A faixa de frequência PWM é ajustável de 1000 μs a 10000 μs, ou seja, entre 100 Hz e 1 kHz.

Pinos de controle são usados para controlar ESP8266. Esses pinos incluem o pino Chip Enable (EN), o pino Reset (RST) e o pino WAKE.

  • Pino EN – O chip ESP8266 é ativado quando o pino EN é puxado para ALTO. Quando puxado para BAIXO, o chip funciona com a potência mínima.
  • Pino RST – o pino RST é usado para redefinir o chip ESP8266.
  • Pino WAKE – O pino Wake é usado para tirar o chip do estado de repouso profundo.

 

 

Plataformas de desenvolvimento ESP8266

Agora, vamos passar para as coisas interessantes!

Há uma variedade de plataformas de desenvolvimento que podem ser equipadas para programar o ESP8266. Você pode ir com Espruino – JavaScript SDK e firmware emulando Node.js, ou usar Mongoose OS – um sistema operacional para dispositivos IoT (plataforma recomendada por Espressif Systems e Google Cloud IoT) ou usar um kit de desenvolvimento de software (SDK) fornecido por Espressif ou uma das plataformas listadas em WiKiPedia.

Felizmente, a incrível comunidade ESP8266 levou a seleção do IDE um passo adiante, criando um complemento Arduino. Se você está apenas começando a programar o ESP8266, este é o ambiente que recomendamos para começar, e aquele que documentaremos neste tutorial.

Este add-on ESP8266 para Arduino é baseado no incrível trabalho de Ivan Grokhotkov e o resto da comunidade ESP8266. Confira o repositório ESP8266 Arduino GitHub para mais informações.

 

Instalação do ESP8266 Core no sistema operacional Windows

Vamos prosseguir com a instalação do núcleo ESP8266 Arduino.

A primeira coisa é ter o IDE do Arduino mais recente (Arduino 1.6.4 ou superior) instalado no seu PC. Se não tiver, recomendamos fazer upgrade agora.

Ultima Versão do Arduino

Para começar, precisamos atualizar o administrador do conselho com um URL personalizado. Abra o IDE do Arduino e vá para Arquivo> Preferências. Em seguida, copie o URL abaixo na caixa de texto URLs adicionais do gerente da diretoria situada na parte inferior da janela:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

 

Clique em OK. Em seguida, navegue até o Gerenciador de placas em Ferramentas> Placas> Gerenciador de placas. Deve haver algumas novas entradas além das placas Arduino padrão. Filtre sua pesquisa digitando esp8266. Clique nessa entrada e selecione Instalar.

As definições e ferramentas da placa para o ESP8266 incluem um novo conjunto de gcc, g ++ e outros binários compilados razoavelmente grandes, portanto, pode levar alguns minutos para baixar e instalar (o arquivo arquivado tem ~ 110 MB). Assim que a instalação for concluída, um pequeno texto INSTALADO aparecerá ao lado da entrada. Agora você pode fechar o Board Manager.

 

Exemplo de Arduino: Blink

Para garantir que o núcleo do Arduino ESP8266 e o NodeMCU estejam configurados corretamente, faremos o upload do esboço mais simples de todos – The Blink!

Usaremos o LED integrado para este teste. Conforme mencionado anteriormente neste tutorial, o pino D0 da placa é conectado ao LED azul on-board e é programável pelo usuário. Perfeito!

Antes de fazer o upload do sketch e brincar com LED, precisamos ter certeza de que a placa está selecionada corretamente no IDE do Arduino. Abra o IDE Arduino e selecione a opção NodeMCU 0.9 (Módulo ESP-12) em seu IDE Arduino> Ferramentas> menu Placa.

Agora, conecte seu ESP8266 NodeMCU em seu computador via cabo micro-B USB. Assim que a placa estiver conectada, deve ser atribuída uma porta COM exclusiva. Em máquinas Windows, será algo como COM # e em computadores Mac / Linux virá na forma de /dev/tty.usbserial-XXXXXX. Selecione essa porta serial no menu Arduino IDE> Ferramentas> Porta. Selecione também a velocidade de upload: 115200

Atenção:

Mais atenção deve ser dada à seleção da placa, escolhendo a porta COM e selecionando a velocidade de upload. Você pode obter o erro espcomm_upload_mem ao enviar novos sketchs, se não conseguir fazê-lo.

 

Quando terminar, tente o sketch de exemplo abaixo.

void setup()
{
    pinMode(D0, OUTPUT);
}
void loop()
{
    digitalWrite(D0, HIGH);
    delay(500);
    digitalWrite(D0, LOW);
    delay(500);
}

Assim que o código for carregado, o LED começará a piscar. Pode ser necessário tocar no botão RST para fazer com que seu ESP8266 comece a executar o sketch.

 

Conclusão

Neste artigo, mostrei como usar um Módulo ESP-12E. Espero que você tenha achado útil e informativo. Se sim, compartilhe com um amigo que também gosta de eletrônica e de fazer coisas!

Eu adoraria saber quais projetos você planeja construir (ou já construiu) com desses Módulos ESP-12E. Se você tiver alguma dúvida, sugestão ou se achar que falta algo neste tutorial, por favor, deixe um comentário abaixo.

 

(Este artigo foi baseado no Artigo em inglês, com algumas alterações) (Link)