Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/birdra1n/espwifisetup
Este projeto utiliza o módulo ESP8266 para facilitar a conexão e configuração de redes Wi-Fi via um servidor web local. Ideal para projetos de IoT e dispositivos conectados, este código permite que você configure suas credenciais Wi-Fi sem a necessidade de interagir diretamente com o dispositivo.
https://github.com/birdra1n/espwifisetup
esp esp8266 iot
Last synced: 2 days ago
JSON representation
Este projeto utiliza o módulo ESP8266 para facilitar a conexão e configuração de redes Wi-Fi via um servidor web local. Ideal para projetos de IoT e dispositivos conectados, este código permite que você configure suas credenciais Wi-Fi sem a necessidade de interagir diretamente com o dispositivo.
- Host: GitHub
- URL: https://github.com/birdra1n/espwifisetup
- Owner: BirdRa1n
- License: mit
- Created: 2024-08-13T15:20:18.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2024-08-13T17:12:33.000Z (3 months ago)
- Last Synced: 2024-10-17T17:15:25.122Z (20 days ago)
- Topics: esp, esp8266, iot
- Language: C++
- Homepage:
- Size: 11.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Introdução
Este projeto utiliza um módulo ESP8266 para conectar-se a uma rede Wi-Fi e permitir a configuração via um servidor web local. O dispositivo pode ser configurado para se conectar a uma rede Wi-Fi específica, e, caso a conexão falhe, ele cria um ponto de acesso (AP) para permitir a configuração da rede Wi-Fi.
## Estrutura do Código
### Bibliotecas Utilizadas
- **Wire.h**: Biblioteca para comunicação I2C.
- **ESP8266WiFi.h**: Biblioteca para gerenciamento de conexões Wi-Fi com ESP8266.
- **ESP8266HTTPClient.h**: Biblioteca para realizar requisições HTTP.
- **WiFiClient.h**: Biblioteca para gerenciamento de clientes Wi-Fi.
- **ArduinoJson.h**: Biblioteca para manipulação de JSON.
- **ESP8266WebServer.h**: Biblioteca para criar um servidor web.
- **EEPROM.h**: Biblioteca para armazenar e recuperar dados na EEPROM.### Constantes e Definições
- **EEPROM_SIZE**: Tamanho da EEPROM.
- **SSID_START_ADDR**: Endereço inicial na EEPROM para armazenar o SSID.
- **PASS_START_ADDR**: Endereço inicial na EEPROM para armazenar a senha.
- **SSID_LENGTH**: Comprimento máximo do SSID.
- **PASS_LENGTH**: Comprimento máximo da senha.
- **BUTTON_RESET_PIN**: Pino do botão de reset.
- **MAX_WIFI_WAIT_TIME**: Tempo máximo para tentar conectar-se à rede Wi-Fi.### Funções
#### `setup()`
Inicializa o monitor serial, configura a EEPROM e verifica se o botão de reset está pressionado. Se o botão estiver pressionado, inicia um ponto de acesso e o servidor web. Caso contrário, tenta conectar-se à rede Wi-Fi usando as credenciais armazenadas na EEPROM. Se a conexão falhar, inicia um ponto de acesso.
#### `loop()`
Lida com as requisições do servidor web. Se o ESP8266 estiver conectado à rede Wi-Fi, imprime o IP local e aguarda. Caso contrário, reinicializa o ESP8266.
#### `connectToWiFi(const String& ssid, const String& pass)`
Tenta conectar-se à rede Wi-Fi com o SSID e a senha fornecidos. Retorna `true` se a conexão for bem-sucedida e `false` caso contrário.
#### `startAccessPoint()`
Configura o ESP8266 para funcionar como um ponto de acesso com o SSID e senha definidos. Imprime o IP do ponto de acesso.
#### `setupWebServer()`
Configura as rotas do servidor web para lidar com as requisições.
#### `handleNetworkInfo()`
Retorna informações sobre a rede Wi-Fi atualmente conectada, como SSID e intensidade do sinal (RSSI).
#### `handleNetworkList()`
Retorna uma lista de redes Wi-Fi disponíveis com informações sobre cada uma, incluindo SSID, intensidade do sinal (RSSI) e tipo de criptografia.
#### `handleSettings()`
Recebe e armazena as novas credenciais Wi-Fi enviadas via uma requisição POST. Se as credenciais forem válidas, salva-as na EEPROM e reinicializa o ESP8266. Caso contrário, envia uma mensagem de erro.
#### `handleRoot()`
Resposta padrão para a raiz do servidor web. Retorna um JSON com uma mensagem de status "ok".
#### `readStringFromEEPROM(int startAddress, int length)`
Lê uma string da EEPROM a partir do endereço e comprimento fornecidos.
#### `writeStringToEEPROM(int startAddress, const String& data)`
Escreve uma string na EEPROM a partir do endereço fornecido.
#### `restartESP()`
Reinicializa o ESP8266.
#### `serializeJsonString(const DynamicJsonDocument& doc)`
Serializa um objeto JSON para uma string.
## Configuração do Hardware
- **Pino do Botão de Reset (D8)**: Este pino é usado para iniciar o ponto de acesso e o servidor web quando pressionado. Certifique-se de que o botão de reset esteja corretamente conectado ao pino D8 do ESP8266.
## Uso
1. **Inicialização**: Quando o dispositivo é inicializado, ele tenta conectar-se à rede Wi-Fi usando as credenciais armazenadas na EEPROM. Se a conexão falhar ou o botão de reset estiver pressionado, o dispositivo atuará como um ponto de acesso.
2. **Configuração via Web**: Conecte-se à rede Wi-Fi criada pelo ESP8266 (SSID: "ESP8266"). Acesse o servidor web em http://192.168.4.1 para configurar as credenciais da rede Wi-Fi.
3. **Rotas Disponíveis**:
- **`/networkinfo`**: Retorna informações sobre a rede Wi-Fi conectada.
- **`/networks`**: Retorna uma lista das redes Wi-Fi disponíveis.
- **`/setting`**: Recebe as credenciais da rede Wi-Fi e as armazena na EEPROM.
- **`/`**: Retorna um JSON com a mensagem "ok".## Considerações Finais
Este código foi projetado para ser um ponto de partida para projetos que requerem configuração de rede Wi-Fi via web. Pode ser adaptado e expandido para atender às necessidades específicas do projeto.