Daftar Isi:
- Langkah 1: Spesifikasi Perangkat Keras dan Perangkat Lunak
- Langkah 2: Membuat Portal Tawanan
- Langkah 3: Menyediakan WiFi dan Kredensial UbiDots
- Langkah 4: Menerbitkan Pembacaan Sensor ke UbiDots
- Langkah 5: Memvisualisasikan Data
- Langkah 6: Kode Keseluruhan
Video: UbiDots-Menghubungkan ESP32 dan Memublikasikan Beberapa Data Sensor: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
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
- ESP32 WiFi/BLE
- Sensor Suhu dan Kelembaban Nirkabel
Spesifikasi Perangkat Lunak
Arduino IDE
Langkah 2: 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
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
- 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:
Cara Membuat Perekam Data Kelembaban dan Suhu Secara Real Time Dengan Arduino UNO dan SD-Card - Simulasi Data-logger DHT11 di Proteus: 5 Langkah
Cara Membuat Perekam Data Kelembaban dan Suhu Secara Real Time Dengan Arduino UNO dan SD-Card | Simulasi Data-logger DHT11 di Proteus: Pendahuluan: hai, ini Liono Maker, ini tautan YouTube. Kami membuat proyek kreatif dengan Arduino dan bekerja pada sistem tertanam. Data-Logger: Data logger (juga data-logger atau perekam data) adalah perangkat elektronik yang merekam data dari waktu ke waktu dengan
Cara Memublikasikan Data ESP32 Dengan Stempel Waktu NTP ke IoT Cloud: 5 Langkah
Cara Memublikasikan Data ESP32 Dengan Stempel Waktu NTP ke Cloud IoT: Dalam banyak aplikasi, pengguna perlu mengirim data mereka bersama dengan stempel waktu lokal dari nilai yang akan dikirim dalam muatan ke cloud AskSensors IoT. Format stempel waktu adalah waktu UNIX Epoch: jumlah milidetik yang telah berlalu sejak Januari
Memublikasikan Data Sensor Tekanan Nirkabel Menggunakan MQTT: 7 Langkah
Memublikasikan Data Sensor Tekanan Nirkabel Menggunakan MQTT: 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
Salin dan Tempel dan Akses File Antara Beberapa Komputer: 3 Langkah
Salin dan Tempel dan Akses File Antara Beberapa Komputer: Saya baru saja menemukan situs web yang memungkinkan orang untuk menyalin dan menempelkan teks, gambar, video, dll. di antara banyak komputer. Ini juga memungkinkan Anda membuat papan pesan, mengunggah file, dan mencetak halaman web Anda. Dan bagian terbaiknya adalah, Anda bahkan tidak
Merekam Audio untuk Video dan Animasi: Beberapa Tip dan Trik Cepat: 8 Langkah
Merekam Audio untuk Video dan Animasi: Beberapa Tip dan Trik Cepat: Jika Anda seorang calon seniman, atau hanya anak kecil yang suka sesekali membuat animasi untuk youtube, Anda mungkin memiliki beberapa masalah dengan merekam audio. visual video atau animasi mungkin bagus, jika orang yang menontonnya bisa