Mündəricat:
- Addım 1: Avadanlıq tələb olunur
- Addım 2: Avadanlıq Bağlantıları
- Addım 3: Tapşırıq Planlaması üçün Kod
- Addım 4: İstilik və Nəmlik Dəyərlərini Oxumaq üçün Kod
- Addım 5: Veb serveri yerləşdirmək üçün kod
- Addım 6: Şeyi Danışmağa Məlumat Göndərmək üçün Kod
- Addım 7: Ümumi Kod
Video: Esp8266 istifadə edərək Hava Veb Tətbiqi: 7 Adım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
SHT 31, Sensirion tərəfindən hazırlanan İstilik və Nəmlik Sensorlarıdır. SHT31, ± 2% RH ətrafında yüksək dəqiqlik təmin edir. Rütubət aralığı 0 ilə 100% arasında, temperatur aralığı -40 ilə 125 ° C arasındadır. 8 saniyəlik Sensor cavab müddəti ilə daha etibarlı və sürətlidir. Onun funksionallığı inkişaf etmiş siqnal emalı və I2C uyğunluğunu ehtiva edir. Enerjiyə qənaət edən fərqli iş rejimlərinə malikdir.
Bu təlimatda, Adafruit Huzzah lövhəsi ilə SHT 31 ilə əlaqə qurduq. Temperatur və Nəmlik dəyərlərini oxumaq üçün ESP8266 I2C qalxanından istifadə etdik. Bu adapter, bütün sancaqları istifadəçi üçün əlçatan edir və istifadəçi dostu I2C mühiti təklif edir.
Addım 1: Avadanlıq tələb olunur
Bu vəzifəni yerinə yetirmək üçün istifadə olunan avadanlıq:
1. SHT31
2. Adafruit Huzzah ESP8266
3. ESP8266 I2C adapteri
4. I2C Kabeli
Addım 2: Avadanlıq Bağlantıları
Bu addıma aparat bağlama bələdçisi daxildir. Bu hissə əsasən sensorla ESP8266 arasında lazım olan naqillərin əlaqələrini izah edir. Bağlantılar aşağıdakı kimidir.
- SHT31 I2C üzərində işləyir. Yuxarıdakı şəkil ESP8266 və SHT31 modulu arasındakı əlaqəni göstərir. Bunun üçün I2C kabelindən istifadə edirik və ya 4 F -dən F -yə keçid tellərindən istifadə edə bilərik.
- bir tel Vcc üçün, ikinci tel GND üçün və digər ikisi SDA və SCL üçün istifadə olunur.
- I2C adapterinə görə bir ESP8266 lövhəsinin pin2 və pin 14 sırasıyla SDA və SCL olaraq istifadə olunur
Addım 3: Tapşırıq Planlaması üçün Kod
Bu təlimatda üç əməliyyatı yerinə yetiririk
- I2C protokolundan istifadə edərək SHT11 məlumatlarını oxuyun
- veb serveri yerləşdirin və sensorun oxunmasını veb səhifəyə göndərin
- sensor oxunuşlarını ThingSpeak API -yə göndərin
Bunu etmək üçün TaskScheduler kitabxanasından istifadə edirik. Üç fərqli nəzarət əməliyyatına əsaslanan üç fərqli vəzifə təyin etdik. bu aşağıdakı kimi aparılır
- Tapşırıq 1, sensorun dəyərini oxumaq üçündür, bu tapşırıq 10 saniyəlik fasiləyə çatana qədər 1 saniyə ərzində işləyir.
- Vəzifə 1 vaxt aşımına çatanda Task 2 aktivləşdirilir və Task1 deaktiv edilir.
- Bu geri çağırışda AP -yə qoşuluruq, STA və AP arasında keçid üçün iki boolean dəyişən götürülür.
- Tapşırıq 2 -də 192.168.1.4 ünvanında bir veb serverə ev sahibliyi edirik. Bu vəzifə 50 saniyəlik fasiləyə çatana qədər hər 5 saniyə ərzində işləyir
- Tapşırıq 2 zaman aşımına çatanda Task 3 aktivdir və Task2 deaktiv edilir.
- Bu geri çağırmada STA -ya (yerli IP) qoşuluruq
- Tapşırıq 3 -də sensorun oxunmasını bulud ThingSpeak API -yə göndəririk
- Tapşırıq 3, hər saniyədə 50 saniyəyə qədər davam edir
- Task3 zaman aşımına çatanda Task 1 yenidən aktiv edilir və Task3 deaktiv edilir.
- Heç bir zəng edilmədikdə və ya cihaz boş qaldıqda, Yüngül Yuxuya gedir və beləliklə enerjiyə qənaət edir.
Planlaşdırıcı ts;
// i2c üçün tapşırıqlar, veb serveri yerləşdirmək və şeyi danışmaqda yazmaq
Tapşırıq tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Tapşırıq tAP (5*TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Tapşırıq tWiFi (5* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // tapşırıqlar üçün zaman aşımı tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // I2C tapşırığını aktivləşdir tI2C.enable ();
Addım 4: İstilik və Nəmlik Dəyərlərini Oxumaq üçün Kod
İstilik və rütubət dəyərlərini oxumaq üçün Wire.h kitabxanasından istifadə edirik. Bu kitabxana, sensor və əsas cihaz arasında i2c əlaqəsini asanlaşdırır. 0x44, SHT31 üçün I2C ünvanıdır.
SHT31 fərqli bir iş rejimində işləyir. Bunun üçün məlumat cədvəlinə müraciət edə bilərsiniz.
Bir vuruş əməliyyatı üçün sırasıyla MSB və LSB olaraq 0x2C və 0x06 istifadə edirik.
// I2C tapşırığının geri çağırılması void taskI2CCallback ()
{Serial.println ("taskI2CStarted"); imzasız int kök [6]; // 0x44 -dən ötürməyə başlayın; Wire.beginTransmission (Addr); // yüksək təkrarlanabilirliyə malik bir vuruş ötürülməsi üçün 0x2C (MSB) və 0x06 (LSB) Wire.write (0x2C) istifadə edirik; Wire.write (0x06); // son ötürmə Wire.endTransmission (); // 0x44 Wire.beginTransmission (Addr) -dən bayt istəyin; Wire.endTransmission (); Wire.requestFrom (Addr, 6); if (Wire.available () == 6) {// data [0] və data [1] 16 bit temperaturdan ibarətdir. kök [0] = Wire.read (); kök [1] = Wire.read (); // data [2] 8 bit CRC kökü ehtiva edir [2] = Wire.read (); // data [3] və data [4] 16 bit nəmlik kök [3] = Wire.read (); kök [4] = Wire.read (); // data [5] 8 bit CRC kökündən ibarətdir [5] = Wire.read (); } int temp = (kök [0] * 256) + kök [1]; // MSB -ni 8 bit dəyişdirərək LSB float cTemp = -45.0 + (175.0 * temp /65535.0) əlavə edin; float fTemp = (cTemp * 1.8) + 32.0; // MSB -ni 8 bit sürüşdürün, tam qətnamə ilə LSB əlavə edin və yüzmə nisbətinə görə * 100 = (100.0 * ((kök [3] * 256.0) + kök [4])) /65535.0;
tempC = cTemp;
tempF = fTemp; nəm = rütubət; Serial.print ("C -də temperatur: / t"); Serial.println (String (cTemp, 1)); Serial.print ("F -də temperatur: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Rütubət: / t"); Serial.println (String (rütubət, 1)); }
Addım 5: Veb serveri yerləşdirmək üçün kod
Statik bir IP üzərində cihazımızdan bir veb server yerləşdirdik.
- ESP8266WebServer kitabxanası veb serveri yerləşdirmək üçün istifadə olunur
- Əvvəlcə statik IP -ni yaratmaq üçün IP ünvanını, Ağ Geçidini və alt şəbəkə maskasını elan etməliyik
- İndi giriş nöqtəniz üçün ssid və parol elan edin.
- İstənilən STA cihazından Giriş nöqtəsinə qoşulun
- serveri İnternet əlaqəsi protokolu üçün standart bir port olan Hypertext Transfer Protocol (HTTP) olan 80 portunda yerləşdirin.
- Giriş səhifəsi üçün veb brauzerinizə 192.168.1.4 və veb səhifəsini oxuyan sensor üçün 192.168.1.4/Value daxil edin
// AP üçün statik Ip
IPAddress ap_local_IP (192, 168, 1, 4);
IPAddress ap_gateway (192, 168, 1, 254);
IPAddress ap_subnet (255, 255, 255, 0); // STA rejimində yerli WiFi üçün ssid və AP
const char WiFissid = "*********";
const char WiFipass = "*********";
// ssid və AP üçün keçid
const char APssid = "********";
const char APpass = "********";
ESP8266WebServer serveri (80);
boş quraşdırma {
server.on ("/", onHandleDataRoot);
server.on ("/Value", onHandleDataFeed);
server.onNotFound (onHandleNotFound);
}
void taskAPCallback () {
Serial.println ("taskAP başladı");
server.handleClient ();
}
void onHandleDataRoot () {server.send (200, "text/html", PAGE1); }
void onHandleDataFeed () {
server.send (200, "text/html", PAGE2); }
void onHandleNotFound () {
String mesajı = "Fayl tapılmadı / n / n";
mesaj += "URI:";
mesaj += server.uri ();
mesaj += "\ nMetod:";
mesaj += (server.method () == HTTP_GET)? "AL": "POST";
mesaj += "\ nArqumentlər:";
mesaj += server.args ();
mesaj += "\ n";
server.send (404, "mətn/düz", mesaj);}
etibarsız yenidən bağlanmaAPWiFi () {
WiFi rejimi (WIFI_AP_STA);
gecikmə (100);
WiFi.disconnect ();
boolean statusu = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
əgər (status == doğru) {
Serial.print ("Soft-AP qurulur …");
boolean ap = WiFi.softAP (APssid, APpass);
əgər (ap == doğru) {
Serial.print ("bağlı: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
server.begin ();
}
}
Addım 6: Şeyi Danışmağa Məlumat Göndərmək üçün Kod
Burada Thing Speak -a sensor oxunuşlarını yerləşdiririk. Bu işi başa çatdırmaq üçün aşağıdakı addımlar atılmalıdır.
- Danışarkən öz hesabınızı yaradın
- Sensor məlumatlarınızı saxlamaq üçün kanallar və sahələr yaradın
- api-yə GET və POST istəklərindən istifadə edərək məlumatları ESP-dən thingSpeak-ə ala və göndərə bilərik.
- ThingSpeak -a məlumatlarımızı aşağıdakı kimi yerləşdirə bilərik
void taskWiFiCallback () {
WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr += "& field1 ="; postStr += String (nəmli); postStr += "& field2 ="; postStr += String (tempC); postStr += "& field3 ="; postStr += String (tempF); postStr += "\ r / n / r / n"; wifiClient.print ("POST /yeniləmə HTTP /1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Bağlantı: yaxın / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:"+apiKey+"\ n"); wifiClient.print ("Content-Type: application/x-www-form-urlencoded / n"); wifiClient.print ("Məzmun-Uzunluq:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Addım 7: Ümumi Kod
Ümumi kod github depomda mövcuddur
Kreditlər:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Vəzifə Planlayıcısı
- SHT 31
- I2C Tarama
- HIH6130 göstərişli dərslik
- Tel Arduino
- NCD.io
Tövsiyə:
Relay Interface (I2C) istifadə edərək MCP-23008 tətbiqi :: 6 addım
Relay Interface (I2C) istifadə edərək MCP-23008 tətbiqi :: HelloGood Greetings .. !! Arduino nano və MCP23008 istifadə edərək I2C protokolu ilə Röleləri idarə edəcək Dcube texnologiya müəssisələri adından mən (Somanshu Choudhary)
RaspberryPi istifadə edərək TicTacToe Avadanlıq Tətbiqi: 4 addım
RaspberryPi istifadə edərək TicTacToe Avadanlıq Tətbiqi: Bu layihə, bir moruq pi istifadə edərək iki oyunçunu ifadə edən iki fərqli rəngli LED istifadə edərək interaktiv TicTacToe modeli qurmağı hədəfləyir. Buradakı fikir, bunu xiyabanda daha geniş miqyasda həyata keçirmək idi - 3x3 yarı qlobusdan ibarət bir şəbəkə təsəvvür edin (li
RFID RC-522 və Arduino Mega istifadə edərək sadə bir Supermarket Tətbiqi: 6 addım
RFID RC-522 və Arduino Mega-dan istifadə edən sadə bir Supermarket Tətbiqi: Sizi burada başqa bir dərsliyimdə yenidən görmək xoşdur, burada RFID RC-522 və Arduino-dan istifadə edərək sadə bir supermarket tətbiqetməsinin yaradılmasına kömək edəcəyəm. sadə GUI.Not: işləyərkən Arduino serial monitorunu çalıştırmayın
Arduino Mega 2560 və IoT: 8 Adımdan istifadə edərək Kaldırma Tətbiqi üçün Motor İdarəetmə Sistemi (Şəkillərlə birlikdə)
Arduino Mega 2560 və IoT istifadə edərək tətbiqin qaldırılması üçün motor idarəetmə sistemi: İndiki vaxtda IoT əsaslı mikrokontroller sənaye tətbiqində geniş istifadə olunur. İqtisadi cəhətdən kompüter əvəzinə istifadə olunur. Layihənin məqsədi, nəzarət, məlumat qeyd etmə və 3 fazalı induksiya motorunu tam rəqəmsal hala gətirməkdir
Raspberry Pi və Weewx istifadə edərək Acurite 5 -də 1 Hava İstasyonu (digər Hava İstasyonları Uyğundur): 5 Addım (Şəkillərlə)
Raspberry Pi və Weewx istifadə edərək Acurite 5 -də 1 Hava İstasyonu (digər Hava İstasyonları Uyğundur): Acurite 5 -i 1 hava stansiyasından alanda evdən kənarda olduğum zaman havanı yoxlamaq istəyirdim. Evə gəlib qurduqda ya ekranı kompüterə bağlamalı olduğumu, ya da ağıllı mərkəzini almalı olduğumu başa düşdüm