Índice:

Estação de monitoramento de partículas de poeira alimentada por Arduino: 4 etapas (com fotos)
Estação de monitoramento de partículas de poeira alimentada por Arduino: 4 etapas (com fotos)

Vídeo: Estação de monitoramento de partículas de poeira alimentada por Arduino: 4 etapas (com fotos)

Vídeo: Estação de monitoramento de partículas de poeira alimentada por Arduino: 4 etapas (com fotos)
Vídeo: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Novembro
Anonim
Estação de monitoramento de partículas de poeira alimentada por Arduino
Estação de monitoramento de partículas de poeira alimentada por Arduino

Você pode facilmente construir um dispositivo DIY de coisas que monitora a poluição de poeira em sua casa por menos de US $ 50 e ser notificado quando o nível de poeira ficar muito alto para que você possa arejar o ambiente, ou você pode colocá-lo do lado de fora e ser notificado se estiver seguro sair de casa se você mora em uma área altamente poluída.

Fiz isso como um projeto escolar, então não tive tempo suficiente para encontrar um serviço que pegará mensagens MQTT e as enviará para você como notificações ou e-mails.

Observe também que manter o sensor ligado o tempo todo reduzirá a vida útil do ventilador.

Etapa 1: peças necessárias

Peças necessárias
Peças necessárias

O que você precisará

  • Arduino Uno
  • Escudo Ethernet Arduino
  • Sensor a laser de material particulado (geralmente custa US $ 10 a US $ 30 no eBay / aliexpress)
  • Sensor de temperatura e umidade DHT11 (opcional)
  • Tábua de pão
  • Cabos jumper

Etapa 2: montar as peças

Monte as peças
Monte as peças

Primeiro, você precisa conectar o escudo Ethernet no Arduino

O sensor PM tem vários fios, mas os que precisamos são VCC, GND, TX, RX.

Conecte o VCC e o GND a + e - na placa de ensaio, respectivamente.

O Arduino tem pinos RX e TX de hardware, mas usaremos emulação de software dos pinos RX e TX nos pinos 2 e 3, respectivamente. Conecte o RX do sensor ao TX do Arduino e o TX do sensor ao RX do Arduino.

Se você for usar o sensor de temperatura, conecte as linhas VCC e GND a + e - na placa de ensaio e a linha de dados ao pino 7.

Etapa 3: O Código

Você pode instalar o corretor MQTT em um raspberry pi ou em um computador que está sempre ligado em casa, ou usar um serviço MQTT em nuvem, como o Cloud MQTT. Em seguida, você pode escrever um script que envia os dados como HTTP para um webhook IFTT, pois eles ainda não suportam webhooks MQTT e configurar notificações para quando os níveis de poeira em sua casa ficarem muito altos.

Estação aérea Arduino

#incluir

#incluir
#incluir
#incluir
#incluir
#incluir

#incluir

#incluir
# defineDHT11_PIN7
# defineRX_PIN2
# defineTX_PIN3
Endereço IP ip (169, 169, 100, 98);
byte mac = {
0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
};
constchar * mqtt_server = "m23.cloudmqtt.com";
constint mqtt_port = 11895;
constchar * mqtt_user = "jhetjewk";
constchar * mqtt_pass = "QB2p9PiMV6pn";
constchar * mqtt_client_name = "arduinoClient1"; // As conexões do cliente não podem ter o mesmo nome de conexão
EthernetClient ethClient;
Cliente PubSubClient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
id sem sinal longo;
// Arquivo meuArquivo;
Cordas;
StaticJsonBuffer <200> jsonBuffer;
JsonObject & root = jsonBuffer.createObject ();
voidsetup () {
Serial.begin (57600);
pmSerial.begin (9600);
id = 0;
pm1 = 0;
pm2_5 = 0;
pm10 = 0;
if (Ethernet.begin (mac) == 0)
{
Serial.println ("Falha ao configurar Ethernet usando DHCP");
// tentativa com endereço de ip fixo
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (callback);
atraso (2000);
Serial.println (Ethernet.localIP ());
client.connect ("arduinoClient", mqtt_user, mqtt_pass);
Serial.print ("rc =");
Serial.print (client.state ());
Serial.print ("\ n");
}
voidloop () {
intindex = 0;
valor char;
char previousValue;
if (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("conectado");
}
}
while (pmSerial.available ()) {
valor = pmSerial.read ();
if ((índice == 0 && valor! = 0x42) || (índice == 1 && valor! = 0x4d)) {
Serial.println ("Não é possível encontrar o cabeçalho dos dados.");
Retorna;
}
if (índice == 4 || índice == 6 || índice == 8 || índice == 10 || índice == 12 || índice == 14) {
previousValue = value;
}
elseif (índice == 5) {
pm1 = 256 * valor anterior + valor;
root ["pm1"] = abs (pm1);
}
elseif (índice == 7) {
pm2_5 = 256 * valor anterior + valor;
root ["pm2_5"] = abs (pm2_5);
}
elseif (índice == 9) {
pm10 = 256 * valor anterior + valor;
raiz ["pm10"] = abs (pm10);
}
elseif (índice> 15) {
pausa;
}
index ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
if (DHT.temperature == -999 || DHT.umidity == -999) {
raiz ["temperatura"] = "N / A";
raiz ["umidade"] = "N / A";
} outro {
root ["temperatura"] = DHT.temperatura;
raiz ["umidade"] = DHT.umidade;
}
sendResults ();
id ++;
atraso (5000);
}
voidsendResults () {
// publicar no MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// depurar para serial
root.printTo (Serial);
Serial.print ('\ n');
}
// Lida com mensagens recebidas em tópicos assinados
voidcallback (char * topic, byte * payload, unsignedint length) {
}

veja rawair_quality.ino hospedado com ❤ por GitHub

Etapa 4: montar a caixa

Monte a caixa
Monte a caixa
Monte a caixa
Monte a caixa
Monte a caixa
Monte a caixa

Eu apenas usei uma caixa que eu tinha largado e fiz um buraco para o sensor tirar o ar e cortei um buraco para os cabos saírem (embora fosse um pouco grande).

Usei almofadas de cola para prender o sensor à caixa, alinhando o orifício de entrada do sensor com o orifício perfurado na caixa.

Finalmente, conectei os cabos Ethernet e de alimentação.

Recomendado: