Բովանդակություն:

DHT11/DHT22 տվիչի ամպին միացում ESP8266- ի վրա հիմնված տախտակի միջոցով. 9 քայլ
DHT11/DHT22 տվիչի ամպին միացում ESP8266- ի վրա հիմնված տախտակի միջոցով. 9 քայլ

Video: DHT11/DHT22 տվիչի ամպին միացում ESP8266- ի վրա հիմնված տախտակի միջոցով. 9 քայլ

Video: DHT11/DHT22 տվիչի ամպին միացում ESP8266- ի վրա հիմնված տախտակի միջոցով. 9 քայլ
Video: КАК ИЗМЕРИТЬ ТЕМПЕРАТУРУ И ВЛАЖНОСТЬ. ДАТЧИКИ DHT11 И DHT22 [Уроки Ардуино #13] 2024, Հունիսի
Anonim
DHT11/DHT22 տվիչի միացում ամպին ESP8266- ի վրա հիմնված տախտակով
DHT11/DHT22 տվիչի միացում ամպին ESP8266- ի վրա հիմնված տախտակով

Նախորդ հոդվածում ես ESP8266- ի վրա հիմնված NodeMCU խորհուրդը միացրեցի Cloud4RPi ծառայությանը: Հիմա, իսկական նախագծի ժամանակն է:

Պարագաներ

Սարքավորման պահանջներ.

  • ESP8266 չիպի վրա հիմնված ցանկացած տախտակ (օրինակ ՝ NodeMCU)
  • DHT11 կամ DHT22 սենսոր

Softwareրագրային ապահովում և ծառայություններ.

  • DHT տվիչների գրադարան Adafruit - v1.3.7
  • Adafruit Unified Sensor - v1.0.3
  • cloud4rpi-esp-arduino-v0.1.0
  • Cloud4RPI - IoT սարքերի ամպի կառավարման վահանակ
  • PlatformIO IDE VSCode- ի համար

Քայլ 1: Չափել ջերմաստիճանը և խոնավությունը

Չափել ջերմաստիճանը և խոնավությունը
Չափել ջերմաստիճանը և խոնավությունը

Ես արդեն ունեի DHT11 սենսոր, ուստի որոշեցի այն օգտագործել ջերմաստիճանի և խոնավության չափման համար: Եկեք ընտրենք Arduino գրադարան ՝ սենսորների տվյալները կարդալու համար:

Arduino գրանցամատյանը պարունակում է մի քանի գրադարաններ, որոնցից ես ընտրել եմ ամենահայտնին:

Ըստ նրանց GitHub շտեմարանի, մեզանից պահանջվում է նաև ավելացնել Adafruit Unified Sensor փաթեթ:

Քայլ 2: Ստեղծեք և կազմաձևեք նախագիծ

Ստեղծեք և կազմաձևեք նախագիծ
Ստեղծեք և կազմաձևեք նախագիծ

Ես արդեն նկարագրել եմ, թե ինչպես ստեղծել PlatformIO նախագիծ և տեղադրել գրադարաններ առաջին մասում: Իմ նախագիծը կոչվում է «MyNodeMCU»: Կառուցվածքը ներկայացված է վերևում:

Այս նախագիծը փոքր-ինչ փոփոխված Cloud4RPi օրինակ է: Ես որոշեցի սարքի նշանը և Wi-Fi- ի հավատարմագրերը կոդի փոխարեն պահել կազմաձևման ֆայլում:

Platform.io ֆայլը հետևյալ տեսքն ունի.

[platformio] default_envs = nodemcuv2 [env: nodemcuv2] հարթակ = espressif8266 շրջանակ = arduino տախտակ = nodemcuv2

Քայլ 3: Տեղադրեք գրադարաններ

Տեղադրեք գրադարաններ
Տեղադրեք գրադարաններ

Գրադարանների տեղադրումը բավականին պարզ է: Դուք կարող եք դա անել IDE- ի գրաֆիկական ինտերֆեյսից, կամ անհրաժեշտ գրադարանների անուններ ավելացնելով platform.io ֆայլի lib_deps բաժնում ՝

; … Lib_deps = cloud4rpi -esp -arduino Adafruit Unified Sensor DHT սենսորների գրադարան build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DWBU_IDW _ = SUR_WID = " D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"

Ավելացված գրադարանները ինքնաբերաբար կտեղադրվեն ծրագրի ենթապանակում:

Main.cpp վերնագիրն ունի հետևյալ տեսքը.

#ներառել #ներառել #ներառել #ներառել «DHT.h»

Քայլ 4. Միացրեք DHT11 տվիչ

Adafruit- ը տրամադրում է DHTtester.ino սենսորային միացման օրինակ:

Այս ծածկագիրը նախաստորագրում է սենսորը և սահմանում չափման արդյունքը պահելու կառուցվածքը (հաջողության դեպքում).

#սահմանել DHTPIN 2 // DHT սենսորին միացված թվային քորոց#սահմանել DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; բոց t; }; DHT_Result dhtResult;

Հաջորդ գործառույթը ցույց է տալիս, թե ինչպես կարդալ տվիչների տվյալները և դրանք պահել վերը նկարագրված տվյալների կառուցվածքում

void readSensors () {float h = dht.readHumidity (); // Կարդացեք ջերմաստիճանը որպես Celsius (կանխադրված) float t = dht.readTemperature ();

// Ստուգեք, եթե որևէ ընթերցում ձախողվեց և դուրս եկեք

if (isnan (h) || isnan (t)) {Serial.println (F ("Չհաջողվեց կարդալ DHT սենսորից!")); վերադարձ; } dhtResult.h = h; dhtResult.t = t; }

Քայլ 5: Տվյալների ուղարկում ամպին

Երբ մենք ունենանք այդ տվյալները, հաջորդ քայլն այն ուղարկելն է Cloud4RPi ծառայությանը:

Cloud4RPi for Arduino էջը նկարագրում է գրադարանի API- ն, որը մի շարք մեթոդներ են, որոնք օգտագործվում են.

  • ստեղծել, կարդալ և թարմացնել փոփոխականներ,
  • MQTT արձանագրության միջոցով փոփոխական արժեքներ ուղարկեք ամպի մեջ:

Գրադարանը ապահովում է երեք փոփոխական տեսակ ՝ Bool, Numeric և String:

Գրադարանի աշխատանքի ընթացքը սկսվում է սարքի նշանի միջոցով cloud4rpi.io կայքից API- ի օրինակ ստեղծելով (մանրամասների համար տե՛ս հոդվածի 1 -ին մասը):

#եթե սահմանված է (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #այլ Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #էնդիֆ

Այնուհետև հայտարարեք փոփոխականներ DHT11 ընթերցումների համար.

c4r.declareNumericVariable («DHT11_Temp»); c4r.declareNumericVariable («DHT11_Hum»);

Այնուհետև տվեք տվյալները սենսորից, պահեք դրանք փոփոխականների մեջ և տվյալները հրապարակեք Cloud4RPi- ում.

c4r.setVariable («DHT11_Temp», dhtResult.t); c4r.setVariable («DHT11_Hum», dhtResult.h); c4r.publishData ();

Temերմաստիճանը եւ խոնավությունը արագ չեն փոխվում, ուստի 5 րոպեում մեկից ավելի արժեք ուղարկելը չի պահանջվում:

Քայլ 6: Ախտորոշում

Cloud4RPi- ն աջակցում է ախտորոշիչ տվյալները ՝ փոփոխական արժեքների հետ միասին: Որպես ախտորոշիչ տվյալներ ես օգտագործել եմ ժամանակի ռեժիմը, Wi-Fi ազդանշանի ուժգնությունը և IP հասցեն.

c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // WiFi ազդանշանի ուժգնություն c4r.declareDiagVariable («Uptime»);

Նշում. Միլլի ֆունկցիան, որն օգտագործում եմ, ժամանակի վերականգնումը զրոյական ստանալու համար ~ 50 օրը մեկ: Ինչն ավելի քան բավարար է իմ նախագծի համար:

Հետևյալ կոդը սահմանում է ախտորոշիչ փոփոխականների արժեքներ.

c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();

UptimeHumanReadable գործառույթը միլիվայրկյանները վերածում է հարմար ձևի.

Լարային uptimeHumanReadable (անստորագիր երկար միլիվայրկյաններ) {static char uptimeStr [32]; անստորագիր երկար վրկ = միլիվայրկյան / 1000; անստորագիր երկար րոպեներ = վրկ / 60; անստորագիր int ժամ = րոպե / 60; անստորագիր int օր = ժամ / 24; վրկ -= րոպե * 60; րոպե -= ժամ * 60; ժամ -= օր * 24; sprintf (uptimeStr, "%d օր%2.2d:%2.2d:%2.2d", (բայթ) օր, (բայթ) ժամ, (բայթ) րոպե, (բայթ) վրկ); վերադարձնել լարային (uptimeStr); }

Ֆունկցիան այսպիսի տող է թողնում 5 օր 10:23:14 ՝ տարօրինակ մեծ թվի փոխարեն:

Քայլ 7: Սկսեք և կարգաբերեք նախագիծը

Սկսեք և կարգաբերեք նախագիծը
Սկսեք և կարգաբերեք նախագիծը

Ստեղծված կոդը հավաքելուց և այն NodeMCU- ում բռնկելուց հետո սարքը միանում է ամպային ծառայությանը և սկսում տվյալների ուղարկում:

Դուք կարող եք բարձրացնել տեղեկամատյանների բազմախոսությունը ՝ CLOUD4RPI_DEBUG նախամշակող փոփոխականը սահմանելով 1 (ավելացնել -D CLOUD4RPI_DEBUG = 1 ՝ platform.io ֆայլում build_flags բաժինը):

Հաջորդը, բացեք cloud4rpi.io կայքը և առցանց նկատեք նոր սարքը: Բացեք այն ՝ սարքից ստացված բոլոր փոփոխական արժեքները ՝ սենսոր և ախտորոշում:

Քայլ 8: Վահանակի կազմաձևում

Վահանակի կազմաձևում
Վահանակի կազմաձևում

Այս քայլում տվյալների կապը ամպի հետ գործում է: Այժմ, եկեք կազմաձևենք տվյալների տեսողական ներկայացումը:

Ես օգտագործել եմ Dashboard- ի կազմաձևման UI- ն ՝ հետևյալ վահանակը ստեղծելու համար:

Վահանակը համօգտագործելի է, այնպես որ ես այն անմիջապես կիսում եմ իմ ընկերոջ հետ:

Քայլ 9: Եզրակացություն

Եզրակացություն
Եզրակացություն

Նախագծի ամբողջական ծածկագիրը հասանելի է հիմնական էջում:

Այսքանը առայժմ!

Հարցերն ու առաջարկությունները ողջունելի են մեկնաբանություններում:

Խորհուրդ ենք տալիս: