sábado - 13 / dezembro / 2025

Iniciando com o ESP32

O ESP32 é um microcontrolador com Wi-Fi & Bluetooth integrados e pode ser programado com a mesma IDE do Arduino.

Para saber o funcionamento do Bluetooth, clique no link a seguir.

Bluetooth: o que é e como funciona?Clique aqui

Sobre o ESP32

Fabricado pela empresa chinesa Espressif, é um chip com Bluetooth e Wi-Fi de 2,4 GHz, portanto, pode ser usado para projetos com a Internet das Coisas (IoT). Possui o microprocessador Xtensa LX6 Dual-Core de 32 bits e uma velocidade de clock de 240 MHz. Existem muitos modelos de placas com ESP32, para este post, foi escolhido o ESP32 Wemos D1 R32.

ESP32 Wemos D1 R32

ESP32
Esta é uma placa compatível com a IDE do Arduino. Possui memória flash de 4 MB. O módulo ESP32 é a placa quadrada prateada.
Pinos do ESP32
Os terminais da placa: ADCs são canais que podem converter sinais analógicos em digitais, enquanto DACs fazem a conversão inversa. Os GIOPs (a sigla correta é GPIO) são pinos de entrada e saída para uso geral. TOUCH são pinos com sensores capacitivos de toque internos. VSPI são pinos de interface SPI, enquanto RX2 e TX2 são receptores e transmissores, respectivamente, para a comunicação serial. Fonte: blog.carmanualusa.

Habilitando o ESP32 na IDE do Arduino

Primeiramente, conecte a placa em uma porta USB no PC. Depois, na janela da IDE do Arduino, vá em Arquivo -> Preferências.

Deve aparecer esta janela.
Então, procure a opção “Additional boards manager URLs” ou “URLs adicionais para gerenciadores de placas”, coloque o link “https://dl.espressif.com/dl/package_esp32_index.json” e clique em OK.
Em seguida, clique no ícone destacado por um círculo vermelho.
Na barra de pesquisa, escreva esp32. Você deve instalar a opção esp32 da Espressif Systems.

Então, clique em Ferramentas -> Placa -> esp32. Para usar a placa ESP32 Wemos D1 R32, escolha a placa WEMOS D1 R32. Não se esqueça de selecionar a porta serial (COM). Finalmente, você pode programá-lo como se fosse um Arduino. Exceto que deve colocar os números dos pinos que aparecem na placa. Por exemplo, para acionar um LED ligado no pino IO14, deve escrever a linha de código “#define PINO_LED 14” ou “const int LED=14;”.

Controlando um servomotor com o ESP32

Aqui é mostrado como controlar um servomotor usando o microcontrolador e um servidor web. Primeiramente, faça as conexões da placa com o servo: fio vermelho com o 5V, fio marrom ou preto com o GND e o fio laranja, amarelo ou branco de sinal com o GPIO13 ou qualquer outro pino com PWM.

esp32 para servomotores
É necessário instalar uma biblioteca que permita controlar servomotores com o esp32. Escreva esp32servo na barra de pesquisa no gerenciador de bibliotecas (Library manager) e instale a biblioteca de Kevin Harrington.

A biblioteca para controlar servomotores com o ESP32 se chama ESP32Servo.h.

Criando um servidor web

Com a finalidade de controlar o servomotor usando a internet, vamos criar um servidor web. Carregue este código para verificar se o microcontrolador consegue detectar redes WiFi próximas.

#include <WiFi.h>

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
}

void loop() {
  Serial.println("Scanning for Wi-Fi networks...");
  int n = WiFi.scanNetworks();
  if (n == 0) {
    Serial.println("No networks found");
  } else {
    for (int i = 0; i < n; ++i) {
      Serial.printf("%d: %s (%d dBm)\n", i + 1, WiFi.SSID(i).c_str(), WiFi.RSSI(i));
    }
  }
  delay(5000);
}
Se o ESP32 estiver funcionando, a tela Serial deve mostrar as redes disponíveis e a potência do sinal.

Em seguida, carregue este código para encontrar o IP da placa e escolha uma rede que o ESP32 possa detectar.

#include <WiFi.h> //Biblioteca necessária.

const char* ssid = "Coloque o nome da sua rede WiFi aqui.";
const char* password = "Coloque a senha da sua rede aqui.";

