Versão 3.0
This commit is contained in:
214
README.md
214
README.md
@@ -1,50 +1,198 @@
|
||||
# Atividade 2 - Amaro
|
||||
# Atividade 3 - Streaming MQTT para ThingSpeak
|
||||
|
||||
Um projeto de um ESP32 conectado a três sensores para monitoramento inteligente de cozinha industrial:
|
||||
Sistema IoT embarcado em **ESP32** que monitora temperatura, umidade e gás com detecção avançada de incêndio, publicando dados simultaneamente em múltiplas plataformas cloud.
|
||||
|
||||
## Sensores
|
||||
- **DHT22**: Temperatura e Umidade
|
||||
- **MQ2**: Qualidade do ar / Detecção de gás
|
||||
- **DS1307**: RTC para timestamp
|
||||
## Visão Geral
|
||||
|
||||
## Atuadores
|
||||
- **Alarme Sonoro** (GPIO 4): Alerta para detecção de gás/incêndio
|
||||
- **Coifa/Exaustor** (GPIO 17): Remoção de gases e umidade
|
||||
- **Ar-condicionado** (GPIO 16): Controle de temperatura
|
||||
```
|
||||
ESP32 (DHT22 + MQ2)
|
||||
↓
|
||||
├─→ MQTT Broker (77.37.69.84:1883)
|
||||
│ ├─→ Ubidots (Dashboard CEO)
|
||||
│ └─→ NodeRed (Dashboard Local)
|
||||
│
|
||||
└─→ ThingSpeak Write API
|
||||
└─→ Armazenamento em Cloud + Analytics
|
||||
```
|
||||
|
||||
## Sistema de Integração MQTT
|
||||
## Requisitos da Atividade
|
||||
|
||||
### Broker
|
||||
- **Host**: 77.37.69.84:1883
|
||||
- **Tópico Publicação**: `cozinha` (JSON com tmp, umi, gas, alarme)
|
||||
- **Tópicos Subscrição**: `cozinha/max_tmp`, `cozinha/max_umi` (configuração remota)
|
||||
- ✅ Canal ThingSpeak com 4 campos
|
||||
- ✅ Publicação MQTT no broker
|
||||
- ✅ Integração ThingSpeak via Write API
|
||||
- ✅ Visualização de dados em gráficos
|
||||
- ✅ Testes de latência/estabilidade
|
||||
- ✅ Documentação técnica completa
|
||||
- ✅ Vídeo de demonstração
|
||||
|
||||
### Dashboards
|
||||
## Configuração Rápida
|
||||
|
||||
1. **Ubidots** (Cloud)
|
||||
- Device: `cozinha`
|
||||
- Histórico: 30+ dias
|
||||
- URL: https://ubidots.com
|
||||
### 1. Obter Credenciais ThingSpeak
|
||||
|
||||
2. **NodeRed** (Local)
|
||||
- URL: http://77.37.69.84:1880/dashboard/page1
|
||||
- Controle remoto de limiares via sliders
|
||||
Pegue suas credenciais do canal do Thingspeak no menu API Keys
|
||||
|
||||
|
||||
### 2. Atualizar Código
|
||||
|
||||
Edite [src/esp32-ntp-clock.ino](src/esp32-ntp-clock.ino):
|
||||
|
||||
```cpp
|
||||
// Linha ~35
|
||||
const unsigned long THINGSPEAK_CHANNEL_ID = SEU_CHANNEL_ID; // Substitua
|
||||
const char* THINGSPEAK_API_KEY = "SEU_API_KEY"; // Substitua
|
||||
```
|
||||
|
||||
### 3. Compilar e Enviar
|
||||
|
||||
```bash
|
||||
# Compilar com PlatformIO
|
||||
pio run
|
||||
|
||||
# Enviar para o ESP32
|
||||
pio run -t upload
|
||||
|
||||
# Monitorar logs
|
||||
pio device monitor --baud 115200
|
||||
```
|
||||
|
||||
## ThingSpeak Setup
|
||||
|
||||
### Criar Canal
|
||||
|
||||
1. Acesse https://thingspeak.com/channels
|
||||
2. **New Channel** com este formato:
|
||||
|
||||
| Field | Nome | Tipo | Unidade |
|
||||
|-------|------|------|---------|
|
||||
| 1 | `temperatura` | Float | °C |
|
||||
| 2 | `umidade` | Float | % |
|
||||
| 3 | `gas_adc` | Integer | ADC (0-1023) |
|
||||
| 4 | `alarme_status` | Integer | Enum (0-4) |
|
||||
|
||||
## Variáveis Publicadas
|
||||
|
||||
### MQTT (Tópico: `cozinha`)
|
||||
|
||||
```json
|
||||
{
|
||||
"tmp": 26.50, // °C
|
||||
"umi": 65.30, // %
|
||||
"gas": 912, // ADC
|
||||
"alarme": 0 // 0=NOMINAL, 1=GAS, 2=TEMP_ALTA, 3=UMIDADE_ALTA, 4=INCENDIO
|
||||
}
|
||||
```
|
||||
|
||||
### ThingSpeak Write API
|
||||
|
||||
```
|
||||
POST /update
|
||||
Parameters:
|
||||
api_key: [SEU_WRITE_API_KEY]
|
||||
field1: temperatura (°C)
|
||||
field2: umidade (%)
|
||||
field3: gas_adc (0-1023)
|
||||
field4: alarme_status (0-4)
|
||||
```
|
||||
|
||||
## Verificação de Dados
|
||||
|
||||
### Dashboard ThingSpeak
|
||||
|
||||
```bash
|
||||
# Abra no navegador:
|
||||
https://thingspeak.com/channels/SEU_CHANNEL_ID
|
||||
```
|
||||
|
||||
Você deverá ver:
|
||||
- 4 gráficos em tempo real
|
||||
- Histórico de dados
|
||||
- Últimas entradas
|
||||
|
||||
### MQTT (Linha de Comando)
|
||||
|
||||
```bash
|
||||
# Subscrever ao tópico
|
||||
mosquitto_sub -h 77.37.69.84 -t cozinha
|
||||
|
||||
# Resultado esperado:
|
||||
{"tmp": 26.50, "umi": 65.30, "gas": 912, "alarme": 0}
|
||||
{"tmp": 26.51, "umi": 65.29, "gas": 913, "alarme": 0}
|
||||
...
|
||||
```
|
||||
|
||||
## 🧪 Testes Implementados
|
||||
|
||||
### Teste 1: Validação de Credenciais
|
||||
```bash
|
||||
bash test_thingspeak.sh
|
||||
```
|
||||
Valida se Channel ID e API Key funcionam **antes** de enviar para o ESP32.
|
||||
|
||||
### Teste 2: Latência MQTT
|
||||
```bash
|
||||
bash test_mqtt_latency.sh
|
||||
```
|
||||
Mede tempo de entrega de mensagens (esperado: ~100-200ms).
|
||||
|
||||
### Teste 3: Logs do Device
|
||||
```bash
|
||||
pio device monitor --baud 115200 | grep ThingSpeak
|
||||
```
|
||||
Monitora sucesso/falha de cada publicação.
|
||||
|
||||
## Resultados Esperados
|
||||
|
||||
Após compilação bem-sucedida:
|
||||
|
||||
```
|
||||
[WiFi] Conectado!
|
||||
[MQTT] Conectado!
|
||||
[ThingSpeak] Inicializado
|
||||
[MQTT] Publicando: {"tmp": 26.50, "umi": 65.30, "gas": 912, "alarme": 0}
|
||||
[ThingSpeak] Dados enviados com sucesso
|
||||
```
|
||||
|
||||
**A cada 15 segundos:**
|
||||
- Nova leitura dos sensores
|
||||
- Publicação MQTT no broker
|
||||
- Envio para ThingSpeak via HTTP
|
||||
|
||||
## Arquivos do Projeto
|
||||
|
||||
```
|
||||
├── src/
|
||||
│ └── esp32-ntp-clock.ino # Código principal
|
||||
├── Relatorio/
|
||||
│ └── atividade3.qmd # Documentação formal (PDF)
|
||||
├── tst/
|
||||
│ └── test_mqtt_latency.sh # Teste de latência MQTT
|
||||
├── platformio.ini # Configuração PlatformIO
|
||||
├── README.md # Este arquivo
|
||||
└── test_thingspeak.sh # Script validação ThingSpeak
|
||||
```
|
||||
|
||||
## Links Úteis
|
||||
|
||||
- **ThingSpeak**: https://thingspeak.com/
|
||||
- **PlatformIO**: https://platformio.org/
|
||||
- **MQTT Broker**: mosquitto.amarojr.com
|
||||
- **NodeRed**: http://nodered.amarojr.com/dashboard/page1
|
||||
|
||||
## Documentação
|
||||
|
||||
Relatório técnico completo disponível em `Relatorio/relatorio.pdf` com:
|
||||
- Arquitetura de sistema
|
||||
- Fluxo de dados MQTT
|
||||
- Validação de testes
|
||||
- Guia de operação dos dashboards
|
||||
Para documentação formal completa, consulte:
|
||||
- [Relatório Técnico](Relatorio/relatorio.qmd)
|
||||
|
||||
## Compilando
|
||||
## Vídeo Demonstração
|
||||
|
||||
Utilizei o [PlatformIO](https://platformio.org). Para compilar:
|
||||
Video postado no [youtube](https://youtu.be/8xOyGy04oZo)
|
||||
|
||||
```
|
||||
pio run
|
||||
```
|
||||
---
|
||||
|
||||
**Status**: Operacional
|
||||
**Versão**: 3.0
|
||||
**Última atualização**: 2026-02-19
|
||||
**Autor**: Amaro Lopes
|
||||
|
||||
## Simulação
|
||||
|
||||
|
||||
Reference in New Issue
Block a user