Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aasjunior/esp32_web_server
Este é um projeto utilizado para fins acadêmicos e aprendizado com a placa de desenvolvimento Esp32 e linguagem de programação C++.
https://github.com/aasjunior/esp32_web_server
cpp esp32 iot platformio webserver
Last synced: 3 months ago
JSON representation
Este é um projeto utilizado para fins acadêmicos e aprendizado com a placa de desenvolvimento Esp32 e linguagem de programação C++.
- Host: GitHub
- URL: https://github.com/aasjunior/esp32_web_server
- Owner: aasjunior
- Created: 2024-06-17T03:04:27.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-06-25T01:48:43.000Z (7 months ago)
- Last Synced: 2024-10-01T04:05:25.073Z (4 months ago)
- Topics: cpp, esp32, iot, platformio, webserver
- Language: C++
- Homepage:
- Size: 1.38 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Servidor Web com Esp32
Este projeto implementa um servidor web utilizando o **ESP32** e o modulo **MicroSD Card Adapter** para servir uma pagina **HTML**, estilizada com **Bootstrap** e **Javascript**, através da rede local. Para desenvolvimento do projeto foi utilizada a plataforma **PlatformIO** pelo **Visual Studio Code** e a linguagem de programação **C++**.
### Sobre o PlatformIO
O **PlatformIO** é um ambiente de desenvolvimento integrado (IDE) e um gerenciador de projetos para sistemas embarcados. Ele oferece suporte a diversas plataformas de hardware e frameworks, facilitando o desenvolvimento e a integração de firmware. Com o **PlatformIO**, os desenvolvedores podem aproveitar uma ampla gama de bibliotecas e ferramentas de compilação, tornando o processo de desenvolvimento mais eficiente e simplificado. Além disso, o **PlatformIO** pode ser integrado ao **Visual Studio Code**, oferecendo uma interface de usuário poderosa e funcionalidades avançadas de edição de código e de autocomplete.
### Sobre o ESP32
O **ESP32** é um **microcontrolador** de baixo custo e alto desempenho, desenvolvido pela **Espressif Systems**. Ele possui conectividade **Wi-Fi** e **Bluetooth** integrada, tornando-o ideal para aplicações de **IoT** (Internet das Coisas). Com um processador **dual-core** e várias interfaces de comunicação, o **ESP32** é altamente versátil e pode ser utilizado em uma ampla gama de projetos, desde automação residencial até dispositivos conectados industriais. A robustez e a flexibilidade do **ESP32**, juntamente com seu suporte a múltiplos frameworks de desenvolvimento, como o **Arduino** e o **ESP-IDF**, o tornam uma escolha popular entre os desenvolvedores de sistemas embarcados.
## Configuração do Ambiente
###### Requisitos
- VSCode
- PlatformIO
- Placa Esp32
- Cartão SD
- MicroSD Card Adapter (Modulo)#### Lista de Componentes
Componentes
Quantidade
Esp32
1
MicroSD Card Adapter
1
Cartão SD
1
Cabo USB
1
Jumpers
6
### Instalação e Configuração
1. Faça a instalação do **VSCode**, depois busque e instale a extensão do **PlatformIO**.
2. Formate o cartão SD como **FAT16**, **FAT32** ou **exFAT**.
3. Clone o repositório para sua máquina local:
```
git clone https://github.com/aasjunior/esp32_web_server.git
```
4. Salve o diretório `site` no cartão SD e depois o coloque no slot do **MicroSD Card Adapter**5. Abra o diretório `web_server` utilizando o **PlatformIO**.
6. Verifique se todas as dependências estão instaladas conforme especificado no `platformio.ini`.
7. Crie um arquivo `Credentials.h` dentro de `web_server/include` e insira o nome e a senha da sua rede **WiFi**:
```c++
const char* ssid = "WIFI_SSID";
const char* password = "WIFI_PASSWORD";
```8. Faça as conexões entre o **Esp32** e o modulo MicroSD como especificado abaixo:
### Como Usar
1. Compile e carregue o código para o **ESP32** utilizando o **PlatformIO**.
2. Abra o **monitor serial** para verificar a saída e o endereço **IP** atribuído.
3. Conecte-se na mesma rede **WiFi** do **ESP32**.
4. Acesse o servidor web através do endereço **IP** exibido para acessar a página web salva no cartão SD.
### Observações
- Certifique-se de que seu adaptador MicroSD esteja devidamente conectado ao **ESP32** para que o cartão SD seja inicializado corretamente.
## Componentes do Projeto
#### Estrutura de Arquivos
```
📁 web_server/
├── 📁 include/
| ├── 📄 Enums.h
| ├── 📄 Credentials.h
| ├── 📄 SDManager.h
| ├── 📄 WebServerManager.h
| └── 📄 WiFiManager.h
├── 📁 src/
| ├── 📁 core/
| | ├── 📄 SDManager.cpp
| | ├── 📄 WebServerManager.cpp
| | └── 📄 WiFiManager.cpp
| └── 📄 main.cpp
└── 📄 platformio.ini
```
- 📁 **include/**: Este diretório possui os arquivos de cabeçalho (`.h`) que definem as **interfaces** das classes de funções utilizadas no projeto.
- **Enums.h**: Define as enumerações (`WiFiStatus` e `SDStatus`) utilizadas para representar o status da conexão WiFi e do cartão SD.
```c++
#ifndef ENUMS_H
#define ENUMS_Henum WiFiStatus{
WIFI_CONNECTING,
WIFI_CONNECTED,
WIFI_FAILED
};enum SDStatus{
SD_INITIALIZED,
SD_FAILED,
SD_NO_CARD
};#endif
```
- **Credentials.h**: Contém as credenciais de rede WiFi (`SSID` e senha), mantidas separadamente para fins de segurança.
```c++
const char* ssid = "WIFI_SSID";
const char* password = "WIFI_PASSWORD";
```
- **SDManager.h**: Declara a classe `SDManager`, responsável pelo gerenciamento do cartão SD.
```c++
#ifndef SD_MANAGER_H
#define SD_MANAGER_H#include
#include "Enums.h"class SDManager{
public:
SDManager(int pinCS);
SDStatus begin();
void listDir(fs::FS &fs, const char * dirname, uint8_t levels);private:
int pinCS;
};#endif
```
- **WebServerManager.h**: Declara a classe `WebServerManager`, responsável pela configuração e execução do servidor web.
```c++
#ifndef WEB_SERVER_MANAGER_H
#define WEB_SERVER_MANAGER_H#include
#includeclass WebServerManager{
public:
WebServerManager();
void begin();private:
AsyncWebServer server;
};#endif
```
- **WiFiManager.h**: Declara a classe `WiFiManager`, responsável pelo gerenciamento da conexão WiFi.
```c++
#ifndef WIFI_MANAGER_H
#define WIFI_MANAGER_H#include
#include "Enums.h"class WiFiManager{
public:
WiFiManager(const char* ssid, const char* password);
WiFiStatus connect();
IPAddress getIP();private:
const char* ssid;
const char* password;
};#endif
```
- 📁 **src/core**: Este diretório possui os arquivos de implementação (`.cpp`) das classes definidas nos arquivos de cabeçalho.
- **SDManager.cpp**: Implementa os métodos da classe `SDManager` declarados em `SDManager.h`, como `begin()` e `listDir()`.
- **WebServerManager.cpp**: Implementa os métodos da classe `WebServerManager` declarados em `WebServerManager.h`, como `begin()` para iniciar o servidor web.
- **WiFiManager.cpp**: Implementa os métodos da classe `WiFiManager` declarados em `WiFiManager.h`, como `connect()` para conectar-se à rede WiFi e `getIP()` para obter o endereço **IP**.
- **main.cpp**: Arquivo principal do programa, que contém a função `setup()` e `loop()` (não utilizada no exemplo) do **ESP32**, onde as instâncias das classes são criadas e utilizadas para inicializar o **WiFi**, o **cartão SD** e o **servidor web**.
- **platformio.ini**: Arquivo de configuração do **PlatformIO** que define as opções de compilação, upload e configuração de bibliotecas utilizadas no projeto.
```
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps =
SPI
SD
ESP Async WebServer
AsyncTCP
WiFi
```## Tecnologias
##
**Aviso**Este é um projeto utilizado para fins de aprendizado com a placa de desenvolvimento **Esp32** e linguagem de programação **C++**.