Introdução
Introdução ao ESP32
O que é o ESP32?
O ESP32 é um microcontrolador de baixo custo e baixo consumo de energia que integra Wi-Fi e Bluetooth em um único chip. Desenvolvido pela Espressif Systems, o ESP32 se tornou um dos componentes mais populares para projetos de Internet das Coisas (IoT) devido à sua versatilidade e poder computacional.

Características Principais
- Processador: Dual-core Tensilica Xtensa LX6 de 32 bits (até 240MHz)
- Memória: 520 KB de SRAM
- Conectividade: Wi-Fi 802.11 b/g/n (2.4 GHz) e Bluetooth 4.2 (BLE)
- GPIO: Até 36 pinos
- Periféricos: ADC, DAC, I²C, SPI, UART, CAN, PWM, etc.
- Segurança: Criptografia por hardware
Diferenças entre ESP32 e Arduino
| Característica | ESP32 | Arduino UNO |
|---|---|---|
| Processador | Dual-core 32-bit até 240MHz | Single-core 8-bit 16MHz |
| Memória RAM | 520 KB | 2 KB |
| WiFi | Integrado | Necessita shield |
| Bluetooth | Integrado | Necessita shield |
| GPIO | Até 36 pinos | 14 pinos digitais, 6 analógicos |
| Preço | \(3-\)10 | \(20-\)25 |
Modelos Comuns de ESP32
- ESP32-DevKitC: Placa de desenvolvimento básica
- ESP32-WROOM-32: Módulo com antena PCB integrada
- ESP32-WROVER: Módulo com antena externa e memória PSRAM adicional
- TTGO T-Display: ESP32 com display LCD colorido
- M5Stack: ESP32 em formato modular com display e sensores
Por que usar ESP32 para IoT?
- Conectividade Integrada: WiFi e Bluetooth prontos para uso
- Baixo Consumo: Modos de deep sleep para aplicações com bateria
- Alto Desempenho: Processador dual-core permite aplicações mais complexas
- Baixo Custo: Excelente custo-benefício para projetos IoT
- Ecossistema Rico: Ampla comunidade e muitas bibliotecas disponíveis
Adicionando Suporte ao ESP32 na IDE do Arduino
Método 1: Usando o Gerenciador de Placas da IDE do Arduino V2.x
- Abra a IDE do Arduino
- Vá para Ferramentas > Placa > Gerenciador de Placas
- Pesquise por "esp32"
- Instale o pacote "ESP32 by Espressif Systems"
Testando a Instalação
- Conecte sua placa ESP32 ao computador via USB
- Na IDE do Arduino, selecione:
- Ferramentas > Placa > ESP32 Arduino > [Seu modelo de ESP32]
-
Ferramentas > Porta > [Porta COM onde o ESP32 está conectado]
-
Abra um exemplo simples:
-
Arquivo > Exemplos > 01.Basics > Blink
-
Modifique o código para usar o LED interno do ESP32 (pino 2 na maioria das placas):
// LED_BUILTIN pode não funcionar para ESP32, use o pino 2 diretamente
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}
- Clique no botão "Carregar" (a seta para a direita)
- Aguarde a compilação e o upload
- Verifique se o LED na placa está piscando
Falha na comunicação durante upload
Se você receber um erro de comunicação, tente o seguinte:
- Mantenha pressionado o botão "BOOT" durante o início do upload
- Em algumas placas, é necessário pressionar o botão "RESET" após iniciar o upload
Conectando o ESP32 a uma Rede WiFi
Conectando o ESP32 a redes WiFi, implementar um servidor web simples, realizar requisições HTTP e trabalhar com serviços online.
Código Básico de Conexão WiFi
#include <WiFi.h>
const char* ssid = "SuaRedeWiFi";
const char* password = "SuaSenhaWiFi";
void setup() {
Serial.begin(115200);
delay(10);
// Mensagem inicial
Serial.println();
Serial.println("Conectando a:");
Serial.println(ssid);
// Inicia a conexão WiFi
WiFi.begin(ssid, password);
// Aguarda a conexão
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Conexão estabelecida
Serial.println("");
Serial.println("WiFi conectado");
Serial.println("Endereço IP: ");
Serial.println(WiFi.localIP());
}
void loop() {
// Verifica periodicamente o status da conexão
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Conexão WiFi perdida. Reconectando...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Reconectado ao WiFi");
}
delay(30000); // Verifica a cada 30 segundos
}
#include <WiFi.h>
const char* ssid = "SuaRedeWiFi";
const char* password = "SuaSenhaWiFi";
void setup() {
Serial.begin(115200);
delay(10);
// Mensagem inicial
Serial.println();
Serial.println("Conectando a:");
Serial.println(ssid);
// Inicia a conexão WiFi
WiFi.begin(ssid, password);
// Aguarda a conexão
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Conexão estabelecida
Serial.println("");
Serial.println("WiFi conectado");
Serial.println("Endereço IP: ");
Serial.println(WiFi.localIP());
}
void loop() {
// Verifica periodicamente o status da conexão
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Conexão WiFi perdida. Reconectando...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Reconectado ao WiFi");
}
delay(30000); // Verifica a cada 30 segundos
}