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

THINGSPEAK EMԵՐՄԱՈՈԹՅՈՆ ԵՎ Խոնավության ծրագիր ՝ օգտագործելով ESP8266: 9 քայլ
THINGSPEAK EMԵՐՄԱՈՈԹՅՈՆ ԵՎ Խոնավության ծրագիր ՝ օգտագործելով ESP8266: 9 քայլ

Video: THINGSPEAK EMԵՐՄԱՈՈԹՅՈՆ ԵՎ Խոնավության ծրագիր ՝ օգտագործելով ESP8266: 9 քայլ

Video: THINGSPEAK EMԵՐՄԱՈՈԹՅՈՆ ԵՎ Խոնավության ծրագիր ՝ օգտագործելով ESP8266: 9 քայլ
Video: Canvas. Գրաֆիկական էլեմենտների կառուցման հիմունքները 2024, Նոյեմբեր
Anonim
THINGSPEAK EMԵՐՄԱՈՈԹՅՈՆ ԵՎ Խոնավության ծրագիր ՝ օգտագործելով ESP8266
THINGSPEAK EMԵՐՄԱՈՈԹՅՈՆ ԵՎ Խոնավության ծրագիր ՝ օգտագործելով ESP8266

Էլեկտրոնային իրերի հետ շփվելիս ես այս գաղափարը ստացա ՝ եղանակային եղանակով համացանցային ծրագիր պատրաստելու համար: Այս վեբ ծրագիրը օգտագործում է SHT31 տվիչը `իրական ժամանակի ջերմաստիճանի և խոնավության վերաբերյալ տվյալներ ստանալու համար: Մենք մեր նախագիծը տեղակայել ենք ESP8266 WiFi մոդուլի վրա: Առցանց կամ անցանց! Անհանգստանալու կարիք չկա, անկախ նրանից ՝ առցանց եք, թե անցանց, եղանակի թարմացումները կստանաք ցանկացած վայրից և ցանկացած պահի: Այս վեբ ծրագիրը տվյալներ է տեղադրում տեղական վեբ սերվերին, ինչպես նաև ամպին: Ամպային գործողությունների համար մենք օգտագործում ենք ThingSpeak API: SHT31- ն օգտագործում է I2C ՝ սենսորից տվյալները ստանալու համար:

SHT 31- ը ջերմաստիճանի և խոնավության տվիչներ է, որը պատրաստվել է Sensirion- ի կողմից: SHT31- ը ապահովում է բարձր ճշգրտություն ± 2% RH- ի սահմաններում: Խոնավության միջակայքը 0 -ից 100% է, իսկ ջերմաստիճանը ՝ -40 -ից 125 ° C: Այն շատ ավելի հուսալի և արագ է ՝ 8 վրկ սենսորային արձագանքման ժամանակ: Դրա ֆունկցիոնալությունը ներառում է ազդանշանի ուժեղացված մշակում և I2C համատեղելիություն: Այն ունի գործունեության տարբեր եղանակներ, ինչը դարձնում է էներգաարդյունավետ:

Այս ձեռնարկում մենք SHT 31 -ին միացրել ենք Adafruit Huzzah տախտակը: Peratերմաստիճանի եւ խոնավության արժեքները կարդալու համար մենք օգտագործել ենք ESP8266 I2C վահանը: Այս ադապտորը բոլոր կապումներն օգտվողին հասանելի է դարձնում և առաջարկում է օգտագործողի համար հարմար I2C միջավայր:

Քայլ 1: Պահանջվում է սարքավորում

Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում
Պահանջվում է սարքավորում

Այս խնդիրը կատարելու համար օգտագործվող սարքավորումները.

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C ադապտեր
  4. I2C մալուխ

Քայլ 2: Սարքավորման միացումներ

Սարքավորումների միացումներ
Սարքավորումների միացումներ

Այս քայլը ներառում է ապարատային կապի ուղեցույց: Այս բաժինը հիմնականում բացատրում է տվիչի և ESP8266- ի միջև պահանջվող էլեկտրագծերի միացումները: Կապերը հետեւյալն են.

  1. SHT31- ն աշխատում է I2C- ով: Վերոնշյալ պատկերը ցույց է տալիս ESP8266- ի և SHT31 մոդուլի միջև կապը: Մենք դրա համար օգտագործում ենք I2C մալուխ, կամ կարող ենք օգտագործել 4 F- ից F թռիչքային լարեր:
  2. մեկ մետաղալարն օգտագործվում է Vcc- ի համար, երկրորդը `GND- ի, իսկ մյուսը` համապատասխանաբար SDA- ի և SCL- ի համար
  3. Ըստ I2C ադապտերի, ESP8266 տախտակի pin2 և pin 14 օգտագործվում են համապատասխանաբար որպես SDA և SCL

Քայլ 3. Առաջադրանքների պլանավորման ծածկագիր

Առաջադրանքների պլանավորման ծածկագիր
Առաջադրանքների պլանավորման ծածկագիր

Այս ձեռնարկում մենք կատարում ենք երեք գործողություն

  • Կարդացեք SHT11- ի տվյալները `օգտագործելով I2C արձանագրությունը
  • ընդունեք վեբ սերվերը և տեղադրեք սենսորի ընթերցումը վեբ էջում
  • տեղադրեք սենսորի ընթերցումները ThingSpeak API- ին

Դրան հասնելու համար մենք օգտագործում ենք TaskScheduler գրադարանը: Մենք նախատեսել ենք երեք տարբեր առաջադրանքներ, որոնք վերաբերում են վերահսկման երեք տարբեր գործողություններին: սա արվում է հետևյալ կերպ

  • Առաջադրանք 1 -ը սենսորի արժեքի ընթերցման համար է: Այս առաջադրանքը կատարվում է 1 վայրկյան, մինչև այն հասնում է 10 վրկ:
  • Երբ Task1- ը հասնում է իր ժամկետի ավարտին, 2 -ը միացված է, և Task1- ը անջատված է:
  • Այս հետադարձ կապում մենք միանում ենք AP- ին: Երկու բուլո փոփոխական են ընդունվում `STA- ի և AP- ի միջև անցումը հոգալու համար:
  • Առաջադրանք 2 -ում մենք հյուրընկալում ենք վեբ սերվերին ՝ 192.168.1.4. Այս առաջադրանքը կատարվում է յուրաքանչյուր 5 վայրկյանում, մինչև այն հասնի իր ժամանակի ընդմիջմանը, որը 50 վրկ է
  • Երբ առաջադրանք 2 -ի ժամանակը սպառվում է, առաջադրանք 3 -ը միացված է, և առաջադրանք 2 -ը անջատված է:

  • Այս calback- ում մենք միանում ենք STA- ին (տեղական IP): Առաջադրանք 3 -ում մենք տեղադրում ենք ցուցիչի ընթերցումը ամպային ThingSpeak API- ում
  • 3 -րդ առաջադրանքն ընթանում է յուրաքանչյուր հինգ վայրկյանում, մինչև այն հասնի իր ժամանակի ավարտին, այսինքն `50 վրկ
  • Երբ Task3- ը հասնում է իր ժամկետի ավարտին 1 -ին խնդիրը կրկին միացված է, և Task3- ը անջատված է:
  • Երբ հետադարձ կապ չի կանչվում կամ սարքն անգործուն է, այն անցնում է Light Sleep- ին ՝ այդպիսով խնայելով էներգիան:

անվավեր taskI2CCallback ();

void taskI2CD անջատելի (); void taskAPCallback (); void taskAPDisable (); անվավեր taskWiFiCallback (); void taskWiFiDisable (); // Առաջադրանքներ i2c- ի համար, վեբ սերվերի տեղադրում և հաղորդագրության մեջ գրառում Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CD անջատելի); Առաջադրանք tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CD անջատելի); Առաջադրանք tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Առաջադրանք tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // առաջադրանքի առաջադրանքների tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // միացնել I2C առաջադրանքը tI2C.enable ();

Քայլ 4. Codeերմաստիճանի և խոնավության արժեքների ընթերցման ծածկագիր

Codeերմաստիճանի եւ խոնավության արժեքների ընթերցման ծածկագիր
Codeերմաստիճանի եւ խոնավության արժեքների ընթերցման ծածկագիր

Մենք օգտագործում ենք Wire.h գրադարանը `ջերմաստիճանի և խոնավության արժեքները կարդալու համար: Այս գրադարանը հեշտացնում է i2c հաղորդակցությունը սենսորի և հիմնական սարքի միջև: 0x44- ը SHT31- ի I2C հասցեն է:

SHT31- ը գործում է այլ ռեժիմով: Դրա համար կարող եք անդրադառնալ տվյալների թերթիկին: Մենք օգտագործում ենք 0x2C և 0x06 համապատասխանաբար որպես MSB և LSB մեկ կրակոցով աշխատելու համար:

// I2C առաջադրանքի հետադարձ կապ void taskI2CCallback () {Serial.println ("taskI2CStarted"); անստորագիր int արմատ [6]; // սկսել փոխանցումը 0x44- ից; Wire.beginTransmission (Addr); // մեկ կրակոց փոխանցման բարձր կրկնվողությամբ մենք օգտագործում ենք 0x2C (MSB) և 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // ավարտել փոխանցումը Wire.endTransmission (); // պահանջել բայթեր 0x44 Wire.beginTransmission- ից (Addr); Wire.endTransmission (); Հաղորդալար. Խնդրում ենք (Addr, 6); եթե (Wire.available () == 6) {// տվյալները [0] և տվյալները [1] պարունակում են 16 բիթ ջերմաստիճան: արմատ [0] = Wire.read (); արմատ [1] = Wire.read (); // տվյալները [2] պարունակում են 8 բիթ CRC արմատ [2] = Wire.read (); // տվյալները [3] և տվյալները [4] պարունակում են 16 բիթ խոնավության արմատ [3] = Wire.read (); արմատ [4] = Wire.read (); // տվյալները [5] բաղկացած են 8 բիթանոց CRC արմատից [5] = Wire.read (); } int temp = (արմատ [0] * 256) + արմատ [1]; // տեղափոխել MSB- ն 8 բիթով ավելացնել LSB float cTemp = -45.0 + (175.0 * temp /65535.0); float fTemp = (cTemp * 1.8) + 32.0; // տեղափոխել MSB- ն 8 բիթով, ավելացնել LSB- ն դրան բաժանել ամբողջական լուծաչափով և * 100 բոցի խոնավության տոկոսով = (100.0 * ((արմատ [3] * 256.0) + արմատ [4])) /65535.0; tempC = cTemp; tempF = fTemp; խոնավ = խոնավություն; Serial.print («Cերմաստիճանը C: / t»); Serial.println (Լար (cTemp, 1)); Serial.print («Fերմաստիճանը F: / t»); Serial.println (Լարային (fTemp, 1)); Serial.print ("Խոնավություն: / t"); Serial.println (Լար (խոնավություն, 1)); }

Քայլ 5. Վեբ սերվեր հյուրընկալելու ծածկագիր

Վեբ սերվեր հյուրընկալելու ծածկագիր
Վեբ սերվեր հյուրընկալելու ծածկագիր
Վեբ սերվեր հյուրընկալելու ծածկագիր
Վեբ սերվեր հյուրընկալելու ծածկագիր

Մենք հյուրընկալել ենք վեբ սերվեր մեր սարքից ստատիկ IP հասցեով:

ESP8266WebServer գրադարանը օգտագործվում է վեբ սերվերը հյուրընկալելու համար

  • Սկզբում մենք պետք է հայտարարենք IP հասցե, Gateway և ենթացանցի դիմակ `մեր ստատիկ IP- ն ստեղծելու համար
  • Այժմ հայտարարեք ձեր մուտքի կետի ssid և գաղտնաբառ: միացեք մուտքի կետին ցանկացած STA սարքից
  • հյուրընկալել սերվերը 80 պորտին, որը ինտերնետ կապի արձանագրության կանխադրված նավահանգիստ է, Hypertext Transfer Protocol (HTTP) մուտքագրեք 192.168.1.4 ձեր վեբ դիտարկիչում ՝ ներածական վեբ էջի համար և 192.168.1.4/Value սենսորների ընթերցման վեբ էջի համար:

// ստատիկ Ip APIPAddress ap_local_IP- ի համար (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid և AP ՝ տեղական WiFi- ի համար STA ռեժիմում const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid և pass for AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer սերվեր (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP մեկնարկեց"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "Ֆայլը չգտնվեց / n / n"; հաղորդագրություն += "URI:"; հաղորդագրություն += server.uri (); հաղորդագրություն += "\ n Մեթոդ."; հաղորդագրություն += (server.method () == HTTP_GET)? "GET": "POST"; հաղորդագրություն += "\ n Փաստարկներ."; հաղորդագրություն += server.args (); հաղորդագրություն += "\ n"; server.send (404, «տեքստ/պարզ», հաղորդագրություն); } void նորից միացումAPWiFi () {WiFi.mode (WIFI_AP_STA); ուշացում (100); WiFi.d անջատել (); բուլյան կարգավիճակ = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Setting soft-AP …"); բուլյան ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("կապված է ՝ / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();

}

Քայլ 6: Thingspeak- ի կարգավորում

Thingspeak- ի կարգավորում
Thingspeak- ի կարգավորում
Thingspeak- ի կարգավորում
Thingspeak- ի կարգավորում
Thingspeak- ի կարգավորում
Thingspeak- ի կարգավորում

ThingSpeak- ը IoT հարթակ է: ThingSpeak- ը անվճար վեբ ծառայություն է, որը թույլ է տալիս հավաքել և պահել սենսորների տվյալները ամպի մեջ:

Այս Քայլում ես ձեզ կտրամադրեմ կարճ ընթացակարգ ՝ ձեր Thing Speak հաշիվը ստեղծելու համար

  • Գրանցվեք ThingSpeak- ի նոր Օգտվողի հաշվի համար
  • Ստեղծեք նոր ալիք ՝ ընտրելով Ալիքներ, Իմ ալիքները և այնուհետև Նոր ալիք
  • Խմբագրեք ձեր դաշտերը
  • Այս դաշտերը պարունակում են ձեր տվիչների տվյալները
  • Ուշադրություն դարձրեք Գրելու API բանալին և ալիքի ID- ին
  • Ձեր Arduino ուրվագծի վրա կարող եք օգտագործել ThingSpeak գրադարանը Arduino- ի համար կամ կարող եք ուղղակիորեն ՏԵ PԱԴՐԵԼ տվյալները ThingSpeak API- ին
  • հաջորդ քայլը մանրամասնում է բովանդակությունը Thing Speak API- ում տեղադրելու մասին

Քայլ 7: Խոսքի վրա տվյալների տեղադրման կոդ

Խոսքի վրա տվյալներ տեղադրելու կոդ
Խոսքի վրա տվյալներ տեղադրելու կոդ
Խոսքի վրա տվյալներ տեղադրելու կոդ
Խոսքի վրա տվյալներ տեղադրելու կոդ
Խոսքի վրա տվյալներ տեղադրելու կոդ
Խոսքի վրա տվյալներ տեղադրելու կոդ
Խոսքի վրա տվյալներ տեղադրելու կոդ
Խոսքի վրա տվյալներ տեղադրելու կոդ

Այստեղ մենք տեղադրում ենք սենսորային ընթերցումները Thing Speak- ում: Այս առաջադրանքը կատարելու համար անհրաժեշտ են հետևյալ քայլերը.

  • Ստեղծեք ձեր հաշիվը խոսքի մեջ Ստեղծեք ալիքներ և դաշտեր ՝ ձեր տվիչների տվյալները պահելու համար
  • մենք կարող ենք ստանալ և տեղադրել տվյալները ESP- ից thingSpeak- ին և հակառակը ՝ օգտագործելով GET և POST հարցումները api- ին:
  • մենք կարող ենք մեր տվյալները ThingSpeak- ին տեղադրել հետևյալ կերպ

id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& դաշտ 1 ="; postStr += լարային (խոնավ); postStr += "& դաշտ 2 ="; postStr += Լար (tempC); postStr += "& field3 ="; postStr += Լար (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /update HTTP /1.1 / n"); wifiClient.print ("Հաղորդավար` api.thingspeak.com / n "); wifiClient.print ("Միացում. փակել / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Content-Type: application/x-www-form-urlencoded / n"); wifiClient.print ("Բովանդակություն-երկարություն."); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

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

Ընդհանուր ծածկագիրը հասանելի է իմ GitHub շտեմարանում

Քայլ 9: Վարկեր

  • Arduino JSON
  • ESP826WebServer
  • Առաջադրանքների ժամանակացույց
  • SHT 31
  • I2C սկան
  • HIH6130 ուսուցողական ձեռնարկ
  • Մետաղալար
  • NCD.io

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