Բովանդակություն:
- Հեղինակ John Day [email protected].
- Public 2024-01-30 09:51.
- Վերջին փոփոխված 2025-01-23 14:48.
Դուք կարող եք բավականին հեշտությամբ սարքել սարքերի ինտերնետ, որը վերահսկում է ձեր տանը փոշու աղտոտվածությունը 50 դոլարից ցածր գնով և ծանուցվել, երբ փոշու մակարդակը չափազանց բարձր է, այնպես որ կարող եք օդափոխել սենյակը, կամ կարող եք այն դրսում դնել և տեղեկանալ, եթե դա անվտանգ է դուրս գալը, եթե ապրում եք խիստ աղտոտված տարածքում:
Ես դա արել եմ որպես դպրոցական նախագիծ, այնպես որ ես չունեի բավարար ժամանակ գտնելու ծառայություն, որը կվերցնի MQTT հաղորդագրությունները և դրանք կուղարկի ձեզ ծանուցումների կամ էլ.
Նաև նշեք, որ սենսորը մշտապես սնուցված պահելը կնվազեցնի երկրպագուի կյանքը:
Քայլ 1: Անհրաժեշտ մասեր
Այն, ինչ ձեզ հարկավոր կլինի
- Արդուինո Ունո
- Arduino Ethernet վահան
- Մանր մասնիկների լազերային սենսոր (սովորաբար eBay/aliexpress- ում վճարվում է $ 10-$ 30)
- DHT11 ջերմաստիճանի և խոնավության տվիչ (ըստ ցանկության)
- Breadboard
- Թռիչքային մալուխներ
Քայլ 2: Հավաքեք մասերը
Նախ, անհրաժեշտ է միացնել ethernet վահանը Arduino- ին
PM սենսորն ունի բազմաթիվ լարեր, բայց մեզ անհրաժեշտ են VCC, GND, TX, RX:
Միացրեք VCC- ն և GND- ը համապատասխանաբար + և - սեղանի վրա:
Arduino- ն ունի ապարատային RX և TX կապիչներ, բայց մենք կօգտագործենք համապատասխանաբար 2 և 3 կապում RX և TX կապերի ծրագրային նմանակում: Միացրեք սենսորի RX- ը Arduino- ի TX- ին և սենսորի TX- ը Arduino- ի RX- ին:
Եթե դուք պատրաստվում եք օգտագործել ջերմաստիճանի տվիչը, VCC և GND տողերը միացրեք + և - ին Breadboard- ի վրա և տվյալների տողը ՝ 7 -ի կապում:
Քայլ 3: Կոդ
Դուք կարող եք կամ տեղադրել MQTT բրոքեր ազնվամորու pi- ի կամ համակարգչի վրա, որը միշտ ունեք տանը, կամ օգտագործել ամպային MQTT ծառայություն, ինչպես Cloud MQTT- ը: Այնուհետև կարող եք գրել մի սցենար, որը տվյալները փոխանցում է որպես HTTP IFTT վեբհուք, քանի որ դրանք դեռ չեն աջակցում MQTT վեբ -բռնակներին և ծանուցումներ են ստեղծում, երբ ձեր տանը փոշու մակարդակը չափազանց բարձր է դառնում:
Արդուինո ավիաընկերություն
|
#ներառում |
| #ներառում |
| #ներառում |
| #ներառում |
| #ներառում |
| #ներառում |
|
#ներառում |
| #ներառում |
| #սահմանել DHT11_PIN7 |
| #սահմանելRX_PIN2 |
| #սահմանելTX_PIN3 |
| IPAddress ip (169, 169, 100, 98); |
| բայթ mac = { |
| 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 |
| }; |
| constchar *mqtt_server = "m23.cloudmqtt.com"; |
| սահմանափակում mqtt_port = 11895; |
| constchar *mqtt_user = "jhetjewk"; |
| constchar *mqtt_pass = "QB2p9PiMV6pn"; |
| constchar *mqtt_client_name = "arduinoClient1"; // Հաճախորդի կապերը չեն կարող ունենալ նույն կապի անունը |
| EthernetClient ethClient; |
| PubSubClient հաճախորդ (ethClient); |
| Softwareրագրային ապահովում Սերիա pmSerial (RX_PIN, TX_PIN); |
| dht DHT; |
| int pm1; |
| int pm2_5; |
| int pm10; |
| անստորագիր id; |
| // ֆայլ myFile; |
| Լարային s; |
| StaticJsonBuffer <200> jsonBuffer; |
| JsonObject & root = jsonBuffer.createObject (); |
| voidsetup () { |
| Serial.begin (57600); |
| pmSerial.begin (9600); |
| id = 0; |
| pm1 = 0; |
| pm2_5 = 0; |
| pm10 = 0; |
| եթե (Ethernet.begin (mac) == 0) |
| { |
| Serial.println ("Չհաջողվեց կարգավորել Ethernet- ը DHCP- ի միջոցով"); |
| // փորձ ՝ ֆիքսված ip հավելիչով |
| Ethernet.begin (mac, ip); |
| } |
| client.setServer (mqtt_server, mqtt_port); |
| client.setCallback (հետադարձ); |
| ուշացում (2000); |
| Serial.println (Ethernet.localIP ()); |
| client.connect ("arduinoClient", mqtt_user, mqtt_pass); |
| Serial.print ("rc ="); |
| Serial.print (client.state ()); |
| Serial.print ("\ n"); |
| } |
| voidloop () { |
| ինտինդեքս = 0; |
| char արժեքը; |
| char previousValue; |
| եթե (! client.connected ()) |
| { |
| if (client.connect ("arduinoClient", mqtt_user, mqtt_pass)) { |
| Serial.println («կապված»); |
| } |
| } |
| իսկ (pmSerial.available ()) { |
| արժեք = pmSerial.read (); |
| if ((index == 0 && value! = 0x42) || (index == 1 && value! = 0x4d)) { |
| Serial.println ("Հնարավոր չէ գտնել տվյալների վերնագիրը"); |
| վերադարձ; |
| } |
| եթե (ինդեքս == 4 || ինդեքս == 6 || ինդեքս == 8 || ինդեքս == 10 || ինդեքս == 12 || ցուցանիշ == 14) { |
| previousValue = արժեք; |
| } |
| elseif (ինդեքս == 5) { |
| pm1 = 256 * նախորդԱրժեք + արժեք; |
| արմատ ["pm1"] = abs (pm1); |
| } |
| elseif (ինդեքս == 7) { |
| pm2_5 = 256 * նախորդԱրժեք + արժեք; |
| արմատ ["pm2_5"] = abs (pm2_5); |
| } |
| elseif (ինդեքս == 9) { |
| pm10 = 256 * նախորդԱրժեք + արժեք; |
| արմատ ["pm10"] = abs (pm10); |
| } |
| elseif (ինդեքս> 15) { |
| ընդմիջում; |
| } |
| ցուցանիշ ++; |
| } |
| իսկ (pmSerial.available ()) pmSerial.read (); |
| int chk = DHT.read11 (DHT11_PIN); |
| եթե (DHT.temperature == -999 || DHT.humidity == -999) { |
| արմատ ["ջերմաստիճան"] = "Չ/Ա"; |
| արմատ ["խոնավություն"] = "Չ/Ա"; |
| } ուրիշ { |
| արմատ ["ջերմաստիճան"] = DHT.temperature; |
| արմատ ["խոնավություն"] = DHT. խոնավություն; |
| } |
| sendResults (); |
| id ++; |
| ուշացում (5000); |
| } |
| voidsendResults () { |
| // հրապարակել MQTT- ում |
| char jsonChar [100]; |
| root.printTo (jsonChar); |
| Serial.println (client.publish («arduino», jsonChar)); |
| // կարգաբերում դեպի սերիա |
| root.printTo (Սերիա); |
| Serial.print ('\ n'); |
| } |
| // Բռնում է բաժանորդագրված թեմայի (թեմաների) վերաբերյալ ստացված հաղորդագրությունները |
| voidcallback (char* թեմա, բայթ* բեռնվածություն, անստորագիր երկարություն) { |
| } |
դիտեք rawair_quality.ino- ն hosted -ի հետ հյուրընկալված GitHub- ի կողմից
Քայլ 4: Հավաքեք տուփը
Ես պարզապես օգտագործեցի մի տուփ, որի շուրջը պառկած էի և սենսորի համար անցք բացեցի, որպեսզի օդը դուրս գա, և մալուխների դուրս գալու համար անցք կտրեցի (չնայած այն մի փոքր չափազանց մեծ էր):
Օգտագործեցի սոսինձ բարձիկներ `սենսորը տուփին ամրացնելու համար, սենսորի մուտքի անցքը հավասարեցնելով տուփի վրա փորված անցքի հետ:
Ի վերջո, ես միացրեցի ethernet և հոսանքի մալուխները:
Խորհուրդ ենք տալիս:
Դյուրակիր մանր մասնիկների չափում. 4 քայլ (նկարներով)
Դյուրակիր մանր մասնիկների չափում. Այս նախագծի նպատակն է չափել օդի որակը `չափելով մանր մասնիկների քանակը: Իր դյուրատարության շնորհիվ հնարավոր կլինի չափումներ կատարել տանը կամ տեղաշարժվելիս: Օդի որակը և նուրբ մասնիկները. Մասնիկավոր նյութեր (
DIY եղանակային կայան և WiFi սենսորային կայան. 7 քայլ (նկարներով)
DIY եղանակային կայան և WiFi սենսորային կայան. Այս նախագծում ես ձեզ ցույց կտամ, թե ինչպես կարելի է եղանակային կայան ստեղծել WiFi սենսորային կայանի հետ միասին: Սենսորային կայանը չափում է տեղական ջերմաստիճանի և խոնավության տվյալները և այն WiFi- ի միջոցով ուղարկում է եղանակային կայանին: Օդերևութաբանական կայանն այնուհետև ցուցադրում է
Արևային մասնիկների անալիզատոր. 5 քայլ (նկարներով)
Արևային մասնիկների վերլուծիչ. Վերջերս ես մասնակցեցի Ալյասկայի Ֆերբենքս համաժողովին, որտեղ ածուխի տեղական ընկերությունը (Usibelli Coal Mine) հովանավորում էր նորարարներին `մտածելու օդի որակի բարելավման ուղիների մասին: Ակնհայտորեն հեգնական, բայց նաև իսկապես հիանալի: Կարծես հետազոտողը չէր
Arduino փոշու ուսումնասիրություն. 8 քայլ
Arduino փոշու ուսումնասիրություն. Ինչպիսի՞ն կլիներ ապրել Մարսի վրա: Օդը շնչո՞ւմ է: Արդյո՞ք դա անվտանգ է: Որքա՞ն փոշի կա: Որքա՞ն հաճախ են փոթորիկները: Երբևէ մտածե՞լ եք այս հարցերից որևէ մեկի պատասխանը:
Ինչպես կառուցել հարմարավետության մոնիտորինգի տվիչների կայան. 10 քայլ (նկարներով)
Ինչպես կառուցել հարմարավետության մոնիտորինգի սենսորային կայան. Այս հրահանգը նկարագրում է այսպես կոչված Comfort Monitoring Station CoMoS- ի նախագծումը և կառուցումը, շրջակա միջավայրի պայմանների համակցված սենսորային սարք, որը մշակվել է TUK- ի, Technische Universität Ka
