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: Thingspeak Setup
- Addım 7: Şeyi Danışmağa Məlumat Göndərmək üçün Kod
- Addım 8: Ümumi Kod
- Addım 9: Kreditlər
Video: ESP8266 İSTİFADƏ EDƏN THINGSPEAK SICAKLIĞI VƏ Rütubət Tətbiqi: 9 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Elektron əşyalarımla məşğul olarkən, veb əsaslı hava tətbiqi etmək fikrinə gəldim. Bu veb tətbiqi, real vaxt temperatur və rütubət məlumatlarını əldə etmək üçün SHT31 sensorundan istifadə edir. Layihəmizi ESP8266 WiFi modulunda yerləşdirdik. Onlayn və ya oflayn! Narahat olmağa ehtiyac yoxdur, onlayn və ya oflayn olsanız da, hava xəbərlərini hər yerdən və hər zaman alacaqsınız. Bu veb tətbiqi, məlumatları yerli veb serverə və buluda göndərir. Bulud əməliyyatları üçün ThingSpeak API -dən istifadə edirik. SHT31, sensordan məlumat almaq üçün I2C istifadə edir.
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:
- SHT 31
- Adafruit Huzzah ESP8266
- ESP8266 I2C adapteri
- 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ına çatdıqda Task 2 aktivdir 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 zəngdə STA -ya (yerli IP) qoşuluruq 3. Tapşırıqda 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 vaxtı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.
void taskI2CCallback ();
void taskI2CDisable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // i2c üçün tapşırıqlar, veb serveri yerləşdirmək və tI2C tapşırıqlarını yazmaq (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); 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 vəzifəsinin geri çağırılması etibarsız 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 hər hansı bir STA cihazından Giriş nöqtəsinə qoşulun
- İnternet bağlantısı protokolu üçün standart bir port olan 80 portunda server yerləşdirin, Hypertext Transfer Protocol (HTTP), giriş veb səhifəsi üçün veb brauzerinizə 192.168.1.4 daxil edin və sensor oxu veb səhifəsi üçün 192.168.1.4/Value
// APIPAddress ap_local_IP üçün statik 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 quruluşu WiFissid = "*********"; const char WiFipass = "*********"; // ssid və keçid AP const char APssid = "********"; const char APpass = "********"; ESP8266WebServer serveri (80); etibarsız quraşdırma {server.on ("/", onHandleDataRoot); server.on ("/Value", onHandleDataFeed); server.onNotFound (onHandleNotFound);} etibarsız taskAPCallback () {Serial.println ("taskAP başlamışdır"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text/html", PAGE1); } void onHandleDataFeed () {server.send (200, "text/html", PAGE2); } void onHandleNotFound () {String message = "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.mode (WIFI_AP_STA); gecikmə (100); WiFi.disconnect (); boolean statusu = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == doğru) {Serial.print ("Soft-AP qurulması …"); 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: Thingspeak Setup
ThingSpeak bir IoT platformasıdır. ThingSpeak, buludda sensor məlumatlarını toplamağa və saxlamağa imkan verən pulsuz bir veb xidmətidir.
Bu addımda sizə Thing Speak hesabınızı qurmaq üçün qısa bir prosedur verəcəyəm
- ThingSpeak -də yeni İstifadəçi Hesabı üçün qeydiyyatdan keçin
- Kanallar, Kanallarım və sonra Yeni Kanal seçərək yeni bir Kanal yaradın
- Sahələrinizi düzəldin
- Bu sahələrdə sensor məlumatlarınız var
- Write API Açarını və Kanal ID -ni qeyd edin
- Arduino eskizinizdə Arduino üçün ThingSpeak kitabxanasından istifadə edə bilərsiniz və ya məlumatları birbaşa ThingSpeak API -yə yerləşdirə bilərsiniz.
- Növbəti addım, məzmunu Thing Speak API -yə yerləşdirməklə bağlı işlənir
Addım 7: Ş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.
- 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
id tapşırığıWiFiCallback () {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 8: Ümumi Kod
Ümumi kod GitHub depomda mövcuddur
Addım 9: Kreditlər
- Arduino JSON
- ESP826WebServer
- Vəzifə Planlayıcısı
- SHT 31
- I2C Tarama
- HIH6130 göstərişli dərslik
- Tel
- NCD.io
Tövsiyə:
Arduino və ThingSpeak istifadə edən Mini Hava İstasyonu: 4 addım
Arduino və ThingSpeak istifadə edən Mini Hava İstasyonu: Hamınıza salam. Bu Təlimat kitabında sizə fərdi bir mini hava stansiyası hazırlamaq üçün addımlar atacağam. Ayrıca, hava məlumatlarımızı serverlərinə yükləmək üçün ThingSpeak API -dən istifadə edəcəyik və ya başqa bir hava stasiyasının məqsədi nədir
ARDUINO NANO İLE LCD NEMLİYİ VƏ SICAKLIĞI GÖSTƏRİN: 5 addım
LCD -də ARDUINO NANO İLƏ NEMLİK VƏ SICAKLIĞI GÖSTƏRİN: Arduino nano ilə sadə bir lcd interfeysi hazırlamaq üçün aşağıdakı təlimatlar verilir
BMP280 -DHT11 istifadə edən Arduino Hava İstasyonu - Temperatur, Rütubət və Təzyiq: 8 Addım
BMP280 -DHT11 -dən istifadə edən Arduino Hava İstasyonu - Temperatur, Rütubət və Təzyiq: Bu təlimatda TFT 7735 LCD Ekranda SICAKLIQ, NEMLİK və BASINCI göstərəcək bir hava stansiyası qurmağı öyrənəcəyik
Kodlaşdırma və Android Tətbiqi ilə UNO R3, HC-05 və L293D mühərrikindən istifadə edən Arduino 4 Təkərli Sürücü Bluetooth RC Avtomobil: 8 Addım
Kodlaşdırma və Android Tətbiqi ilə UNO R3, HC-05 və L293D Mühərrikdən istifadə edən Arduino 4 Təkərli Sürücü Bluetooth RC Avtomobil: Bu gün sizə HC 05, L293 mühərrik qalxanından istifadə edərək arduino 4 təkərli bluetooth RC avtomobilinin necə hazırlanacağını izah edəcəyəm. Android üçün avtomobili idarə etmək üçün kodlaşdırma və tətbiq ilə 4 DC motor. İstifadə olunan komponent: -1-Arduino UNO R32-Bluetooth HC-053-Motorshield L293
Bluetooth vasitəsi ilə SD Kart Modulu ilə Arduinodan Android Telefonuna İstilik və Rütubət Məlumatlarını Qeyd edən: 5 addım
Bluetooth vasitəsi ilə SD Kart Modulu ilə Arduinodan Android Telefona qədər İstilik və Rütubət Məlumatlarını Qeyd edən: Hamıya Salam, bu mənim ilk təlimatımdır, inşallah istehsalçı cəmiyyətinə kömək etdiyim kimi kömək edərəm. Çox vaxt layihələrimizdə sensorlar istifadə edirik, ancaq məlumatları toplamaq, saxlamaq və dərhal Telefonlara və ya digər cihazlara ötürmək üçün bir yol tapırıq