Isi kandungan:

UbiDots-Menghubungkan ESP32 dan Menerbitkan Data Sensor Pelbagai: 6 Langkah
UbiDots-Menghubungkan ESP32 dan Menerbitkan Data Sensor Pelbagai: 6 Langkah

Video: UbiDots-Menghubungkan ESP32 dan Menerbitkan Data Sensor Pelbagai: 6 Langkah

Video: UbiDots-Menghubungkan ESP32 dan Menerbitkan Data Sensor Pelbagai: 6 Langkah
Video: Arduino and ESP32 Serial Communication || UART Communication 2024, Julai
Anonim
UbiDots-Menghubungkan ESP32 dan Menerbitkan Data Sensor Pelbagai
UbiDots-Menghubungkan ESP32 dan Menerbitkan Data Sensor Pelbagai

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

Spesifikasi Perkakasan dan Perisian
Spesifikasi Perkakasan dan Perisian
  • ESP32 WiFi / BLE
  • Sensor Suhu dan Kelembapan Tanpa Wayar

Spesifikasi Perisian

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 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

Menyediakan Kredensial WiFi dan UbiDots
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

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