Servidor Web ESP32 com Query String - Parâmetros de URL Dinâmicos
Exemplo WebServerQueryStrings - Servidor Dinâmico com Várias Páginas
Visão Geral
Este exemplo mostra como criar um servidor web dinâmico com várias páginas que usa parâmetros de consulta na URL para oferecer conteúdo interativo e funções de controle, com navegação suave entre as páginas.
Recursos
- Navegação entre várias páginas com conteúdo dinâmico baseado nos parâmetros da URL
- Conversão de unidade de temperatura (Celsius/Fahrenheit) por meio de parâmetros de consulta
- Controle de LED com parâmetros de query string
- Geração dinâmica de conteúdo com base na entrada do usuário
- Layout profissional com várias páginas e navegação consistente
- Análise e validação de parâmetros de URL
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | |
| 1 | × | DIYables ESP32 S3 Starter Kit (ESP32 S3 included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Instalação da Biblioteca
Siga estas instruções passo a passo:
- Se esta é a sua primeira vez usando o ESP32, consulte o tutorial sobre como configurar o ambiente do ESP32 no Arduino IDE.
- Conecte a placa ESP32 ao seu computador com um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa ESP32 apropriada (por exemplo, ESP32) e a porta COM.
- Abra o Library Manager clicando no ícone Library Manager no lado esquerdo do Arduino IDE.
- Pesquise por Web Server for ESP32 e encontre a mWebSockets da DIYables.
- Clique no botão Install para adicionar a biblioteca mWebSockets.

Exemplo de Web Server com Query Strings
- No Arduino IDE, vá em File Examples Web Server for ESP32 WebServerQueryStrings para abrir o código do exemplo
Estrutura do Código
- home.h: Template HTML da página inicial
- temperature.h: Template da página de monitoramento de temperatura
- led.h: Template da página de controle de LED
- WebServerQueryStrings.ino: Lógica principal do servidor
Conexão do Circuito
Não são necessários componentes externos - este exemplo usa o LED integrado no pino 13.
Recursos dos Parâmetros de Consulta
Parâmetros da Página de Temperatura
- unit=c ou unit=celsius - Exibe a temperatura em Celsius
- unit=f ou unit=fahrenheit - Exibe a temperatura em Fahrenheit
- Sem parâmetro - Usa Celsius por padrão
Parâmetros de Controle do LED
- state=on - Liga o LED
- state=off - Desliga o LED
Instruções de Configuração
1. Configuração da Rede
Edite as credenciais de WiFi diretamente no arquivo WebServerQueryStrings.ino:
2. Faça o Upload do Código e Monitore a Saída
- Conecte o ESP32 ao seu computador
- Selecione a placa e a porta corretas no Arduino IDE
- Faça o upload do sketch WebServerQueryStrings.ino
- Abra o Serial Monitor (9600 baud)
- Aguarde a conexão WiFi
- Anote o endereço IP exibido
- Se você não vir o endereço IP no Serial Monitor, pressione o botão de reset na placa ESP32
Exemplos de Uso
Abra o navegador e digite o endereço IP exibido no Serial Monitor para acessar o servidor web.

Teste a Função de Monitoramento de Temperatura:
- Clique no menu "Temperature".
- Veja a temperatura exibida. Clique em cada botão para mudar a unidade de temperatura

Teste a Função de Controle de LED:
- Clique no menu "LED Control". Você verá a interface web como a abaixo:

- Ligue e desligue o LED usando os botões fornecidos.
- Observe o status do LED integrado na placa ESP32 mudar instantaneamente.
Acessando Diferentes Páginas
Página Inicial
- URL: http://your-esp32-ip/
- Recursos: Página de boas-vindas com menu de navegação
Página de Temperatura (Padrão - Celsius)
- URL: http://your-esp32-ip/temperature
- Exibição: Temperatura em Celsius com seletor de unidade
Temperatura em Fahrenheit
- URL: http://your-esp32-ip/temperature?unit=f
- URL: http://your-esp32-ip/temperature?unit=fahrenheit
- Exibição: Temperatura convertida para Fahrenheit
Controle do LED
- Ligar: http://your-esp32-ip/led?state=on
- Desligar: http://your-esp32-ip/led?state=off
Explicação do Código
Processamento dos Parâmetros de Consulta
Controle do LED com Parâmetros de Consulta
Validação de Parâmetros
Templates HTML com Conteúdo Dinâmico
Template da Página de Temperatura
Template de Controle do LED
Recursos Avançados
Configuração das Rotas
Funções Auxiliares para Parâmetros de Consulta
Auxiliares para Montar URLs
Observações sobre a Implementação Real
Limitações Atuais
A implementação real é simplificada em comparação com um servidor web completo:
- Suporta apenas a extração de um único parâmetro por tratador
- Simulação de temperatura simples baseada em string (sem conversão de unidade)
- Controle de LED básico, apenas com os estados ligado/desligado
- Usa o pino 9 em vez do pino 13 padrão
Solução de Problemas
Problemas Comuns
Os Parâmetros Não Funcionam
- Verifique o formato da URL: page?param=value
- Confirme que os nomes dos parâmetros coincidem exatamente (diferenciam maiúsculas de minúsculas)
- A implementação atual usa state para o LED, não action
Problemas com o Pino do LED
- Este exemplo usa o pino 9, não o pino 13
- Confirme que a constante LED_PIN corresponde ao seu hardware
Acesso aos Parâmetros de Consulta
- Use a estrutura QueryParams, não server.arg()
- Percorra params.params[i] para encontrar parâmetros específicos
Saída de Depuração
Personalização
Adicionando um Novo Tratador com Parâmetros
Melhoria do Sistema de Templates
A implementação real usa uma substituição simples de marcadores:
Próximos Passos
- Explore o WebServerJson.ino para o desenvolvimento de APIs REST
- Experimente o WebServerWithWebSocket.ino para comunicação em tempo real
- Implemente o tratamento de formulários com parâmetros POST