Kazalo:

Arduino napajalna postaja za prašne delce: 4 koraki (s slikami)
Arduino napajalna postaja za prašne delce: 4 koraki (s slikami)

Video: Arduino napajalna postaja za prašne delce: 4 koraki (s slikami)

Video: Arduino napajalna postaja za prašne delce: 4 koraki (s slikami)
Video: Review of Turmera 4S 12.8V 200A BMS Lithium LiFePo4 Battery Management System | WattHour 2024, Julij
Anonim
Arduino napajalna postaja za prašne delce
Arduino napajalna postaja za prašne delce

Dokaj preprosto lahko zgradite napravo za internetne stvari DIY, ki spremlja onesnaženost s prahom v vašem domu za manj kot 50 USD in vas obvesti, ko raven prahu postane previsoka, da lahko prezračite sobo, ali pa jo nastavite zunaj in prejemate obvestila, če je varno iti ven, če živite na zelo onesnaženem območju.

To sem naredil kot šolski projekt, zato nisem imel dovolj časa, da bi našel storitev, ki bo sprejemala sporočila MQTT in vam jih pošiljala kot obvestila ali e -poštna sporočila.

Upoštevajte tudi, da bo ves čas delovanja senzorja skrajšal življenjsko dobo ventilatorja.

Korak: Potrebni deli

Potrebni deli
Potrebni deli

Kar boste potrebovali

  • Arduino Uno
  • Arduino Ethernet ščit
  • Laserski senzor za trdne delce (običajno na eBayu/aliexpressu za 10 do 30 USD)
  • Senzor temperature in vlažnosti DHT11 (neobvezno)
  • Ogledna plošča
  • Mostični kabli

2. korak: Sestavite dele

Sestavite dele
Sestavite dele

Najprej morate priključiti ethernetni ščit na Arduino

Senzor PM ima več žic, vendar potrebujemo VCC, GND, TX, RX.

VCC in GND priključite na + in - na matični plošči.

Arduino ima strojne zatiče RX in TX, vendar bomo uporabili programsko emulacijo zatičev RX in TX na nožicah 2 oziroma 3. Priključite RX senzorja na TX Arduina in TX senzorja na RX Arduina.

Če boste uporabljali temperaturni senzor, priključite vodi VCC in GND na + in - na ploščici, podatkovno vrstico pa na pin 7.

3. korak: Koda

Posrednik MQTT lahko namestite na malino pi ali računalnik, ki ga imate vedno doma, ali uporabite storitev MQTT v oblaku, na primer Cloud MQTT. Nato lahko napišete skript, ki podatke pošlje kot HTTP na spletno kljuko IFTT, saj še ne podpirajo spletnih kljuk MQTT in nastavi obvestila, ko se raven prahu v vašem domu poveča.

Letalska postaja Arduino

#vključi
#vključi
#vključi
#vključi
#vključi
#vključi

#vključi

#vključi
#defineDHT11_PIN7
#defineRX_PIN2
#defineTX_PIN3
IP -naslov ip (169, 169, 100, 98);
bajt 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"; // Odjemalčeve povezave ne morejo imeti istega imena povezave
EthernetClient ethClient;
Odjemalec PubSubClient (ethClient);
SoftwareSerial pmSerial (RX_PIN, TX_PIN);
dht DHT;
int pm1;
int pm2_5;
int pm10;
unsignedlong id;
// Datoteka myFile;
Nizi 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 ("Konfiguriranje etherneta z uporabo DHCP ni uspelo");
// poskus s fiksnim ip addr
Ethernet.začetek (mac, ip);
}
client.setServer (mqtt_server, mqtt_port);
client.setCallback (povratni klic);
zamuda (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;
vrednost char;
char previousValue;
if (! client.connected ())
{
if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) {
Serial.println ("povezan");
}
}
medtem ko (pmSerial.available ()) {
vrednost = pmSerial.read ();
if ((indeks == 0 && vrednost! = 0x42) || (indeks == 1 && vrednost! = 0x4d)) {
Serial.println ("Ni mogoče najti glave podatkov.");
vrnitev;
}
if (indeks == 4 || indeks == 6 || indeks == 8 || indeks == 10 || indeks == 12 || indeks == 14) {
previousValue = vrednost;
}
elseif (indeks == 5) {
pm1 = 256 * prejšnjaVrednost + vrednost;
root ["pm1"] = abs (pm1);
}
elseif (indeks == 7) {
pm2_5 = 256 * prejšnjaVrednost + vrednost;
root ["pm2_5"] = abs (pm2_5);
}
elseif (indeks == 9) {
pm10 = 256 * prejšnjaVrednost + vrednost;
root ["pm10"] = abs (pm10);
}
elseif (indeks> 15) {
prekiniti;
}
indeks ++;
}
while (pmSerial.available ()) pmSerial.read ();
int chk = DHT.read11 (DHT11_PIN);
if (DHT.temperature == -999 || DHT.humidity == -999) {
root ["temperatura"] = "N/A";
root ["vlažnost"] = "N/A";
} drugo {
koren ["temperatura"] = temperatura DHT;
root ["vlažnost"] = DHT.vlažnost;
}
sendResults ();
id ++;
zamuda (5000);
}
voidsendResults () {
// objavi v MQTT
char jsonChar [100];
root.printTo (jsonChar);
Serial.println (client.publish ("arduino", jsonChar));
// odpravljanje napak v serijo
root.printTo (serijski);
Serial.print ('\ n');
}
// Obravnava prispela sporočila o naročenih temah
voidcallback (char* tema, bajt* koristna obremenitev, dolžina brez podpisa) {
}

oglejte si rawair_quality.ino, ki ga gosti ❤ GitHub

4. korak: Sestavite škatlo

Sestavite škatlo
Sestavite škatlo
Sestavite škatlo
Sestavite škatlo
Sestavite škatlo
Sestavite škatlo

Pravkar sem uporabil škatlo, ki sem jo imel naokoli, in izvrtal luknjo za senzor, iz katere je prišel zrak, in izrezal luknjo za izhod kablov (čeprav je bila nekoliko prevelika).

Za pritrditev senzorja na škatlo sem uporabil lepilne blazinice in poravnal vhodno luknjo senzorja z izvrtano luknjo na škatli.

Nazadnje sem priključil ethernet in napajalne kable.

Priporočena: