Índice:
Vídeo: Estação de monitoramento de partículas de poeira alimentada por Arduino: 4 etapas (com fotos)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
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
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
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
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:
Estação meteorológica NaTaLia: Estação meteorológica com energia solar Arduino Feito da maneira certa: 8 etapas (com fotos)
Estação meteorológica de NaTaLia: Estação meteorológica com energia solar Arduino feito da maneira certa: após 1 ano de operação bem-sucedida em 2 locais diferentes, estou compartilhando meus planos de projeto de estação meteorológica movida a energia solar e explicando como ela evoluiu para um sistema que pode realmente sobreviver por muito tempo períodos de energia solar. Se você seguir
Estação meteorológica DIY e estação de sensor WiFi: 7 etapas (com fotos)
Estação meteorológica DIY e estação de sensor WiFi: Neste projeto, vou mostrar como criar uma estação meteorológica juntamente com uma estação de sensor WiFi. A estação sensora mede os dados locais de temperatura e umidade e os envia, via WiFi, para a estação meteorológica. A estação meteorológica exibe então t
Sistema de monitoramento da qualidade do ar para poluição por partículas: 4 etapas
Sistema de Monitoramento da Qualidade do Ar para Poluição por Partículas: INTRO: 1 Neste projeto eu mostro como construir um detector de partículas com display de dados, backup de dados em cartão SD e IOT. Visualmente, um display de anel de neopixels indica a qualidade do ar. 2 A qualidade do ar é uma preocupação cada vez mais importante t
Ultimate Dry Ice Fog Machine - controlada por Bluetooth, alimentada por bateria e impressa em 3D: 22 etapas (com fotos)
Ultimate Dry Ice Fog Machine - Bluetooth controlada, alimentada por bateria e impressa em 3D: Recentemente, precisei de uma máquina de Dry Ice para alguns efeitos teatrais de um show local. Nosso orçamento não se estenderia para a contratação de um profissional, então foi isso que eu construí. É principalmente impresso em 3D, controlado remotamente via bluetooth, bateria powere
Estação meteorológica Pocket ESP8266 [No ThingsSpeak] [alimentada por bateria]: 11 etapas
Estação meteorológica Pocket ESP8266 [Sem ThingsSpeak] [alimentada por bateria]: Uma estação meteorológica de bolso especialmente criada para os geeks de tecnologia sentados lá fora e observando meu instrutor. Então, deixe-me contar a você sobre esta estação meteorológica de bolso. Principalmente este relógio de bolso tem um cérebro ESP8266 e funciona com bateria, pois é H