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: Pengaturan Thingspeak
- Langkah 7: Kode untuk Memposting Data ke Hal Berbicara
- Langkah 8: Kode Keseluruhan
- Langkah 9: Kredit
Video: APLIKASI THINGSPEAK TEMPERATURE DAN HUMIDITY MENGGUNAKAN ESP8266: 9 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Sambil mengutak-atik barang elektronik saya, saya mendapat ide untuk membuat aplikasi cuaca berbasis web. Aplikasi web ini menggunakan sensor SHT31 untuk mendapatkan data suhu dan kelembapan waktu nyata. Kami telah menerapkan proyek kami pada modul WiFi ESP8266. Online atau offline! Tidak perlu khawatir, baik sedang online maupun offline, Anda akan mendapatkan update cuaca dari mana saja dan kapan saja. Aplikasi web ini memposting data ke server web lokal serta ke cloud. Untuk operasi cloud, kami menggunakan ThingSpeak API. SHT31 menggunakan I2C untuk mendapatkan data dari sensor.
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:
- THT 31
- Adafruit Huzzah ESP8266
- Adaptor ESP8266 I2C
- 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 kabel digunakan untuk Vcc, kabel kedua untuk GND dan dua lainnya masing-masing untuk SDA dan SCL
- 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 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 iniDalam 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 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.
batalkan tugasI2CCallback();
void taskI2CDsable(); batalkan tugasAPCallback(); batalkan tugasAPDisable(); batalkan tugasWiFiCallback(); void taskWiFiDisable(); //Tugas untuk i2c, hosting server web dan posting di thingspeak Tugas tI2C(1 * TASK_SECOND, TASK_FOREVER, &taskI2CCallback, &ts, false, NULL, &taskI2CDDisable); 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 Access point Anda. Sambungkan 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 pada browser web Anda untuk halaman web intro dan 192.168.1.4/Value untuk halaman pembacaan sensor
//static Ip untuk APIPAddress 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 pass untuk AP const char APssid = "********"; const char APpass = "*********"; ESP8266WebServer server (80); batalkan pengaturan{server.on("/", onHandleDataRoot); server.on("/Nilai", onHandleDataFeed); server.onNotFound(onHandleNotFound);} void taskAPCallback(){ Serial.println("taskAP dimulai"); server.handleClient(); } void onHandleDataRoot(){ server.send(200, "teks/html", HALAMAN1); } void onHandleDataFeed(){ server.send(200, "text/html", HALAMAN2); } void onHandleNotFound(){ String pesan = "File Tidak Ditemukan\n\n"; pesan += "URI: "; pesan += server.uri(); pesan += "\nMetode: "; pesan += (server.method() == HTTP_GET)?"GET":"POST"; 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); if(status ==true){ Serial.print("Setting soft-AP… "); boolean ap = WiFi.softAP(APssid, APpass); if(ap==true){ Serial.print("terhubung ke:\t"); //IPaddress myIP = WiFi.softAPIP(); Serial.println(WiFi.softAPIP()); } server.mulai();
}
Langkah 6: Pengaturan Thingspeak
ThingSpeak adalah platform IoT. ThingSpeak adalah layanan web gratis yang memungkinkan Anda mengumpulkan dan menyimpan data sensor di cloud.
Pada Langkah ini, saya akan memberi Anda prosedur singkat untuk mengatur akun Thing Speak Anda
- Daftar untuk Akun Pengguna baru di ThingSpeak
- Buat Saluran baru dengan memilih Saluran, Saluran Saya, lalu Saluran Baru
- Edit bidang Anda
- Bidang ini berisi data sensor Anda
- Catat Write API Key dan Channel ID
- Pada sketsa Arduino Anda, Anda dapat menggunakan perpustakaan ThingSpeak untuk Arduino atau Anda dapat langsung POST data ke ThingSpeak API
- langkah selanjutnya menguraikan tentang memposting konten ke Thing Speak API
Langkah 7: 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 speakBuat 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
id taskWiFiCallback(){ WiFiClient wifiClient; 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 8: Kode Keseluruhan
Kode keseluruhan tersedia di repositori GitHub saya
Langkah 9: Kredit
- Arduino JSON
- ESP826WebServer
- Penjadwal Tugas
- THT 31
- Pemindaian I2C
- Tutorial instruksi HIH6130
- Kabel
- NCD.io
Direkomendasikan:
Peringatan-menggunakan-ThingSpeak+ESP32-Wireless-Temp- Humidity-Sensor: 7 Langkah
Alert-using-ThingSpeak+ESP32-Wireless-Temp- Humidity-Sensor: Dalam tutorial ini, kita akan mengukur data suhu dan kelembaban yang berbeda menggunakan sensor Temp dan kelembaban. Anda juga akan mempelajari cara mengirim data ini ke ThingSpeak. Sehingga Anda dapat membuat peringatan sementara di email Anda dengan nilai tertentu
Robot Terkendali Wi-Fi Menggunakan Wemos D1 ESP8266, Arduino IDE dan Aplikasi Blynk: 11 Langkah (dengan Gambar)
Robot Terkendali Wi-Fi Menggunakan Wemos D1 ESP8266, Arduino IDE dan Aplikasi Blynk: Dalam tutorial ini saya menunjukkan cara membuat tangki robotik yang dikendalikan Wi-Fi yang dikendalikan dari smartphone menggunakan Aplikasi Blynk. Dalam proyek ini papan ESP8266 Wemos D1 digunakan, tetapi model pelat lain juga dapat digunakan (NodeMCU, Firebeetle, dll.), dan pr
Arduino 4 Wheel Drive Bluetooth RC Car Menggunakan UNO R3, HC-05 dan L293D Motorshield Dengan Coding dan Aplikasi Android: 8 Langkah
Arduino 4 Wheel Drive Bluetooth RC Car Menggunakan UNO R3, HC-05 dan L293D Motorshield Dengan Coding dan Aplikasi Android : Hari ini saya akan memberi tahu Anda tentang cara membuat mobil RC bluetooth arduino 4 wheel drive menggunakan HC 05, L293 motor shield, 4 motor DC, dengan coding dan aplikasi untuk android untuk mengontrol mobil. Komponen yang digunakan: -1-Arduino UNO R32-Bluetooth HC-053-Motorshield L293
8 Kontrol Relay Dengan NodeMCU dan Penerima IR Menggunakan WiFi dan IR Remote dan Aplikasi Android: 5 Langkah (dengan Gambar)
8 Kontrol Relay Dengan NodeMCU dan Penerima IR Menggunakan WiFi dan IR Remote dan Aplikasi Android: Mengontrol 8 sakelar relai menggunakan nodemcu dan penerima ir melalui wifi dan ir remote dan aplikasi android.Remote ir bekerja terlepas dari koneksi wifi.INI VERSI TERBARU KLIK DI SINI
Kontrol Arduino Uno Menggunakan Modul WiFi ESP8266 dan Aplikasi Blynk: 6 Langkah
Kontrol Arduino Uno Menggunakan Modul WiFi ESP8266 dan Aplikasi Blynk: Proyek ini memungkinkan Anda untuk mengontrol pin Arduino menggunakan modul WiFi ESP8266-01 dan Aplikasi Blynk. Aplikasi Blynk sangat mudah digunakan dan merupakan cara yang bagus untuk mulai belajar tentang IoT. Tutorial ini untuk PC Windows