Orodha ya maudhui:

Hali ya Hewa Mtandao App Kutumia Esp8266: 7 Hatua
Hali ya Hewa Mtandao App Kutumia Esp8266: 7 Hatua

Video: Hali ya Hewa Mtandao App Kutumia Esp8266: 7 Hatua

Video: Hali ya Hewa Mtandao App Kutumia Esp8266: 7 Hatua
Video: ESP8266 Project: How to control 2 AC bulb or load using 2 Relay with NodeMCU and D1 Mini over WiFi 2024, Novemba
Anonim
Weather Web App Kutumia Esp8266
Weather Web App Kutumia Esp8266

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. SHT31

2. Adafruit Huzzah ESP8266

3. EAP8266 I2C adapta

Cable ya I2C

Hatua ya 2: Uunganisho wa vifaa

Uunganisho wa vifaa
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

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 muda wake wa kumaliza 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) katika upigaji simu huu
  • Katika Task 3 tunatuma usomaji wa sensorer kwa ThingSpeak API
  • Kazi 3 inaendeshwa kwa kila sekunde tano hadi itakapofikia wakati wake, sekunde 50
  • Task3 inapofikia muda wake wa kumaliza Task 1 imewezeshwa tena na Task3 imezimwa.
  • Wakati hakuna kurudi tena kutaitwa au kifaa hakikai huenda kwa Nuru Kulala na hivyo kuokoa nguvu.

Mratibu ts;

// Kazi za i2c, kukaribisha seva ya wavuti na kuchapisha kwenye mazungumzo

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

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 I2C I2CCallback ()

{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 kukaribisha seva ya wavuti
  • Kwanza tunahitaji kutangaza anwani ya IP, Gateway na kinyago cha subnet kuunda IP yetu tuli
  • Sasa tangaza ssid na nywila kwa eneo lako la Ufikiaji.
  • unganisha kwenye Kituo cha Ufikiaji kutoka kwa kifaa chochote cha STA
  • mwenyeji wa seva kwenye bandari 80 ambayo ni bandari chaguo-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 intro na 192.168.1.4/ Thamani ya kusoma ukurasa wa wavuti

// tuli Ip kwa AP

Anwani ya IP ap_local_IP (192, 168, 1, 4);

Anwani ya IP ap_gateway (192, 168, 1, 254);

//Address ap_subnet (255, 255, 255, 0); // ssid na AP kwa WiFi ya ndani katika hali ya STA

const char WiFissid = "*********";

const char WiFipass = "*********";

// ssid na kupitisha AP

const char APssid = "********";

const char APpass = "********";

Seva ya ESP8266WebServer (80);

usanidi batili {

seva.on ("/", onHandleDataRoot);

seva.on ("/ Thamani", onHandleDataFeed);

server.onNotFound (onHandleNotFound);

}

kazi tupuAPCallback () {

Serial.println ("taskAP imeanza");

seva.handleClient ();

}

batili onHandleDataRoot () {server.send (200, "text / html", PAGE1); }

batili kwenyeHandleDataFeed () {

tuma seva (200, "maandishi / html", PAGE2); }

batili kwenyeHandleNotFound () {

Ujumbe wa kamba = "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);}

unganisha tenaAPWiFi () {

Njia ya WiFi (WIFI_AP_STA);

kuchelewesha (100);

Kuondoa WiFi ();

hali ya boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);

ikiwa (status == kweli) {

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 ());

}

anza ();

}

}

Hatua ya 6: Nambari ya Kutuma Takwimu kwa Jambo 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
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
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 cha kusema
  • Unda njia na sehemu za 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

kazi tupuWiFiCallback () {

WifiMteja wa WiFiMteja; 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 7: Kanuni ya Jumla

Nambari ya jumla inapatikana katika duka langu la github

Mikopo:

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

Ilipendekeza: