Mündəricat:

ESP8266 İSTİFADƏ EDƏN THINGSPEAK SICAKLIĞI VƏ Rütubət Tətbiqi: 9 Addım
ESP8266 İSTİFADƏ EDƏN THINGSPEAK SICAKLIĞI VƏ Rütubət Tətbiqi: 9 Addım

Video: ESP8266 İSTİFADƏ EDƏN THINGSPEAK SICAKLIĞI VƏ Rütubət Tətbiqi: 9 Addım

Video: ESP8266 İSTİFADƏ EDƏN THINGSPEAK SICAKLIĞI VƏ Rütubət Tətbiqi: 9 Addım
Video: How to use DHT11 DHT22 with NodeMCU ESP8266 to read temperature over WiFi - IoT 2024, Iyul
Anonim
ESP8266 istifadə edərək THINGSPEAK SICAKLIĞI VƏ Rütubət Tətbiqi
ESP8266 istifadə edərək THINGSPEAK SICAKLIĞI VƏ Rütubət Tətbiqi

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

Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur
Avadanlıq tələb olunur

Bu vəzifəni yerinə yetirmək üçün istifadə olunan avadanlıq:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. ESP8266 I2C adapteri
  4. I2C Kabeli

Addım 2: Avadanlıq Bağlantıları

Avadanlıq Əlaqələri
Avadanlıq Əlaqələri

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.

  1. 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.
  2. bir tel Vcc üçün, ikinci tel GND üçün və digər ikisi SDA və SCL üçün istifadə olunur
  3. 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

Tapşırıq Planlaşdırma Kodu
Tapşırıq Planlaşdırma Kodu

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ə Nəmlik dəyərlərini oxumaq üçün kod
İ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

Veb serveri yerləşdirmək üçün kod
Veb serveri yerləşdirmək üçün kod
Veb serveri yerləşdirmək üçün kod
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 Quraşdırması
Thingspeak Quraşdırması
Thingspeak Quraşdırması
Thingspeak Quraşdırması
Thingspeak Quraşdırması
Thingspeak Quraşdırması

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

Danışmağa Məlumat Göndərmək üçün Kod
Danışmağa Məlumat Göndərmək üçün Kod
Danışmağa Məlumat Göndərmək üçün Kod
Danışmağa Məlumat Göndərmək üçün Kod
Danışmağa Məlumat Göndərmək üçün Kod
Danışmağa Məlumat Göndərmək üçün Kod
Danışmağa Məlumat Göndərmək üçün Kod
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ə: