Isi kandungan:

APLIKASI SUHU DAN HUMIDITI THINGSPEAK MENGGUNAKAN ESP8266: 9 Langkah
APLIKASI SUHU DAN HUMIDITI THINGSPEAK MENGGUNAKAN ESP8266: 9 Langkah

Video: APLIKASI SUHU DAN HUMIDITI THINGSPEAK MENGGUNAKAN ESP8266: 9 Langkah

Video: APLIKASI SUHU DAN HUMIDITI THINGSPEAK MENGGUNAKAN ESP8266: 9 Langkah
Video: Sistem Monitoring Suhu dan Kelembapan dengan DHT11 berbasis NodeMCU ESP8266 dan Thingspeak.com 2024, November
Anonim
APLIKASI SUHU DAN HUMIDITI THINGSPEAK MENGGUNAKAN ESP8266
APLIKASI SUHU DAN HUMIDITI THINGSPEAK MENGGUNAKAN ESP8266

Semasa bermain-main dengan barang elektronik saya, saya mendapat idea ini untuk membuat aplikasi cuaca berasaskan web. Aplikasi web ini menggunakan sensor SHT31 untuk mendapatkan data suhu dan kelembapan masa nyata. Kami telah melaksanakan projek kami pada modul WiFi ESP8266. Dalam talian atau luar talian! Tidak perlu risau, sama ada anda dalam talian atau luar talian anda akan mendapat maklumat cuaca dari mana sahaja dan bila-bila masa. Aplikasi web ini menyiarkan data ke pelayan web tempatan dan juga ke awan. Untuk operasi awan, kami menggunakan ThingSpeak API. SHT31 menggunakan I2C untuk mendapatkan data dari sensor.

SHT 31 adalah Sensor Suhu dan Kelembapan yang dibuat oleh Sensirion. SHT31 memberikan tahap ketepatan yang tinggi sekitar ± 2% RH. Julat kelembapannya antara 0 hingga 100% dan julat suhu antara -40 hingga 125 ° C. Ia jauh lebih dipercayai dan pantas dengan masa tindak balas Sensor 8 saat. Fungsinya merangkumi pemprosesan isyarat yang dipertingkatkan dan keserasian I2C. Ia mempunyai mod operasi yang berbeza yang menjadikannya cekap tenaga.

Dalam tutorial ini, kami telah menghubungkan SHT 31 dengan papan Adafruit Huzzah. Untuk membaca nilai Suhu dan Kelembapan kami telah menggunakan pelindung ESP8266 I2C. Penyesuai ini menjadikan semua pin dapat diakses oleh pengguna dan menawarkan persekitaran I2C yang mesra pengguna.

Langkah 1: Perkakasan Diperlukan

Diperlukan Perkakasan
Diperlukan Perkakasan
Diperlukan Perkakasan
Diperlukan Perkakasan
Diperlukan Perkakasan
Diperlukan Perkakasan

Perkakasan yang digunakan untuk menyelesaikan tugas ini:

  1. SHT 31
  2. Adafruit Huzzah ESP8266
  3. Penyesuai ESP8266 I2C
  4. Kabel I2C

Langkah 2: Sambungan Perkakasan

Sambungan Perkakasan
Sambungan Perkakasan

Langkah ini merangkumi panduan penyambungan perkakasan. Bahagian ini pada dasarnya menerangkan sambungan pendawaian yang diperlukan antara sensor dan ESP8266. Sambungannya adalah seperti berikut.

  1. SHT31 berfungsi di atas I2C. Gambar di atas menunjukkan hubungan antara modul ESP8266 dan SHT31. Kami menggunakan kabel I2C untuk itu sama ada kami boleh menggunakan wayar jumper 4 F hingga F.
  2. satu wayar digunakan untuk Vcc, wayar kedua untuk GND dan dua lain untuk SDA dan SCL masing-masing
  3. Menurut penyesuai I2C pin2 dan pin 14 dari papan ESP8266 masing-masing digunakan sebagai SDA dan SCL

Langkah 3: Kod Penjadualan Tugas

Kod untuk Penjadualan Tugas
Kod untuk Penjadualan Tugas

Dalam tutorial ini, kami melakukan tiga operasi

  • Baca data dari SHT11 menggunakan protokol I2C
  • hos pelayan web dan hantar bacaan sensor ke laman web
  • siarkan bacaan sensor ke ThingSpeak API

