Daftar Isi:

Aplikasi Web Cuaca Menggunakan Esp8266: 7 Langkah
Aplikasi Web Cuaca Menggunakan Esp8266: 7 Langkah

Video: Aplikasi Web Cuaca Menggunakan Esp8266: 7 Langkah

Video: Aplikasi Web Cuaca Menggunakan Esp8266: 7 Langkah
Video: Monitor Cuaca di NodeMCU ESP8266 dengan JSON API | Tutorial Pemrograman Arduino dan IoT 2024, Mungkin
Anonim
Aplikasi Web Cuaca Menggunakan Esp8266
Aplikasi Web Cuaca Menggunakan Esp8266

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. SHT31

2. Adafruit Huzzah ESP8266

3. Adaptor ESP8266 I2C

4. Kabel I2C

Langkah 2: Koneksi Perangkat Keras

Koneksi Perangkat Keras
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 kawat digunakan untuk Vcc, kawat kedua untuk GND dan dua lainnya untuk SDA dan SCL masing-masing.
  3. 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

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

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 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: