

Além de aplicações voltadas para automação e IoT, tradicionalmente exploradas pela comunidade, o ESP32 também pode atuar como uma pequena plataforma de serviços de rede. No artigo anterior, foi apresentado um mini-roteador experimental capaz de criar uma rede local sem fio e atuar como gateway de acesso. A partir dos conceitos estudados naquele projeto, surge uma nova proposta: utilizar o ESP32 como servidor de arquivos e servidor web leve.
Neste projeto é desenvolvido um sistema embarcado baseado em ESP32 que implementa um servidor de arquivos acessível via navegador web, permitindo operações de upload, download, listagem e gerenciamento de arquivos em uma interface simples e responsiva.
O sistema utiliza o sistema de arquivos LittleFS como um dos recursos de armazenamento interno, e suporte a armazenamento externo via cartão microSD, permitindo expansão da capacidade de armazenamento.
A arquitetura do sistema foi projetada como um serviço de rede autônomo, no qual o ESP32 atua como servidor HTTP responsável por expor uma interface web de gerenciamento de arquivos e endpoints de acesso direto. A comunicação ocorre inteiramente via requisições HTTP, permitindo interação com o sistema através de qualquer navegador sem dependência de software externo.
A configuração de rede é realizada por meio de um sistema de WiFi Manager embarcado, permitindo que o dispositivo seja inicialmente configurado em modo de acesso (AP), com persistência de credenciais em memória não volátil (NVS). Após a configuração, o sistema realiza conexão automática em modo STA, garantindo reconexão transparente às redes previamente configuradas.
Por fim, o projeto integra um display OLED responsável pela exibição em tempo real das principais informações operacionais do sistema, utilização do armazenamento interno e externo e registros básicos de atividades e eventos do servidor. Esse recurso amplia a autonomia e a usabilidade do dispositivo, permitindo monitoramento local sem necessidade de acesso constante à interface web.
O desenvolvimento do servidor de arquivos foi realizado utilizando uma plataforma baseada no microcontrolador ESP32, acompanhada por um display OLED para monitoramento local e um módulo de armazenamento externo via cartão microSD. A combinação desses componentes permite implementar um sistema embarcado capaz de oferecer serviços de rede básicos com baixo consumo energético e baixo custo de implementação.

https://www.eletrogate.com/modulo-wifi-esp32-bluetooth-30-pinos
A arquitetura dual-core do ESP32 permite que as tarefas internas do sistema operacional e da pilha de rede operem paralelamente à aplicação do usuário, contribuindo para o bom desempenho das aplicações embarcadas conectadas.
Outro recurso relevante é a presença de conectividade Wi-Fi integrada, eliminando a necessidade de módulos externos para acesso à rede local. Dessa forma, o próprio microcontrolador é capaz de atuar como servidor HTTP, disponibilizando serviços acessíveis por navegadores web em computadores, smartphones ou outros dispositivos conectados à mesma rede.
Apesar de suas capacidades, o ESP32 possui limitações quando comparado a servidores convencionais. A quantidade reduzida de memória RAM e o poder computacional disponível restringem sua utilização a aplicações de pequeno porte, com número limitado de conexões simultâneas e arquivos de tamanho moderado.
https://www.eletrogate.com/display-oled-128x64-096-i2c-azulamarelo
Para monitoramento local do sistema foi utilizado um display OLED baseado no controlador SSD1306, conectado ao ESP32 por meio da interface I²C.
O módulo empregado possui resolução de 128 × 64 pixels e tela monocromática, oferecendo boa legibilidade mesmo em ambientes com pouca iluminação. A tecnologia OLED dispensa retroiluminação, proporcionando baixo consumo energético e elevado contraste visual.
Durante a execução do sistema, o display é utilizado para exibir informações operacionais como endereço IP obtido na rede, estado da conexão Wi-Fi, utilização dos sistemas de arquivos e mensagens de log geradas pelo servidor. Dessa forma, o usuário pode acompanhar o funcionamento do dispositivo sem necessidade de acessar continuamente a interface web.
https://www.eletrogate.com/modulo-micro-sd-card
Como mecanismo de expansão de armazenamento foi utilizado um cartão microSD conectado ao barramento SPI do ESP32.
Embora o sistema utilize o LittleFS para armazenamento interno na memória flash do microcontrolador, a capacidade disponível nesse ambiente é limitada e compartilhada com o firmware da aplicação. A utilização do cartão microSD permite armazenar quantidades significativamente maiores de dados, tornando viável o gerenciamento de documentos, imagens, páginas web e outros arquivos de maior tamanho.
A presença de dois sistemas de armazenamento distintos também amplia a flexibilidade da aplicação, permitindo ao usuário selecionar dinamicamente o local de armazenamento por meio da interface web do servidor.

O firmware foi desenvolvido utilizando o ambiente Arduino para ESP32, concentrando toda a lógica principal da aplicação no arquivo fileserver_esp32.ino. Essa abordagem foi adotada com o objetivo de simplificar o estudo do sistema e facilitar a compreensão do fluxo completo de execução.
A aplicação é composta por cinco módulos principais: gerenciamento de rede Wi-Fi, sistema de arquivos, servidor web, hospedagem de arquivos estáticos e interface local através do display OLED. Embora implementados de forma integrada, cada módulo possui responsabilidades bem definidas dentro da arquitetura do servidor.
O projeto utiliza bibliotecas nativas e amplamente difundidas no ecossistema ESP32, incluindo WiFi para conectividade de rede, WebServer para implementação do servidor HTTP, LittleFS e SD para acesso aos sistemas de arquivos, além de Wire, Adafruit_GFX e Adafruit_SSD1306 para controle do display OLED.
Durante a inicialização do sistema, o firmware realiza a montagem dos sistemas de arquivos, configura a conectividade Wi-Fi, inicializa o display OLED e, por fim, ativa o servidor HTTP responsável pelo gerenciamento dos arquivos e pela hospedagem de conteúdo web.
A configuração de rede foi implementada através do mesmo módulo desenvolvido no projeto do mini-roteador ESP32, promovendo o reaproveitamento de código e a padronização da configuração dos dispositivos.
O módulo é composto pelos arquivos wifi_config.cpp e wifi_config.h, responsáveis por encapsular toda a lógica de configuração e conexão sem fio. As credenciais são armazenadas em memória não volátil (NVS), permitindo que o dispositivo restabeleça automaticamente a conexão após reinicializações.
Durante a primeira utilização, ou quando nenhuma configuração válida é encontrada, o sistema pode operar temporariamente em modo ponto de acesso (Access Point), disponibilizando uma interface para configuração da rede local. Após a configuração inicial, o ESP32 passa a operar em modo Station (STA), conectando-se automaticamente à rede cadastrada.

O servidor foi projetado para operar simultaneamente com dois sistemas de armazenamento distintos: o LittleFS, localizado na memória flash interna do ESP32, e um cartão microSD conectado através da interface SPI.
O LittleFS é utilizado como armazenamento interno permanente para arquivos menores e conteúdo embarcado diretamente no dispositivo. Já o cartão SD fornece capacidade adicional para armazenamento de páginas web, documentos, imagens e outros arquivos de maior tamanho.
Para simplificar o desenvolvimento da aplicação, foi implementada uma camada de abstração responsável por selecionar dinamicamente o sistema de arquivos ativo. Dessa forma, operações como leitura, gravação, remoção e listagem de arquivos podem ser realizadas utilizando uma interface comum, independentemente do meio de armazenamento utilizado.
Essa abordagem reduz duplicação de código e permite que novas funcionalidades sejam implementadas sem necessidade de tratamento específico para cada sistema de arquivos.
A interface de gerenciamento é disponibilizada através de um servidor HTTP implementado utilizando a biblioteca WebServer.
As páginas são geradas dinamicamente pelo firmware e enviadas diretamente ao navegador do usuário. O conteúdo HTML é construído durante a execução da aplicação, permitindo que informações como lista de arquivos, utilização do armazenamento e estado dos dispositivos sejam atualizadas em tempo real.

A comunicação entre navegador e servidor ocorre por meio de rotas HTTP registradas durante a inicialização da aplicação. Cada rota é associada a uma função responsável por processar a requisição correspondente.
Entre as funcionalidades implementadas destacam-se:
Além das funções de gerenciamento de arquivos, o servidor também pode atuar como uma plataforma simples de hospedagem de conteúdo estático.
Quando uma requisição é recebida e não corresponde a nenhuma rota previamente registrada, o sistema executa um mecanismo de busca automática nos sistemas de arquivos disponíveis. Inicialmente é realizada uma busca no LittleFS e, caso o arquivo não seja encontrado, uma segunda tentativa é realizada no cartão SD.
Esse mecanismo permite que páginas HTML, folhas de estilo CSS, scripts JavaScript, imagens e outros recursos sejam servidos diretamente pelo ESP32 sem necessidade de configuração adicional.
O tipo de conteúdo enviado ao navegador é determinado automaticamente a partir da extensão do arquivo solicitado, permitindo a renderização correta de páginas e recursos web.

Essa funcionalidade transforma o dispositivo em um pequeno servidor web capaz de hospedar aplicações estáticas de baixa complexidade utilizando exclusivamente os recursos disponíveis no microcontrolador.
O monitoramento local do servidor é realizado por meio de um display OLED baseado no controlador SSD1306.
Durante a execução, o display apresenta informações operacionais relevantes, incluindo o endereço IP obtido na rede local, utilização do armazenamento interno, estado do cartão SD e mensagens resumidas de eventos recentes.
As informações são atualizadas periodicamente através de uma rotina centralizada de renderização da interface gráfica. Eventos importantes, como montagem de sistemas de arquivos, conexão Wi-Fi, uploads, downloads e operações administrativas, geram mensagens de log exibidas diretamente no display.

Neste projeto, o ESP32 atua como elemento central responsável por integrar os diferentes subsistemas de armazenamento, comunicação de rede e interface local. A figura a seguir apresenta uma visão simplificada da arquitetura lógica da aplicação.

O navegador web interage diretamente com o servidor HTTP embarcado no ESP32, que por sua vez realiza operações sobre os sistemas de arquivos LittleFS e cartão microSD. Paralelamente, o módulo de monitoramento local atualiza continuamente o display OLED com informações operacionais, enquanto o gerenciador Wi-Fi mantém a conectividade de rede necessária para o acesso remoto aos serviços.
Durante a energização do dispositivo, o firmware executa uma sequência de inicialização responsável por preparar todos os recursos necessários para o funcionamento do servidor.
Essa sequência garante que todos os recursos de armazenamento, comunicação e interface estejam disponíveis antes que o servidor passe a atender requisições dos usuários.
Embora o ESP32 seja capaz de executar serviços de rede surpreendentemente completos para sua categoria, é importante considerar algumas limitações inerentes à arquitetura do dispositivo.
A principal restrição está relacionada à quantidade reduzida de memória RAM disponível. Diferentemente de servidores convencionais, o ESP32 possui recursos limitados para armazenamento temporário de dados e gerenciamento de múltiplas conexões simultâneas. Como consequência, o sistema é mais adequado para acessos esporádicos ou ambientes com poucos usuários concorrentes.
Outro aspecto relevante é a implementação simplificada do gerenciamento de arquivos. O projeto foi desenvolvido com foco em arquivos localizados no diretório raiz dos sistemas de armazenamento, não contemplando mecanismos avançados de navegação em múltiplos níveis de subdiretórios. Embora essa funcionalidade possa ser adicionada futuramente, sua ausência contribui para a simplicidade da interface e da lógica de processamento.
Do ponto de vista da segurança, o servidor não implementa mecanismos de autenticação de usuários. Qualquer dispositivo com acesso à interface web pode executar operações de leitura e modificação dos arquivos armazenados. Da mesma forma, toda a comunicação ocorre através do protocolo HTTP convencional, sem suporte nativo a HTTPS e criptografia TLS.
Essas características tornam recomendável a utilização do sistema em redes locais controladas ou em ambientes de laboratório, onde os riscos de exposição são reduzidos e o objetivo principal é o estudo de tecnologias embarcadas e serviços de rede.
Apesar dessas limitações, o projeto demonstra uma característica interessante dos microcontroladores modernos: a possibilidade de disponibilizar serviços acessíveis remotamente utilizando recursos extremamente modestos.
Durante os testes realizados neste projeto, o acesso remoto não foi implementado através da exposição direta do ESP32 à Internet. Em vez disso, foi utilizada uma combinação entre VPN e encaminhamento de portas (port forwarding), explorando os recursos avançados do sistema operacional Linux embarcado no roteador utilizado no laboratório.
Nesse cenário, o encaminhamento de portas foi aplicado apenas na interface virtual da VPN, permitindo que o servidor hospedado no ESP32 permanecesse isolado da rede pública. Dessa forma, somente dispositivos previamente conectados à rede privada virtual poderiam acessar os serviços disponibilizados pelo microcontrolador.
Essa abordagem oferece uma camada adicional de segurança em comparação à publicação direta do serviço na interface WAN do roteador, uma vez que reduz significativamente a superfície de exposição do dispositivo e restringe o acesso a usuários autenticados na VPN.
Embora a implementação tenha sido realizada utilizando um roteador baseado em Linux embarcado, o mesmo conceito pode ser reproduzido em outras plataformas de rede, incluindo roteadores com firmware customizado, dispositivos baseados em System-on-Chip (SoC) ou pequenos servidores dedicados executando serviços de VPN e roteamento.
O desenvolvimento deste servidor de arquivos demonstra como plataformas embarcadas modernas podem ultrapassar aplicações tradicionais de automação e atuar como pequenos servidores de rede. Embora não substituam servidores convencionais, dispositivos como o ESP32 permitem a construção de soluções educacionais, laboratoriais e experimentais com baixo custo, reduzido consumo energético e elevada flexibilidade de implementação.
Encontre tudo na Loja Eletrogate com frete grátis para compras acima de R$ 200