Isi kandungan:
- Langkah 1: Perkakasan Diperlukan
- Langkah 2: Sambungan Perkakasan
- Langkah 3: Kod Penjadualan Tugas
- Langkah 4: Kod untuk Membaca Nilai Suhu dan Kelembapan
- Langkah 5: Kod untuk Menjamu Pelayan Web
- Langkah 6: Kod untuk Menghantar Data ke Perkara Yang Bicara
- Langkah 7: Keseluruhan Kod
Video: Aplikasi Web Cuaca Menggunakan Esp8266: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
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
Perkakasan yang digunakan untuk menyelesaikan tugas ini:
1. SHT31
2. Adafruit Huzzah ESP8266
3. Penyesuai ESP8266 I2C
4. Kabel I2C
Langkah 2: 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.
- 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.
- satu wayar digunakan untuk Vcc, wayar kedua untuk GND dan dua lain untuk SDA dan SCL masing-masing.
- Menurut penyesuai I2C pin2 dan pin 14 dari papan ESP8266 masing-masing digunakan sebagai SDA dan SCL
Langkah 3: Kod 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 masa tamat, 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 panggilan balik ini
- Dalam Tugasan 3 kami menyiarkan bacaan sensor ke cloud ThingSpeak API
- Tugasan 3 dijalankan setiap lima saat sehingga tamat waktunya iaitu 50 saat
- Apabila Task3 mencapai masa tamat, 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.
Penjadual ts;
// Tugas untuk i2c, hosting pelayan web dan hantar di thingspeak
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
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
Kami telah menghoskan pelayan web dari peranti kami pada IP statik.
- Perpustakaan ESP8266WebServer digunakan untuk menjadi tuan rumah 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 penyemak imbas web anda untuk halaman web pengenalan dan 192.168.1.4/Nilai untuk laman web bacaan sensor
// statik Ip untuk AP
Alamat IP ap_local_IP (192, 168, 1, 4);
Alamat IP ap_gateway (192, 168, 1, 254);
IPAddress 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 {
pelayan.on ("/", onHandleDataRoot);
server.on ("/ Nilai", onHandleDataFeed);
pelayan.onNotFound (onHandleNotFound);
}
membatalkan tugasAPCallback () {
Serial.println ("taskAP dimulakan");
pelayan.handleClient ();
}
batal onHandleDataRoot () {server.send (200, "text / html", PAGE1); }
batal onHandleDataFeed () {
pelayan.send (200, "text / html", PAGE2); }
batal onHandleNotFound () {
Mesej rentetan = "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);}
batal sambung semulaAPWiFi () {
WiFi.mode (WIFI_AP_STA);
kelewatan (100);
WiFi.disconnect ();
status boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet);
jika (status == benar) {
Serial.print ("Menetapkan soft-AP …");
boolean ap = WiFi.softAP (APssid, APpass);
jika (ap == benar) {
Serial.print ("disambungkan ke: / t");
// IPAddress myIP = WiFi.softAPIP ();
Serial.println (WiFi.softAPIP ());
}
pelayan.begin ();
}
}
Langkah 6: Kod untuk Menghantar Data ke Perkara Yang Bicara
Di sini kami menyiarkan bacaan sensor ke Thing Speak. langkah-langkah berikut diperlukan untuk menyelesaikan tugas ini-
- Buat akaun anda untuk bercakap
- 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
membatalkan tugasWiFiCallback () {
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 7: Keseluruhan Kod
Kod keseluruhan boleh didapati di repositori github saya
Kredit:
- Arduino JSON: ArduinoJson
- Pelayan ESP826Web
- Penjadual tugasan
- SHT 31
- Imbasan I2C
- Tutorial instruksional HIH6130
- Wire Arduino
- NCD.io
Disyorkan:
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: 8 Langkah (dengan Gambar)
Stesen Cuaca NaTaLia: Stesen Cuaca Bertenaga Suria Arduino Selesai Dengan Cara yang Betul: Setelah 1 tahun beroperasi di 2 lokasi yang berbeza, saya berkongsi rancangan projek stesen cuaca berkuasa solar saya dan menerangkan bagaimana ia berkembang menjadi sistem yang benar-benar dapat bertahan dalam jangka masa yang lama tempoh dari tenaga suria. Sekiranya anda mengikuti
Stesen Cuaca IoT Menggunakan Aplikasi Blynk: 5 Langkah
Stesen Cuaca IoT Menggunakan Aplikasi Blynk: Projek ini berkaitan dengan langkah awal dalam dunia IoT, di sini kita akan menghubungkan antara sensor DHT11 / DHT22 dengan NodeMCU atau papan berasaskan ESP8266 lain dan menerima data di internet yang akan kita gunakan aplikasi Blynk, gunakan tutorial berikut pautan jika anda
Sistem Pemantauan Cuaca Rumah IoT Dengan Sokongan Aplikasi Android (Mercury Droid): 11 Langkah
Sistem Pemantauan Cuaca Rumah IoT Dengan Sokongan Aplikasi Android (Mercury Droid): PengenalanMercury Droid adalah salah satu jenis sistem tertanam IoT (Internet of things) berdasarkan Aplikasi Bergerak Android Mercury Droid. Yang mampu mengukur & memantau aktiviti cuaca di rumah. ini adalah pemantauan cuaca rumah yang sangat murah
Cuaca Lilin - Cuaca dan Suhu Sekilas: 8 Langkah
Cuaca Lilin - Cuaca dan Suhu Sekilas: Dengan menggunakan lilin ajaib ini, anda dapat mengetahui suhu dan keadaan semasa di luar dengan serta-merta
Stesen Cuaca Acurite 5 dalam 1 Menggunakan Pi Raspberry dan Weewx (Stesen Cuaca lain Sesuai): 5 Langkah (dengan Gambar)
Stesen Cuaca Acurite 5 in 1 Menggunakan Raspberry Pi dan Weewx (Stesen Cuaca yang Lain Sesuai): Semasa saya membeli stesen cuaca Acurite 5 in 1, saya ingin dapat memeriksa cuaca di rumah saya semasa saya tiada. Semasa saya pulang dan menyiapkannya, saya menyedari bahawa saya mesti mempunyai paparan yang disambungkan ke komputer atau membeli hab pintar mereka