WiFiServer server(80);  //Define a porta onde o servidor opera, 80 para html.

void setup()
{
  Serial.begin(115200);
  delay(10);
  // Conectando ao Wi-Fi
  Serial.println("Conectando ao WiFi...");
  WiFi.begin(ssid, password);  //Inicia a conexão com a rede WiFi.
  while (WiFi.status() != WL_CONNECTED) //Neste loop, o ESP32 tenta se              //conectar com      //a rede até conseguir.
  {
    delay(1000);
    Serial.println("Tentando conectar...");
  }
  Serial.println("Conectado!");
  Serial.print("Endereço IP: ");
  Serial.println(WiFi.localIP());
  // Iniciando o servidor.
  server.begin();
}

void loop()
{
  WiFiClient client = server.available();
  if (client) //Verifica se há cliente conectado.
  {
    Serial.println("Cliente conectado.");
    String request = "";
    while (client.connected())
    {
      if (client.available())//Interagir com o cliente se estiver disponível.
      {
        char c = client.read();//Lendo os dados enviados pelo cliente.
        request += c;
        if (c == '\n')
        {
          // Requisição completa recebida
          Serial.print("Requisição: ");
          Serial.println(request);
          // Resposta HTTP
          client.println("HTTP/1.1 200 OK");
          client.println("Content-type:text/html");
          client.println();
          // Corpo da página
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<h1>Olá, Mundo!</h1>");
          client.println("</html>");
          break;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("Cliente desconectado.");
  }
}
Após carregar o código, deve aparecer o endereço IP.

Ao digitar http://’seu número de IP’ no navegador, deve aparecer esta página. Não digite https://’número do IP’, senão o servidor não abrirá.

Modificando o código para controlar o servomotor

Este é o código modificado para controlar a posição do servomotor com 5 botões.

#include <ESP32Servo.h>
#include <WiFi.h>

static const int servoPin=13;
const char* ssid = "Coloque o nome da rede aqui";
const char* password = "Coloque a senha da rede aqui.";

int p;

WiFiServer server(80); 
Servo servo;

void setup()
{
  servo.attach(servoPin);
  Serial.begin(115200);
  delay(10);
  // Conectando ao Wi-Fi
  Serial.println("Conectando ao WiFi...");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(1000);
    Serial.println("Tentando conectar...");
  }
  Serial.println("Conectado!");
  Serial.print("Endereço IP: ");
  Serial.println(WiFi.localIP());
  // Iniciando o servidor
  server.begin();
  p=90;
  servo.write(p);
}

void loop()
{
  WiFiClient client = server.available();
  if (client)//Verifica se há cliente conectado.
  {
    Serial.println("Cliente conectado.");
    String request = "";
    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();
        request += c;
        if (c == '\n')
        {
       //Processando a requisição.Como devem funcionar os botões.
          if (request.indexOf("/SERVO=0") != -1){
            p=0;
            servo.write(p);
          }
          if (request.indexOf("/SERVO=180") != -1){
            p=180;
            servo.write(p);            
          }
          if (request.indexOf("/SERVO=90") != -1){
            p=90;
            servo.write(p);            
          }
          if (request.indexOf("/SERVO=PLUS") != -1){
            p=p+10;
            servo.write(p);            
          }
          if (request.indexOf("/SERVO=MINUS") != -1){
            p=p-10;
            servo.write(p);            
          }
          // Resposta HTTP
          client.println("HTTP/1.1 200 OK");
          client.println("Content-type:text/html");
          client.println();
          // Corpo da página
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<h1>Buttons to control servo</h1>");
//Estes são botões que aparecerão no servidor web.
          client.println("<p><a href=\"/SERVO=0\"><button>0</button></a></p>");
          client.println("<p><a href=\"/SERVO=180\"><button>180</button></a></p>");
          client.println("<p><a href=\"/SERVO=90\"><button>90</button></a></p>");
          client.println("<p><a href=\"/SERVO=PLUS\"><button>+</button></a></p>");
          client.println("<p><a href=\"/SERVO=MINUS\"><button>-</button></a></p>");
          client.println("</html>");
          break;
        }
      }
    }
    delay(1);
    client.stop();
    Serial.println("Cliente desconectado.");
  }
}

O vídeo abaixo mostra o controle do servomotor por um servidor web.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisement -

Últimos posts