Isi kandungan:
- Bekalan
- Langkah 1: Ukur Suhu dan Kelembapan
- Langkah 2: Buat dan Konfigurasikan Projek
- Langkah 3: Pasang Perpustakaan
- Langkah 4: Sambungkan Sensor DHT11
- Langkah 5: Menghantar Data ke Awan
- Langkah 6: Diagnostik
- Langkah 7: Mulakan dan Debug Projek
- Langkah 8: Konfigurasi Papan Pemuka
- Langkah 9: Kesimpulannya
Video: Menyambungkan Sensor DHT11 / DHT22 ke Awan Dengan Papan berasaskan ESP8266: 9 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Dalam artikel sebelumnya, saya menghubungkan papan NodeMCU berasaskan ESP8266 saya ke perkhidmatan Cloud4RPi. Sekarang, sudah tiba masanya untuk projek sebenar!
Bekalan
Keperluan perkakasan:
- Apa-apa papan berdasarkan cip ESP8266 (misalnya, NodeMCU)
- Sensor DHT11 atau DHT22
Perisian dan perkhidmatan:
- Perpustakaan sensor DHT oleh Adafruit - v1.3.7
- Sensor Bersatu Adafruit - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - Panel kawalan awan untuk peranti IoT
- PlatformIO IDE untuk VSCode
Langkah 1: Ukur Suhu dan Kelembapan
Saya sudah mempunyai sensor DHT11, jadi saya memutuskan untuk menggunakannya untuk pengukuran suhu dan kelembapan. Mari pilih perpustakaan Arduino untuk membaca data sensor.
Pendaftaran Arduino mengandungi beberapa perpustakaan, dari mana saya memilih yang paling popular.
Menurut repositori GitHub mereka, kami juga diminta untuk menambahkan pakej Adafruit Unified Sensor.
Langkah 2: Buat dan Konfigurasikan Projek
Saya sudah menerangkan bagaimana membuat projek PlatformIO dan memasang perpustakaan pada bahagian pertama. Projek saya dipanggil "MyNodeMCU". Strukturnya ditunjukkan di atas.
Projek ini adalah contoh Cloud4RPi yang sedikit diubahsuai. Saya memutuskan untuk menyimpan token peranti dan kelayakan Wi-Fi dalam fail konfigurasi dan bukannya kod.
Fail platform.io kelihatan seperti berikut:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = kerangka espressif8266 = papan arduino = nodemcuv2
Langkah 3: Pasang Perpustakaan
Pemasangan perpustakaan agak mudah. Anda boleh melakukannya dari antara muka grafik IDE, atau dengan menambahkan nama perpustakaan yang diperlukan ke bahagian lib_deps pada file platform.io:
; … Lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor DHT sensor library library_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME = / IF_ID_S_S_S_ID_S_ D CLOUD4RPI_TOKEN = / "_ ANDA_DEVICE_TOKEN _ \"
Perpustakaan yang ditambahkan akan dipasang secara automatik ke dalam subfolder projek.
Tajuk main.cpp kelihatan seperti berikut:
#include #include #include #include "DHT.h"
Langkah 4: Sambungkan Sensor DHT11
Adafruit memberikan contoh DHTtester.ino sambungan sensor.
Kod ini menginisialisasi sensor dan menentukan struktur untuk menyimpan hasil pengukuran (sekiranya berjaya):
#tentukan DHTPIN 2 // Pin digital yang disambungkan ke sensor DHT # tentukan DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; apungan t; }; DHT_Result dhtResult;
Fungsi seterusnya menunjukkan cara membaca data sensor dan menyimpannya dalam struktur data yang dijelaskan di atas
baca kosongSensor () {float h = dht.readHumidity (); // Baca suhu sebagai Celsius (lalai) terapung t = dht.readTemperature ();
// Periksa sama ada bacaan gagal dan keluar
if (isnan (h) || isnan (t)) {Serial.println (F ("Gagal membaca dari sensor DHT!")); kembali; } dhtResult.h = h; dhtResult.t = t; }
Langkah 5: Menghantar Data ke Awan
Setelah kami mempunyai data tersebut, langkah seterusnya adalah mengirimkannya ke perkhidmatan Cloud4RPi.
Halaman Cloud4RPi untuk Arduino menerangkan API perpustakaan, yang merupakan sekumpulan kaedah yang digunakan untuk:
- buat, baca dan kemas kini pemboleh ubah,
- hantar nilai berubah ke awan menggunakan protokol MQTT.
Perpustakaan menyokong tiga jenis pemboleh ubah: Bool, Numeric, dan String.
Alur kerja perpustakaan dimulakan dengan membuat instance API menggunakan Device Token dari laman web cloud4rpi.io (lihat bahagian 1 artikel untuk keterangannya).
#jika ditakrifkan (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif
Kemudian, nyatakan pemboleh ubah untuk pembacaan DHT11:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Kemudian, dapatkan data dari sensor, simpan menjadi pemboleh ubah dan terbitkan data tersebut ke Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Suhu dan kelembapan tidak berubah dengan cepat, jadi pengiriman lebih dari satu nilai setiap 5 minit tidak diperlukan.
Langkah 6: Diagnostik
Cloud4RPi menyokong data diagnostik bersama dengan nilai berubah. Saya menggunakan waktu operasi, kekuatan isyarat Wi-Fi, dan alamat IP sebagai data diagnostik:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Kekuatan isyarat WiFi c4r.declareDiagVariable ("Uptime");
Catatan: Fungsi millis yang saya gunakan untuk mendapatkan uptime diset semula ke sifar setiap ~ 50 hari. Mana lebih dari cukup untuk projek saya.
Kod berikut menetapkan nilai pemboleh ubah diagnostik:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
Fungsi uptimeHumanReadable menukar milisaat menjadi bentuk mudah:
String uptimeHumanReadable (milisaat panjang yang tidak ditandatangani) {static char uptimeStr [32]; lama tidak ditandatangani = milisaat / 1000; min yang tidak ditandatangani = saat / 60; jam int tidak bertanda = min / 60; hari int yang tidak ditandatangani = jam / 24; saat - = min * 60; min - = jam * 60; jam - = hari * 24; sprintf (uptimeStr, "% d hari% 2.2d:% 2.2d:% 2.2d", (bait) hari, (bait) jam, (bait) minit, (bait) saat); kembali String (uptimeStr); }
Fungsi menghasilkan rentetan seperti ini 5 hari 10:23:14 dan bukannya nombor besar yang pelik.
Langkah 7: Mulakan dan Debug Projek
Setelah menyusun kod yang dibuat dan memasukkannya ke NodeMCU, peranti menyambung ke perkhidmatan awan dan mula menghantar data.
Anda boleh meningkatkan keterlaluan log dengan menetapkan pemboleh ubah preprocessor CLOUD4RPI_DEBUG ke 1 (tambah -D CLOUD4RPI_DEBUG = 1 ke bahagian build_flags dalam fail platform.io).
Seterusnya, buka laman cloud4rpi.io dan perhatikan peranti baru dalam talian. Buka untuk melihat semua nilai pemboleh ubah yang diterima dari peranti: sensor dan diagnostik.
Langkah 8: Konfigurasi Papan Pemuka
Pada langkah ini, sambungan data ke awan beroperasi. Sekarang, mari kita konfigurasi representasi visual data.
Saya menggunakan UI konfigurasi Dashboard untuk membuat papan pemuka berikut.
Papan pemuka boleh dikongsi, jadi saya segera berkongsi dengan rakan saya.
Langkah 9: Kesimpulannya
Kod projek lengkap boleh didapati di intinya.
Itu sahaja buat masa ini!
Soalan dan cadangan boleh diterima dalam komen.
Disyorkan:
Sensor Suhu dan Kelembapan (DHT22) Dengan Papan Dexter: 7 Langkah
Sensor Suhu dan Kelembapan (DHT22) Dengan Papan Dexter: Papan Dexter adalah kit pelatih pendidikan yang menjadikan pembelajaran elektronik menyeronokkan dan mudah. Lembaga ini mengumpulkan semua bahagian yang diperlukan oleh seorang pemula untuk mengubah idea menjadi prototaip yang berjaya. Dengan hati Arduino, sebilangan besar
Menyambungkan Arduino WiFi ke Awan Menggunakan Langkah ESP8266: 7
Menyambungkan Arduino WiFi ke Awan Menggunakan ESP8266: Dalam tutorial ini kami akan menerangkan kepada anda bagaimana menghubungkan Arduino anda ke awan IoT melalui WiFi. Kami akan mengkonfigurasi persediaan yang terdiri daripada Arduino dan modul WiFi ESP8266 sebagai Perkara IoT dan menjadikannya siap untuk berkomunikasi dengan AskSensors cloud.L
Aquaponik Pintar Automatik (Dengan Papan Pemuka Berasaskan Awan): 11 Langkah
Aquaponics Pintar Automatik (Dengan Papan Pemuka Berasaskan Awan): Aquaponics membolehkan anda menanam makanan organik anda sendiri di mana sahaja (dalaman atau luaran), di ruang yang sangat sedikit, dengan pertumbuhan yang lebih banyak, penggunaan air yang lebih sedikit, dan tanpa baja kimia luaran. Anda juga dapat memantau keadaan di papan pemuka berasaskan awan
Penjana Muzik Berasaskan Cuaca (Generator Midi Berasaskan ESP8266): 4 Langkah (dengan Gambar)
Penjana Muzik Berasaskan Cuaca (Generator Midi Berasaskan ESP8266): Hai, hari ini saya akan menerangkan cara membuat penjana Muzik berasaskan Cuaca kecil anda sendiri. Ia berdasarkan ESP8266, yang seperti Arduino, dan ia bertindak balas terhadap suhu, hujan dan intensiti cahaya. Jangan berharap untuk membuat keseluruhan lagu atau kord progres
Cara Menyambungkan dan Menyiapkan Sistem Rak HiFi Mini dengan betul (Sistem Bunyi): 8 Langkah (dengan Gambar)
Cara Menyambungkan dan Menyiapkan Sistem Rak HiFi Mini dengan betul (Sound System): Saya adalah orang yang suka belajar mengenai kejuruteraan elektrik. Saya seorang sekolah menengah di Ann Richards School for Young Women Leaders. Saya membuat arahan ini untuk membantu sesiapa sahaja yang ingin menikmati muzik mereka dari Mini LG HiFi Shelf Syste