Obsah:

Stanice pro sledování částic prachu poháněných Arduinem: 4 kroky (s obrázky)
Stanice pro sledování částic prachu poháněných Arduinem: 4 kroky (s obrázky)

Video: Stanice pro sledování částic prachu poháněných Arduinem: 4 kroky (s obrázky)

Video: Stanice pro sledování částic prachu poháněných Arduinem: 4 kroky (s obrázky)
Video: (Kdy) skončí auta se spalovacími motory? Elektromobily: hrozba, nebo příležitost pro průmysl? 2024, Prosinec
Anonim
Stanice pro monitorování prachových částic poháněná Arduinem
Stanice pro monitorování prachových částic poháněná Arduinem

Poměrně snadno si můžete vytvořit vlastní zařízení pro internet věcí, které monitoruje znečištění prachem ve vašem domě za méně než 50 USD, a budete upozorněni, když se úroveň prachu zvýší příliš vysoko, takže můžete místnost provzdušnit, nebo ji můžete nastavit venku a dostat oznámení, pokud je pokud žijete ve vysoce znečištěné oblasti, můžete jít bezpečně ven.

Udělal jsem to jako školní projekt, takže jsem neměl dost času najít službu, která bude přijímat zprávy MQTT a posílat vám je jako oznámení nebo e -maily.

Pamatujte také na to, že udržování senzoru stále v provozu sníží životnost ventilátoru.

Krok 1: Potřebné součásti

Potřebné díly
Potřebné díly

Co budete potřebovat

  • Arduino Uno
  • Ethernetový štít Arduino
  • Laserový senzor pevných částic (obvykle stojí 10 až 30 USD na eBay/aliexpress)
  • Čidlo teploty a vlhkosti DHT11 (volitelně)
  • Prkénko
  • Propojovací kabely

Krok 2: Sestavte díly

Sestavte díly
Sestavte díly

Nejprve musíte připojit ethernetový štít na Arduino

Senzor PM má více vodičů, ale potřebujeme VCC, GND, TX, RX.

Připojte VCC a GND k + a - na prkénku.

Arduino má hardwarové piny RX a TX, ale použijeme softwarovou emulaci pinů RX a TX na pinech 2 a 3. Připojte RX senzoru k TX Arduina a TX senzoru k RX Arduina.

Pokud budete používat teplotní čidlo, připojte vedení VCC a GND k + a - na Breadboardu a datový řádek ke kolíku 7.

Krok 3: Kód

Můžete buď nainstalovat brokera MQTT na Raspberry Pi nebo na počítač, který máte vždy doma, nebo použít cloudovou službu MQTT, jako je Cloud MQTT. Poté můžete napsat skript, který data odešle jako HTTP do webhooku IFTT, protože ještě nepodporují webhooky MQTT, a nastavíte oznámení, když se úroveň prachu ve vaší domácnosti příliš zvýší.

Letecká stanice Arduino

#zahrnout

#zahrnout
#zahrnout
#zahrnout
#zahrnout
#zahrnout

#zahrnout

#zahrnout
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IP adresa 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"; // Klientská připojení nemohou mít stejný název připojení
Ethernetový klient ethClient;
Klient PubSubClient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
nepodepsané id;
// Soubor myFile;
Řetězec s;
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 ("Nepodařilo se konfigurovat ethernet pomocí DHCP");
// pokus s pevnou IP adresou
Ethernet.begin (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (zpětné volání);
zpoždění (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;
char hodnota;
char previousValue;
if (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("připojeno");
}
}
while (pmSerial.available ()) {
hodnota = pmSerial.read ();
if ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) {
Serial.println ("Nelze najít záhlaví dat.");
vrátit se;
}
if (index == 4 || index == 6 || index == 8 || index == 10 || index == 12 || index == 14) {
previousValue = hodnota;
}
elseif (index == 5) {
pm1 = 256 * previousValue + hodnota;
root ["pm1"] = abs (pm1);
}
elseif (index == 7) {
pm2_5 = 256 * previousValue + hodnota;
root ["pm2_5"] = abs (pm2_5);
}
elseif (index == 9) {
pm10 = 256 * previousValue + hodnota;
root ["pm10"] = abs (pm10);
}
elseif (index> 15) {
přestávka;
}
index ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
if (DHT.temperature == -999 || DHT.humidity == -999) {
root ["teplota"] = "N/A";
root ["vlhkost"] = "N/A";
} else {
root ["teplota"] = DHT.teplota;
root ["vlhkost"] = DHT.vlhkost;
}
sendResults ();
id ++;
zpoždění (5000);
}
voidsendResults () {
// publikovat na MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// ladění na seriál
root.printTo (sériové);
Serial.print ('\ n');
}
// Zpracovává zprávy přijaté na předplatená témata
voidcallback (char* topic, byte* užitečné zatížení, délka bez znaménka) {
}

zobrazit rawair_quality.ino hostované s ❤ od GitHub

Krok 4: Sestavte krabici

Sestavte krabici
Sestavte krabici
Sestavte krabici
Sestavte krabici
Sestavte krabici
Sestavte krabici

Právě jsem použil pole, ve kterém jsem ležel, a vyvrtal otvor pro senzor, aby se dostal vzduch, a vyřízl otvor, aby kabely mohly jít ven (i když to bylo trochu příliš velké).

Pomocí lepicích podložek jsem připevnil senzor k krabici a zarovnal vstupní otvor snímače s vyvrtaným otvorem na krabici.

Nakonec jsem zapojil ethernetové a napájecí kabely.

Doporučuje: