Daftar Isi:

UbiDots-Menghubungkan ESP32 dan Memublikasikan Beberapa Data Sensor: 6 Langkah
UbiDots-Menghubungkan ESP32 dan Memublikasikan Beberapa Data Sensor: 6 Langkah

Video: UbiDots-Menghubungkan ESP32 dan Memublikasikan Beberapa Data Sensor: 6 Langkah

Video: UbiDots-Menghubungkan ESP32 dan Memublikasikan Beberapa Data Sensor: 6 Langkah
Video: Tutorial Komunikasi Data Dengan MQTT Pada Esp32 2024, Juli
Anonim
UbiDots-Menghubungkan ESP32 dan Memublikasikan Beberapa Data Sensor
UbiDots-Menghubungkan ESP32 dan Memublikasikan Beberapa Data Sensor

ESP32 dan ESP 8266 adalah SoC yang sangat familiar di bidang IoT. Ini adalah semacam anugerah untuk proyek IoT. ESP 32 adalah perangkat dengan WiFi dan BLE terintegrasi. Cukup berikan konfigurasi SSID, kata sandi, dan IP Anda dan integrasikan semuanya ke dalam cloud. Di sini, di instruksi ini, Kami akan merenungkan beberapa istilah dasar IoT seperti platform IoT, MQTT, Captive portal, dll. Jadi, mari kita bahas

  • Arsitektur IoT dengan kata yang sangat sederhana terdiri dari perangkat yang disematkan dan platform IoT untuk menempatkan perangkat di cloud. Di sini kami menggunakan platform IoT UbiDots untuk memvisualisasikan data sensor.
  • Mengelola pengaturan IP dan kredensial Pengguna dapat membuat pengguna pusing. Bagaimana jika Pengguna ingin mengubah kredensial WiFi? Bagaimana jika pengguna ingin mengganti pengaturan DHCP/IP Statis? Mem-flash ESP32 setiap saat tidak dapat diandalkan dan bahkan bukan solusi untuk masalah ini. Jadi kita akan melalui portal captive untuk menyimpan kredensial WiFi dan konfigurasi lainnya.
  • MQTT sekarang menjadi istilah yang sangat umum di dunia IoT. itu telah melampaui permintaan dan tanggapan (HTTP) oleh Publikasikan dan Berlangganan karena arsitektur yang cepat, kuat, dan ramping.

Di sini, di instruksi ini, kita akan menunjukkan.

  • Memberikan kredensial WiFi dan MQTT menggunakan Captive Portal.
  • Menerbitkan dan Berlangganan beberapa data Sensor ke UbiDots.
  • Membaca data Sensor dari Sensor Suhu dan Kelembaban Nirkabel.
  • Hosting formulir web dari ESP32.
  • Membaca dan Menulis dari SPIFFS ESP32.

Langkah 1: Spesifikasi Perangkat Keras dan Perangkat Lunak

Spesifikasi Perangkat Keras dan Perangkat Lunak
Spesifikasi Perangkat Keras dan Perangkat Lunak
  • ESP32 WiFi/BLE
  • Sensor Suhu dan Kelembaban Nirkabel

Spesifikasi Perangkat Lunak

Arduino IDE

Langkah 2: Membuat Portal Tawanan

Membuat Portal Tawanan
Membuat Portal Tawanan
Membuat Portal Tawanan
Membuat Portal Tawanan
Membuat Portal Tawanan
Membuat Portal Tawanan

Portal tawanan adalah halaman web yang ditampilkan kepada pengguna yang baru terhubung sebelum mereka diberikan akses yang lebih luas ke sumber daya jaringan. Di sini kami menyajikan tiga halaman web untuk memilih antara DHCP dan Pengaturan IP Statis. kita dapat menentukan alamat IP ke ESP dengan dua cara.

  • Alamat IP DHCP- ini adalah cara untuk menetapkan alamat IP secara dinamis ke perangkat. Alamat IP default ESP adalah 192.168.4.1
  • Alamat IP statis- menetapkan Alamat IP permanen ke perangkat jaringan kami. untuk memberikan IP statis ke perangkat kita perlu menentukan alamat IP, alamat gateway, dan subnet mask.

