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

UbiDots- ESP32- ի միացում և բազմաթիվ սենսորային տվյալների հրապարակում. 6 քայլ
UbiDots- ESP32- ի միացում և բազմաթիվ սենսորային տվյալների հրապարակում. 6 քայլ

Video: UbiDots- ESP32- ի միացում և բազմաթիվ սենսորային տվյալների հրապարակում. 6 քայլ

Video: UbiDots- ESP32- ի միացում և բազմաթիվ սենսորային տվյալների հրապարակում. 6 քայլ
Video: Угрюм-река (1969) (1 серия) фильм 2024, Հուլիսի
Anonim
UbiDots- ESP32- ի միացում և բազմաթիվ սենսորային տվյալների հրապարակում
UbiDots- ESP32- ի միացում և բազմաթիվ սենսորային տվյալների հրապարակում

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

Քայլ 2. Ստեղծեք գերված պորտալ

Գերի ընկած պորտալի ստեղծում
Գերի ընկած պորտալի ստեղծում
Գերի ընկած պորտալի ստեղծում
Գերի ընկած պորտալի ստեղծում
Գերի ընկած պորտալի ստեղծում
Գերի ընկած պորտալի ստեղծում

Գերի ընկած պորտալը վեբ էջ է, որը ցուցադրվում է նոր կապակցված օգտվողներին, նախքան ցանցային ռեսուրսներին ավելի լայն հասանելիություն տրամադրելը: Այստեղ մենք ծառայում ենք երեք վեբ էջ ՝ DHCP- ի և Ստատիկ IP կարգավորումների միջև ընտրություն կատարելու համար: մենք կարող ենք ESP- ի IP հասցեն սահմանել երկու եղանակով.

  • DHCP IP հասցե- դա սարքին IP հասցեն դինամիկ կերպով նշանակելու միջոց է: ESP- ի կանխադրված IP հասցեն 192.168.4.1 է
  • Ստատիկ IP հասցե- մշտական IP հասցե նշանակելը մեր ցանցային սարքին: սարքին ստատիկ IP տրամադրելու համար մենք պետք է սահմանենք IP հասցեն, դարպասի հասցեն և ենթացանցի դիմակը:

Առաջին վեբ էջը տեղակայված է 192.168.1.77 հասցեում: Այստեղ Օգտատիրոջը տրամադրվում են ռադիո կոճակներ ՝ DHCP և Ստատիկ IP կարգավորումների միջև ընտրություն կատարելու համար: Հաջորդ վեբ էջում մենք պետք է տրամադրենք IP- ի հետ կապված տեղեկատվությունը ՝ հետագա հետագա ընթացքի համար:

HTML կոդ

Վեբ էջերի HTML կոդը կարելի է գտնել այս Github պահոցում: HTML վեբ էջեր պատրաստելու համար կարող եք օգտագործել ցանկացած IDE կամ տեքստային խմբագիր, ինչպիսիք են Sublime կամ notepad ++:

  • Նախ ստեղծեք HTML վեբ էջ, որը պարունակում է երկու ռադիո կոճակ ՝ DHCP- ի և Ստատիկ IP կարգավորումների միջև ընտրություն կատարելու համար:
  • Այժմ ստեղծեք ձեր պատասխանը ներկայացնելու կոճակը
  • Որոշ անուն տվեք ռադիո կոճակներին:
  • ESP վեբ սերվերի դասը կընդունի այս անունները որպես փաստարկներ և կստանա ռադիո կոճակների պատասխանը `օգտագործելով այս փաստարկները
  • Այժմ տեղադրեք «ՈUBԱՐԿԵԼ» կոճակը ՝ պատասխանը սարքին ուղարկելու համար: Մյուս վեբ էջերում մենք ունենք տեքստային տուփեր:
  • Տեքստային տուփին տվեք անվան արժեքը և Մուտքի տեսակը և «Ներկայացնել» պատասխանին ներկայացնելու կոճակ ավելացրեք:
  • Ստեղծեք «RESET» կոճակը ՝ տեքստային դաշտի բովանդակությունը վերականգնելու համար:

Քայլ 3. WiFi և UbiDots հավատարմագրերի տրամադրում

WiFi և UbiDots հավատարմագրերի տրամադրում
WiFi և UbiDots հավատարմագրերի տրամադրում

Հիմնական խնդիրը հայտնվում է WiFi հավատարմագրերը կառավարելիս: Չնայած դրա համար մենք ունենք WiFiMulti գրադարան, որտեղ մենք կարող ենք սարքին տալ բազմաթիվ SSID և գաղտնաբառեր, և սարքը միանա հասանելի ցանցին: Բայց ինչ կլինի, եթե առկա ցանցը WiFiMulti ցուցակում չէ: ESP32 սարքը անընդհատ թարթելը հուսալի լուծում չէ:

Այս խնդիրը լուծելու համար մենք հյուրընկալում ենք մի վեբ էջ, որտեղ օգտվողը կարող է ներկայացնել առկա ցանցի SSID- ը և գաղտնաբառը: Այն աշխատում է հետեւյալ կերպ.

  • Վեբ էջը տեղակայված է ստատիկ IP- ով կամ DHCP IP- ով, ինչպես ընտրված է օգտվողի կողմից գերված պորտալից
  • Այս վեբ էջը պարունակում է տեքստային դաշտեր ՝ SSID, գաղտնաբառ և UBIDOTS նշան ID մուտքագրելու համար ՝ սարքը UbiDots- ին միացնելու համար:
  • Մուտքագրման դաշտերում մուտքագրեք ձեր տեղական WiFi- ի SSID- ը և գաղտնաբառը, մուտքագրեք UbiDot- ի նշանի ID- ն և մուտքագրեք SUBMIT
  • Այս հավատարմագրերը պահվում են ESP32- ի EEPROM- ում
  • 60 վայրկյան անց Սարքն ինքնաբերաբար կհեռացվի AP- ից
  • Հաջորդ անգամ, երբ սարքը միացնեք, օգտագործողը չպետք է հետևի այս ընթացակարգին: Սարքն ինքնաբերաբար կվերցնի օգտվողի հավատարմագրերը EEPROM- ից և կշարունակի հրապարակել սենսորների ընթերցումները UbiDots- ում:

Քայլ 4. Հրատարակեք սենսորային ընթերցումներ UbiDots- ին

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

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

#սահմանել_ԱՌԱՎՈՐՈԹՅՈՆ_ՏԱՅՈOUԹՅՈՆ#ներառել

Ժամանակացույց ts;

// --------- Առաջադրանքներ ------------ // Առաջադրանք 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 բայթ շրջանակ անլար ջերմաստիճանի և խոնավության տվիչներից: Այս շրջանակը շահարկված է իրական ջերմաստիճանի և խոնավության տվյալներ ստանալու համար:

uint8_t տվյալներ [29];

տվյալներ [0] = Serial1.read (); ուշացում (k); // ստուգել սկզբնական բայթ if (տվյալները [0] == 0x7E) {while (! Serial1.available ()); համար (i = 1; i <29; i ++) {data = Serial1.read (); ուշացում (1); } if (տվյալներ [15] == 0x7F) /////// ստուգելու համար, թե արդյոք ստացվող տվյալները ճիշտ են {if (տվյալները [22] == 1) //////// համոզվեք, որ սենսորի տեսակը ճիշտ է {

խոնավություն = ((((տվյալներ [24]) * 256) + տվյալներ [25]) /100.0); խոնավություն /=10.0; cTempint = ((((uint16_t) (տվյալներ [26]) << 8) | տվյալներ [27]); cTemp = (բոց) cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; մարտկոց = պատահական (100, 327); լարման = մարտկոց/100; nodeId = տվյալներ [16];}

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

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

#ներառում

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

#սահմանեք MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char բեռնվածություն [100]; char թեմա [150];

// ստեղծել փոփոխական ՝ նշան ID- ն պահելու համար

Լարային նշան ID;

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

#սահմանել VARIABLE_LABEL_TEMPF "tempF" // Հաշվի առնելով փոփոխական պիտակը #define VARIABLE_LABEL_TEMPC "tempC" // Assab 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- ում:

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

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

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

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

Վարկեր

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

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