Tutorial ESP32: Servindo Páginas HTML e Controlando LED

O ESP32 é um microcontrolador poderoso que oferece conectividade Wi-FiControle de LEDs e Relés através do Web Server do ESP32Controle de LEDs e Relés através do Web Server do ESP32Aprenda a controlar LEDs e relés usando um Web Server no ESP32. Este tutorial completo ensina montagem, configuração e programação para automação IoT. e Bluetooth integradas. Uma das aplicações mais interessantes é a capacidade de hospedar um servidor web, permitindo que o dispositivo sirva páginas HTML e interaja com usuários através de uma interface web. Neste artigo, vamos explorar como servir páginas HTML simples utilizando o ESP32.

Por que Servir Páginas HTML com o ESP32?🔗

Servir páginas HTMLImplementando Formulários Web para Controle no ESP32Implementando Formulários Web para Controle no ESP32Descubra como utilizar formulários web no ESP32 para controlar dispositivos e automatizar seu ambiente de forma simples e eficaz. diretamente do ESP32 abre um mundo de possibilidades para projetos de automação e IoT. Com isso, é possível:

Pré-requisitos🔗

Antes de começar, certifique-se de ter:

Configurando o Ambiente🔗

Para servir páginas HTMLImplementando Formulários Web para Controle no ESP32Implementando Formulários Web para Controle no ESP32Descubra como utilizar formulários web no ESP32 para controlar dispositivos e automatizar seu ambiente de forma simples e eficaz., precisamos:

1. Conectar o ESP32 à rede Wi-FiConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosDescubra como conectar seu ESP32 à rede Wi-Fi com segurança e eficiência. Siga o guia passo a passo e otimize seus projetos de IoT com facilidade.: O ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! atuará como servidor, então deve estar conectado à mesma rede dos dispositivos que acessarão as páginas.

2. Configurar o servidor webIntrodução ao Desenvolvimento de um Web Server com ESP32Introdução ao Desenvolvimento de um Web Server com ESP32Desenvolva seu web server com ESP32 e gerencie dispositivos IoT com controle remoto. Siga o tutorial passo a passo e garanta segurança e eficiência.: Utilizar bibliotecasHospedando Múltiplas Páginas Web no ESP32Hospedando Múltiplas Páginas Web no ESP32Descubra como hospedar múltiplas páginas web no ESP32 com um guia passo a passo. Aprenda a configurar rotas e interagir via HTTP. específicas para criar o servidor e definir rotas.

3. Criar o conteúdo HTMLImplementando Formulários Web para Controle no ESP32Implementando Formulários Web para Controle no ESP32Descubra como utilizar formulários web no ESP32 para controlar dispositivos e automatizar seu ambiente de forma simples e eficaz.: Escrever a página que será servida.

Conectando o ESP32 à Rede Wi-Fi🔗

Primeiramente, vamos conectar o ESP32 à rede Wi-FiConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosConectando o ESP32 à Rede Wi-Fi: Seus Primeiros PassosDescubra como conectar seu ESP32 à rede Wi-Fi com segurança e eficiência. Siga o guia passo a passo e otimize seus projetos de IoT com facilidade.. Para isso, utilizaremos a biblioteca WiFi.hConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoAprenda passo a passo a conectar seu ESP32 à rede Wi-Fi com segurança e estabilidade. Descubra dicas práticas e estratégias de otimização..

#include <WiFi.h>
const char* ssid = "NOME_DA_REDE";
const char* password = "SENHA_DA_REDE";
void setup()
{
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.print("Conectando-se à rede Wi-Fi");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Conectado! Endereço IP: ");
  Serial.println(WiFi.localIP());
}
void loop()
{
  // Código principal
}

Explicação:

Configurando o Servidor Web🔗

Com a conexão estabelecida, é hora de configurar o servidor webIntrodução ao Desenvolvimento de um Web Server com ESP32Introdução ao Desenvolvimento de um Web Server com ESP32Desenvolva seu web server com ESP32 e gerencie dispositivos IoT com controle remoto. Siga o tutorial passo a passo e garanta segurança e eficiência.. Usaremos a biblioteca WebServer.hImplementando Conectividade Wi-Fi no Sistema de Alarme com ESP32Implementando Conectividade Wi-Fi no Sistema de Alarme com ESP32Descubra como implementar Wi-Fi no seu sistema de alarme usando ESP32, com exemplos práticos e dicas para conexões seguras e eficientes..

#include <WebServer.h>
WebServer server(80); // Cria um servidor na porta 80
void setup()
{
  // Código de conexão Wi-Fi (como no exemplo anterior)
  // Inicia o servidor
  server.begin();
  Serial.println("Servidor web iniciado");
}
void loop()
{
  server.handleClient(); // Lida com clientes conectados
}

Servindo uma Página HTML Simples🔗

Para servir uma página, precisamos definir uma rota e o conteúdo que será enviado ao cliente.

void handleRoot()
{
  String html = "<!DOCTYPE html><html><head><title>Página ESP32</title></head><body><h1>Olá, mundo!</h1><p>Esta é uma página servida pelo ESP32.</p></body></html>";
  server.send(200, "text/html", html);
}
void setup()
{
  // Código anterior
  // Define a rota raiz
  server.on("/", handleRoot);
  // Inicia o servidor
  server.begin();
  Serial.println("Servidor web iniciado");
}
void loop()
{
  server.handleClient();
}

Explicação:

Testando o Servidor Web🔗

Após carregar o códigoDesafios Práticos: Experimentando com Múltiplos LEDsDesafios Práticos: Experimentando com Múltiplos LEDsAprenda a controlar múltiplos LEDs com ESP32 em projetos IoT. Descubra desafios práticos, montagem de circuitos, programação e efeitos visuais incríveis! no ESP32:

1. Abra o monitor serialConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoAprenda passo a passo a conectar seu ESP32 à rede Wi-Fi com segurança e estabilidade. Descubra dicas práticas e estratégias de otimização.: Para obter o endereço IP do ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia!.

2. No navegador, digite o endereço IP exibido no monitor serialConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoConfigurando a Conexão Wi-Fi no ESP32: Guia Passo a PassoAprenda passo a passo a conectar seu ESP32 à rede Wi-Fi com segurança e estabilidade. Descubra dicas práticas e estratégias de otimização..

Você deverá ver a página com a mensagem "Olá, mundo!".

Melhorando o Código HTML🔗

Para tornar o códigoDesafios Práticos: Experimentando com Múltiplos LEDsDesafios Práticos: Experimentando com Múltiplos LEDsAprenda a controlar múltiplos LEDs com ESP32 em projetos IoT. Descubra desafios práticos, montagem de circuitos, programação e efeitos visuais incríveis! mais legível e gerenciável, podemos armazenar o conteúdo HTML como uma constante do tipo char.

const char index_html[] = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
  <title>Página ESP32</title>
</head>
<body>
  <h1>Olá, mundo!</h1>
  <p>Esta é uma página servida pelo ESP32.</p>
</body>
</html>
)rawliteral";
void handleRoot()
{
  server.send(200, "text/html", index_html);
}

Explicação:

  • R"rawliteral(...)": Permite inserir strings multilinhas sem a necessidade de caracteres de escape.

Adicionando Estilo à Página🔗

Podemos incluir CSSImplementando Formulários Web para Controle no ESP32Implementando Formulários Web para Controle no ESP32Descubra como utilizar formulários web no ESP32 para controlar dispositivos e automatizar seu ambiente de forma simples e eficaz. para melhorar a aparência.

const char index_html[] = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
  <title>Página ESP32</title>
  <style>
    body { font-family: Arial, sans-serif; text-align: center; }
    h1 { color: #0275d8; }
    p { font-size: 1.2em; }
  </style>
</head>
<body>
  <h1>Bem-vindo ao ESP32</h1>
  <p>Esta é uma página servida pelo ESP32.</p>
</body>
</html>
)rawliteral";

Criando Rotas Adicionais🔗

Podemos adicionar novas rotasHospedando Múltiplas Páginas Web no ESP32Hospedando Múltiplas Páginas Web no ESP32Descubra como hospedar múltiplas páginas web no ESP32 com um guia passo a passo. Aprenda a configurar rotas e interagir via HTTP. para servir diferentes páginas ou executar ações específicas.

void handleNotFound()
{
  server.send(404, "text/plain", "Página não encontrada");
}
void setup()
{
  // Código anterior
  // Rota raiz
  server.on("/", handleRoot);
  // Rota para /sobre
  server.on("/sobre", []()
  {
    server.send(200, "text/plain", "Esta é a página Sobre.");
  });
  // Tratamento para páginas não encontradas
  server.onNotFound(handleNotFound);
  // Inicia o servidor
  server.begin();
}

Explicação:

  • server.on("/sobre", ...);: Define uma nova rota /sobre.
  • server.onNotFound(handleNotFound);: Define o que acontece quando uma rota não existente é acessada.

Interagindo com o ESP32 via Web🔗

Além de servir páginas estáticas, podemos interagir com o hardware📜 Quadro Digital com Tela E-Ink de 32 Polegadas📜 Quadro Digital com Tela E-Ink de 32 PolegadasDescubra como combinar eficiência energética, tecnologia E-Ink e ESP32 para criar quadros digitais, dashboards interativos e arte generativa com soluções IoT. do ESP32.

Controlando um LED

Vamos adicionar um LED ao pino GPIO 2 e controlá-lo através da interface webInteração com GPIOs via Interface Web no ESP32Interação com GPIOs via Interface Web no ESP32Aprenda a configurar e controlar os GPIOs do ESP32 por meio de uma interface web dinâmica realizando automação, monitoramento e interação remota com facilidade..

Circuito:

CódigoDesafios Práticos: Experimentando com Múltiplos LEDsDesafios Práticos: Experimentando com Múltiplos LEDsAprenda a controlar múltiplos LEDs com ESP32 em projetos IoT. Descubra desafios práticos, montagem de circuitos, programação e efeitos visuais incríveis!:

#define LED_PIN 2
void handleLEDOn()
{
  digitalWrite(LED_PIN, HIGH);
  server.send(200, "text/plain", "LED aceso");
}
void handleLEDOff()
{
  digitalWrite(LED_PIN, LOW);
  server.send(200, "text/plain", "LED apagado");
}
void setup()
{
  pinMode(LED_PIN, OUTPUT);
  // Código de configuração do Wi-Fi e servidor
  // Rota para acender o LED
  server.on("/led/on", handleLEDOn);
  // Rota para apagar o LED
  server.on("/led/off", handleLEDOff);
  // Inicia o servidor
  server.begin();
}

Testando:

Integrando Botões na Página

Podemos tornar o controle mais intuitivo adicionando botões na página HTMLImplementando Formulários Web para Controle no ESP32Implementando Formulários Web para Controle no ESP32Descubra como utilizar formulários web no ESP32 para controlar dispositivos e automatizar seu ambiente de forma simples e eficaz..

Atualize o conteúdo HTMLImplementando Formulários Web para Controle no ESP32Implementando Formulários Web para Controle no ESP32Descubra como utilizar formulários web no ESP32 para controlar dispositivos e automatizar seu ambiente de forma simples e eficaz.:

const char index_html[] = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
  <title>Controle de LED</title>
  <style>
    body { font-family: Arial, sans-serif; text-align: center; }
    h1 { color: #0275d8; }
    button {
      padding: 15px 25px;
      font-size: 24px;
      margin: 20px;
      cursor: pointer;
    }
  </style>
</head>
<body>
  <h1>Controle de LED com ESP32</h1>
  <button onclick="fetch('/led/on')">Acender LED</button>
  <button onclick="fetch('/led/off')">Apagar LED</button>
</body>
</html>
)rawliteral";

Explicação:

Lendo Dados do ESP32🔗

Além de enviar comandos, podemos ler informações do ESP32, como o estado do LED ou valores de sensoresProgramando o ESP32 para Integração de SensoresProgramando o ESP32 para Integração de SensoresAprenda a programar o ESP32 e integrar sensores com técnicas de leitura e controle para projetos de IoT, do hardware ao código..

Exibindo o Estado do LED

Vamos modificar a função que trata a rota raiz para exibir o estado atual do LEDDesafios Práticos: Experimentando com Múltiplos LEDsDesafios Práticos: Experimentando com Múltiplos LEDsAprenda a controlar múltiplos LEDs com ESP32 em projetos IoT. Descubra desafios práticos, montagem de circuitos, programação e efeitos visuais incríveis!.

void handleRoot()
{
  String ledState = digitalRead(LED_PIN) ? "Aceso" : "Apagado";
  String html = "<!DOCTYPE html><html><head><title>Estado do LED</title></head><body><h1>Estado do LED: " + ledState + "</h1></body></html>";
  server.send(200, "text/html", html);
}

Explicação:

Melhorando a Interatividade com AJAX🔗

Para atualizar informações na página sem recarregá-la completamente, podemos utilizar AJAXAtualização Dinâmica de Páginas com AJAX no ESP32Atualização Dinâmica de Páginas com AJAX no ESP32Atualize páginas ESP32 dinamicamente com AJAX. Este tutorial prático ensina a integrar sensores e melhorar a interatividade em projetos IoT..

Atualize o conteúdo HTMLImplementando Formulários Web para Controle no ESP32Implementando Formulários Web para Controle no ESP32Descubra como utilizar formulários web no ESP32 para controlar dispositivos e automatizar seu ambiente de forma simples e eficaz.:

<button onclick="acenderLED()">Acender LED</button>
<button onclick="apagarLED()">Apagar LED</button>
<p id="status">Estado do LED: ...</p>
<script>
function acenderLED()
{
  fetch('/led/on').then(actualizarEstado);
}
function apagarLED()
{
  fetch('/led/off').then(actualizarEstado);
}
function atualizarEstado()
{
  fetch('/led/status')
    .then(response => response.text())
    .then(state => {
      document.getElementById('status').innerText = 'Estado do LED: ' + state;
    });
}
// Atualiza o estado ao carregar a página
window.onload = actualizarEstado;
</script>

No códigoDesafios Práticos: Experimentando com Múltiplos LEDsDesafios Práticos: Experimentando com Múltiplos LEDsAprenda a controlar múltiplos LEDs com ESP32 em projetos IoT. Descubra desafios práticos, montagem de circuitos, programação e efeitos visuais incríveis! do ESP32, adicione:

void handleLEDStatus()
{
  String ledState = digitalRead(LED_PIN) ? "Aceso" : "Apagado";
  server.send(200, "text/plain", ledState);
}
void setup()
{
  // Rotas anteriores
  // Rota para obter o estado do LED
  server.on("/led/status", handleLEDStatus);
  // Inicia o servidor
  server.begin();
}

Explicação:

Considerações de Segurança🔗

Embora este exemplo seja básico, é importante considerar aspectos de segurança em aplicações📞 Interfone IP com Vídeo Chamada📞 Interfone IP com Vídeo ChamadaDescubra como integrar interfone IP com vídeo chamada utilizando ESP32 para segurança residencial e corporativa, com streaming e criptografia avançada. reais:

Conclusão🔗

Servir páginas HTMLImplementando Formulários Web para Controle no ESP32Implementando Formulários Web para Controle no ESP32Descubra como utilizar formulários web no ESP32 para controlar dispositivos e automatizar seu ambiente de forma simples e eficaz. simples com o ESP32 é uma maneira eficaz de criar interfaces para controlar e monitorar dispositivos. A partir deste ponto, é possível expandir o projeto para incluir:

A chave é entender os princípios básicos de como o ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! pode servir conteúdo web e interagir com os usuários. Com criatividade e conhecimento, as possibilidades são infinitas.

Próximos Passos🔗

A jornada com o ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! e o desenvolvimento web está apenas começando. Continue explorando e aprimorando suas habilidades para criar projetos cada vez mais completos e inovadores.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados