Բովանդակություն:
- Քայլ 1: Պահանջվում է սարքավորում
- Քայլ 2: Սարքավորման միացումներ
- Քայլ 3. Առաջադրանքների պլանավորման ծածկագիր
- Քայլ 4. Codeերմաստիճանի և խոնավության արժեքների ընթերցման ծածկագիր
- Քայլ 5. Վեբ սերվեր հյուրընկալելու ծածկագիր
- Քայլ 6: Thingspeak- ի կարգավորում
- Քայլ 7: Խոսքի վրա տվյալների տեղադրման կոդ
- Քայլ 8: Ընդհանուր ծածկագիր
- Քայլ 9: Վարկեր
Video: THINGSPEAK EMԵՐՄԱՈՈԹՅՈՆ ԵՎ Խոնավության ծրագիր ՝ օգտագործելով ESP8266: 9 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Էլեկտրոնային իրերի հետ շփվելիս ես այս գաղափարը ստացա ՝ եղանակային եղանակով համացանցային ծրագիր պատրաստելու համար: Այս վեբ ծրագիրը օգտագործում է 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: Պահանջվում է սարքավորում
Այս խնդիրը կատարելու համար օգտագործվող սարքավորումները.
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C ադապտեր
- I2C մալուխ
Քայլ 2: Սարքավորման միացումներ
Այս քայլը ներառում է ապարատային կապի ուղեցույց: Այս բաժինը հիմնականում բացատրում է տվիչի և ESP8266- ի միջև պահանջվող էլեկտրագծերի միացումները: Կապերը հետեւյալն են.
- SHT31- ն աշխատում է I2C- ով: Վերոնշյալ պատկերը ցույց է տալիս ESP8266- ի և SHT31 մոդուլի միջև կապը: Մենք դրա համար օգտագործում ենք I2C մալուխ, կամ կարող ենք օգտագործել 4 F- ից F թռիչքային լարեր:
- մեկ մետաղալարն օգտագործվում է Vcc- ի համար, երկրորդը `GND- ի, իսկ մյուսը` համապատասխանաբար SDA- ի և SCL- ի համար
- Ըստ 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երմաստիճանի և խոնավության արժեքների ընթերցման ծածկագիր
Մենք օգտագործում ենք 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- ը 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
Խորհուրդ ենք տալիս:
Եղանակի վեբ ծրագիր ՝ օգտագործելով Esp8266: 7 քայլ
Եղանակի վեբ հավելված ՝ օգտագործելով Esp8266: SHT 31 -ը ջերմաստիճանի և խոնավության տվիչներ, որոնք արտադրվել են Sensirion- ի կողմից: SHT31- ը ապահովում է բարձր ճշգրտություն ± 2% RH- ի սահմաններում: Խոնավության միջակայքը 0 -ից 100% է, իսկ ջերմաստիճանը ՝ -40 -ից 125 ° C: Դա շատ ավելի հուսալի և արագ է
Պարզ սուպերմարկետի ծրագիր ՝ օգտագործելով RFID RC-522 և Arduino Mega ՝ 6 քայլ
Պարզ սուպերմարկետի ծրագիր ՝ օգտագործելով RFID RC-522 և Arduino Mega. Ուրախ եմ ձեզ նորից տեսնել այստեղ, իմ մեկ այլ ձեռնարկում, այստեղ ես կօգնեմ ձեզ ստեղծել պարզ սուպերմարկետի ծրագիր ՝ օգտագործելով RFID RC-522 և Arduino ՝ Processing ՝ ստեղծելու համար: պարզ GUI: Նշում. մի աշխատեք Arduino- ի սերիական մոնիտորը վազելիս
Անլար խոնավության մոնիտոր (ESP8266 + խոնավության ցուցիչ) ՝ 5 քայլ
Անլար խոնավության մոնիտոր (ESP8266 + խոնավության ցուցիչ). Ես մաղադանոս եմ գնում կաթսայում, և օրվա մեծ մասը հողը չորացել էր: Այսպիսով, ես որոշեցի կատարել այս նախագիծը ՝ մաղադանոսով կաթսայի մեջ հողի խոնավությունը զգալու մասին, ստուգելու համար, երբ ինձ պետք է ջուր լցնել հողը: Կարծում եմ, որ այս սենսորը (Capacitive խոնավության ցուցիչ v1.2) լավ է
Ինչպես վերբեռնել ծրագիր կամ ծածկագիր Arduino Pro Mini- ում ՝ օգտագործելով CH340 UART սերիական փոխարկիչ մալուխը. 4 քայլ
Ինչպես վերբեռնել ծրագիր կամ ծածկագիր Arduino Pro Mini- ում ՝ օգտագործելով CH340 UART սերիական փոխարկիչ մալուխը. USB TTL սերիական մալուխները USB- ից սերիական փոխարկիչ մալուխների մի շարք են, որոնք կապ են ապահովում USB և սերիական UART միջերեսների միջև: Առկա են մի շարք մալուխներ, որոնք առաջարկում են միացում 5 վոլտ, 3.3 վոլտ կամ օգտագործողի կողմից սահմանված ազդանշանի մակարդակներով ՝
Հողի խոնավության տվիչների փորձարկման ծրագիր. 6 քայլ (նկարներով)
Հողի խոնավության տվիչների փորձարկման ծրագիր. Մարտահրավեր. Նախագծեք և կատարեք ծրագիր, որը կլուսավորի ԿԱՐՄԻՐ LED, երբ հողը խոնավ է, և Կանաչ LED, երբ հողը չորանա: Սա կներառի Հողի խոնավության ցուցիչի օգտագործումը: