Kazalo:
Video: Arduino napajalna postaja za prašne delce: 4 koraki (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
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
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
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
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:
Vremenska postaja NaTaLia: Vremenska postaja Arduino s sončno energijo Na pravi poti: 8 korakov (s slikami)
Vremenska postaja NaTaLia: Vremenska postaja na sončni pogon Arduino je ravnala pravilno: Po enem letu uspešnega delovanja na dveh različnih lokacijah delim svoje načrte projektov vremenskih postaj na sončno energijo in razložim, kako se je razvila v sistem, ki lahko resnično preživi dolgo časa obdobja iz sončne energije. Če sledite
Vremenska postaja in senzorska postaja DIY: 7 korakov (s slikami)
Vremenska postaja in senzorska postaja DIY: V tem projektu vam bom pokazal, kako skupaj s senzorsko postajo WiFi ustvariti vremensko postajo. Senzorska postaja meri lokalne podatke o temperaturi in vlažnosti ter jih prek WiFi pošlje vremenski postaji. Vremenska postaja nato prikaže t
Ultimate Electronics Helper -- Napajalna enota za spremenljivo mizo s pomočjo rok: 12 korakov (s slikami)
Ultimate Electronics Helper || Napajalnik s spremenljivo namizno ploščo s pomočjo: Pri delu z elektroniko sta skoraj vedno potrebni dve orodji. Danes bomo ustvarili ta dva bistvena elementa. Naredili bomo še korak dlje in združili oba skupaj v vrhunskega elektronskega pomočnika! Seveda govorim o
Sirena za oddaljene delce: 3 koraki
Sirena za oddaljene delce: Imam kamere, ki opazujejo moje živali in jim preprečujejo, da bi delale poredne stvari, kot je pokvarjanje cvetličnih vrtov ali beg pred ograjo. Tekanje zunaj, da bi ustavili katero koli od teh stvari vsakič, ko se pojavijo, je lahko precej nadležno, zlasti zdaj v
Popravljanje osnovne težave s trdo opremo računalnika (okvara sistemskega diska in zlomljena napajalna enota ter manjkajoče/poškodovane datoteke): 4 koraki
Popravljanje osnovne težave s trdo opremo računalnika (okvara sistemskega diska in zlomljena napajalna enota ter manjkajoče/poškodovane datoteke): TA VODIČ NI ŠE KONČAN, BOM DODAJAL VEČ INFORMACIJ, KAD BAM DOBIO ŠANSO. Če potrebujete pomoč pri popravljanju računalnika ali če če imate kakršna koli vprašanja, mi pišite " v tem navodilu vam bom povedal, kako popraviti osnovno