Daftar Isi:

APLIKASI THINGSPEAK TEMPERATURE DAN HUMIDITY MENGGUNAKAN ESP8266: 9 Langkah
APLIKASI THINGSPEAK TEMPERATURE DAN HUMIDITY MENGGUNAKAN ESP8266: 9 Langkah

Video: APLIKASI THINGSPEAK TEMPERATURE DAN HUMIDITY MENGGUNAKAN ESP8266: 9 Langkah

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

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

Diperlukan Perangkat Keras
Diperlukan Perangkat Keras
Diperlukan Perangkat Keras
Diperlukan Perangkat Keras
Diperlukan Perangkat Keras
Diperlukan Perangkat Keras

Perangkat keras yang digunakan untuk menyelesaikan tugas ini:

  1. THT 31
  2. Adafruit Huzzah ESP8266
  3. Adaptor ESP8266 I2C
  4. Kabel I2C

Langkah 2: Koneksi Perangkat Keras

Koneksi Perangkat Keras
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.

  1. 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.
  2. satu kabel digunakan untuk Vcc, kabel kedua untuk GND dan dua lainnya masing-masing untuk SDA dan SCL
  3. Menurut pin2 adaptor I2C dan pin 14 dari papan ESP8266 masing-masing digunakan sebagai SDA dan SCL

Langkah 3: Kode untuk Penjadwalan Tugas

Kode untuk Penjadwalan Tugas
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

Kode untuk Membaca Nilai Suhu dan Kelembaban
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

Kode untuk Hosting Server Web
Kode untuk Hosting Server Web
Kode untuk Hosting Server Web
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

Pengaturan Thingspeak
Pengaturan Thingspeak
Pengaturan Thingspeak
Pengaturan Thingspeak
Pengaturan Thingspeak
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

Kode untuk Memposting Data ke Hal yang Berbicara
Kode untuk Memposting Data ke Hal yang Berbicara
Kode untuk Memposting Data ke Hal yang Berbicara
Kode untuk Memposting Data ke Hal yang Berbicara
Kode untuk Memposting Data ke Hal yang Berbicara
Kode untuk Memposting Data ke Hal yang Berbicara
Kode untuk Memposting Data ke Hal yang Berbicara
Kode untuk Memposting Data ke Hal yang 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: