Orodha ya maudhui:

UTAMU WA JOTO LA THINGSPEAK NA UTumizi wa Unyenyekevu KUTUMIA ESP8266: Hatua 9
UTAMU WA JOTO LA THINGSPEAK NA UTumizi wa Unyenyekevu KUTUMIA ESP8266: Hatua 9

Video: UTAMU WA JOTO LA THINGSPEAK NA UTumizi wa Unyenyekevu KUTUMIA ESP8266: Hatua 9

Video: UTAMU WA JOTO LA THINGSPEAK NA UTumizi wa Unyenyekevu KUTUMIA ESP8266: Hatua 9
Video: UTAMU WA KITANDANI JINSI YA KUMUANDAA MWANAMKE 2024, Novemba
Anonim
UTAMU WA JUU YA THINGSPEAK NA UHUSIKA KWA KUTUMIA ESP8266
UTAMU WA JUU YA THINGSPEAK NA UHUSIKA KWA KUTUMIA ESP8266

Wakati nikitafakari vitu vyangu vya elektroniki, nilipata wazo hili kutengeneza programu ya hali ya hewa inayotegemea wavuti. Programu hii ya wavuti hutumia sensorer ya SHT31 kupata data ya hali halisi ya joto na unyevu. Tumepeleka mradi wetu kwenye moduli ya ESP8266 WiFi. Mtandaoni au nje ya mtandao! Hakuna haja ya kuwa na wasiwasi, iwe uko mkondoni au nje ya mtandao utapata visasisho vya hali ya hewa kutoka mahali popote na wakati wowote. Programu hii ya wavuti inachapisha data kwenye seva ya wavuti na vile vile kwa wingu. Kwa shughuli za wingu, tunatumia ThingSpeak API. SHT31 hutumia I2C kupata data kutoka kwa sensa.

SHT 31 ni sensorer ya joto na unyevu iliyotengenezwa na Sensirion. SHT31 hutoa kiwango cha juu cha usahihi karibu ± 2% RH. Aina yake ya Unyevu ni kati ya 0 hadi 100% na kiwango cha Joto ni kati ya -40 hadi 125 ° C. Inaaminika zaidi na haraka na sekunde 8 za wakati wa kujibu Sensorer. Utendaji wake ni pamoja na usindikaji wa ishara iliyoimarishwa na utangamano wa I2C. Ina njia tofauti za operesheni ambayo inafanya ufanisi wa nishati.

Katika mafunzo haya, tumeingiliana SHT 31 na bodi ya Adafruit Huzzah. Kwa kusoma viwango vya Joto na Unyevu tumetumia ngao ya ESP8266 I2C. Adapta hii hufanya pini zote zipatikane kwa mtumiaji na inatoa mazingira rafiki ya I2C.

Hatua ya 1: Vifaa vya vifaa vinahitajika

Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika

Vifaa vilivyotumika kumaliza kazi hii:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. Adapta ya ESP8266 I2C
  4. Cable ya I2C

Hatua ya 2: Uunganisho wa vifaa

Uunganisho wa vifaa
Uunganisho wa vifaa

Hatua hii ni pamoja na mwongozo wa kuunganisha vifaa. Sehemu hii inaelezea kimsingi uhusiano wa wiring unaohitajika kati ya sensa na ESP8266. Viunganisho ni kama ifuatavyo.

  1. SHT31 inafanya kazi juu ya I2C. Picha hapo juu inaonyesha uhusiano kati ya moduli ya ESP8266 na SHT31. Tunatumia kebo ya I2C kwa hiyo tunaweza kutumia waya wa 4 F hadi F jumper.
  2. waya moja hutumiwa kwa Vcc, waya wa pili kwa GND na nyingine mbili kwa SDA na SCL mtawaliwa
  3. Kulingana na pin2 ya adapta ya I2C na pini 14 ya bodi ya ESP8266 hutumiwa kama SDA na SCL mtawaliwa.

Hatua ya 3: Nambari ya Kupanga Kazi

Nambari ya Kupanga Kazi
Nambari ya Kupanga Kazi

Katika mafunzo haya, tunafanya shughuli tatu

  • Soma data kutoka SHT11 ukitumia itifaki ya I2C
  • mwenyeji wa seva ya wavuti na chapisha kusoma kwa sensa kwenye ukurasa wa wavuti
  • tuma usomaji wa sensa kwa API ya ThingSpeak

Ili kufanikisha hili tunatumia maktaba ya TaskScheduler. Tumepanga majukumu matatu tofauti yakimaanisha shughuli tatu tofauti za kudhibiti. hii imefanywa kama ifuatavyo

  • Kazi 1 ni kusoma thamani ya sensa kazi hii inaendesha kwa sekunde 1 hadi itakapofikia muda wa sekunde 10.
  • Task1 inapofikia wakati wake nje Task 2 imewezeshwa na Task1 imezimwa.
  • Tunaunganisha na AP katika upigaji simu huu, vigeuzi viwili vya boolea vinachukuliwa kutunza ubadilishaji kati ya STA na AP
  • Katika Task 2 tunashikilia seva ya wavuti mnamo 192.168.1.4. Kazi hii inaendeshwa kwa kila sekunde 5 hadi itakapofika muda wake ambao ni sekunde 50
  • Wakati Task 2 inapofikia muda wa kumaliza Task 3 imewezeshwa na Task2 imezimwa.
  • Tunaunganisha kwa STA (IP ya ndani) kwenye safu hiiKatika Task 3 tunatuma usomaji wa sensorer ili kuweka wingu ThingSpeak API

  • Kazi 3 inaendeshwa kwa kila sekunde tano hadi itakapofikia wakati wake, sekunde 50
  • Task3 inapofikia wakati wake nje Task 1 imewezeshwa tena na Task3 imezimwa.
  • Wakati hakuna kurudi tena kutaitwa au kifaa hakikai huenda kwa Nuru Kulala na hivyo kuokoa nguvu.

kazi tupuI2CCallback ();

kazi tupuI2CDisable (); kazi tupuAPCallback (); kazi tupuAPDisable (); kazi tupuWiFiCallback (); kazi tupuWiFiDisable (); // Kazi za i2c, mwenyeji wa seva ya wavuti na chapisha kwenye taskpeak Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Kazi tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCbackback, & ts, uwongo, NULL, & taskI2CDisable); Bomba la kazi (5 * TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, uongo, NULL, & taskAPDisable); Kazi tWiFi (5 * TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, uwongo, NULL, & taskWiFiDisable); // muda wa kumaliza kazi tI2C.setTimeout (10 * TASK_SECOND); TAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // kuwezesha kazi ya I2C tI2C kuwezeshwa ();

Hatua ya 4: Nambari ya Kusoma Joto na Thamani za Unyevu

Nambari ya Kusoma Joto na Thamani za Unyevu
Nambari ya Kusoma Joto na Thamani za Unyevu

Tunatumia maktaba ya Wire.h kusoma viwango vya joto na unyevu. Maktaba hii inawezesha mawasiliano ya i2c kati ya sensa na kifaa kikuu. 0x44 ni anwani ya I2C ya SHT31.

SHT31 inafanya kazi kwa njia tofauti ya utendaji. Unaweza kutaja data ya data kwa hiyo. Tunatumia 0x2C na 0x06 kama MSB na LSB mtawaliwa kwa operesheni moja ya risasi.