Untuk mencapai ini, kami menggunakan perpustakaan TaskScheduler. Kami telah menjadualkan tiga tugas berbeza yang merujuk kepada tiga operasi kawalan yang berbeza. ini dilakukan seperti berikut

  • Tugas 1 adalah untuk membaca nilai sensor tugas ini berjalan selama 1 saat sehingga mencapai masa tamat 10 saat.
  • Apabila Task1 mencapai waktunya, Task 2 diaktifkan dan Task1 dilumpuhkan.
  • Kami menyambung ke AP dalam panggilan balik ini, Dua pemboleh ubah boolean diambil untuk menjaga pertukaran antara STA dan AP
  • Dalam Tugasan 2 kami menghoskan pelayan web di 192.168.1.4. Tugas ini dijalankan setiap 5 saat sehingga masa tamat adalah 50 saat
  • Apabila Task 2 mencapai timeout, Task 3 diaktifkan dan Task2 dilumpuhkan.
  • Kami menyambung ke STA (IP tempatan) dalam kalback ini. Dalam Tugas 3, kami menyiarkan bacaan sensor ke cloud ThingSpeak API

  • Tugasan 3 dijalankan setiap lima saat sehingga tamat waktunya iaitu 50 saat
  • Apabila Task3 habis waktunya, Task 1 diaktifkan lagi dan Task3 dilumpuhkan.
  • Apabila panggilan balik tidak dipanggil atau peranti dalam keadaan tidak aktif, ia akan menuju ke Tidur Tidur sehingga menjimatkan tenaga.

membatalkan tugasI2CCallback ();

membatalkan tugasI2CDDisable (); membatalkan tugasAPCallback (); membatalkan tugasAPDisable (); membatalkan tugasWiFiCallback (); membatalkan tugasWiFiDisable (); // Tugas untuk i2c, hosting pelayan web dan hantar di thingspeak Task tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CC Callback, & ts, false, NULL, & taskI2CDisable); TI2C Tugas (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDDisable); TAP tugas (5 * TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); TWiFi Tugas (5 * TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // timeout untuk tugas tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // aktifkan tugas I2C tI2C. aktif ();

Langkah 4: Kod untuk Membaca Nilai Suhu dan Kelembapan

Kod untuk Membaca Nilai Suhu dan Kelembapan
Kod untuk Membaca Nilai Suhu dan Kelembapan

Kami menggunakan perpustakaan Wire.h untuk membaca nilai suhu dan kelembapan. Perpustakaan ini memudahkan komunikasi i2c antara sensor dan peranti induk. 0x44 adalah alamat I2C untuk SHT31.

SHT31 beroperasi dalam mod operasi yang berbeza. Anda boleh merujuk lembaran data untuk itu. Kami masing-masing menggunakan 0x2C dan 0x06 sebagai MSB dan LSB untuk operasi tembakan tunggal.

// Callback tugas I2C batal taskI2CCallback () {Serial.println ("taskI2CStarted"); int intan yang tidak ditandatangani [6]; // mulakan penghantaran dari 0x44; Wire.beginTransmission (Addr); // untuk transmisi satu tembakan dengan kebolehulangan yang tinggi kami menggunakan 0x2C (MSB) dan 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // penghantaran akhir Wire.endTransmission (); // permintaan bait dari 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); jika (Wire.available () == 6) {// data [0] dan data [1] mengandungi suhu 16 bit. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] mengandungi 8 bit CRC root [2] = Wire.read (); // data [3] dan data [4] mengandungi 16 bit akar kelembapan [3] = Wire.read (); root [4] = Wire.read (); // data [5] terdiri daripada akar CRC 8 bit [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // shift MSB sebanyak 8 bit tambahkan LSB float cTemp = -45.0 + (175.0 * temp / 65535.0); apungan fTemp = (cTemp * 1.8) + 32.0; // ubah MSB sebanyak 8 bit tambahkan LSB padanya dibahagi dengan resolusi penuh dan * 100 untuk peratusan kelembapan apungan = (100.0 * ((root [3] * 256.0) + root [4])) / 65535.0; tempC = cTemp; tempF = fTemp; lembap = kelembapan; Serial.print ("Suhu dalam C: / t"); Serial.println (Rentetan (cTemp, 1)); Serial.print ("Suhu dalam F: / t"); Serial.println (Rentetan (fTemp, 1)); Serial.print ("Kelembapan: / t"); Serial.println (Rentetan (kelembapan, 1)); }

Langkah 5: Kod untuk Menjamu Pelayan Web

Kod untuk Menjamu Pelayan Web
Kod untuk Menjamu Pelayan Web
Kod untuk Menjamu Pelayan Web
Kod untuk Menjamu Pelayan Web

Kami telah menghoskan pelayan web dari peranti kami pada IP statik.

Perpustakaan ESP8266WebServer digunakan untuk menghoskan pelayan web

  • Mula-mula kita perlu menyatakan alamat IP, Gateway dan subnet mask untuk membuat IP statik kita
  • Sekarang nyatakan ssid dan kata laluan untuk titik Akses anda. Sambungkan ke titik Akses dari mana-mana peranti STA
  • hos pelayan pada port 80 yang merupakan port default untuk protokol komunikasi internet, Hypertext Transfer Protocol (HTTP) masukkan 192.168.1.4 pada pelayar web anda untuk halaman web pengenalan dan 192.168.1.4/Nilai untuk halaman membaca sensor

