Სარჩევი:
- ნაბიჯი 1: საჭიროა აპარატურა
- ნაბიჯი 2: აპარატურის კავშირები
- ნაბიჯი 3: კოდი სამუშაოების დაგეგმვისთვის
- ნაბიჯი 4: ტემპერატურისა და ტენიანობის მნიშვნელობების კითხვის კოდი
- ნაბიჯი 5: ვებ სერვერის მასპინძლობის კოდი
- ნაბიჯი 6: კოდი სიტყვის მონაცემების განთავსებისთვის
- ნაბიჯი 7: საერთო კოდი
ვიდეო: ამინდის ვებ აპლიკაცია Esp8266 გამოყენებით: 7 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
SHT 31 არის ტემპერატურისა და ტენიანობის სენსორები, რომლებიც დამზადებულია სენსირიონის მიერ. SHT31 უზრუნველყოფს მაღალი დონის სიზუსტეს დაახლოებით% 2% RH. მისი ტენიანობის დიაპაზონი 0 -დან 100% -მდეა, ხოლო ტემპერატურა -40 -დან 125 ° C- მდე. ის ბევრად უფრო საიმედო და სწრაფია 8 წმ სენსორის რეაგირების დროით. მისი ფუნქციონირება მოიცავს სიგნალის გაძლიერებულ დამუშავებას და I2C თავსებადობას. მას აქვს მუშაობის სხვადასხვა რეჟიმი, რაც მას ენერგოეფექტურს ხდის.
ამ გაკვეთილში ჩვენ დავკავშირდით SHT 31 Adafruit Huzzah დაფასთან. ტემპერატურისა და ტენიანობის მნიშვნელობების წასაკითხად ჩვენ გამოვიყენეთ ESP8266 I2C ფარი. ეს ადაპტერი მომხმარებლისთვის ხელმისაწვდომს ხდის ყველა ქინძისთავს და გთავაზობთ მოსახერხებელ I2C გარემოს.
ნაბიჯი 1: საჭიროა აპარატურა
აპარატურა, რომელიც გამოიყენება ამ ამოცანის შესასრულებლად:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C ადაპტერი
4. I2C კაბელი
ნაბიჯი 2: აპარატურის კავშირები
ეს ნაბიჯი მოიცავს ტექნიკის დაკავშირების გზამკვლევს. ეს განყოფილება ძირითადად განმარტავს გაყვანილობის კავშირებს, რომლებიც საჭიროა სენსორსა და ESP8266 შორის. კავშირები შემდეგია.
- SHT31 მუშაობს I2C– ზე. ზემოთ მოყვანილი სურათი აჩვენებს კავშირს ESP8266 და SHT31 მოდულს შორის. ჩვენ ვიყენებთ I2C კაბელს, ან შეგვიძლია გამოვიყენოთ 4 F to F jumper მავთულები.
- ერთი მავთული გამოიყენება 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 გამორთულია.
- ჩვენ ვუკავშირდებით STA- ს (ადგილობრივ IP) ამ გამოძახების უკან
- მე –3 ამოცანაში ჩვენ ვაქვეყნებთ სენსორის კითხვას ThingSpeak API ღრუბელში
- ამოცანა 3 გადის ყოველ ხუთ წამში სანამ არ მიაღწევს თავის ვადას, ანუ 50 წმ
- როდესაც Task3 მიაღწევს თავის ვადას, ამოცანა 1 კვლავ ჩართულია და Task3 გამორთულია.
- როდესაც გამოძახება არ არის დარეკილი ან მოწყობილობა უმოქმედოა, ის გადადის სინათლის ძილზე, რითაც დაზოგავს ენერგიას.
განრიგი ც;
// ამოცანები i2c– ისთვის, ვებ სერვერის მასპინძლობა და გამოქვეყნება ნივთებზე
ამოცანა 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 AP– სთვის
IP მისამართი # ap_local_IP (192, 168, 1, 4);
IPAdress 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);
ბათილად დაყენება {
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 () {
სიმებიანი შეტყობინება = "ფაილი ვერ მოიძებნა / 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 ("რბილი დაყენება-AP …");
ლოგიკური ap = WiFi.softAP (APssid, APpass);
თუ (ap == ჭეშმარიტი) {
Serial.print ("დაკავშირებულია: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
ნაბიჯი 6: კოდი სიტყვის მონაცემების განთავსებისთვის
აქ ჩვენ ვაქვეყნებთ სენსორის კითხვას Thing Speak– ში. ამ ამოცანის შესასრულებლად საჭიროა შემდეგი ნაბიჯები-
- შექმენით თქვენი ანგარიში სიტყვით
- შექმენით არხები და ველები თქვენი სენსორის მონაცემების შესანახად
- ჩვენ შეგვიძლია მივიღოთ და გამოვაქვეყნოთ მონაცემები ESP– დან thingSpeak– ში და პირიქით, GET და POST მოთხოვნების გამოყენებით API– ზე.
- ჩვენ შეგვიძლია გამოვაქვეყნოთ ჩვენი მონაცემები ThingSpeak შემდეგნაირად
void 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 (); }
ნაბიჯი 7: საერთო კოდი
საერთო კოდი ხელმისაწვდომია ჩემს github საცავში
კრედიტები:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- ამოცანების განრიგი
- SHT 31
- I2C სკანირება
- HIH6130 ინსტრუქციის სახელმძღვანელო
- მავთულის არდუინო
- NCD.io
გირჩევთ:
მინი ამინდის ამინდის სადგური Arduino– ს და ThingSpeak– ის გამოყენებით: 4 ნაბიჯი
მინი ამინდის ამინდის სადგური Arduino– ს და ThingSpeak– ის გამოყენებით: გამარჯობა ყველას. ამ ინსტრუქციაში, მე გაგიწევთ ნაბიჯებს პერსონალური მინი ამინდის სადგურის შესაქმნელად. ასევე, ჩვენ ვიყენებთ ThingSpeak API– ს, რომ ატვირთავს ჩვენი ამინდის მონაცემებს მათ სერვერებზე, წინააღმდეგ შემთხვევაში რა არის ამინდის სტატისტიკის მიზანი
განათლების ვებ-აპლიკაცია: 13 ნაბიჯი
საგანმანათლებლო ვებ-აპლიკაცია: ეს პროექტი შეიქმნა როგორც დავალება ვიდეო და ციფრული სატელევიზიო კურსისთვის, რომლის დროსაც ჩვენ უნდა გადავწყვიტოთ სწავლებისა და სწავლების პრობლემა სამ დონეზე: მეთოდოლოგიური, ფუნქციონალური და კონცეპტუალური. ეს პროექტი შეიქმნა როგორც დავალება
THINGSPEAK ტემპერატურისა და ტენიანობის აპლიკაცია ESP8266 გამოყენებით: 9 ნაბიჯი
THINGSPEAK ტემპერატურისა და ტენიანობის აპლიკაცია ESP8266- ის გამოყენებით: ჩემს ელექტრონულ ნივთებთან მუშაობისას, მე მივიღე ეს იდეა, რომ ვებგვერდზე შექმნილი ამინდის აპლიკაცია შემექმნა. ეს ვებ აპლიკაცია იყენებს SHT31 სენსორს რეალურ დროში ტემპერატურისა და ტენიანობის მონაცემების მისაღებად. ჩვენ განვათავსეთ ჩვენი პროექტი ESP8266 WiFi მოდულზე. ონლაინ თუ ოფლ
ESP8266 ამინდის მონიტორის ვებ სერვერი (არდუინოს გარეშე): 4 ნაბიჯი
ESP8266 ამინდის მონიტორის ვებ სერვერი (არდუინოს გარეშე): "საგნების ინტერნეტი" (IoT) დღითიდღე სულ უფრო მზარდი საუბრის თემა ხდება. ეს არის კონცეფცია, რომელსაც არა მხოლოდ პოტენციალი აქვს გავლენა მოახდინოს იმაზე, თუ როგორ ვცხოვრობთ, არამედ იმაზეც, თუ როგორ ვმუშაობთ. სამრეწველო მანქანებიდან დამცავი მოწყობილობებით - ჩაშენებული
Acurite 5 in 1 ამინდის სადგური Raspberry Pi და Weewx გამოყენებით (სხვა ამინდის სადგურები თავსებადია): 5 ნაბიჯი (სურათებით)
Acurite 5 in 1 ამინდის სადგური Raspberry Pi და Weewx– ის გამოყენებით (სხვა ამინდის სადგურები თავსებადია): როდესაც მე ვიყიდე Acurite 5 in 1 ამინდის სადგური, მინდოდა შემეძლოს ამინდის შემოწმება ჩემს სახლში ყოფნისას. როდესაც სახლში მივედი და დავაყენე მივხვდი, რომ ან ეკრანი კომპიუტერთან უნდა მქონოდა ჩართული, ან მათი ჭკვიანი კერა შემეძინა