// kazi ya kupuuza kazi ya I2CI2CCallback () {Serial.println ("taskI2CStarted"); mzizi usiowekwa saini [6]; // kuanza maambukizi kutoka 0x44; Uwasilishaji wa waya (Addr); // kwa transmisstion moja ya risasi na kurudia juu tunatumia 0x2C (MSB) na 0x06 (LSB) Wire.write (0x2C); Andika waya (0x06); // mwisho wa kupitisha Waya.endUsambazaji (); // ombi ka kutoka 0x44 Wire.beginTransmission (Addr); Uwasilishaji wa waya (); Ombi la Wire. Toka (Addr, 6); ikiwa (Wire.available () == 6) {// data [0] na data [1] ina joto 16. mzizi [0] = soma ya waya (); mzizi [1] = soma ya waya (); // data [2] ina 8 ya mizizi ya CRC [2] = Wire.read (); // data [3] na data [4] ina 16 ya mizizi ya unyevu [3] = Wire.read (); mzizi [4] = soma ya waya (); // data [5] ina mizizi 8 ya CRC [5] = Wire.read (); } int temp = (mzizi [0] * 256) + mzizi [1]; // kuhama MSB kwa bits 8 ongeza kuelea kwa LSB cTemp = -45.0 + (175.0 * temp / 65535.0); kuelea fTemp = (cTemp * 1.8) + 32.0; // songa MSB kwa bits 8 ongeza LSB ili iwe na azimio kamili na * 100 kwa unyevu wa kuelea kwa asilimia = (100.0 * ((mzizi [3] * 256.0) + mzizi [4])) / 65535.0; tempC = cTemp; tempF = fTemp; unyevu = unyevu; Serial.print ("Joto katika C: / t"); Serial.println (Kamba (cTemp, 1)); Serial.print ("Joto katika F: / t"); Serial.println (Kamba (fTemp, 1)); Printa ya serial ("Unyevu: / t"); Serial.println (Kamba (unyevu, 1)); }

Hatua ya 5: Nambari ya Kukaribisha Webserver

Nambari ya Kukaribisha Mtumiaji wa Mtandao
Nambari ya Kukaribisha Mtumiaji wa Mtandao
Nambari ya Kukaribisha Mtumiaji wa Mtandao
Nambari ya Kukaribisha Mtumiaji wa Mtandao

Tumeandaa seva ya wavuti kutoka kwa kifaa chetu kwenye IP tuli.

Maktaba ya ESP8266WebServer hutumiwa kuwa mwenyeji wa seva ya wavuti

  • Kwanza tunahitaji kutangaza anwani ya IP, Gateway na kinyago cha subnet kuunda IP yetu tuli
  • Sasa tangaza ssid na nywila kwa nambari yako ya Ufikiaji.unganisha kwenye Kituo cha Ufikiaji kutoka kwa kifaa chochote cha STA
  • mwenyeji wa seva kwenye bandari 80 ambayo ni bandari ya msingi ya itifaki ya mawasiliano ya mtandao, Itifaki ya Uhamisho wa Hypertext (HTTP) ingiza 192.168.1.4 kwenye kivinjari chako cha wavuti kwa ukurasa wa wavuti wa kwanza na 192.168.1.4/ Thamani ya kusoma ukurasa wa wavuti

// tuli tuli kwa APIPAdressress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); Anwani ya IP apububnet (255, 255, 255, 0); // ssid na AP kwa WiFi ya ndani katika STA mode const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid na kupitisha AP const char APssid = "********"; const char APpass = "********"; Seva ya ESP8266WebServer (80); kuanzisha batili {server.on ("/", onHandleDataRoot); seva.on ("/ Thamani", onHandleDataFeed); seva.onNotFound (onHandleNotFound);} kazi tupuAPCallback () {Serial.println ("taskAP imeanza"); seva.handleClient (); } batili onHandleDataRoot () {server.send (200, "text / html", PAGE1); } batili kwenyeHandleDataFeed () {server.send (200, "text / html", PAGE2); } batili onHandleNotFound () {String message = "Faili Haikupatikana / n / n"; ujumbe + = "URI:"; ujumbe + = server.uri (); ujumbe + = "\ nNjia:"; ujumbe + = (server.method () == HTTP_GET)? "PATA": "POST"; message + = "\ n Hoja:"; ujumbe + = server.args (); ujumbe + = "\ n"; tuma seva (404, "maandishi / wazi", ujumbe); } batili unganishaAPWiFi () {WiFi.mode (WIFI_AP_STA); kuchelewesha (100); Kuondoa WiFi (); hali ya boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); ikiwa (status == true) {Serial.print ("Kuweka laini-AP…"); boolean ap = WiFi.softAP (APssid, APpass); ikiwa (ap == kweli) {Serial.print ("imeunganishwa na: / t"); // IPAdressress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } seva.anza ();

}

Hatua ya 6: Usanidi wa Thingspeak

Usanidi wa Thingspeak
Usanidi wa Thingspeak
Usanidi wa Thingspeak
Usanidi wa Thingspeak
Usanidi wa Thingspeak
Usanidi wa Thingspeak

ThingSpeak ni jukwaa la IoT. ThingSpeak ni huduma ya wavuti ya bure ambayo inakuwezesha kukusanya na kuhifadhi data za sensorer katika wingu.

Katika Hatua hii, nitakupa utaratibu mfupi wa kuanzisha akaunti yako ya Thing Speak

  • Jisajili kwa Akaunti mpya ya Mtumiaji katika ThingSpeak
  • Unda Kituo kipya kwa kuchagua Vituo, Njia Zangu, na kisha Kituo kipya
  • Hariri mashamba yako
  • Sehemu hizi zina data yako ya kitambuzi
  • Kumbuka Kitufe cha Andika API na Kitambulisho cha Kituo
  • Kwenye mchoro wako wa Arduino, unaweza kutumia maktaba ya ThingSpeak kwa Arduino au unaweza POST data moja kwa moja kwa ThingSpeak API
  • hatua inayofuata inafafanua juu ya kuchapisha yaliyomo kwenye Thing Speak API

Hatua ya 7: Nambari ya Kutuma Takwimu kwa Jambo Ongea

Nambari ya Kutuma Takwimu kwa Maneno ya Kuzungumza
Nambari ya Kutuma Takwimu kwa Maneno ya Kuzungumza
Nambari ya Kutuma Takwimu kwa Maneno ya Kuzungumza
Nambari ya Kutuma Takwimu kwa Maneno ya Kuzungumza
Nambari ya Kutuma Takwimu kwa Jambo La Ongea
Nambari ya Kutuma Takwimu kwa Jambo La Ongea
Nambari ya Kutuma Takwimu kwa Jambo La Ongea
Nambari ya Kutuma Takwimu kwa Jambo La Ongea

Hapa tunachapisha usomaji wa sensa kwa Jambo La Ongea. hatua zifuatazo zinahitajika ili kukamilisha kazi hii-

  • Unda akaunti yako katika kitu speakUnda vituo na uwanja ili kuhifadhi data yako ya kitambuzi
  • tunaweza kupata na kutuma data kutoka ESP hadi kituSpeak na kinyume chake kutumia maombi ya GET na POST kwa api.
  • tunaweza kutuma data yetu kwa ThingSpeak kama ifuatavyo

id kaziWiFiCallback () {WiFiClient wifiClient; ikiwa (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr + = "& uwanja1 ="; postStr + = Kamba (unyevu); postStr + = "& uwanja2 ="; postStr + = Kamba (tempC); postStr + = "& uwanja3 ="; postStr + = Kamba (tempF); postStr + = "\ r / n / r / n"; wifiClient.print ("POST / sasisha HTTP / 1.1 / n"); wifiClient.print ("Jeshi: api.thingspeak.com / n"); wifiClient.print ("Uunganisho: funga / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); wifiClient.print ("Aina ya Maudhui: matumizi / x-www-form-urlencoded / n"); wifiClient.print ("Urefu wa Maudhui:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } WifiMteja. simama (); }

Hatua ya 8: Kanuni ya Jumla

Nambari ya jumla inapatikana katika hazina yangu ya GitHub

Hatua ya 9: Mikopo

  • Arduino JSON
  • Mtandao wa ESP826
  • Mratibu wa Kazi
  • SHT 31
  • Scan ya I2C
  • Mafunzo ya kufundisha ya HIH6130
  • Waya
  • NCD.io

Ilipendekeza: