Isi kandungan:

Menyambungkan Sensor DHT11 / DHT22 ke Awan Dengan Papan berasaskan ESP8266: 9 Langkah
Menyambungkan Sensor DHT11 / DHT22 ke Awan Dengan Papan berasaskan ESP8266: 9 Langkah

Video: Menyambungkan Sensor DHT11 / DHT22 ke Awan Dengan Papan berasaskan ESP8266: 9 Langkah

Video: Menyambungkan Sensor DHT11 / DHT22 ke Awan Dengan Papan berasaskan ESP8266: 9 Langkah
Video: TUTORIAL SENSOR SUHU DHT11 ARDUINO - ARDUINO PROJECT INDONESIA - BELAJAR ARDUINO - TUTRIAL ARDUINO 2024, September
Anonim
Menyambungkan Sensor DHT11 / DHT22 ke Awan Dengan Papan yang berasaskan ESP8266
Menyambungkan Sensor DHT11 / DHT22 ke Awan Dengan Papan yang berasaskan ESP8266

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

Ukur Suhu dan Kelembapan
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

Buat dan Konfigurasi Projek
Buat dan Konfigurasi 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

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

Mulakan dan Debug Projek
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

Konfigurasi Papan Pemuka
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

Kesimpulannya
Kesimpulannya

Kod projek lengkap boleh didapati di intinya.

Itu sahaja buat masa ini!

Soalan dan cadangan boleh diterima dalam komen.

Disyorkan: