

Com o aumento da dependência de serviços online e da utilização de servidores virtuais privados (VPS), aplicações web e outros serviços de rede, torna-se cada vez mais importante acompanhar continuamente sua disponibilidade. Falhas de conectividade ou indisponibilidade de serviços podem comprometer aplicações, causar prejuízos financeiros e afetar a experiência dos usuários, tornando o monitoramento uma prática essencial para garantir a confiabilidade da infraestrutura.
Diversas ferramentas de monitoramento estão disponíveis atualmente, oferecendo recursos avançados para administração de ambientes de rede. Entretanto, essas soluções normalmente dependem da execução em computadores, servidores ou máquinas virtuais dedicadas. Em aplicações de pequeno porte, ambientes didáticos ou laboratórios, pode ser interessante utilizar uma alternativa mais simples, de baixo custo e com reduzido consumo de energia, sem abrir mão das funcionalidades básicas de monitoramento.
Neste contexto, este artigo apresenta o desenvolvimento de um dispositivo baseado no microcontrolador ESP32, projetado para monitorar periodicamente a disponibilidade de hosts e serviços de rede por meio de testes HTTP e TCP. O sistema permite verificar tanto aplicações web quanto serviços executados em portas específicas, como servidores SSH, DNS e bancos de dados, disponibilizando os resultados em uma interface web acessível diretamente pela rede local.
Serão apresentados os componentes utilizados, a arquitetura de hardware e software, a implementação do firmware e a análise dos resultados obtidos durante os testes. Ao final, espera-se demonstrar que o ESP32 constitui uma plataforma viável para o desenvolvimento de soluções embarcadas de monitoramento de infraestrutura, além de proporcionar uma aplicação prática de conceitos relacionados a redes de computadores, programação embarcada e Internet das Coisas (IoT).
O desenvolvimento do monitor de hosts foi realizado utilizando um conjunto reduzido de componentes de hardware e software, priorizando baixo custo, simplicidade de implementação e ampla disponibilidade.
| Componente | Função |
|------------|-------------------------------------------------|
| ESP32 | Plataforma de processamento e monitoramento |
| Wi-Fi | Comunicação com a rede |
| Arduino IDE| Desenvolvimento do firmware |
| HTTPClient | Testes HTTP |
| WiFiClient | Testes TCP |
| WebServer | Interface web (dashboard) |
Para a montagem do projeto é necessário apenas um microcontrolador ESP32, responsável por executar toda a lógica de monitoramento, realizar as verificações de conectividade dos hosts e disponibilizar uma interface web para consulta dos resultados.

O firmware foi desenvolvido utilizando a Arduino IDE, que oferece um ambiente simples e amplamente utilizado para programação do ESP32.
Além da IDE, são utilizadas bibliotecas responsáveis pela conexão com a rede Wi-Fi, comunicação TCP e HTTP, sincronização do relógio interno via NTP e implementação de um servidor web embarcado para exibição das informações de monitoramento.
Para facilitar a compreensão da arquitetura proposta, são apresentados os diagramas do hardware e do fluxo lógico do firmware, ilustrando a interação entre os módulos do sistema.
FLUXOGRAMA DO FIRMWARE
╭──────────────────────────────────────────────────────╮
│ setup() │
╰───────────────────────┬──────────────────────────────╯
│
▼
╭──────────────────────────────────────────────────────╮
│ Inicializa comunicação Serial │
╰───────────────────────┬──────────────────────────────╯
│
▼
╭──────────────────────────────────────────────────────╮
│ Conecta o ESP32 à rede Wi-Fi │
╰───────────────────────┬──────────────────────────────╯
│
▼
╭──────────────────────────────────────────────────────╮
│ Sincroniza relógio utilizando NTP │
╰───────────────────────┬──────────────────────────────╯
│
▼
╭──────────────────────────────────────────────────────╮
│ Inicializa o servidor Web │
╰───────────────────────┬──────────────────────────────╯
│
▼
╔════════════════════════════════╗
║ loop() ║
╚═══════════════╤════════════════╝
│
▼
╭──────────────────────────────────────────────────────╮
│ Atende requisições recebidas pelo WebServer │
╰───────────────────────┬──────────────────────────────╯
│
▼
╭─────────────────────╮
│ Intervalo atingido? │
╰──────────┬──────────╯
│
┌────────────┴────────────┐
│ │
Não Sim
│ │
│ ▼
│ ╭────────────────────────────────────╮
│ │ Executa testes HTTP configurados │
│ ╰────────────────┬───────────────────╯
│ │
│ ▼
│ ╭────────────────────────────────────╮
│ │ Executa testes TCP configurados │
│ ╰────────────────┬───────────────────╯
│ │
│ ▼
│ ╭────────────────────────────────────╮
│ │ Atualiza resultados em memória RAM │
│ ╰────────────────┬───────────────────╯
│ │
└───────────────────────┴─────────────────────────────┐
│
▼
╔════════════════════╗
║ Retorna ao loop ║
╚════════════════════╝
O hardware do sistema é composto exclusivamente por um microcontrolador ESP32, não havendo circuitos auxiliares ou interligações entre componentes externos. Dessa forma, não há uma montagem eletrônica específica que justifique a elaboração de um diagrama de hardware, sendo o funcionamento do sistema definido integralmente pelo firmware.

O firmware foi desenvolvido em linguagem C++ utilizando o framework Arduino para ESP32. Sua arquitetura foi dividida em módulos independentes, facilitando a manutenção, a expansão do código e a reutilização de componentes.
O arquivo main.ino é responsável apenas pelo fluxo principal da aplicação, enquanto as funcionalidades específicas são implementadas em módulos separados, organizados nos arquivos config.h, monitor.h e web.h.
O firmware inicia executando a função setup(), responsável pela inicialização de todos os serviços necessários para o funcionamento do monitor.
void setup() {
unsigned long tempoBoot = millis();
Serial.begin(115200);
conectarWifi();
sincronizarHorario();
iniciarWeb();
} Inicialmente é aberta a comunicação serial, utilizada para depuração e exibição dos resultados dos testes. Em seguida, o ESP32 conecta-se à rede Wi-Fi previamente configurada e sincroniza seu relógio interno utilizando servidores NTP. Por fim, é iniciado o servidor web responsável por disponibilizar a interface de monitoramento aos usuários da rede.
Após a conclusão da inicialização, o programa permanece continuamente executando a função loop(), característica da arquitetura do framework Arduino.
void loop() {
// atende requisições web o tempo todo
atenderWeb();
// verifica se chegou a hora de testar
unsigned long agora = millis();
if (
agora - ultimoTeste
>=
intervaloTeste
) {
ultimoTeste = agora;
testarHTTP(
httpNome1,
httpServidor1
);
testarHTTP(
httpNome2,
httpServidor2
);
testarHTTP(
httpNome3,
httpServidor3
);
testarTCP(
tcpNome1,
tcpServidor1,
tcpPorta1
);
testarTCP(
tcpNome2,
tcpServidor2,
tcpPorta2
);
testarTCP(
tcpNome3,
tcpServidor3,
tcpPorta3
);
exibirResultadosSerial();
}
} Durante toda a execução, o firmware realiza duas tarefas principais:
O controle do intervalo entre os testes é realizado utilizando a função millis(), que contabiliza o tempo desde a inicialização do microcontrolador e evita o uso de funções bloqueantes como delay(), permitindo que a interface web continue respondendo normalmente mesmo durante longos períodos de monitoramento.
Quando o intervalo configurado é atingido, o firmware executa sequencialmente todos os testes HTTP e TCP cadastrados e, ao final do ciclo, apresenta os resultados também no monitor serial.
config.h)O arquivo config.h concentra todos os parâmetros configuráveis do sistema, permitindo alterar o comportamento do monitor sem necessidade de modificar a lógica principal do firmware.
constexpr const char* ssid = "Seu_Wifi";
constexpr const char* password = "sua_senha";
//=========================
// TESTE HTTP/HTTPS
//=========================
constexpr const char* httpNome1 =
"Server1"; // ALTERAR O NOME
constexpr const char* httpServidor1 =
"https://server1.com.br"; // ALTERAR O ENDEREÇO
// COPIAR COMO httpNome2 e httpServidor2 para criar mais testes
//=========================
// TESTE TCP
//=========================
constexpr const char* tcpNome1 =
"Server1"; // ALTERAR O NOME
constexpr const char* tcpServidor1 =
"123.456.789.111"; // ALTERAR O IP
constexpr int tcpPorta1 = 1234; // ALTERAR A PORTA
// COPIAR COMO tcpNome2, tcpServidor2 e tcpPorta2 para criar mais testes
//=========================
// CONFIGURAÇÕES GLOBAIS
//=========================
constexpr unsigned long intervaloTeste = 60000; // ALTERAR O TEMPO EM ms
Neste módulo são definidos:
Essa organização facilita a adaptação do firmware para diferentes ambientes de monitoramento, bastando alterar os valores das constantes.
monitor.h)O módulo de monitoramento concentra toda a lógica responsável pelos testes de disponibilidade dos serviços.
São implementados dois métodos distintos de verificação:
Os testes HTTP utilizam a biblioteca HTTPClient para enviar uma requisição ao endereço configurado.
O firmware registra informações como:
Esse método é indicado para monitoramento de aplicações web e APIs.
Os testes TCP utilizam a biblioteca WiFiClient, estabelecendo uma conexão diretamente com uma porta específica do servidor.
Caso a conexão seja estabelecida dentro do tempo limite definido, o serviço é considerado disponível.
Além da disponibilidade, também é registrado o tempo necessário para o estabelecimento da conexão.
web.h)O módulo web.h implementa um servidor HTTP embarcado utilizando a biblioteca WebServer.
A interface é gerada dinamicamente pelo próprio ESP32, dispensando servidores web externos e arquivos HTML hospedados separadamente, uma vez que a página é gerada diretamente pelo firmware.
O layout foi desenvolvido utilizando HTML e CSS leves, inspirado em painéis utilizados em Centros de Operação de Rede (NOC), priorizando simplicidade, legibilidade e baixo consumo de memória.
Após a inicialização do firmware, o ESP32 executa continuamente ciclos de monitoramento dos hosts configurados. A cada intervalo definido, são realizados os testes HTTP e TCP, sendo os resultados armazenados temporariamente em memória RAM, substituindo os dados do ciclo anterior. Essa abordagem elimina a necessidade de armazenamento permanente e garante que a interface apresente sempre o estado mais recente da infraestrutura monitorada.
As informações coletadas são disponibilizadas por meio de um servidor web embarcado no próprio ESP32. Sempre que um usuário acessa o endereço IP do dispositivo, a página é gerada dinamicamente a partir dos dados armazenados em memória, dispensando servidores externos, bancos de dados ou processamento adicional.
O dashboard foi desenvolvido com foco em simplicidade e rápida interpretação das informações, reunindo em uma única página todos os hosts monitorados.
Para cada serviço são apresentados:
O desenvolvimento deste projeto demonstrou que é possível implementar uma solução funcional de monitoramento de hosts utilizando apenas um microcontrolador ESP32. Mesmo com recursos computacionais limitados, o sistema foi capaz de realizar testes periódicos de disponibilidade, medir tempos de resposta e disponibilizar uma interface web leve para acompanhamento e administração em tempo real.
Desta forma, este projeto permitiu integrar conhecimentos de redes de computadores, programação embarcada e desenvolvimento de interfaces web em um único sistema funcional. Durante sua implementação, foi possível explorar conceitos como comunicação TCP/IP, protocolo HTTP, sincronização de horário via NTP, programação não bloqueante utilizando temporizadores e organização modular de firmware. Dessa forma, além de atender ao objetivo de desenvolver um monitor de hosts de baixo custo, o projeto também se mostrou uma excelente ferramenta de aprendizagem, evidenciando o potencial do ESP32 como plataforma para o desenvolvimento de aplicações voltadas à administração de redes e à Internet das Coisas (IoT).
ARDUINO. Arduino IDE. Disponível em: https://www.arduino.cc/en/software. Acesso em: 30 jun. 2026.
ESPRESSIF SYSTEMS. ESP32 Programming Guide. Disponível em: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/. Acesso em: 30 jun. 2026.
ESPRESSIF SYSTEMS. Arduino Core for ESP32 Documentation. Disponível em: https://docs.espressif.com/projects/arduino-esp32/. Acesso em: 30 jun. 2026.
FIELDING, R. T.; RESCHKE, J. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. RFC 7231. Internet Engineering Task Force, 2014.
MILLS, D. L. Network Time Protocol Version 4: Protocol and Algorithms Specification. RFC 5905. Internet Engineering Task Force, 2010.
POSTEL, J. Transmission Control Protocol. RFC 793. Internet Engineering Task Force, 1981.
Os arquivos completos do HostMonitor estão disponíveis para download em formato .zip. Após o download, basta extrair o conteúdo do arquivo e abrir o projeto na Arduino IDE. Em seguida, selecione a placa ESP32 correspondente, configure a porta serial e realize a compilação e gravação do firmware normalmente.
O pacote inclui todo o código-fonte necessário para a reprodução do projeto, permitindo sua utilização, estudo e adaptação.
Download do código-fonte:
|
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200