Სარჩევი:

THINGSPEAK ტემპერატურისა და ტენიანობის აპლიკაცია ESP8266 გამოყენებით: 9 ნაბიჯი
THINGSPEAK ტემპერატურისა და ტენიანობის აპლიკაცია ESP8266 გამოყენებით: 9 ნაბიჯი

ვიდეო: THINGSPEAK ტემპერატურისა და ტენიანობის აპლიკაცია ESP8266 გამოყენებით: 9 ნაბიჯი

ვიდეო: THINGSPEAK ტემპერატურისა და ტენიანობის აპლიკაცია ESP8266 გამოყენებით: 9 ნაბიჯი
ვიდეო: ESP8266 ESP01 DHT11 ტემპერატურის ტენიანობის სენსორის მოდულის პროგრამირება | RemoteXY | FLProg 2024, სექტემბერი
Anonim
THINGSPEAK ტემპერატურისა და ტენიანობის აპლიკაცია ESP8266- ის გამოყენებით
THINGSPEAK ტემპერატურისა და ტენიანობის აპლიკაცია ESP8266- ის გამოყენებით

ჩემს ელექტრონულ ნივთებთან მუშაობისას, მე მივიღე ეს იდეა, რომ ვებგვერდზე შექმნილი ამინდის აპლიკაცია შემექმნა. ეს ვებ აპლიკაცია იყენებს SHT31 სენსორს რეალურ დროში ტემპერატურისა და ტენიანობის მონაცემების მისაღებად. ჩვენ განვათავსეთ ჩვენი პროექტი ESP8266 WiFi მოდულზე. ონლაინ თუ ოფლაინ! არ უნდა ინერვიულოთ, ხართ თუ არა ონლაინ რეჟიმში ან ხაზგარეშე, თქვენ მიიღებთ ამინდის განახლებას ნებისმიერი ადგილიდან და ნებისმიერ დროს. ეს ვებ აპლიკაცია აქვეყნებს მონაცემებს როგორც ადგილობრივ ვებ სერვერზე, ასევე ღრუბელში. ღრუბლოვანი ოპერაციებისთვის ჩვენ ვიყენებთ ThingSpeak API- ს. SHT31 იყენებს I2C სენსორის მონაცემების მისაღებად.

SHT 31 არის ტემპერატურისა და ტენიანობის სენსორები, რომლებიც დამზადებულია სენსირიონის მიერ. SHT31 უზრუნველყოფს მაღალი დონის სიზუსტეს დაახლოებით% 2% RH. მისი ტენიანობის დიაპაზონი 0 -დან 100% -მდეა, ხოლო ტემპერატურა -40 -დან 125 ° C- მდე. ის ბევრად უფრო საიმედო და სწრაფია 8 წმ სენსორის რეაგირების დროით. მისი ფუნქციონირება მოიცავს სიგნალის გაძლიერებულ დამუშავებას და I2C თავსებადობას. მას აქვს მუშაობის სხვადასხვა რეჟიმი, რაც მას ენერგოეფექტურს ხდის.

ამ გაკვეთილში ჩვენ დავკავშირდით SHT 31 Adafruit Huzzah დაფასთან. ტემპერატურისა და ტენიანობის მნიშვნელობების წასაკითხად ჩვენ გამოვიყენეთ 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 to F jumper მავთულები.
  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 გამორთულია.
  • ჩვენ ვუკავშირდებით STA- ს (ადგილობრივ IP- ს) ამ calback– ში ამოცანა 3 – ში ჩვენ ვაქვეყნებთ სენსორის კითხვას ღრუბელში ThingSpeak API
  • ამოცანა 3 გადის ყოველ ხუთ წამში სანამ არ მიაღწევს თავის ვადას, ანუ 50 წმ
  • როდესაც Task3 დრო ამოიწურება, ამოცანა 1 კვლავ ჩართულია და Task3 გამორთულია.
  • როდესაც გამოძახება არ არის დარეკილი ან მოწყობილობა უმოქმედოა, ის გადადის სინათლის ძილზე, რითაც დაზოგავს ენერგიას.

void taskI2CCallback ();

void taskI2CD გამორთულია (); void taskAPCallback (); void taskAPDisable (); void 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. ჩართვა ();

ნაბიჯი 4: ტემპერატურისა და ტენიანობის მნიშვნელობების კითხვის კოდი

ტემპერატურისა და ტენიანობის მნიშვნელობების კითხვის კოდი
ტემპერატურისა და ტენიანობის მნიშვნელობების კითხვის კოდი

ჩვენ ვიყენებთ Wire.h ბიბლიოთეკას ტემპერატურისა და ტენიანობის მნიშვნელობების წასაკითხად. ეს ბიბლიოთეკა ხელს უწყობს სენსორსა და სამაგისტრო მოწყობილობას შორის i2c კომუნიკაციას. 0x44 არის I2C მისამართი SHT31– ისთვის.

SHT31 მუშაობს სხვადასხვა რეჟიმში. ამისათვის შეგიძლიათ მიმართოთ მონაცემთა ცხრილს. ჩვენ ვიყენებთ 0x2C და 0x06 როგორც MSB და LSB შესაბამისად ერთჯერადი გასროლისთვის.

// I2C ამოცანის გამოძახება void taskI2CCallback () {Serial.println ("taskI2CStarted"); ხელმოუწერელი int root [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); if (Wire.available () == 6) {// მონაცემები [0] და მონაცემები [1] შეიცავს 16 ბიტიან ტემპერატურას. root [0] = Wire.read (); root [1] = Wire.read (); // მონაცემები [2] შეიცავს 8 ბიტიან CRC ფესვს [2] = Wire.read (); // მონაცემები [3] და მონაცემები [4] შეიცავს 16 ბიტიან ტენიანობის ფესვს [3] = Wire.read (); root [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 % float ტენიანობით = (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: ვებ სერვერის მასპინძლობის კოდი

ვებ სერვერის მასპინძლობის კოდი
ვებ სერვერის მასპინძლობის კოდი
ვებ სერვერის მასპინძლობის კოდი
ვებ სერვერის მასპინძლობის კოდი

ჩვენ მასპინძლობდა ვებ სერვერს ჩვენი მოწყობილობიდან სტატიკურ IP– ზე.

ვებ სერვერის მასპინძლობისთვის გამოიყენება ESP8266WebServer ბიბლიოთეკა

  • პირველ რიგში ჩვენ უნდა გამოვაცხადოთ IP მისამართი, Gateway და ქვექსელის ნიღაბი ჩვენი სტატიკური IP შესაქმნელად
  • ახლა გამოაცხადეთ ssid და პაროლი თქვენი წვდომის წერტილისთვის. დაუკავშირდით წვდომის წერტილს ნებისმიერი STA მოწყობილობიდან
  • უმასპინძლეთ სერვერი პორტზე 80, რომელიც არის ნაგულისხმევი პორტი ინტერნეტ საკომუნიკაციო პროტოკოლისთვის, ჰიპერტექსტის გადაცემის პროტოკოლი (HTTP) შეიყვანეთ 192.168.1.4 თქვენს ვებ ბრაუზერში შესასვლელი ვებგვერდისთვის და 192.168.1.4/ ღირებულება სენსორის კითხვის ვებგვერდზე

// სტატიკური 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 ("/მნიშვნელობა", 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. გათიშვა (); ლოგიკური სტატუსი = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (სტატუსი == ჭეშმარიტი) {Serial.print ("რბილი დაყენება-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– სთვის ან შეგიძლიათ პირდაპირ განათავსოთ მონაცემები ThingSpeak API– ში
  • შემდეგი ნაბიჯი შეიმუშავებს შინაარსის განთავსებას Thing Speak API– ში

ნაბიჯი 7: მონაცემთა გამოქვეყნების კოდი სათქმელში

კოდი სიტყვებისათვის მონაცემების განთავსებისთვის
კოდი სიტყვებისათვის მონაცემების განთავსებისთვის
კოდი სიტყვებისათვის მონაცემების განთავსებისთვის
კოდი სიტყვებისათვის მონაცემების განთავსებისთვის
კოდი სიტყვებისათვის მონაცემების განთავსებისთვის
კოდი სიტყვებისათვის მონაცემების განთავსებისთვის
კოდი სიტყვებისათვის მონაცემების განთავსებისთვის
კოდი სიტყვებისათვის მონაცემების განთავსებისთვის

აქ ჩვენ ვაქვეყნებთ სენსორის კითხვას Thing Speak– ში. ამ ამოცანის შესასრულებლად საჭიროა შემდეგი ნაბიჯები-

  • შექმენით თქვენი ანგარიში thing speak შექმენით არხები და ველები თქვენი სენსორის მონაცემების შესანახად
  • ჩვენ შეგვიძლია მივიღოთ და გამოვაქვეყნოთ მონაცემები ESP– დან thingSpeak– ში და პირიქით, GET და POST მოთხოვნების გამოყენებით API– ზე.
  • ჩვენ შეგვიძლია გამოვაქვეყნოთ ჩვენი მონაცემები ThingSpeak შემდეგნაირად

id taskWiFiCallback () {WiFiClient wifiClient; if (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 /განახლება 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 (); }

ნაბიჯი 8: საერთო კოდი

საერთო კოდი ხელმისაწვდომია ჩემს GitHub საცავში

ნაბიჯი 9: კრედიტები

  • არდუინო ჯსონი
  • ESP826WebServer
  • ამოცანების განრიგი
  • SHT 31
  • I2C სკანირება
  • HIH6130 ინსტრუქციის სახელმძღვანელო
  • მავთული
  • NCD.io

გირჩევთ: