Isi kandungan:
- Langkah 1: Spesifikasi Perkakasan dan Perisian
- Langkah 2: Sensor Tekanan dan Suhu Tanpa Wayar
- Langkah 3: Menyambung ke WiFi
- Langkah 4: Menyiapkan UbiDots pada ESP32
- Langkah 5: Menerbitkan Bacaan Sensor ke UbiDots
- Langkah 6: Memvisualisasikan Data
- Langkah 7: Keseluruhan Kod
Video: Menerbitkan Data Sensor Tekanan Tanpa Wayar Menggunakan MQTT: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
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 Tekanan dan Suhu Tanpa Wayar
- Menghoskan borang web dari ESP32.
- Membaca dan Menulis dari SPIFFS ESP32.
Langkah 1: Spesifikasi Perkakasan dan Perisian
Spesifikasi Perkakasan
- ESP32 WiFi / BLE
- Sensor Tekanan dan Suhu Tanpa Wayar
Spesifikasi Perisian
- Arduino IDE
- XCTU
- Utiliti Labview
Langkah 2: Sensor Tekanan dan Suhu Tanpa Wayar
ciri-ciri
- Sensor Suhu Tekanan Tanpa Wayar Jangka Panjang Sensor Industri
- Julat operasi 0 hingga 14000 mbar -40 ° hingga + 85 ° C (-40 ° hingga 185 ° F)
- Resolusi Tekanan Pengiraan Dalaman yang Boleh Dikonfigurasikan 0,012 hingga 0,065 mbar
- Resolusi Suhu Pengiraan Dalaman yang Boleh Dikonfigurasikan 0,002 hingga 0,012 ° C
- Ketepatan ± 2.5 mbar, ± 2 ° C
- Output Tekanan Mutlak, Tekanan Relatif dan Ketinggian Relatif
- Julat Penglihatan 2 Mile dengan Antena On-Board
- Julat LOS unggul sehingga 28 Mil dengan Antena Gain Tinggi
- Antaramuka ke Raspberry Pi, Microsoft® Azure®, Arduino dan Banyak Lagi
- Rangkaian Mesh Tanpa Wayar menggunakan DigiMesh®
Mengkonfigurasi Sensor Tekanan dan Suhu Tanpa Wayar Menggunakan Utiliti Labview dan XCTU
Sensor dijalankan dalam dua mod
- Mod Konfigurasi: Konfigurasikan ID Pan, kelewatan, Jumlah percubaan dan lain-lain. Lebih lanjut mengenai perkara ini berada di luar skop arahan ini dan akan dijelaskan dalam arahan selanjutnya.
- Run Mode: Kami menjalankan peranti dalam mod Run. Dan untuk menganalisis nilai ini, kami menggunakan Labview Utility
UI Labview ini menunjukkan nilai dalam grafik yang bagus. Ia menunjukkan nilai semasa dan masa lalu. Anda boleh pergi ke pautan ini untuk memuat turun Uji Labview. klik pada ikon Run dari menu halaman arahan untuk pergi ke mode run.
Langkah 3: Menyambung ke WiFi
Kami menggunakan portal tawanan untuk menyimpan kelayakan WiFi dan melayang ke tetapan IP. Untuk pengenalan terperinci di portal tawanan, anda boleh mengikuti petunjuk berikut.
Portal captive memberi kita pilihan untuk memilih antara tetapan Statik dan DHCP. Cukup masukkan kelayakan seperti Static IP, Subnet Mask, gateway dan Wireless Sensor Gateway akan dikonfigurasi pada IP tersebut.
Halaman web dihoskan di mana senarai yang menunjukkan rangkaian WiFi yang tersedia dan ada RSSI. Pilih rangkaian WiFi dan kata laluan dan masukkan hantar. Kredensial akan disimpan di EEPROM dan tetapan IP akan disimpan di SPIFFS. Lebih banyak mengenai ini boleh didapati dalam arahan ini.
Langkah 4: Menyiapkan UbiDots pada ESP32
Di sini kita menggunakan Sensor Tekanan dan Suhu 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
jika (Bersiri1. tersedia ())
{data [0] = Serial1.read (); kelewatan (k); if (data [0] == 0x7E) {sementara (! Serial1.available ()); untuk (i = 1; i <36; i ++) {data = Serial1.read (); kelewatan (1); } jika (data [15] == 0x7F) /////// untuk memeriksa apakah data penerimaan betul {if (data [22] == 0x06) //////// pastikan jenis sensor betul {int cTemp = ((((data [24]) * 256) + data [25])); int16_t abs_pressure = ((((uint16_t) (data [26]) << 8) | data [27]) * 0.001); int rlt_pressure = ((((data [28]) * 256) + data [29]) * 0.001); int16_t delta_alt = ((((uint16_t) (data [30]) << 8) | data [31]) * 0.01); bateri apungan = ((data [18] * 256) + data [19]); voltan apungan = 0.00322 * bateri; Serial.print ("Sensor Number"); Serial.println (data [16]); Serial.print ("Jenis Sensor"); Serial.println (data [22]); Serial.print ("Versi Firmware"); Serial.println (data [17]); Serial.print ("Suhu dalam Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Tekanan Mutlak:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Tekanan Relatif:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Ketinggian Delta:"); Serial.println (delta_alt); Serial.print ("meter"); Serial.print ("Nilai ADC:"); Serial.println (bateri); Serial.print ("Voltan Bateri:"); Cetakan bersiri (voltan); Serial.println ("\ n"); jika (voltan <1) {Serial.println ("Masa untuk Mengganti Bateri"); }}} lain {untuk (i = 0; i <36; i ++) {Serial.print (data ); Cetakan bersiri (","); kelewatan (1); }}}}
Menyambung ke UbiDots MQTT API
Sertakan fail tajuk untuk proses MQTT
#sertakan
tentukan pemboleh ubah lain untuk MQTT seperti nama pelanggan, alamat broker, ID token
#tentukan TOKEN "BBFF - ************************************" // TOKEN Ubidots anda # tentukan MQTT_CLIENT_NAME "****************************"
char mqttBroker = "things.ubidots.com";
muatan char [100]; topik char [150]; // buat pemboleh ubah untuk menyimpan token ID token
Langkah 5: Menerbitkan Bacaan Sensor ke UbiDots
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 6: 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 7: Keseluruhan Kod
Kod Over untuk HTML dan ESP32 boleh didapati di repositori GitHub ini.
Kredit
- papan pemecah ncd ESP32.
- Sensor Tekanan dan Suhu Tanpa wayar ncd
- pelanggan pub
- UbiDots
- Penjadual tugasan
Disyorkan:
Data Sensor Getaran dan Suhu Tanpa Wayar ke MySQL Menggunakan Node-MERAH: 40 Langkah
Data Sensor Getaran dan Suhu Tanpa Wayar ke MySQL Menggunakan Node-RED: Memperkenalkan sensor getaran dan suhu tanpa wayar Jangka Panjang IoT Industri NCD, dengan jarak penggunaan sehingga 2 mil penggunaan struktur rangkaian jejaring tanpa wayar. Memasukkan getaran dan sensor suhu 16-bit yang tepat, peranti ini dapat
Menghantar Data Sensor Getaran dan Suhu Tanpa Wayar ke Excel Menggunakan Node-MERAH: 25 Langkah
Menghantar Data Sensor Getaran dan Suhu Tanpa Wayar ke Excel Menggunakan Node-RED: Memperkenalkan sensor getaran dan suhu tanpa wayar Industri Jangka Panjang NCD NCD, dengan jarak penggunaan sehingga 2 mil penggunaan struktur rangkaian jaringan tanpa wayar. Memasukkan getaran dan sensor suhu 16-bit yang tepat, peranti ini dapat
Robot Arduino Tanpa Wayar Menggunakan Modul Tanpa Wayar HC12: 7 Langkah
Robot Arduino Tanpa Wayar Menggunakan Modul Tanpa Wayar HC12: Hai kawan-kawan, selamat datang kembali. Dalam catatan sebelumnya, saya telah menjelaskan apa itu H Bridge Circuit, IC pemandu motor L293D, IC pemandu L293D piggybacking untuk memandu pemandu motor semasa yang tinggi dan bagaimana anda boleh merancang dan membuat Papan Pemandu motor L293D anda sendiri
Peretas Pintu Tanpa Wayar ke Suis Penggera Tanpa Wayar atau Suis Hidup / Mati: 4 Langkah
Peretas Pintu Tanpa Wayar ke Suis Penggera Tanpa Wayar atau Suis Hidup / Mati: Saya baru-baru ini membina sistem penggera dan memasangnya di rumah saya. Saya menggunakan suis magnet di pintu dan memasang kabel melalui loteng. Tingkap adalah kisah lain dan pendawaian keras bukan pilihan. Saya memerlukan penyelesaian tanpa wayar dan ini
Tukar Penghala Tanpa Wayar ke Jalur Akses 2x Ekstensi Tanpa Wayar: 5 Langkah
Tukar Penghala Tanpa Wayar ke Jalur Akses 2x Ekstensi Tanpa Wayar: Saya mempunyai sambungan internet tanpa wayar yang lemah di rumah saya disebabkan oleh RSJ (rasuk sokongan logam di siling) dan ingin meningkatkan isyarat atau menambah pemanjang tambahan untuk seluruh rumah. Saya telah melihat pemanjangan sekitar & £ 50 dalam sebuah elektro