ዝርዝር ሁኔታ:

የአየር ሁኔታ የድር መተግበሪያ Esp8266: 7 እርምጃዎችን በመጠቀም
የአየር ሁኔታ የድር መተግበሪያ Esp8266: 7 እርምጃዎችን በመጠቀም

ቪዲዮ: የአየር ሁኔታ የድር መተግበሪያ Esp8266: 7 እርምጃዎችን በመጠቀም

ቪዲዮ: የአየር ሁኔታ የድር መተግበሪያ Esp8266: 7 እርምጃዎችን በመጠቀም
ቪዲዮ: የኢትዮጵያ አየር መንገድን የተንቀሳቃሽ ስልክ መተግበሪያ 2024, ግንቦት
Anonim
የአየር ሁኔታ የድር መተግበሪያ Esp8266 ን በመጠቀም
የአየር ሁኔታ የድር መተግበሪያ Esp8266 ን በመጠቀም

SHT 31 በ Sensirion የተሰራ የሙቀት እና እርጥበት ዳሳሾች ነው። SHT31 ± 2% አርኤች አካባቢ ከፍተኛ ትክክለኝነትን ይሰጣል። የእርጥበት መጠኑ ከ 0 እስከ 100% እና የሙቀት መጠኑ ከ -40 እስከ 125 ° ሴ ነው። በ 8 ሰከንዶች የአነፍናፊ ምላሽ ጊዜ በጣም የበለጠ አስተማማኝ እና ፈጣን ነው። የእሱ ተግባራዊነት የተሻሻለ የምልክት ማቀነባበር እና I2C ተኳሃኝነትን ያካትታል። እሱ ኃይል ቆጣቢ የሚያደርግ የተለያዩ የአሠራር ሁነታዎች አሉት።

በዚህ መማሪያ ውስጥ SHT 31 ን ከአዳፍ ፍሬ ሁዛ ቦርድ ጋር አገናኝተናል። የሙቀት እና እርጥበት እሴቶችን ለማንበብ እኛ ESP8266 I2C ጋሻ ተጠቅመናል። ይህ አስማሚ ሁሉንም ፒኖች ለተጠቃሚው ተደራሽ ያደርገዋል እና ለተጠቃሚ ምቹ I2C አካባቢን ይሰጣል።

ደረጃ 1 ሃርድዌር ያስፈልጋል

ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል
ሃርድዌር ያስፈልጋል

ይህንን ተግባር ለማጠናቀቅ የሚያገለግል ሃርድዌር

1. SHT31

2. አዳፍሩት ሁዛ ESP8266

3. ESP8266 I2C አስማሚ

4. I2C ኬብል

ደረጃ 2 የሃርድዌር ግንኙነቶች

የሃርድዌር ግንኙነቶች
የሃርድዌር ግንኙነቶች
የሃርድዌር ግንኙነቶች
የሃርድዌር ግንኙነቶች

ይህ ደረጃ የሃርድዌር ማያያዣ መመሪያን ያጠቃልላል። ይህ ክፍል በመሠረቱ በአነፍናፊው እና በ ESP8266 መካከል የሚፈለጉትን የሽቦ ግንኙነቶች ያብራራል። ግንኙነቶቹ እንደሚከተለው ናቸው።

  1. SHT31 ከ I2C በላይ ይሠራል። ከላይ ያለው ምስል በ ESP8266 እና SHT31 ሞዱል መካከል ያለውን ግንኙነት ያሳያል። እኛ ለእሱ I2C ገመድ እንጠቀማለን ፣ ወይም 4 F እስከ F jumper ሽቦዎችን መጠቀም እንችላለን።
  2. አንድ ሽቦ ለቪሲሲ ፣ ሁለተኛው ሽቦ ለ GND እና ሌሎች ሁለት ለ SDA እና SCL ጥቅም ላይ ይውላል።
  3. በ ES28266 ቦርድ I2C አስማሚ ፒን 2 እና ፒን 14 መሠረት እንደ SDA እና SCL በቅደም ተከተል ያገለግላሉ

ደረጃ 3 - ለተግባር መርሃ ግብር ኮድ

በዚህ መማሪያ ውስጥ ሶስት ቀዶ ጥገናዎችን እያደረግን ነው

  • I2C ፕሮቶኮልን በመጠቀም ከ SHT11 ውሂቡን ያንብቡ
  • የድር አገልጋዩን ያስተናግዱ እና አነፍናፊውን ለድረ -ገጹ ያንብቡ
  • የአነፍናፊ ንባቦችን ወደ ThingSpeak ኤፒአይ ይለጥፉ

ይህንን ለማሳካት TaskScheduler ቤተ -መጽሐፍትን እየተጠቀምን ነው። እኛ ሦስት የተለያዩ የቁጥጥር ሥራዎችን የሚያመለክቱ ሦስት የተለያዩ ሥራዎችን መርሐግብር አውጥተናል። ይህ እንደሚከተለው ይከናወናል

  • ተግባር 1 የ 10 ሴኮንድ ጊዜ እስኪያልቅ ድረስ ይህ ተግባር ለ 1 ሴኮንድ የሚሄድ የአነፍናፊ እሴት ለማንበብ ነው።
  • ተግባሩ 1 ወደ ማብቂያው ሲደርስ ተግባር 2 ነቅቷል እና ተግባር 1 ተሰናክሏል።
  • በዚህ ጥሪ መልሶ ማግኛ ውስጥ ከኤፒ ጋር እንገናኛለን ፣ በ STA እና AP መካከል ያለውን መቀያየር ለመንከባከብ ሁለት ቡሊያን ተለዋዋጮች ይወሰዳሉ
  • በተግባር 2 የድር አገልጋይ በ 192.168.1.4 እያስተናገድን ነው። የጊዜ ገደቡ እስኪደርስ ድረስ ይህ ተግባር በየ 5 ሰከንድ ይሠራል
  • ተግባር 2 የጊዜ ማብቂያ ላይ ሲደርስ ተግባር 3 ነቅቷል እና ተግባር 2 ተሰናክሏል።
  • በዚህ የጥሪ ጥሪ ውስጥ ከ STA (አካባቢያዊ አይፒ) ጋር እንገናኛለን
  • በስራ 3 ውስጥ ዳሳሹን ንባብ ወደ ደመና ThingSpeak ኤፒአይ እንለጥፋለን
  • ተግባር 3 ጊዜውን እስኪያልቅ ድረስ በየአምስት ሰከንዶች ማለትም 50 ሰከንድ ይሠራል
  • Task3 የእረፍት ጊዜው ሲደርስ ተግባር 1 እንደገና ነቅቷል እና ተግባር 3 ተሰናክሏል።
  • መልሶ ጥሪ ካልተጠራ ወይም መሣሪያው ስራ ፈት በሚሆንበት ጊዜ ወደ ብርሃን እንቅልፍ በመሄድ ኃይልን ይቆጥባል።

የጊዜ መርሐግብር ts;

// ተግባራት ለ i2c ፣ የድር አገልጋይን ማስተናገድ እና በነገሮች ንግግር ላይ መለጠፍ

ተግባር tI2C (1 * TASK_SECOND ፣ TASK_FOREVER ፣ & taskI2CCallback ፣ & ts ፣ ሐሰት ፣ NULL ፣ እና taskI2CDisable); ተግባር tAP (5*TASK_SECOND ፣ TASK_FOREVER ፣ እና ተግባርAPCallback ፣ & ts ፣ ሐሰት ፣ NULL ፣ እና ተግባር APDisable); ተግባር tWiFi (5* TASK_SECOND ፣ TASK_FOREVER ፣ & taskWiFiCallback ፣ & ts ፣ ሐሰት ፣ NULL እና taskWiFiDisable) ፤ ለተግባሮች/ጊዜ ማብቂያ tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // I2C ተግባርን ያንቁ tI2C.enable ();

ደረጃ 4 የሙቀት እና እርጥበት እሴቶችን ለማንበብ ኮድ

የሙቀት እና እርጥበት እሴቶችን ለማንበብ የ Wire.h ቤተ -መጽሐፍትን እየተጠቀምን ነው። ይህ ቤተ -መጽሐፍት በአነፍናፊው እና በዋናው መሣሪያ መካከል የ i2c ግንኙነትን ያመቻቻል። 0x44 ለ SHT31 የ I2C አድራሻ ነው።

SHT31 በተለየ የአሠራር ሁኔታ ውስጥ ይሠራል። ለዚያ የውሂብ ሉህ ማመልከት ይችላሉ።

ለአንድ ጥይት ቀዶ ጥገና በቅደም ተከተል 0x2C እና 0x06 ን እንደ MSB እና LSB እየተጠቀምን ነው።

// የ I2C ተግባር ጥሪ ጥሪ ባዶ ተግባር I2CCallback ()

{Serial.println ("taskI2CStarted"); ያልተፈረመ int ሥር [6]; // ከ 0x44 ማስተላለፍ ይጀምሩ ፣ Wire.begin ማስተላለፊያ (Addr); // ለአንድ ተኩስ ማስተላለፍ በከፍተኛ ተደጋጋሚነት 0x2C (MSB) እና 0x06 (LSB) Wire.write (0x2C) እንጠቀማለን። Wire.write (0x06); // ማብቂያ ማስተላለፍ Wire.endTransmission (); // የጥያቄ ባይት ከ 0x44 Wire.begin ማስተላለፊያ (አድሪ); Wire.endTransmission (); Wire.requestFrom (Addr, 6); ከሆነ (Wire.available () == 6) {// data [0] እና ውሂብ [1] 16 ቢት የሙቀት መጠን ይ containsል። ሥር [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 ተንሳፋፊ cTemp = -45.0 + (175.0 * temp /65535.0); ተንሳፋፊ 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: / t"); Serial.println (ሕብረቁምፊ (cTemp, 1)); Serial.print ("ሙቀት በ F: / t"); Serial.println (ሕብረቁምፊ (fTemp, 1)); Serial.print ("እርጥበት ፦ / t"); Serial.println (ሕብረቁምፊ (እርጥበት ፣ 1)); }

ደረጃ 5 የድር አገልጋዮችን ለማስተናገድ ኮድ

ዌብሳይቨርን ለማስተናገድ ኮድ
ዌብሳይቨርን ለማስተናገድ ኮድ
ዌብሳይቨርን ለማስተናገድ ኮድ
ዌብሳይቨርን ለማስተናገድ ኮድ

በማይንቀሳቀስ አይፒ ላይ የድር አገልጋይን ከመሣሪያችን አስተናግደናል።

  • ESP8266WebServer ቤተ -መጽሐፍት የድር አገልጋዩን ለማስተናገድ ያገለግላል
  • የእኛን የማይንቀሳቀስ አይፒ ለመፍጠር በመጀመሪያ የአይፒ አድራሻ ፣ የጌትዌይ እና ንዑስ አውታረ መረብ ጭንብል ማወጅ አለብን
  • አሁን ለመዳረሻ ነጥብዎ ssid እና የይለፍ ቃል ያውጁ።
  • ከማንኛውም STA መሣሪያ ወደ የመዳረሻ ነጥብ ይገናኙ
  • የበይነመረብ ግንኙነት ፕሮቶኮል ነባሪ ወደብ በሆነው ወደብ 80 ላይ አገልጋዩን ያስተናግዳል ፣ የሃርድቴክት ማስተላለፍ ፕሮቶኮል (ኤችቲቲፒ)
  • ለድር መግቢያ ድረ -ገጽ በድር አሳሽዎ ላይ 192.168.1.4 ን ያስገቡ እና 192.168.1.4/ ለሴንሰር ንባብ ድረ -ገጽ እሴት

// የማይንቀሳቀስ አይፒ ለኤ.ፒ

IPAddress ap_local_IP (192, 168, 1, 4);

IPAddress ap_gateway (192, 168, 1, 254);

IPAddress ap_subnet (255 ፣ 255 ፣ 255 ፣ 0) ፤ // ssid እና AP በ STA ሞድ ውስጥ ለአካባቢያዊ WiFi

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

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

// ssid እና ለኤ.ፒ

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

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

ESP8266WebServer አገልጋይ (80);

ባዶነት ማዋቀር {

server.on ("/", onHandleDataRoot);

server.on ("/እሴት" ፣ onHandleDataFeed);

server.onNotFound (onHandleNotFound);

}

ባዶ ተግባርAPCallback () {

Serial.println ("taskAP ተጀምሯል");

server.handleClient ();

}

ባዶ ላይ በ ‹HandleDataRoot () {server.send (200 ፣ “ጽሑፍ/html” ፣ PAGE1) ላይ ባዶነት; }

ባዶ ላይ በ HandleDataFeed () {

server.send (200 ፣ “ጽሑፍ/html” ፣ PAGE2); }

ባዶ ላይ በ HandleNotFound () {

ሕብረቁምፊ መልእክት = "ፋይል አልተገኘም / n / n";

መልዕክት += "URI:";

መልዕክት += server.uri ();

መልዕክት += "\ n ዘዴ:";

መልዕክት += (server.method () == HTTP_GET)? "GET": "POST";

መልዕክት += "\ n ክርክሮች:";

መልዕክት += server.args ();

መልዕክት += "\ n";

server.send (404 ፣ “ጽሑፍ/ተራ” ፣ መልእክት);}

ባዶነት ዳግም ግንኙነት APWiFi () {

WiFi.mode (WIFI_AP_STA);

መዘግየት (100);

WiFi. ግንኙነት ያቋርጡ ();

ቡሊያን ሁኔታ = WiFi.softAPConfig (ap_local_IP ፣ ap_gateway ፣ ap_subnet);

ከሆነ (ሁኔታ == እውነት) {

Serial.print ("soft-AP ማዘጋጀት …");

ቡሊያን ap = WiFi.softAP (APssid ፣ APpass);

ከሆነ (ap == እውነት) {

Serial.print ("ተገናኝቷል ከ / t");

// IPAddress myIP = WiFi.softAPIP ();

Serial.println (WiFi.softAPIP ());

}

server.begin ();

}

}

ደረጃ 6 - ወደ ተናገር ውሂብን ለመለጠፍ ኮድ

ወደ ተናገር ውሂብን ለመለጠፍ ኮድ
ወደ ተናገር ውሂብን ለመለጠፍ ኮድ
ወደ ተናገር ውሂብን ለመለጠፍ ኮድ
ወደ ተናገር ውሂብን ለመለጠፍ ኮድ
ወደ ተናገር ውሂብን ለመለጠፍ ኮድ
ወደ ተናገር ውሂብን ለመለጠፍ ኮድ
ወደ ተናገር ውሂብን ለመለጠፍ ኮድ
ወደ ተናገር ውሂብን ለመለጠፍ ኮድ

እዚህ የአነፍናፊ ንባቦችን ወደ Thing Speak እንለጥፋለን። ይህንን ተግባር ለማጠናቀቅ የሚከተሉት እርምጃዎች ያስፈልጋሉ-

  • በንግግር ውስጥ መለያዎን ይፍጠሩ
  • የእርስዎን ዳሳሽ ውሂብ ለማከማቸት ሰርጦችን እና መስኮችን ይፍጠሩ
  • እኛ የ ESP ን ወደ ነገር መናገር እና መለጠፍ እንችላለን እና በተቃራኒው የ GET እና POST ጥያቄዎችን ወደ api በመጠቀም።
  • እንደሚከተለው ለ ThingSpeak ውሂባችንን መለጠፍ እንችላለን

ባዶ ተግባር WiFiCallback () {

የ WiFi ደንበኛ wifiClient; ከሆነ (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += ሕብረቁምፊ (እርጥብ); postStr += "& field2 ="; 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 ("የይዘት-አይነት: ትግበራ/x-www-form-urlencoded / n"); wifiClient.print ("የይዘት-ርዝመት:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

ደረጃ 7 - አጠቃላይ ኮድ

ጠቅላላው ኮድ በእኔ github ማከማቻ ውስጥ ይገኛል

ክሬዲቶች

  • አርዱዲኖ JSON: ArduinoJson
  • ESP826 ድር አገልጋይ
  • የተግባር መርሐግብር
  • SHT 31
  • I2C ቅኝት
  • HIH6130 አስተማሪ ትምህርቶች
  • ሽቦ አርዱዲኖ
  • NCD.io

የሚመከር: