Isi kandungan:
- Langkah 1: Spesifikasi Perkakasan dan Perisian
- Langkah 2: Membuat Portal Tawanan
- Langkah 3: Menyediakan Kredensial WiFi dan UbiDots
- Langkah 4: Penerbitan Bacaan Sensor ke UbiDots
- Langkah 5: Memvisualisasikan Data
- Langkah 6: Keseluruhan Kod
Video: UbiDots-Menghubungkan ESP32 dan Menerbitkan Data Sensor Pelbagai: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
ESP32 danESP 8266 adalah SoC yang sangat dikenali dalam bidang IoT. Ini adalah jenis kebaikan untuk projek IoT. ESP 32 adalah peranti dengan WiFi bersepadu dan BLE. Cukup berikan konfigurasi SSID, kata laluan dan IP anda dan satukan perkara tersebut ke dalam awan. Di sini dalam arahan ini, Kami akan merenungkan beberapa syarat asas IoT seperti platform IoT, MQTT, portal Captive dll. Oleh itu marilah kita melaluinya
- Arkitek IoT dengan kata-kata yang sangat sederhana terdiri daripada peranti tertanam dan platform IoT untuk meletakkan peranti di awan. Di sini kita menggunakan platform IoT UbiDots untuk memvisualisasikan data sensor.
- Menguruskan tetapan IP dan kelayakan pengguna boleh menjadi pusing bagi pengguna. Bagaimana jika Pengguna ingin menukar kelayakan WiFi? Bagaimana jika pengguna mahu menukar tetapan IP DHCP / Statik? Mengemaskan ESP32 setiap masa tidak boleh dipercayai dan bukan juga penyelesaian untuk masalah ini. Oleh itu, kita akan melalui portal tawanan untuk menyimpan kelayakan WiFi dan konfigurasi lain.
- MQTT kini menjadi istilah yang sangat umum di dunia IoT. ia melebihi permintaan dan respons (HTTP) oleh Publish and Subscribe kerana seni bina yang pantas, mantap dan ramping.
Di sini dalam arahan ini, kita akan menunjukkan.
- Memberi kelayakan WiFi dan MQTT menggunakan Captive Portal.
- Menerbitkan dan Melanggan beberapa data Sensor ke UbiDots.
- Membaca data Sensor dari Sensor Suhu dan Kelembapan Tanpa Wayar.
- Menghoskan borang web dari ESP32.
- Membaca dan Menulis dari SPIFFS ESP32.
Langkah 1: Spesifikasi Perkakasan dan Perisian
- ESP32 WiFi / BLE
- Sensor Suhu dan Kelembapan Tanpa Wayar
Spesifikasi Perisian
Arduino IDE
Langkah 2: Membuat Portal Tawanan
Portal captive adalah halaman web yang dipaparkan kepada pengguna yang baru terhubung sebelum mereka diberi akses yang lebih luas ke sumber rangkaian. Di sini kami menyediakan tiga halaman web untuk memilih antara DHCP dan Tetapan IP Statik. kita boleh menentukan alamat IP ke ESP dengan dua cara.
- Alamat IP DHCP- ini adalah cara untuk menetapkan alamat IP secara dinamis ke peranti. Alamat IP lalai ESP ialah 192.168.4.1
- Alamat IP statik - memberikan Alamat IP tetap ke peranti rangkaian kami. untuk memberikan IP statik ke peranti, kita perlu menentukan alamat IP, alamat gateway, dan subnet mask.
Halaman web pertama dihoskan di 192.168.1.77. Di sini Pengguna dibekalkan butang radio untuk memilih antara tetapan DHCP dan IP Statik. Di laman web seterusnya, kita harus memberikan maklumat berkaitan IP untuk terus maju.
Kod HTML
Kod HTML untuk halaman web boleh didapati di repositori Github ini. Anda boleh menggunakan IDE atau editor teks seperti Sublime atau notepad ++ untuk membuat halaman web HTML.
- Pertama Buat laman web HTML yang mengandungi dua butang radio untuk memilih antara DHCP dan Tetapan IP Statik.
- Sekarang buat butang untuk menghantar jawapan anda
- Berikan sebilangan nama pada butang radio.
- Kelas pelayan Web ESP akan mengambil nama-nama ini sebagai argumen dan mendapat respons butang radio menggunakan argumen ini
- Sekarang masukkan butang 'SUBMIT' untuk menghantar respons ke peranti. Di laman web lain, kami mempunyai kotak teks.
- Berikan nilai nama dan jenis Input ke kotak teks dan tambahkan butang kirim ke 'SUBMIT' kirimkan respons.
- Buat butang 'RESET' untuk menetapkan semula kandungan bidang teks.
Langkah 3: Menyediakan Kredensial WiFi dan UbiDots
Masalah utama berlaku semasa menguruskan kelayakan WiFi. Walaupun kami mempunyai perpustakaan WiFiMulti untuk itu kami dapat memberikan banyak SSID dan kata laluan ke peranti dan peranti akan tersambung ke rangkaian yang tersedia. Tetapi, bagaimana jika rangkaian yang ada tidak ada dalam senarai WiFiMulti. Mengedipkan peranti ESP32 sepanjang masa bukanlah penyelesaian yang boleh dipercayai.
Untuk mengatasi masalah ini, Kami mengadakan laman web di mana pengguna dapat mengirimkan SSID dan Kata Laluan dari rangkaian yang tersedia. Ia berfungsi seperti berikut.
- Halaman web dihoskan di IP statik atau IP DHCP seperti yang dipilih oleh pengguna dari portal tawanan
- Halaman Web ini mengandungi medan teks untuk memasukkan SSID, kata laluan, dan ID token UBIDOTS untuk menyambungkan peranti ke UbiDots.
- Masukkan SSID dan kata laluan WiFi tempatan anda di medan input, Masukkan Id token UbiDot dan masukkan HANTAR
- Kelayakan ini disimpan di EEPROM ESP32
- Selepas 60 saat Peranti akan terputus secara automatik dari AP
- Lain kali apabila anda menghidupkan peranti, Pengguna tidak perlu mengikuti prosedur ini, Peranti akan secara automatik mengambil bukti pengguna dari EEPROM dan meneruskan penerbitan bacaan sensor ke UbiDots.
Langkah 4: Penerbitan Bacaan Sensor ke UbiDots
Di sini kita menggunakan Sensor Suhu dan Kelembapan Tanpa Wayar dengan peranti ESP 32 untuk mendapatkan data suhu dan Kelembapan. Kami mengirimkan data ke UbiDots menggunakan protokol MQTT. MQTT mengikuti mekanisme penerbitan dan langganan daripada permintaan dan respons. Ia lebih pantas dan boleh dipercayai daripada HTTP. Ini berfungsi seperti berikut.
- Kami menggunakan Task Scheduler untuk Menjadwalkan tugas seperti mengambil data dari sensor, Menerbitkan bacaan sensor, Melanggan topik MQTT.
- Pertama, sertakan fail tajuk Task Scheduler, itu adalah contoh dan menjadualkan tugas.
- Kami telah menjadualkan dua tugas yang merujuk kepada dua operasi kawalan yang berbeza.
#tentukan _TASK_TIMEOUT # sertakan
Penjadual ts;
// --------- Tugas ------------ // Tugas tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); TWiFi tugas (10 * TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
Tugas 1 adalah untuk membaca nilai sensor tugas ini berjalan selama 1 saat sehingga mencapai masa tamat 10 saat
- Apabila Task1 tamat, kami berhubung dengan broker Wifi dan MQTT tempatan.
- Sekarang Task 2 diaktifkan dan kami melumpuhkan Task 1
-
Tugas 2 adalah untuk menerbitkan data sensor kepada broker UbiDots MQTT, tugas ini berjalan selama 20 saat sehingga masa tamat 20 saat
- Apabila Task2 mencapai waktunya, Task 1 diaktifkan lagi dan Task2 dilumpuhkan. Di sini sekali lagi, kami mendapat nilai yang dikemas kini dan prosesnya berterusan.
Membaca Data Sensor I2C
Kami mendapat bingkai 29 byte dari Sensor Suhu dan Kelembapan Tanpa Wayar. Rangka ini dimanipulasi untuk mendapatkan data suhu dan kelembapan sebenar
uint8_t data [29];
data [0] = Serial1.read (); kelewatan (k); // chck untuk permulaan bait jika (data [0] == 0x7E) {while (! Serial1.available ()); untuk (i = 1; i <29; i ++) {data = Serial1.read (); kelewatan (1); } jika (data [15] == 0x7F) /////// untuk memeriksa apakah data penerimaan betul {if (data [22] == 1) //////// pastikan jenis sensor betul {
kelembapan = ((((data [24]) * 256) + data [25]) / 100.0); kelembapan /=10.0; cTempint = (((uint16_t) (data [26]) << 8) | data [27]); cTemp = (terapung) cTempint /100.0; cTemp / = 10.0; fTemp = cTemp * 1.8 + 32; fTemp / = 10.0; bateri = rawak (100, 327); voltan = bateri / 100; nodeId = data [16];}
Menyambung ke UbiDots MQTT API
Sertakan fail header untuk proses MQTT
#sertakan
tentukan pemboleh ubah lain untuk MQTT seperti nama pelanggan, alamat broker, ID token (Kami mengambil ID token dari EEPROM)
#tentukan MQTT_CLIENT_NAME "PelangganVBShightime123"
char mqttBroker = "things.ubidots.com";
muatan char [100]; topik char [150];
// buat pemboleh ubah untuk menyimpan ID token
String tokenId;
Buat pemboleh ubah untuk menyimpan data sensor yang berbeza dan buat pemboleh ubah char untuk menyimpan topik
#define VARIABLE_LABEL_TEMPF "tempF" // Assing the variable label # define VARIABLE_LABEL_TEMPC "tempC" // Assing the variable label #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "lembab" // Memberi label variabel
topik char1 [100]; topik char2 [100]; topik char3 [100];
menerbitkan data ke topik MQTT yang disebutkan, muatan akan kelihatan seperti {"tempc": {value: "tempData"}}
sprintf (topic1, "% s", ""); sprintf (topic1, "% s% s", "/v1.6/devices/", DEVICE_LABEL); sprintf (muatan, "% s", ""); // Membersihkan sprintf muatan (muatan, "{"% s / ":", VARIABLE_LABEL_TEMPC); // Menambah nilai sprintf (muatan, "% s {" nilai / ":% s}", muatan, str_cTemp); // Menambah nilai sprintf (muatan, "% s}", muatan); // Menutup tanda kurung kamus Serial.println (muatan); Serial.println (client.publish (topic1, payload)? "Diterbitkan": "tidak diterbitkan");
// Lakukan perkara yang sama untuk topik lain juga
client.publish () menerbitkan data ke UbiDots
Langkah 5: Memvisualisasikan Data
- Pergi ke Ubidots dan Log masuk ke akaun anda.
- Navigasikan ke Papan Pemuka dari tab Data yang tertera di bahagian atas.
- Sekarang klik ikon "+" untuk menambahkan widget baru.
- Pilih widget dari senarai dan tambahkan pemboleh ubah dan peranti.
- Data sensor dapat dilihat pada papan pemuka menggunakan widget yang berbeza.
Langkah 6: Keseluruhan Kod
Kod Over untuk HTML dan ESP32 boleh didapati di repositori GitHub ini.
Kredit
- papan pemecah ncd ESP32.
- ncd Sensor suhu dan kelembapan tanpa wayar.
- pelanggan pub
- UbiDots
- Penjadual tugasan
Disyorkan:
Cara Mengekod dan Menerbitkan Matlab 2016b ke Word (Panduan Pemula): 4 Langkah
Cara Mengekod dan Menerbitkan Matlab 2016b ke Word (Panduan Pemula): Matlab adalah program bahasa berprestasi tinggi yang digunakan untuk mengira hasil teknikal. Ia memiliki kemampuan untuk mengintegrasikan visual, perhitungan, dan pengaturcaraan secara ramah pengguna. Dengan program ini, pengguna dapat menerbitkan masalah dan penyelesaian
Cara Menerbitkan Data ESP32 Dengan Cap Masa NTP ke IoT Cloud: 5 Langkah
Cara Menerbitkan Data ESP32 Dengan Cap Waktu NTP ke IoT Cloud: Dalam banyak aplikasi, pengguna perlu menghantar data mereka bersama dengan dia cap waktu tempatan mengenai nilai yang akan dikirim dalam muatan ke awan AskSensors IoT. Format cap masa adalah masa UNIX Epoch: bilangan milisaat yang telah berlalu sejak Janu
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] DATA SENSOR PELBAGAI !: 3 Langkah
Arduino Uno + SIM900 + DHT22 + Thingspeak [ENG / PL] DATA SENSOR PELBAGAI !: Hai, saya melihat bahawa terdapat kekurangan maklumat mengenai bagaimana menghantar pelbagai data sensor ke perkara yang dibahas oleh Arduino Uno dengan modul SIM900. Oleh itu, saya membuat arahan ringkas mengenai sambungan dan konfigurasi Arduino UNO dengan sensor SIM900 dan DHT22. Data dari DHT22 (marah
Menerbitkan Data Sensor Tekanan Tanpa Wayar Menggunakan MQTT: 7 Langkah
Menerbitkan Data Sensor Tekanan Tanpa Wayar Menggunakan MQTT: ESP32 danESP 8266 adalah SoC yang sangat dikenali dalam bidang IoT. Ini adalah jenis kebaikan untuk projek IoT. ESP 32 adalah peranti dengan WiFi bersepadu dan BLE. Cukup berikan konfigurasi SSID, kata laluan dan IP anda dan satukan semuanya ke dalam
Termometer Dengan Suhu Relatif Warna pada Paparan TFT 2 "dan Pelbagai Sensor: 5 Langkah
Termometer Dengan Warna Relatif Suhu pada Paparan TFT 2 "dan Sensor Pelbagai: Saya telah membuat paparan yang menunjukkan pengukuran beberapa sensor suhu. Yang kerennya ialah warna nilai berubah dengan suhu: > 75 darjah Celcius = MERAH > 60 > 75 = ORANGE > 40 < 60 = KUNING > 30 < 40