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

Անլար ճնշման տվիչի տվյալների հրապարակումը MQTT- ի միջոցով. 7 քայլ
Անլար ճնշման տվիչի տվյալների հրապարակումը MQTT- ի միջոցով. 7 քայլ

Video: Անլար ճնշման տվիչի տվյալների հրապարակումը MQTT- ի միջոցով. 7 քայլ

Video: Անլար ճնշման տվիչի տվյալների հրապարակումը MQTT- ի միջոցով. 7 քայլ
Video: Scentroid's AQSafe Indoor Air Quality Monitor Seminar B 10.23.2020 (Subtitled) 2024, Նոյեմբեր
Anonim
Անլար ճնշման տվիչի տվյալների հրապարակումը MQTT- ի միջոցով
Անլար ճնշման տվիչի տվյալների հրապարակումը MQTT- ի միջոցով

ESP32 ևESP 8266- ը շատ ծանոթ SoC են IoT ոլորտում: Սրանք մի տեսակ բարիք են IoT նախագծերի համար: ESP 32 -ը սարք է `ինտեգրված WiFi- ով և BLE- ով: Պարզապես տվեք ձեր SSID- ի, գաղտնաբառի և IP- ի կազմաձևերը և իրերը միացրեք ամպի մեջ: Այստեղ, այս ուսանելի հատվածում, մենք կմտածենք IoT- ի որոշ հիմնական պայմանների մասին, ինչպիսիք են IoT հարթակը, MQTT, գերված պորտալները և այլն: Այսպիսով, եկեք անցնենք դրա միջով

  • IoT Architecture- ը շատ պարզ բառերով բաղկացած է ներդրված սարքից և IoT հարթակից `սարքը ամպի մեջ դնելու համար: Այստեղ մենք օգտագործում ենք UbiDots IoT հարթակը ՝ սենսորային տվյալները պատկերացնելու համար:
  • IP կարգավորումների և օգտագործողի հավատարմագրերի կառավարումը կարող է գլխացավանք լինել օգտվողի համար: Ի՞նչ անել, եթե Օգտատերը ցանկանում է փոխել WiFi- ի հավատարմագրերը: Ի՞նչ անել, եթե օգտագործողը ցանկանում է փոխել DHCP/Ստատիկ IP կարգավորումները: ESP32- ը ամեն անգամ թարթելը հուսալի չէ և նույնիսկ այդ խնդիրների լուծումը չէ: Այսպիսով, մենք կանցնենք գերության պորտալի միջոցով ՝ WiFi հավատարմագրերը և այլ կազմաձևերը պահպանելու համար:
  • MQTT- ն այժմ դառնում է շատ տարածված տերմին IoT աշխարհում: այն գերազանցել է Հրապարակման և բաժանորդագրվելու խնդրանքը և պատասխանները (HTTP) արագ, ամուր և նիհար ճարտարապետության պատճառով:

Ահա այս ուսանելի, մենք ցույց ենք տալու:

  • WiFi- ի և MQTT հավատարմագրերի տրամադրում ՝ գերված պորտալի միջոցով:
  • UbiDots- ի բազմաթիվ տվիչների տվյալների հրապարակում և բաժանորդագրում:
  • Անլար ճնշման և ջերմաստիճանի տվիչից տվիչների տվյալների ընթերցում
  • ESP32- ից վեբ ձևի ընդունում:
  • SPIFFS ESP32- ից կարդալ և գրել:

Քայլ 1: Սարքավորման և ծրագրակազմի բնութագրում

Սարքաշարի բնութագրում

  • ESP32 WiFi/BLE
  • Անլար ճնշման և ջերմաստիճանի տվիչ

Softwareրագրաշարի բնութագրում

  • Arduino IDE
  • XCTU
  • Labview կոմունալ

Քայլ 2: Անլար ճնշման և ջերմաստիճանի տվիչներ

Անլար ճնշման և ջերմաստիճանի տվիչներ
Անլար ճնշման և ջերմաստիճանի տվիչներ
Անլար ճնշման և ջերմաստիճանի տվիչներ
Անլար ճնշման և ջերմաստիճանի տվիչներ
Անլար ճնշման և ջերմաստիճանի տվիչներ
Անլար ճնշման և ջերմաստիճանի տվիչներ

Հատկություններ

  • Արդյունաբերական դասարանի սենսոր Երկար հեռավորության անլար ճնշման ջերմաստիճանի տվիչ
  • Գործողության միջակայք 0 -ից 14000 mbar -40 ° -ից +85 ° C (-40 ° -ից 185 ° F)
  • Կարգավորելի ներքին հաշվարկման ճնշման բանաձև 0.012 -ից մինչև 0.065 mbar
  • Կարգավորելի ներքին հաշվարկման ջերմաստիճանի լուծում 0.002 -ից 0.012 ° C
  • Uracyշգրտություն ± 2.5 mbar, ± 2 ° C
  • Բացարձակ ճնշում, հարաբերական ճնշում և հարաբերական բարձրության փոփոխության ելքեր
  • 2 մղոն հեռավորության տեսադաշտ ՝ բորտային ալեհավաքով
  • Մինչև 28 մղոն բարձրակարգ LOS միջակայք ՝ բարձր եկամուտ ունեցող ալեհավաքներով
  • Ինտերֆեյս Raspberry Pi, Microsoft® Azure®, Arduino և այլն
  • Անլար ցանցային ցանց ՝ օգտագործելով DigiMesh®

Անլար ճնշման և ջերմաստիճանի տվիչի կազմաձևում ՝ օգտագործելով Labview Utility և XCTU

Սենսորը աշխատում է երկու ռեժիմով

  • Կազմաձևման ռեժիմ. Կարգավորեք Pan ID- ն, հետաձգումը, կրկնումների քանակը և այլն: Այս մասին ավելին դուրս է այս հրահանգվողի շրջանակներից և կբացատրվի հաջորդ հրահանգում:
  • Գործարկման ռեժիմ. Մենք սարքը գործարկում ենք Run ռեժիմում: Եվ այս արժեքը վերլուծելու համար մենք օգտագործում ենք Labview կոմունալը

Այս Labview UI- ն ցույց է տալիս գեղեցիկ գրաֆիկների արժեքները: Այն ցույց է տալիս ինչպես ընթացիկ, այնպես էլ անցյալ արժեքները: Դուք կարող եք գնալ այս հղմանը ՝ Labview UI- ն ներբեռնելու համար: կտտացրեք «Գործարկել» պատկերակին վայրէջքի էջի ընտրացանկից ՝ գործարկման ռեժիմին անցնելու համար:

Քայլ 3: Միացում WiFi- ին

Միացում WiFi- ին
Միացում WiFi- ին
Միացում WiFi- ին
Միացում WiFi- ին

Մենք օգտագործում ենք գերված պորտալը `WiFi հավատարմագրերը պահպանելու և IP կարգավորումների միջոցով սավառնելու համար: Գերի ընկած պորտալում մանրամասն ծանոթանալու համար կարող եք անցնել հետևյալ ուսանելի:

Գերի ընկած պորտալը մեզ հնարավորություն է տալիս ընտրել ստատիկ և DHCP պարամետրերի միջև: Պարզապես մուտքագրեք հավատարմագրերը, ինչպիսիք են Static IP- ն, Subnet Mask- ը, gateway- ը և Wireless Sensor Gateway- ը կկարգավորվեն այդ IP- ում:

Տեղադրվում է մի վեբ էջ, որտեղ առկա WiFi ցանցերի և այնտեղ RSSI- ի ցուցակը: Ընտրեք WiFi ցանցը և գաղտնաբառը և մուտքագրեք ներկայացնել: Հավատարմագրերը կպահվեն EEPROM- ում, իսկ IP- ի կարգավորումը ՝ SPIFFS- ում: Այս մասին ավելին կարելի է գտնել այս հրահանգում:

Քայլ 4: UbiDots- ի տեղադրում ESP32- ում

UbiDots- ի կարգավորում ESP32- ում
UbiDots- ի կարգավորում ESP32- ում

Այստեղ մենք օգտագործում ենք անլար ճնշման և ջերմաստիճանի տվիչներ ESP 32 սարքով `ջերմաստիճանի և խոնավության տվյալները ստանալու համար: Մենք տվյալները ուղարկում ենք UbiDots ՝ օգտագործելով MQTT արձանագրությունը: MQTT- ն հետևում է հրապարակման և բաժանորդագրման մեխանիզմին, այլ ոչ թե այդ խնդրանքին և պատասխանին: Այն ավելի արագ և հուսալի է, քան HTTP- ը: Սա աշխատում է հետևյալ կերպ.

  • Մենք օգտագործում ենք Task Scheduler- ը ՝ առաջադրանքը պլանավորելու համար, ինչպիսիք են տվիչներից տվյալների բերումը, սենսորների ընթերցումների հրատարակումը, MQTT թեմային բաժանորդագրվելը:
  • Նախ, ներառեք Task Scheduler- ի վերնագրի ֆայլերը, դա օրինակ է և ժամանակացույց է ներկայացնում առաջադրանքներին:
  • Մենք նախատեսել ենք երկու առաջադրանք, որոնք վերաբերում են երկու տարբեր վերահսկողության գործողություններին:

#սահմանել_ԱՇԽԱՏԱՆՔ_ՏԱՅՈOUԹՅՈՆ#ներառել ժամանակացույցի տ; // --------- Առաջադրանքներ ------------ // Առաջադրանք tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Առաջադրանք tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

  • Առաջադրանք 1 -ը սենսորի արժեքի ընթերցման համար է: Այս առաջադրանքը կատարվում է 1 վայրկյան, մինչև այն հասնի 10 վրկ:
  • Երբ Task1- ը լրանում է իր ժամանակը, մենք միանում ենք տեղական Wifi և MQTT բրոքերին:
  • Այժմ Առաջադրանք 2 -ը միացված է, և մենք անջատում ենք Առաջադրանք 1 -ը
  • Առաջադրանք 2 -ը սենսորային տվյալները UbiDots MQTT բրոքերին հրապարակելու համար է: Այս առաջադրանքը տևում է 20 վայրկյան, մինչև այն հասնի մինչև 20 վրկ:
  • Երբ Task2- ը հասնում է իր ժամկետի ավարտին, Առաջադրանք 1 -ը կրկին միացված է, և Task2- ը անջատված է: Այստեղ կրկին մենք ստանում ենք թարմացված արժեքը, և գործընթացը շարունակվում է:

I2C սենսորային տվյալների ընթերցում

Մենք ստանում ենք 29 բայթ շրջանակ անլար ջերմաստիճանի և խոնավության տվիչներից: Այս շրջանակը շահարկված է իրական ջերմաստիճանի և խոնավության տվյալները ստանալու համար:

եթե (Serial1.available ())

{data [0] = Serial1.read (); ուշացում (k); if (տվյալներ [0] == 0x7E) {while (! Serial1.available ()); համար (i = 1; i <36; i ++) {data = Serial1.read (); ուշացում (1); } if (տվյալներ [15] == 0x7F) /////// ստուգելու համար, թե արդյոք տվյալները ճիշտ են {if (տվյալները [22] == 0x06) //////// համոզվեք, որ սենսորի տեսակը ճիշտ է {int cTemp = ((((տվյալները [24]) * 256) + տվյալները [25])); int16_t abs_pressure = (((((uint16_t) (տվյալները [26]) << 8) | տվյալները [27])*0.001); int rlt_pressure = ((((տվյալները [28]) * 256) + տվյալները [29]) * 0.001); int16_t delta_alt = (((((uint16_t) (տվյալները [30]) << 8) | տվյալները [31])*0.01); լողացող մարտկոց = ((տվյալներ [18] * 256) + տվյալներ [19]); բոց լարման = 0.00322 * մարտկոց; Serial.print («Սենսորային համար»); Serial.println (տվյալները [16]); Serial.print («Սենսորային տեսակ»); Serial.println (տվյալները [22]); Serial.print («irmրագրակազմի տարբերակ»); Serial.println (տվյալները [17]); Serial.print ("Cերմաստիճանը Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print («Բացարձակ ճնշում.»); Serial.println (abs_pressure); Serial.print («mbar»); Serial.print ("Հարաբերական ճնշում."); Serial.println (rlt_pressure); Serial.print («mbar»); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print («մետր»); Serial.print ("ADC արժեքը:"); Serial.println (մարտկոց); Serial.print («Մարտկոցի լարումը.»); Serial.print (լարման); Serial.println ("\ n"); if (լարման <1) {Serial.println («Մարտկոցը փոխարինելու ժամանակը»); }}} այլ {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); ուշացում (1); }}}}

Միացում UbiDots MQTT API- ին

Ներառեք MQTT գործընթացի վերնագրի ֆայլը:

#ներառում

սահմանել այլ փոփոխականներ MQTT- ի համար, ինչպիսիք են հաճախորդի անունը, միջնորդի հասցեն, նշանի ID- ն

#սահմանել TOKEN "BBFF-*********************************" // Ձեր Ubidots TOKEN#սահմանել MQTT_CLIENT_NAME "***************************"

char mqttBroker = "things.ubidots.com";

char բեռ [100]; char թեմա [150]; // ստեղծել փոփոխական ՝ նշան ID- ի նշանը պահելու համար

Քայլ 5. Սենսորային ընթերցումների հրատարակում UbiDots- ում

UbiDots- ի համար սենսորային ընթերցումների հրատարակում
UbiDots- ի համար սենսորային ընթերցումների հրատարակում

Ստեղծեք փոփոխականներ ՝ տարբեր սենսորային տվյալներ պահելու համար և ստեղծեք char փոփոխական ՝ թեման պահելու համար

#սահմանել VARIABLE_LABEL_TEMPF "tempF" // Հաշվի առնելով փոփոխական պիտակը #define VARIABLE_LABEL_TEMPC "tempC" // Assist the variable label #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid label" // Assing

char թեմա 1 [100];

char թեմա 2 [100]; char թեմա 3 [100];

հրապարակել տվյալ MQTT թեմայի տվյալները, բեռնվածությունը նման կլինի {"tempc": {value: "tempData"}}

sprintf (թեմա 1, "%s", ""); sprintf (թեմա 1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (բեռնվածություն, "%s", ""); // Մաքրում է բեռնվածքի սպրինտֆը (բեռնվածություն, "{"%s / ":", VARIABLE_LABEL_TEMPC); // Ավելացնում է sprintf արժեքը (բեռնվածություն, "%s {" արժեք / ":%s}", բեռնվածություն, str_cTemp); // Ավելացնում է sprintf արժեքը (բեռնվածություն, «%s}», բեռնվածություն); // Փակում է Serial.println բառարանի փակագծերը (բեռնվածություն); Serial.println (client.publish (topic1, payload)? "Published": "notpublished"); // Նույնը արեք նաև այլ թեմայի համար

client.publish () տվյալները հրապարակում է UbiDots- ում:

Քայլ 6: Տվյալների պատկերացում

Տվյալների պատկերացում
Տվյալների պատկերացում
  • Գնացեք Ubidots և մուտք գործեք ձեր հաշիվ:
  • Գնացեք Գործիքային վահանակ ՝ վերևում նշված Տվյալների ներդիրից:
  • Այժմ կտտացրեք «+» պատկերակին ՝ նոր վիջեթներ ավելացնելու համար:
  • Selectանկից ընտրեք վիջեթ և ավելացրեք փոփոխական և սարքեր:
  • Սենսորների տվյալները կարող են արտացոլվել վահանակի վրա ՝ օգտագործելով տարբեր վիջեթներ:

Քայլ 7: Ընդհանուր ծածկագիր

HTML- ի և ESP32- ի Over կոդը կարելի է գտնել այս GitHub շտեմարանում:

Վարկեր

  • ncd ESP32 բեկման տախտակ:
  • ncd Անլար ճնշման և ջերմաստիճանի տվիչներ
  • pubsubclient
  • UbiDots
  • Առաջադրանքների ժամանակացույց

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