Halaman web pertama di-host di 192.168.1.77. Di sini Pengguna diberikan tombol radio untuk memilih antara DHCP dan pengaturan IP Statis. Di halaman web berikutnya, kami harus memberikan informasi terkait IP untuk melangkah lebih jauh.

Kode HTML

Kode HTML untuk halaman web dapat ditemukan di repositori Github ini. Anda dapat menggunakan IDE atau editor teks apa pun seperti Sublime atau notepad++ untuk membuat halaman web HTML.

  • Pertama Buat halaman web HTML yang berisi dua tombol radio untuk memilih antara DHCP dan Pengaturan IP Statis.
  • Sekarang buat tombol untuk mengirimkan tanggapan Anda
  • Beri nama pada tombol radio.
  • Kelas server Web ESP akan menggunakan nama-nama ini sebagai argumen dan mendapatkan respons dari tombol radio menggunakan argumen ini
  • Sekarang masukkan tombol ' KIRIM ' untuk mengirim tanggapan ke perangkat. Di halaman web lain, kami memiliki kotak teks.
  • Berikan nilai nama dan jenis Input ke kotak teks dan tambahkan tombol kirim ke ' KIRIM ' kirim respons.
  • Buat tombol 'RESET' untuk mengatur ulang konten bidang teks.

Langkah 3: Menyediakan WiFi dan Kredensial UbiDots

Menyediakan WiFi dan Kredensial UbiDots
Menyediakan WiFi dan Kredensial UbiDots

Masalah utama terjadi saat mengelola kredensial WiFi. Meskipun kami memiliki perpustakaan WiFiMulti untuk itu di mana kami dapat memberikan beberapa SSID dan kata sandi ke perangkat dan perangkat akan terhubung ke jaringan yang tersedia. Tapi, bagaimana jika jaringan yang tersedia tidak ada dalam daftar WiFiMulti. Mem-flash perangkat ESP32 setiap saat bukanlah solusi yang andal.

Untuk mengatasi masalah ini, Kami menghosting halaman web tempat pengguna dapat mengirimkan SSID dan Kata Sandi dari jaringan yang tersedia. Ia bekerja sebagai berikut.

  • Halaman web di-host di IP statis atau IP DHCP seperti yang dipilih oleh pengguna dari portal tawanan
  • Halaman Web ini berisi kolom teks untuk memasukkan SSID, kata sandi, dan ID token UBIDOTS untuk menghubungkan perangkat ke UbiDots.
  • Masukkan SSID dan kata sandi WiFi lokal Anda di bidang input, Masukkan Id token UbiDot dan masukkan SUBMIT
  • Kredensial ini disimpan di EEPROM ESP32
  • Setelah 60 detik Perangkat akan secara otomatis memutuskan sambungan dari AP
  • Lain kali ketika Anda menghidupkan perangkat, Pengguna tidak harus mengikuti prosedur ini, Perangkat akan secara otomatis mengambil kredensial pengguna dari EEPROM dan melanjutkan dengan menerbitkan pembacaan sensor ke UbiDots.

Langkah 4: Menerbitkan Pembacaan Sensor ke UbiDots

Di sini kami menggunakan Sensor Suhu dan Kelembaban Nirkabel dengan perangkat ESP 32 untuk mendapatkan data suhu dan Kelembaban. Kami mengirimkan data ke UbiDots menggunakan protokol MQTT. MQTT mengikuti mekanisme terbitkan dan berlangganan daripada permintaan dan tanggapan itu. Ini lebih cepat dan andal daripada HTTP. Ini bekerja sebagai berikut.

  • Kami menggunakan Penjadwal Tugas untuk Menjadwalkan tugas seperti mengambil data dari sensor, Memublikasikan pembacaan sensor, Berlangganan topik MQTT.
  • Pertama, sertakan file header Penjadwal Tugas, itu contoh dan jadwal tugas.
  • Kami telah menjadwalkan dua tugas yang mengacu pada dua operasi kontrol yang berbeda.

#tentukan _TASK_TIMEOUT#sertakan

Penjadwal ts;

//---------Tugas------------//Task tSensor(4 * TASK_SECOND, TASK_FOREVER, &taskSensorCallback, &ts, false, NULL, &taskSensorDisable); Task tWiFi(10* TASK_SECOND, TASK_FOREVER, &taskWiFiCallback, &ts, false, NULL, &taskWiFiDisable);

Tugas 1 adalah untuk membaca nilai sensor tugas ini berjalan selama 1 detik hingga mencapai batas waktu 10 detik

  • Ketika Task1 mencapai waktu habis Kami terhubung ke Wifi lokal dan broker MQTT.
  • Sekarang Tugas 2 diaktifkan dan kami menonaktifkan Tugas 1
  • Tugas 2 adalah untuk memublikasikan data sensor ke broker UbiDots MQTT, tugas ini berjalan selama 20 detik hingga mencapai batas waktu 20 detik

  • Ketika Task2 mencapai waktunya, Task 1 diaktifkan lagi dan Task2 dinonaktifkan. Di sini sekali lagi, kami mendapatkan nilai yang diperbarui dan prosesnya terus berlanjut.

Membaca Data Sensor I2C

Kami mendapatkan bingkai 29-byte dari Sensor Suhu dan Kelembaban Nirkabel. Bingkai ini dimanipulasi untuk mendapatkan data suhu dan Kelembaban yang sebenarnya

data uint8_t[29];

data[0] = Serial1.read(); penundaan (k); //chck untuk byte awal if(data[0]==0x7E) { while (!Serial1.available()); for (i = 1; i<29; i++) { data = Serial1.read(); penundaan (1); } if(data[15]==0x7F) /////// untuk memeriksa apakah data yang diterima sudah benar { if(data[22]==1) //////// pastikan jenis sensor benar {

kelembaban = ((((data[24]) * 256) + data[25]) /100.0); kelembaban /=10.0; cTempint = (((uint16_t)(data[26])<<8)| data[27]); cTemp = (mengambang)cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1,8 + 32; fTemp /= 10.0; baterai = acak(100, 327); tegangan = baterai/100; nodeId = data[16];}

Menghubungkan ke UbiDots MQTT API

Sertakan file header untuk proses MQTT

#termasuk

tentukan variabel lain untuk MQTT seperti nama klien, alamat broker, ID token (Kami mengambil ID token dari EEPROM)

#define MQTT_CLIENT_NAME "KlienVBShightime123"

char mqttBroker = "things.ubidots.com";

muatan char[100];topik char[150];

//buat variabel untuk menyimpan ID token

String tokenId;

Buat variabel untuk menyimpan data sensor yang berbeda dan buat variabel karakter untuk menyimpan topik

#define VARIABLE_LABEL_TEMPF "tempF" // Menentukan label variabel#define VARIABLE_LABEL_TEMPC "tempC" // Menentukan label variabel #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // Menentukan label variabel

char topik1[100]; char topik2[100]; char topik3[100];

publikasikan data ke topik MQTT yang disebutkan, payload akan terlihat seperti { "tempc": {value: "tempData"}}

sprintf(topik1, "%s", ""); sprintf(topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf(muatan, "%s", ""); // Membersihkan payload sprintf(payload, "{"%s\":", VARIABLE_LABEL_TEMPC); // Menambahkan nilai sprintf(payload, "%s{"value\":%s}", payload, str_cTemp); // Menambahkan nilai sprintf(payload, "%s}", payload); // Menutup tanda kurung kamus Serial.println(payload); Serial.println(client.publish(topic1, payload) ? "diterbitkan": "tidak dipublikasikan");

//Lakukan hal yang sama untuk topik lain juga

client.publish() menerbitkan data ke UbiDots

Langkah 5: Memvisualisasikan Data

Memvisualisasikan Data
Memvisualisasikan Data
Memvisualisasikan Data
Memvisualisasikan Data
Memvisualisasikan Data
Memvisualisasikan Data
  • Pergi ke Ubidots dan Login ke akun Anda.
  • Arahkan ke Dasbor dari tab Data yang tercantum di atas.
  • Sekarang klik ikon "+" untuk menambahkan widget baru.
  • Pilih widget dari daftar dan tambahkan variabel dan perangkat.
  • Data sensor dapat divisualisasikan di dasbor menggunakan widget yang berbeda.

Langkah 6: Kode Keseluruhan

Kode Over untuk HTML dan ESP32 dapat ditemukan di repositori GitHub ini.

Kredit

  • papan pelarian ncd ESP32.
  • ncd Sensor suhu dan Kelembaban nirkabel.
  • klien pub
  • UbiDots
  • Penjadwal Tugas

Direkomendasikan: