Daftar Isi:
- Langkah 1: Diperlukan Perangkat Keras
- Langkah 2: Koneksi Perangkat Keras
- Langkah 3: Kode untuk Penjadwalan Tugas
- Langkah 4: Kode untuk Membaca Nilai Suhu dan Kelembaban
- Langkah 5: Kode untuk Hosting Server Web
- Langkah 6: Kode untuk Memposting Data ke Hal Berbicara
- Langkah 7: Kode Keseluruhan
Video: Aplikasi Web Cuaca Menggunakan Esp8266: 7 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
SHT 31 adalah Sensor Suhu dan Kelembaban buatan Sensiion. SHT31 memberikan tingkat akurasi yang tinggi sekitar ±2% RH. Kisaran Kelembabannya antara 0 hingga 100% dan Kisaran suhu antara -40 hingga 125 °C. Ini jauh lebih andal dan cepat dengan 8 detik waktu respons Sensor. Fungsionalitasnya mencakup pemrosesan sinyal yang ditingkatkan dan kompatibilitas I2C. Ini memiliki mode operasi yang berbeda yang membuatnya hemat energi.
Dalam tutorial ini, kami telah menghubungkan SHT 31 dengan papan Adafruit Huzzah. Untuk membaca nilai Suhu dan Kelembaban kami telah menggunakan perisai ESP8266 I2C. Adaptor ini membuat semua pin dapat diakses oleh pengguna dan menawarkan lingkungan I2C yang ramah pengguna.
Langkah 1: Diperlukan Perangkat Keras
Perangkat keras yang digunakan untuk menyelesaikan tugas ini:
1. SHT31
2. Adafruit Huzzah ESP8266
3. Adaptor ESP8266 I2C
4. Kabel I2C
Langkah 2: Koneksi Perangkat Keras
Langkah ini mencakup panduan pemasangan perangkat keras. Bagian ini pada dasarnya menjelaskan koneksi kabel yang diperlukan antara sensor dan ESP8266. Sambungannya adalah sebagai berikut.
- SHT31 bekerja melalui I2C. Gambar di atas menunjukkan hubungan antara modul ESP8266 dan SHT31. Kami menggunakan kabel I2C untuk itu kami dapat menggunakan kabel jumper 4 F ke F.
- satu kawat digunakan untuk Vcc, kawat kedua untuk GND dan dua lainnya untuk SDA dan SCL masing-masing.
- Menurut pin2 adaptor I2C dan pin 14 dari papan ESP8266 masing-masing digunakan sebagai SDA dan SCL
Langkah 3: Kode untuk Penjadwalan Tugas
Dalam tutorial ini, kami melakukan tiga operasi
- Baca data dari SHT11 menggunakan protokol I2C
- host server web dan posting pembacaan sensor ke halaman web
- posting pembacaan sensor ke ThingSpeak API
Untuk mencapai ini kami menggunakan perpustakaan TaskScheduler. Kami telah menjadwalkan tiga tugas berbeda yang mengacu pada tiga operasi kontrol yang berbeda. ini dilakukan sebagai berikut
- Tugas 1 adalah untuk membaca nilai sensor tugas ini berjalan selama 1 detik hingga mencapai batas waktu 10 detik.
- Ketika Task1 mencapai batas waktunya, Task 2 diaktifkan dan Task1 dinonaktifkan.
- Kami terhubung ke AP dalam panggilan balik ini, Dua variabel boolean diambil untuk menangani peralihan antara STA dan AP
- Dalam Tugas 2 kami meng-hosting server web di 192.168.1.4. Tugas ini berjalan setiap 5 detik hingga mencapai batas waktunya yaitu 50 detik
- Ketika Tugas 2 mencapai batas waktu, Tugas 3 diaktifkan dan Tugas2 dinonaktifkan.
- Kami terhubung ke STA (IP lokal) dalam panggilan balik ini
- Di Tugas 3 kami memposting pembacaan sensor ke cloud ThingSpeak API
- Tugas 3 berjalan setiap lima detik hingga mencapai batas waktu, yaitu 50 detik
- Ketika Task3 mencapai batas waktunya, Task 1 diaktifkan lagi dan Task3 dinonaktifkan.
- Ketika tidak ada panggilan balik yang dipanggil atau perangkat dalam keadaan idle, perangkat akan beralih ke Light Sleep sehingga menghemat daya.
Penjadwal ts;
//Tugas untuk i2c, hosting server web, dan posting di thingspeak
Tugas tI2C(1 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDDisable); Tugas tAP(5*TASK_SECOND, TASK_FOREVER, &taskAPCallback, &ts, false, NULL, &taskAPDisable); Task tWiFi(5* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable); //waktu habis untuk tugas tI2C.setTimeout(10 * TASK_SECOND); tAP.setTimeout(50 * TASK_SECOND); tWiFi.setTimeout(50 * TASK_SECOND); //aktifkan tugas I2C tI2C.enable();
Langkah 4: Kode untuk Membaca Nilai Suhu dan Kelembaban
Kami menggunakan perpustakaan Wire.h untuk membaca nilai suhu dan kelembaban. Pustaka ini memfasilitasi komunikasi i2c antara sensor dan perangkat master. 0x44 adalah alamat I2C untuk SHT31.
SHT31 beroperasi dalam mode operasi yang berbeda. Anda dapat merujuk ke lembar data untuk itu.
Kami menggunakan 0x2C dan 0x06 sebagai MSB dan LSB masing-masing untuk operasi tembakan tunggal.
// panggilan balik tugas I2C batal tugasI2CCallback()
{ Serial.println("taskI2CStarted"); unsigned int root[6]; //mulai transmisi dari 0x44; Wire.beginTransmission(Addr); //untuk transmisi one shot dengan repeatability tinggi kami menggunakan 0x2C(MSB) dan 0x06(LSB) Wire.write(0x2C); Kawat.tulis (0x06); //akhiri transmisi Wire.endTransmission(); //meminta byte dari 0x44 Wire.beginTransmission(Addr); Kawat.endTransmisi(); Wire.requestFrom(Addr, 6); if(Wire.available() == 6){ //data[0] dan data[1] berisi 16 bit suhu. root[0] = Wire.read(); root[1] =Kabel.baca(); //data[2] berisi 8 bit CRC root[2] = Wire.read(); //data[3] dan data[4] berisi 16 bit akar kelembaban[3] = Wire.read(); root[4] = Wire.read(); //data[5] terdiri dari 8 bit CRC root[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); float fTemp = (cTemp * 1.8) + 32.0; //menggeser MSB sebanyak 8 bit, tambahkan LSB ke dalamnya bagi dengan resolusi penuh dan *100 untuk persentase float kelembaban = (100.0 * ((root[3] * 256.0) + root[4])) / 65535.0;
suhuC = cSuhu;
suhuF = fSuhu; lembab = kelembaban; Serial.print("Suhu di C:\t"); Serial.println(String(cTemp, 1)); Serial.print("Suhu dalam F:\t"); Serial.println(String(fTemp, 1)); Serial.print("Kelembaban:\t"); Serial.println(String(kelembaban, 1)); }
Langkah 5: Kode untuk Hosting Server Web
Kami telah meng-host server web dari perangkat kami pada IP statis.
- Pustaka ESP8266WebServer digunakan untuk meng-host server web
- Pertama kita perlu mendeklarasikan alamat IP, Gateway dan subnet mask untuk membuat IP statis kita
- Sekarang nyatakan ssid dan kata sandi untuk titik akses Anda.
- terhubung ke Access point dari perangkat STA mana pun
- host server pada port 80 yang merupakan port default untuk protokol komunikasi internet, Hypertext Transfer Protocol (HTTP)
- masukkan 192.168.1.4 di browser web Anda untuk halaman web intro dan 192.168.1.4/Value untuk halaman web pembacaan sensor
//IP statis untuk AP
IPaddress ap_local_IP(192, 168, 1, 4);
IPaddress ap_gateway(192, 168, 1, 254);
IPAddress ap_subnet(255, 255, 255, 0);//ssid dan AP untuk WiFi lokal dalam mode STA
const char WiFissid = "*********";
const char WiFipass = "*********";
//ssid dan lulus untuk AP
const char APssid = "*********";
const char APpass = "*********";
ESP8266WebServer server (80);
batalkan pengaturan{
server.on("/", onHandleDataRoot);
server.on("/Nilai", onHandleDataFeed);
server.onNotFound(onHandleNotFound);
}
batalkan tugasAPCallback(){
Serial.println("taskAP dimulai");
server.handleClient();
}
void onHandleDataRoot(){ server.send(200, "teks/html", HALAMAN1); }
batalkan onHandleDataFeed(){
server.send(200, "teks/html", HALAMAN2); }
batalkan onHandleNotFound(){
String pesan = "File Tidak Ditemukan\n\n";
pesan += "URI: ";
pesan += server.uri();
pesan += "\nMetode: ";
pesan += (server.method() ==
pesan += "\nArgumen: ";
pesan += server.args();
pesan += "\n";
server.send(404, "teks/polos", pesan);}
batal sambungkan kembaliAPWiFi(){
WiFi.mode(WIFI_AP_STA);
penundaan(100);
WiFi.putuskan();
status boolean = WiFi.softAPConfig(ap_local_IP, ap_gateway, ap_subnet);
jika (status == benar){
Serial.print("Setelan soft-AP…");
boolean ap = WiFi.softAP(APssid, APpass);
jika(ap==benar){
Serial.print("terhubung ke:\t");
//IPaddress myIP = WiFi.softAPIP();
Serial.println(WiFi.softAPIP());
}
server.mulai();
}
}
Langkah 6: Kode untuk Memposting Data ke Hal Berbicara
Di sini kami memposting pembacaan sensor ke Thing Speak. langkah-langkah berikut diperlukan untuk menyelesaikan tugas ini-
- Buat akun Anda di hal berbicara
- Buat saluran dan bidang untuk menyimpan data sensor Anda
- kita bisa mendapatkan dan memposting data dari ESP ke thingSpeak dan sebaliknya menggunakan permintaan GET dan POST ke api.
- kami dapat memposting data kami ke ThingSpeak sebagai berikut
batalkan tugasWiFiCallback(){
WiFiKlien wifiKlien; if(wifiClient.connect(hostId, 80)){ String postStr = apiKey; postStr +="&field1="; postStr += String(lembab); postStr +="&field2="; postStr += String(tempC); postStr +="&field3="; postStr += String(tempF); postStr += "\r\n\r\n"; wifiClient.print("POST /update HTTP/1.1\n"); wifiClient.print("Host: api.thingspeak.com\n"); wifiClient.print("Koneksi: tutup\n"); wifiClient.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); wifiClient.print("Jenis Konten: application/x-www-form-urlencoded\n"); wifiClient.print("Panjang Konten: "); wifiClient.print(postStr.length()); wifiClient.print("\n\n"); wifiClient.print(postStr); } wifiClient.stop(); }
Langkah 7: Kode Keseluruhan
Kode keseluruhan tersedia di repositori github saya
Kredit:
- Arduino JSON: ArduinoJson
- ESP826WebServer
- Penjadwal Tugas
- THT 31
- Pemindaian I2C
- Tutorial instruksi HIH6130
- Kawat Arduino
- NCD.io
Direkomendasikan:
Mengontrol ESP8266 Menggunakan Aplikasi Telegram: 7 Langkah
Mengontrol ESP8266 Menggunakan Aplikasi Telegram: Hai, apa kabar, Guys! Akarsh di sini dari CETech. Pernahkah Anda bertanya-tanya tentang mengobrol dengan peralatan Anda melalui aplikasi perpesanan? Kedengarannya aneh, benar. Tapi hari ini kita akan melakukan hal serupa. Jangan khawatir Anda tidak perlu membeli ponsel
Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Dilakukan dengan Cara yang Benar: 8 Langkah (dengan Gambar)
Stasiun Cuaca NaTaLia: Stasiun Cuaca Bertenaga Surya Arduino Selesai dengan Cara yang Benar: Setelah 1 tahun beroperasi dengan sukses di 2 lokasi berbeda, saya membagikan rencana proyek stasiun cuaca bertenaga surya saya dan menjelaskan bagaimana hal itu berkembang menjadi sistem yang benar-benar dapat bertahan lama periode dari tenaga surya. Jika Anda mengikuti
Stasiun Cuaca IoT Menggunakan Aplikasi Blynk: 5 Langkah
Stasiun Cuaca IoT Menggunakan Aplikasi Blynk: Proyek ini terkait dengan langkah awal di dunia IoT, di sini kita akan menghubungkan sensor DHT11/DHT22 dengan NodeMCU atau board berbasis ESP8266 lainnya dan menerima data di internet kita akan menggunakan aplikasi Blynk, gunakan tutorial berikut tautan jika Anda
Sistem Pemantauan Cuaca Rumah IoT Dengan Dukungan Aplikasi Android (Mercury Droid): 11 Langkah
Sistem Pemantauan Cuaca Rumah IoT Dengan Dukungan Aplikasi Android (Mercury Droid): PengantarMercury Droid adalah salah satu jenis IoT (Internet of things) Sistem tertanam berdasarkan Aplikasi Seluler Android Mercury Droid. Yang mampu mengukur & memantau aktivitas cuaca di rumah. itu adalah sistem pemantauan cuaca rumah yang sangat murah
Stasiun Cuaca 5 in 1 Acurite Menggunakan Raspberry Pi dan Weewx (Stasiun Cuaca lain Kompatibel): 5 Langkah (dengan Gambar)
Stasiun Cuaca Acurite 5 in 1 Menggunakan Raspberry Pi dan Weewx (Stasiun Cuaca Lainnya Kompatibel): Ketika saya membeli stasiun cuaca Acurite 5 in 1, saya ingin dapat memeriksa cuaca di rumah saya saat saya pergi. Ketika saya sampai di rumah dan memasangnya, saya menyadari bahwa saya harus menghubungkan layar ke komputer atau membeli hub pintar mereka