index.html- Interface web completa (formatada, para referência)mpagc-esp8266.ino- Código do ESP8266 (HTML já embutido no código)README.md- Documentação completa
- Instalar suporte ESP8266
- Instalar biblioteca ArduinoJson (versão 6.x)
- Instalar biblioteca Adafruit_GFX (para display OLED)
- Instalar biblioteca Adafruit_SSD1306 (para display OLED)
- Instalar biblioteca UrlEncode (opcional, para codificação de URLs)
Editar em mpagc-esp8266.ino:
const char* WIFI_SSID = "SEU_WIFI";
const char* WIFI_PASSWORD = "SUA_SENHA";- Conectar ESP8266 via USB
- Selecionar a placa e porta
- Clicar em Upload
- Abrir Serial Monitor (115200 baud) para ver o IP
Abrir navegador e acessar o IP mostrado no Serial Monitor
ESP8266 → Sensores/Componentes
------------------------
A0 → MQ-2/MQ-5 (Sensor de gás)
D12 → HX711 SCK (Balança - Clock)
D14 → HX711 DT (Balança - Data)
D4 → OLED SDA (Display I2C)
D5 → OLED SCL (Display I2C)
D16 → Buzzer (Alerta de vazamento)
3.3V → VCC dos sensores e display
GND → GND dos sensores e display
Nota: O display OLED usa comunicação I2C no endereço 0x3C.
- Ligar por 24-48h antes do uso (pré-aquecimento)
- Ajustar limiar no código se necessário:
int gasThreshold = 400; // Aumentar/diminuir conforme necessário- A função
readScale()atualmente retorna um valor fixo (20 kg) - implementar leitura do HX711 - Calibrar com peso conhecido
- Ajustar fator de calibração na função
readScale()
Configurar no código:
float emptyGasWeight = 14.0; // Peso do botijão vazio (kg)
float fullGasWeight = 13.0; // Peso do botijão cheio (kg)Nota: O cálculo do nível de gás usa a diferença entre emptyGasWeight e fullGasWeight.
- Monitorar: A interface atualiza automaticamente a cada 500ms
- Salvar Peso: Use o botão "Salvar Peso Atual como Peso Inicial" para calibrar (funcionalidade em desenvolvimento)
- Alertas:
- Vazamento detectado: Alerta visual e buzzer ativado
- Nível baixo (< 20%): Alerta visual em vermelho
- Nível médio (20-50%): Alerta visual em laranja
O sistema inclui um display OLED 128x64 que exibe:
- Status de vazamento (SIM/NÃO)
- Nível de gás em porcentagem
- Barra de progresso visual
- Valores do sensor ADC e limiar configurado
Se quiser integrar com outros sistemas:
GET /api/status- Retorna status atual do sistemaGET /api/settings- Retorna configurações atuaisPOST /api/settings- Atualiza configuraçõesPOST /api/weight- Salva o peso atual como peso inicial
Retorna o status atual do sistema:
{
"gasLeak": false,
"gasLevel": 75.5,
"currentWeight": 11.2,
"gasValue": 250,
"gasThreshold": 400,
"timestamp": 123456
}gasLeak: boolean - Indica se há vazamento detectadogasLevel: float - Porcentagem de gás restante (0-100)currentWeight: float - Peso atual lido pela balança (kg)gasValue: int - Valor lido do sensor ADC (0-1023)gasThreshold: int - Limiar configurado para detecção de vazamentotimestamp: unsigned long - Timestamp em millis()
Retorna as configurações atuais:
{
"emptyGasWeight": 14.0,
"gasThreshold": 400
}emptyGasWeight: float - Peso do botijão vazio (kg)gasThreshold: int - Limiar configurado para detecção de vazamento
Atualiza as configurações. Body JSON:
{
"emptyGasWeight": 14.0,
"gasThreshold": 400
}Resposta:
{
"success": true
}Nota: Esta funcionalidade está atualmente comentada no código e não está operacional. Quando implementada, salvará o peso atual lido pela balança como peso inicial.
Resposta esperada (quando implementada):
{
"success": true,
"weight": 13.0
}- Memória: O HTML está minificado e embutido diretamente no código como string PROGMEM
- WiFi: Funciona apenas em redes 2.4GHz (ESP8266 não suporta 5GHz)
- Sensor de Gás: Necessita pré-aquecimento de 24-48h para estabilizar
- Balança: A função
readScale()retorna valor fixo (20 kg) - implementar leitura do HX711 conforme seu hardware - Display OLED: Requer bibliotecas Adafruit_GFX e Adafruit_SSD1306, conectado via I2C (SDA=D4, SCL=D5)
- Buzzer: Conectado no pino D16, ativado automaticamente quando vazamento é detectado
- Debug Mode: Sistema possui modo debug ativado por padrão (
debugMode = true) - desative para reduzir logs no Serial Monitor - Cálculo de Nível: O nível de gás é calculado usando
(peso_atual - emptyGasWeight) / (fullGasWeight - emptyGasWeight) * 100