Monitoramento de Ar com ESP8266 e IoT: Guia Completo
Monitoramento de CO₂: DIY com IoT para Ambientes Internos
Por que monitorar CO₂?
Em ambientes fechados, níveis elevados de dióxido de carbono (acima de 1000 ppm) reduzem a produtividade, causam sonolência e aumentam riscos de transmissão de doenças. Este projeto combina IoT e sensoriamento para criar um sistema acessível que alerta quando a ventilação é necessária, integrando funcionalidades avançadas como controle de HVAC, notificações via Telegram e análise preditiva.
📋 Índice🔗
- Introdução e Relevância do Monitoramento
- Componentes Necessários
- Princípio de Funcionamento do Sensor NDIR
- Montagem do Circuito
Detector de fumaça com ESP8266 e alarme sonoroMonte um detector de fumaça inteligente com ESP8266 e MQ-2. Tutorial que ensina montagem, programação e integração IoT para sistemas residenciais.
- Programação do ESP8266
Monitor de nível de água com ESP8266 para reservatóriosAprenda a monitorar e gerenciar reservatórios com sensores, ESP8266 e integração IoT em aplicações agrícolas e residenciais, de forma prática e precisa.
- Calibração e Precisão
- Visualização de Dados em Tempo Real
- Aplicações Avançadas
- Manutenção e Boas Práticas
Introdução e Relevância do Monitoramento🔗
A concentração de CO₂ em ambientes internos serve como indicador crítico da qualidade do ar. Níveis acima de 1000 ppm comprometem o desempenho cognitivo, causam fadiga e aumentam a propagação de patógenos. O ESP8266Sistema de automação residencial com ESP8266 e controle de luzesEste tutorial aborda a implementação de automação residencial com ESP8266, destacando segurança, eficiência energética, integração MQTT e interface web., com sua conectividade Wi-Fi e baixo custo, permite a criação de sistemas IoT que integram sensoriamento, processamento local e transmissão de dados para plataformas cloud, oferecendo monitoramento contínuo e ações corretivas automatizadas.
🔧 Componentes Necessários🔗
Componente | Descrição |
---|---|
ESP8266 (NodeMCU) | Microcontrolador com Wi-Fi integrado para comunicação IoT |
Sensor MH-Z19B | Sensor NDIR de CO₂ (faixa: 0-5000 ppm, precisão ±50 ppm + 3% do valor) |
DHT22 | Sensor de temperatura e umidade (opcional para monitoramento ambiental) |
Display OLED 0.96" | Exibe dados locais (I²C) |
Protoboard e jumpers | Conexões temporárias |
Fonte 5V | Alimentação estável para o sensor e ESP8266 |
🔍 Princípio de Funcionamento do Sensor NDIR🔗
O MH-Z19B usa espectroscopia de infravermelho não dispersivo (NDIR). Moléculas de CO₂ absorvem luz IR em 4.2 µm. Quanto maior a concentração, maior a absorção, seguindo a Lei de Beer-Lambert:
- C: Concentração de CO₂ (ppm)
- I/I₀: Razão entre intensidade transmitida e incidente
- σ: Coeficiente de absorção do CO₂
- L: Caminho óptico (no MH-Z19B, 5 cm)
Tecnologias de Sensores:
- MH-Z19B: Ideal para DIY, com interface UART
Sistema de controle de acesso com ESP8266 e QR codeDescubra neste tutorial como integrar ESP8266, QR Code e sistemas criptografados, garantindo segurança e controle de acesso moderno./PWM.
- SCD30: Inclui medição de temperatura e umidade, porém com custo mais elevado.
🔌 Montagem do Circuito🔗
Diagrama de Conexões
Passos Críticos:
1. Use resistoresJogo interativo com ESP8266, botões e LEDsAprenda a desenvolver um jogo interativo com ESP8266, botões e LEDs. Integre eletrônica, programação embarcada e web para criar soluções IoT inovadoras. de pull-up (10kΩ) no barramento I²C do display.
2. Alimente o sensor com 5V para evitar leituras instáveis.
3. Para sensores 5V (como o MH-Z19B), utilize conversores de nível lógico se o ESP8266Sistema de automação residencial com ESP8266 e controle de luzesEste tutorial aborda a implementação de automação residencial com ESP8266, destacando segurança, eficiência energética, integração MQTT e interface web. operar em 3.3V.
💻 Programação do ESP8266🔗
Configuração Inicial
#include <SoftwareSerial.h>
#include <ESP8266WiFi.h>
#include <Adafruit_SSD1306.h>
// Configurações Wi-Fi
const char* ssid = "SUA_REDE";
const char* password = "SUA_SENHA";
SoftwareSerial co2Serial(3, 1); // RX (GPIO3), TX (GPIO1)
void setup() {
co2Serial.begin(9600);
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi Conectado! IP: " + WiFi.localIP().toString());
}
Leitura do Sensor MH-Z19B
byte cmd[9] = {0xFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};
byte response[9];
void readCO2() {
co2Serial.write(cmd, 9);
delay(100);
if (co2Serial.available() >= 9) {
co2Serial.readBytes(response, 9);
int ppm = (response[2] << 8) | response[3];
Serial.print("CO₂: "); Serial.print(ppm); Serial.println(" ppm");
// Exemplo: Envio para ThingSpeak
sendToCloud(ppm);
}
}
void sendToCloud(int ppm) {
WiFiClient client;
String url = "/update?api_key=SUA_CHAVE&field1=" + String(ppm);
client.connect("api.thingspeak.com", 80);
client.print("GET " + url + " HTTP/1.1\r\nHost: api.thingspeak.com\r\n\r\n");
}
🎯 Calibração e Precisão🔗
1. Calibração Automática (ABC):
Desative-a em ambientes onde o CO₂ não atinja 400 ppm naturalmente:
byte disableABC[] = {0xFF,0x01,0x79,0x00,0x00,0x00,0x00,0x00,0x86};
co2Serial.write(disableABC, 9);
2. Calibração Manual:
Expõe o sensor ao ar livre por 20 minutos e envie:
byte calibCmd[] = {0xFF,0x01,0x87,0x00,0x00,0x00,0x00,0x00,0x78};
co2Serial.write(calibCmd, 9);
Dica: Valide as leituras com um sensor de referência a cada 6 meses para detectar drift.
📊 Visualização de Dados em Tempo Real🔗
Opção 1: Plataforma IoT (ThingSpeak)
void sendToCloud(int ppm) {
// Código de envio HTTP (vide seção de programação)
}
Opção 2: Dashboard Local com Node-RED
1. Configure um broker MQTTSistema de controle de persianas automatizadas com ESP8266Descubra como automatizar persianas com ESP8266 em um guia prático, unindo eficiência energética, segurança e integração IoT para automação da sua casa. no ESP8266.
2. Crie um fluxo no Node-RED para plotar gráficos históricos e acionar alertas por e-mail acima de 1000 ppm.
Opção 3: Display OLED
Adafruit_SSD1306 display(128, 64, &Wire);
void showData(int ppm) {
display.clearDisplay();
display.setCursor(0,0);
display.print("CO₂: "); display.print(ppm); display.println(" ppm");
display.display();
}
🚀 Aplicações Avançadas🔗
Integração com HVAC
Controle exaustores via reléSistema de controle de bomba de água com ESP8266 para fontes decorativasAprenda a automatizar bombas de água usando ESP8266, com isolamento seguro, controle PID e integração IoT via web, MQTT e API para automação residencial. quando CO₂ > 800 ppm:
#define RELAY_PIN D6
void controlVentilation(int ppm) {
digitalWrite(RELAY_PIN, (ppm > 800) ? HIGH : LOW);
}
Notificações por Telegram
Use a biblioteca UniversalTelegramBot
:
#include <UniversalTelegramBot.h>
TelegramBot bot("SEU_TOKEN");
void sendAlert(int ppm) {
bot.sendMessage("CHAT_ID", "Alerta: CO₂ em " + String(ppm) + " ppm!");
}
Machine Learning no Edge
Preveja picos usando regressão linear:
float predictCO2(float temp, float humidity) {
return 0.65 * temp + 0.2 * humidity + 400; // Coeficientes ajustáveis
}
🔧 Manutenção e Boas Práticas🔗
- Posicionamento: Instale o sensor a 1,5 m do chão, longe de janelas e fontes de calor.
- Limpeza: Use ar comprimido mensalmente para remover poeira do caminho óptico.
- Atualizações: Monitore repositórios GitHub para otimizações de firmware.
- Redundância: Em ambientes críticos (ex: hospitais), combine múltiplos sensores via rede LoRa para redundância.
Dica Pro: Em escolas/escritórios, utilize algoritmos de clustering para identificar zonas de risco com base em dados espaciais de CO₂.
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- Documentação Wiki do ESP8266: github.com/esp8266/esp8266-wiki/wiki
- ESP8266.com Community Forum: www.esp8266.com/viewforum.php?f=5
- GitHub - ESP8266 Community: github.com/esp8266/Arduino
- Random Nerd Tutorials: randomnerdtutorials.com/projects-esp8266/
- Site Oficial da Espressif: www.espressif.com/en/products/socs/esp8266