// Ip statik untuk APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); Alamat IP ap_subnet (255, 255, 255, 0); // ssid dan AP untuk WiFi tempatan dalam mod STA const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid dan lulus untuk AP const char APssid = "********"; const char APpass = "********"; Pelayan ESP8266WebServer (80); batal persediaan {server.on ("/", onHandleDataRoot); server.on ("/ Nilai", onHandleDataFeed); server.onNotFound (onHandleNotFound);} batal taskAPCallback () {Serial.println ("taskAP bermula"); pelayan.handleClient (); } batal onHandleDataRoot () {server.send (200, "text / html", PAGE1); } batal onHandleDataFeed () {server.send (200, "text / html", PAGE2); } batal onHandleNotFound () {String message = "Fail Tidak Dijumpai / n / n"; mesej + = "URI:"; mesej + = pelayan.uri (); mesej + = "\ n Kaedah:"; message + = (server.method () == HTTP_GET)? "DAPATKAN": "POST"; mesej + = "\ nArgumen:"; mesej + = pelayan.args (); mesej + = "\ n"; server.send (404, "teks / biasa", mesej); } batalkan penyambungan semulaAPWiFi () {WiFi.mode (WIFI_AP_STA); kelewatan (100); WiFi.disconnect (); status boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Menetapkan soft-AP …"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("disambungkan ke: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } pelayan.begin ();

}

Langkah 6: Persediaan Thingspeak

Persediaan Thingspeak
Persediaan Thingspeak
Persediaan Thingspeak
Persediaan Thingspeak
Persediaan Thingspeak
Persediaan Thingspeak

ThingSpeak adalah platform IoT. ThingSpeak adalah perkhidmatan web percuma yang membolehkan anda mengumpulkan dan menyimpan data sensor di cloud.

Dalam Langkah ini, saya akan memberi anda prosedur ringkas untuk menyiapkan akaun Thing Speak anda

  • Daftar untuk Akaun Pengguna baru di ThingSpeak
  • Buat Saluran baru dengan memilih Saluran, Saluran Saya, dan kemudian Saluran Baru
  • Edit bidang anda
  • Medan ini mengandungi data sensor anda
  • Perhatikan Kunci API Tulis dan ID Saluran
  • Pada lakaran Arduino anda, anda boleh menggunakan perpustakaan ThingSpeak untuk Arduino atau anda boleh POST langsung data ke ThingSpeak API
  • langkah seterusnya menghuraikan mengenai penyiaran kandungan ke Thing Speak API

Langkah 7: Kod untuk Menghantar Data ke Perkara Yang Bercakap

Kod untuk Menghantar Data ke Perkara Yang Bercakap
Kod untuk Menghantar Data ke Perkara Yang Bercakap
Kod untuk Menghantar Data ke Perkara Yang Bercakap
Kod untuk Menghantar Data ke Perkara Yang Bercakap
Kod untuk Menghantar Data ke Perkara Yang Bercakap
Kod untuk Menghantar Data ke Perkara Yang Bercakap
Kod untuk Menghantar Data ke Perkara Yang Bercakap
Kod untuk Menghantar Data ke Perkara Yang Bercakap

Di sini kami menyiarkan bacaan sensor ke Thing Speak. langkah-langkah berikut diperlukan untuk menyelesaikan tugas ini-

  • Buat akaun anda dengan tepat Buat saluran dan medan untuk menyimpan data sensor anda
  • kita boleh mendapatkan dan menghantar data dari ESP ke thingSpeak dan sebaliknya menggunakan permintaan GET dan POST ke api.
  • kami boleh menghantar data kami ke ThingSpeak seperti berikut

id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr + = "& bidang1 ="; postStr + = Rentetan (lembap); postStr + = "& bidang2 ="; postStr + = Rentetan (tempC); postStr + = "& bidang3 ="; postStr + = Rentetan (tempF); postStr + = "\ r / n / r / n"; wifiClient.print ("POST / kemas kini HTTP / 1.1 / n"); wifiClient.print ("Host: api.thingspeak.com / n"); wifiClient.print ("Sambungan: tutup / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); wifiClient.print ("Content-Type: application / x-www-form-urlencoded / n"); wifiClient.print ("Panjang Kandungan:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }

Langkah 8: Kod Keseluruhan

Kod keseluruhan boleh didapati di repositori GitHub saya

Langkah 9: Kredit

  • Arduino JSON
  • Pelayan ESP826Web
  • Penjadual tugasan
  • SHT 31
  • Imbasan I2C
  • Tutorial instruksional HIH6130
  • Kawat
  • NCD.io

Disyorkan: