Isi kandungan:

Menerbitkan Data Sensor Tekanan Tanpa Wayar Menggunakan MQTT: 7 Langkah
Menerbitkan Data Sensor Tekanan Tanpa Wayar Menggunakan MQTT: 7 Langkah

Video: Menerbitkan Data Sensor Tekanan Tanpa Wayar Menggunakan MQTT: 7 Langkah

Video: Menerbitkan Data Sensor Tekanan Tanpa Wayar Menggunakan MQTT: 7 Langkah
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Menerbitkan Data Sensor Tekanan Tanpa Wayar Menggunakan MQTT
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 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

Sensor Tekanan dan Suhu Tanpa Wayar
Sensor Tekanan dan Suhu Tanpa Wayar
Sensor Tekanan dan Suhu Tanpa Wayar
Sensor Tekanan dan Suhu Tanpa Wayar
Sensor Tekanan dan Suhu Tanpa Wayar
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

Menyambung ke WiFi
Menyambung ke WiFi
Menyambung ke WiFi
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

Menyiapkan UbiDots pada ESP32
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

Penerbitan Bacaan Sensor ke UbiDots
Penerbitan 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

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