ESP8266 e ESP32 são soluções populares de desenvolvimento WiFi que podem ser programadas de diversas maneiras usando diferentes linguagens de programação. Linguagens comuns incluem script MicroPython, C, JavaScript e LUA. A escolha de firmware embarcado e ferramentas de software possibilita programar ESP8266 e ESP32 em diferentes idiomas.
A versatilidade e flexibilidade para programar placas ESP com diferentes firmware, linguagens de programação e ferramentas de software tornam essas placas tão populares. A variedade de firmware e linguagens de programação também facilita diferentes níveis de recursos de software, suporte da comunidade, módulos e ferramentas.
Desenvolvedores de software embarcado com diferentes experiências em programação podem escolher seu firmware e linguagem de programação preferidos para desenvolver projetos de IoT com ESP8266. (Saiba mais sobre como programar placas ESP aqui).
Uma maneira comum de programar ESP8266 e ESP32 é usar C incorporado via Arduino IDE ou Visual Studio Code. Uma vantagem de ser compatível com Arduino significa que há muitas bibliotecas prontas para uso e códigos-fonte contribuídos pela comunidade para reutilização em placas ESP. Também é rápido porque é desnecessário escrever o código do zero para fazer a interface da maioria dos componentes, e muitas tarefas de programação são prontamente resolvidas.
Vamos começar a programar placas ESP via Arduino IDE.
ESP8266 versus ESP32
ESP8266 e ESP32 são placas de desenvolvimento da mesma família. ESP32 é o sucessor do ESP8266 e superior ao ESP8266 em vários aspectos. No entanto, ambas as placas possuem um controlador de 32 bits e funcionam com uma tensão operacional de 3,3V (em comparação com 5V do Arduino). Ambos também não possuem PWM de hardware.
Aqui estão as diferenças:
ESP8266 tem…
- Um Xtensa L106 de 32 bits de núcleo único rodando em clock de 80 MHz
- Somente wifi
- Um canal de 20 MHz para WiFi (HT20)
- Duas portas SPI, 1 porta I2C, 2I2S e 2 portas UART
- 17GPIO
- Um único ADC de 10 bits
- Oito canais PWM de software
ESP32 tem…
- Um Xtensa LX6 dual-core de 32 bits rodando em 160 ~ 240 MHz
- WiFi e Bluetooth de alta velocidade, incluindo 4.2 e Low Energy
- Um canal de 40 MHz para WiFi (HT40)
- Pinos sensíveis ao toque e um sensor Hall integrado que o desperta de um sono profundo
- 512 bytes de memória flash e 512 KB de SRAM
- Interface CAN 2.0, interface Ethernet MAC e sensor de toque e efeito Hall
- 34GPIO
- GPIOs são multiplexados com SPI, I2C e UART (se uma função não estiver definida no código, os pinos são padronizados como GPIO).
- 18 pinos habilitados para analógico com um canal ADC de 12 bits em cada pino
- 16 canais PWM de software
Apesar das diferenças entre as duas placas, o Arduino IDE funciona quase de forma idêntica a qualquer uma delas. Como o ESP8266 é mais antigo que o ESP32, ele oferece maior suporte a bibliotecas, embora não seja difícil fazer com que a maioria das bibliotecas funcione com o ESP32. É mais poderoso e versátil.
Versões ESP8266
ESP8266 e ESP32 podem ser módulos independentes ou placas breakout com chips e interfaces adicionais. Normalmente, eles são usados como breakout boards para projetar aplicativos incorporados e raramente como chips simples.
Muitas placas breakout ESP8266 se enquadram em duas categorias: placas de desenvolvimento com interface USB ou sem interface USB. Vários módulos independentes estão disponíveis na série ESP-NN (ESP01 a ESP14) do fornecedor AI-Thinkers. Outro módulo independente é o ESP-WROOM-02 da Espressif. Outros fornecedores incluem Wireless-tag, Olimex, Smarttime e Qilianer.
Os módulos independentes servem como adaptadores Wi-Fi ou placas de desenvolvimento de microcontroladores habilitados para Wi-Fi. Os módulos variam em tamanho, pinos quebrados, recursos expostos no chip, tipo de antena e memória flash.
Um SoC ESP8266 básico requer uma memória flash externa, circuito de redefinição e programa, circuito de habilitação de chip, uma fonte de alimentação reguladora de tensão de 3,3 e um adaptador USB para serial. Os recursos necessários podem estar integrados em um módulo ou fornecidos externamente.
As placas de desenvolvimento baseadas em ESP8266 são equipadas com todos os circuitos necessários com ou sem interface USB para programação. Algumas placas de desenvolvimento ESP8266 populares estão disponíveis na Adafruit, SparkFun, NodeMCU e AI Thinkers.
As categorias ESP8266…
1. Placas de desenvolvimento com interface USB: possui uma interface USB para programação com todos os circuitos necessários, não necessitando de circuito externo para configuração (no máximo, pode ser necessário soldar os pinos do cabeçalho). Os exemplos incluem SparkFun ESP8266 Thing, Adafruit Feather HUZZA, SparkFun Blynk Board e certas placas AI Thinker ESP-NN.
Quando essas placas são conectadas a um computador desktop por meio de um cabo USB, elas aparecem no gerenciador de dispositivos de um PC com Windows no lsusb de um sistema Linux. Possuem regulador de 3,3V e podem ser programados diretamente via interface USB.
2. Placas de desenvolvimento sem interface USB: requerem um adaptador USB para serial para programação e um circuito externo para habilitar o chip e adicionar botões de reinicialização e programação. Algumas placas possuem um regulador de 3,3 V integrado, mas nem todas.
O kit ESP-12E ou ESP-12E NodeMCU é a placa de breakout ESP8266 mais popular.
Pinagem ESP8266
ESP-01, kit ESP8266-12E NodeMCU e Wemos D1 Mini são placas de breakout ESP8266 comumente usadas.
O ESP-01 possui o seguinte diagrama de pinos…
O kit ESP8266-12E NodeMCU possui este diagrama de pinos…
Wemos D1 Mini tem o seguinte diagrama de pinos…
Placas ESP32
As placas de breakout ESP32 comumente usadas incluem ESP32 DevKit, ESP32 DOIT DEVKIT V1, ESP32 Thing, HUZZAH32, ESP-32S NodeMCU, WEMOS OLED e WEMOS LOLIN32.
Pinagem ESP32
ESP32 DOIT DEVKIT V1 é atualmente a placa ESP32 mais popular. Ele vem em duas versões, uma com 30 pinos e outra com 36 pinos.
A versão de 30 pinos tem este diagrama de pinos…
A versão de 36 pinos tem o seguinte diagrama de pinos…
Instalando o Arduino IDE
Arduino IDE pode ser baixado em aqui. Arduino IDE 2.0.0 é a versão mais recente. A versão herdada do Arduino IDE 1.8.19 também pode ser instalada de acordo com sua preferência. Conclua o processo de instalação de acordo com as instruções.
Instalando o complemento ESP32 no Arduino IDE
ESP-32 é a placa ESP mais recomendada para explorar. ESP-32 possui um processador poderoso e melhor velocidade de clock. Oferece WiFi e Bluetooth e possui mais GPIOs e periféricos que o ESP8266.
Para trabalhar com ESP32 no Arduino IDE, instale seu complemento. Navegue até Arquivo->Preferências.
Adicione o seguinte URL ao campo “URLs adicionais do gerente do conselho”.
ou
Clique OK. Em seguida, navegue até Ferramentas->Quadro->Gerenciador de Quadro.
Procure ESP32 e instale-o no Expressif.
Isso é tudo. O complemento ESP32 será instalado no Arduino IDE em segundos.
Instalando o complemento ESP8266 no Arduino IDE
ESP8266 é recomendado para muitos projetos de IoT e residências inteligentes. Normalmente, o ESP8266 é suficiente se um projeto exigir apenas rede WiFi e não envolver muitas tarefas incorporadas urgentes. Como o ESP8266 custa quase metade do ESP32, a produção de um protótipo no ESP8266 poderia ser muito mais econômica do que no ESP32.
Para instalar o complemento ESP8266 no Arduino IDE, navegue até Arquivo->Preferências. Adicione o seguinte URL ao campo “URLs adicionais do gerente do conselho”.
Você pode adicionar suporte para ESP32 e ESP8266 adicionando uma lista de URLs separados por vírgula como segue…
,
ou
,
Clique OK. Em seguida, navegue até Ferramentas->Quadro->Gerenciador de Quadro. Procure ESP8266 e instale-o através da comunidade ESP8266.
Isso é tudo. O complemento ESP8266 será instalado em alguns segundos no Arduino IDE.
Testando instalação no ESP8266
Para testar a instalação no ESP8266, você pode usar o kit ESP-12E NodeMCU e conectá-lo ao computador através de um cabo Micro-USB. Navegue até Ferramentas-> Placa-> Placas ESP8266. Selecione NodeMCU 1.0 ou NodeMCU 0.9 de acordo com sua placa ESP12.
Em seguida, selecione a porta navegando até Ferramentas->Porta. Copie e cole o seguinte código no editor de código…
pino interno = 2;
configuração vazia {
pinMode(pino, SAÍDA);
}
loop vazio {
digitalWrite(pino, ALTO);
atraso(1000);
digitalWrite(pino, BAIXO);
atraso(1000);
}
Clique no botão “Upload” e espere até que a mensagem “Upload concluído” apareça no canto inferior esquerdo. Se o código for carregado com sucesso, o LED da placa ESP8266 começará a piscar.
Testando instalação no ESP32
Para testar o ESP32 no Arduino IDE, conecte a placa ao seu computador através de um cabo Micro-USB. Navegue até Ferramentas-Board->ESP32 Arduino. Selecione DOIT ESP32 DEVKIT V1 ou sua placa ESP32 específica.
Em seguida, selecione a porta.
Abra um esboço de exemplo navegando em Arquivo->Exemplos->WiFi->WiFiScan. O esboço será aberto em uma nova janela. Pressione o botão de upload e aguarde a compilação e o upload do código.
Abra o Arduino IDE Serial Monitor a uma taxa de transmissão de 115.200 bps. Se o esboço for carregado com sucesso, você verá um resultado de verificação semelhante no Serial Monitor.
Solução de problemas
Ao enviar o esboço para ESP8266 ou ESP32, você pode encontrar uma mensagem de erro como “esptool.FatalError: Falha ao conectar ao ESP8266: Tempo limite esgotado aguardando cabeçalho do pacote” ou “Ocorreu um erro fatal: Falha ao conectar ao ESP32: Tempo limite esgotado… Conectando…”.
Qualquer uma das mensagens significa que o ESP8266/ESP32 não está no modo de flash ou upload adequado. Para resolver isso, mantenha pressionado o botão boot/flash no ESP8266/ESP32 após selecionar a placa e a porta e, em seguida, pressione o botão upload no Arduino IDE para fazer upload do esboço.
Depois de ver a mensagem “Conectando…” no IDE do Arduino, solte o botão boot/flash no ESP8266/ESP32. Depois que o esboço for carregado com sucesso no ESP8266/ESP32, pressione o botão ativar no ESP8266/ESP32. Isso irá reiniciar a placa ESP8266/ESP32 e executar o esboço carregado.
Isso deve ser repetido sempre que um novo esboço for carregado no ESP8266 ou ESP32. A repetição desta medida de solução de problemas pode ser evitada no ESP32 hackeando a placa. O ESP32 pode ser colocado no modo de flash/upload automaticamente.
Para fazer isso, você deve conectar um capacitor eletrolítico de 10 uF entre o pino de habilitação e o terra. Como os pinos de habilitação e GND estão distantes um do outro na placa de interrupção, o capacitor pode ser conectado entre o pino de habilitação do chip ESP32 e o terra, conforme mostrado na imagem abaixo.
Você pode testar a configuração na placa de ensaio antes de soldar o capacitor na placa, conforme mostrado abaixo.
Certifique-se de que o capacitor esteja soldado apenas ao pino de habilitação do chip e ao terra. Não deve ser soldado em nada próximo a esses pinos. Depois de concluído, você não precisará segurar o botão boot/flash na placa ao enviar qualquer esboço para o ESP32. ESP32 irá piscar e fazer upload automaticamente.