สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: วัดอุณหภูมิและความชื้น
- ขั้นตอนที่ 2: สร้างและกำหนดค่า Project
- ขั้นตอนที่ 3: ติดตั้งไลบรารี
- ขั้นตอนที่ 4: เชื่อมต่อเซ็นเซอร์ DHT11
- ขั้นตอนที่ 5: การส่งข้อมูลไปยัง Cloud
- ขั้นตอนที่ 6: การวินิจฉัย
- ขั้นตอนที่ 7: เริ่มและดีบักโครงการ
- ขั้นตอนที่ 8: การกำหนดค่าแดชบอร์ด
- ขั้นตอนที่ 9: สรุป
วีดีโอ: การเชื่อมต่อเซ็นเซอร์ DHT11/DHT22 กับคลาวด์ด้วยบอร์ดที่ใช้ ESP8266: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ในบทความที่แล้ว ฉันเชื่อมต่อบอร์ด NodeMCU ที่ใช้ ESP8266 กับบริการ Cloud4RPi ตอนนี้ก็ถึงเวลาสำหรับโครงการจริง!
เสบียง
ข้อกำหนดด้านฮาร์ดแวร์:
- บอร์ดใดๆ ที่ใช้ชิป ESP8266 (เช่น NodeMCU)
- เซ็นเซอร์ DHT11 หรือ DHT22
ซอฟท์แวร์และบริการ:
- ไลบรารีเซ็นเซอร์ DHT โดย Adafruit - v1.3.7
- Adafruit Unified Sensor - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - แผงควบคุมระบบคลาวด์สำหรับอุปกรณ์ IoT
- PlatformIO IDE สำหรับ VSCode
ขั้นตอนที่ 1: วัดอุณหภูมิและความชื้น
ฉันมีเซ็นเซอร์ DHT11 อยู่แล้ว ฉันจึงตัดสินใจใช้เซ็นเซอร์นี้ในการวัดอุณหภูมิและความชื้น มาเลือกห้องสมุด Arduino เพื่ออ่านข้อมูลเซ็นเซอร์กันเถอะ
รีจิสทรี Arduino มีหลายไลบรารี ซึ่งฉันเลือกไลบรารีที่ได้รับความนิยมมากที่สุด
ตามที่เก็บ GitHub เราจำเป็นต้องเพิ่มแพ็คเกจ Adafruit Unified Sensor ด้วย
ขั้นตอนที่ 2: สร้างและกำหนดค่า Project
ฉันได้อธิบายวิธีสร้างโปรเจ็กต์ PlatformIO และติดตั้งไลบรารีไว้ในส่วนแรกแล้ว โครงการของฉันชื่อ “MyNodeMCU” โครงสร้างแสดงไว้ด้านบน
โปรเจ็กต์นี้เป็นตัวอย่าง Cloud4RPi ที่ดัดแปลงเล็กน้อย ฉันตัดสินใจจัดเก็บโทเค็นของอุปกรณ์และข้อมูลรับรอง Wi-Fi ในไฟล์การกำหนดค่าแทนโค้ด
ไฟล์ platform.io มีลักษณะดังนี้:
[platformio]default_envs = nodemcuv2[env:nodemcuv2] แพลตฟอร์ม = espressif8266 framework = บอร์ด Arduino = nodemcuv2
ขั้นตอนที่ 3: ติดตั้งไลบรารี
การติดตั้งไลบรารีค่อนข้างง่าย คุณสามารถทำได้จากอินเทอร์เฟซแบบกราฟิกของ IDE หรือโดยการเพิ่มชื่อไลบรารีที่จำเป็นลงในส่วน lib_deps ของไฟล์ platform.io:
; …lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor DHT เซ็นเซอร์ไลบรารี build_flags = -D MQTT_MAX_PACKET_SIZE=1024 -D MQTT_MAX_TRANSFER_SIZE=128 -D CLOUD4RPI_DEBUG=0 -D SSID_NAME=\"ASS_YOUR\"_WID_PASS_YOUR\" D CLOUD4RPI_TOKEN=\"_YOUR_DEVICE_TOKEN_\"
ไลบรารีที่เพิ่มจะถูกติดตั้งโดยอัตโนมัติในโฟลเดอร์ย่อยของโปรเจ็กต์
ส่วนหัว main.cpp มีลักษณะดังนี้:
#รวม #รวม #รวม #รวม "DHT.h"
ขั้นตอนที่ 4: เชื่อมต่อเซ็นเซอร์ DHT11
Adafruit ให้ตัวอย่าง DHTtester.ino ของการเชื่อมต่อเซ็นเซอร์
รหัสนี้เริ่มต้นเซ็นเซอร์และกำหนดโครงสร้างเพื่อเก็บผลการวัด (ในกรณีที่สำเร็จ):
#define DHTPIN 2 // พินดิจิตอลที่เชื่อมต่อกับเซ็นเซอร์ DHT#define DHTTYPE DHT11 // DHT 11 // … DHT dht(DHTPIN, DHTTYPE); dht.begin(); // … จัดโครงสร้าง DHT_Result { float h; ลอย t; }; DHT_Result dhtResult;
ฟังก์ชันถัดไปแสดงวิธีการอ่านข้อมูลเซ็นเซอร์และจัดเก็บในโครงสร้างข้อมูลที่อธิบายไว้ข้างต้น
เป็นโมฆะ readSensors () { float h = dht.readHumidity (); // อ่านอุณหภูมิเป็นเซลเซียส (ค่าเริ่มต้น) float t = dht.readTemperature();
// ตรวจสอบว่าการอ่านล้มเหลวและออกหรือไม่
ถ้า (isnan (h) || isnan (t)) { Serial.println (F ("ไม่สามารถอ่านจากเซ็นเซอร์ DHT!")); กลับ; } dhtResult.h = h; dhtResult.t = t; }
ขั้นตอนที่ 5: การส่งข้อมูลไปยัง Cloud
เมื่อเราได้ข้อมูลนั้นแล้ว ขั้นตอนต่อไปคือการส่งไปยังบริการ Cloud4RPi
หน้า Cloud4RPi สำหรับ Arduino อธิบายไลบรารี API ซึ่งเป็นชุดของวิธีการที่ใช้เพื่อ:
- สร้าง อ่าน และปรับปรุงตัวแปร
- ส่งค่าตัวแปรไปยังระบบคลาวด์โดยใช้โปรโตคอล MQTT
ไลบรารีรองรับตัวแปรสามประเภท: Bool, Numeric และ String
เวิร์กโฟลว์ของไลบรารีเริ่มต้นด้วยการสร้างอินสแตนซ์ API โดยใช้ Device Token จากเว็บไซต์ cloud4rpi.io (ดูรายละเอียดในส่วนที่ 1 ของบทความ)
#if กำหนด (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r("!!!_NO_DEVICE_TOKEN_!!!"); #endif
จากนั้นประกาศตัวแปรสำหรับการอ่าน DHT11:
c4r.declareNumericVariable("DHT11_Temp");c4r.declareNumericVariable("DHT11_Hum");
จากนั้น รับข้อมูลจากเซ็นเซอร์ บันทึกลงในตัวแปร และเผยแพร่ข้อมูลไปยัง Cloud4RPi:
c4r.setVariable("DHT11_Temp", dhtResult.t);c4r.setVariable("DHT11_Hum", dhtResult.h); c4r.publishData();
อุณหภูมิและความชื้นไม่เปลี่ยนแปลงอย่างรวดเร็ว ดังนั้นจึงไม่จำเป็นต้องส่งมากกว่าหนึ่งค่าใน 5 นาที
ขั้นตอนที่ 6: การวินิจฉัย
Cloud4RPi รองรับข้อมูลการวินิจฉัยพร้อมกับค่าตัวแปร ฉันใช้เวลาทำงาน ความแรงของสัญญาณ Wi-Fi และที่อยู่ IP เป็นข้อมูลการวินิจฉัย:
c4r.declareDiagVariable("IP_Address");c4r.declareDiagVariable("RSSI"); // ความแรงของสัญญาณ WiFi c4r.declareDiagVariable("Uptime");
หมายเหตุ: ฟังก์ชันมิลลิวินาทีที่ฉันใช้เพื่อรับการรีเซ็ตเวลาทำงานเป็นศูนย์ทุก ~50 วัน ซึ่งมากเกินพอสำหรับโครงการของฉัน
รหัสต่อไปนี้ตั้งค่าตัวแปรการวินิจฉัย:
c4r.setDiagVariable("RSSI", (String)WiFi. RSSI() + " dBm");c4r.setDiagVariable("IP_Address", WiFi.localIP().toString()); c4r.setDiagVariable ("Uptime", uptimeHumanReadable (currentMillis)); c4r.publishDiag();
ฟังก์ชัน uptimeHumanReadable แปลงมิลลิวินาทีเป็นรูปแบบที่สะดวก:
สตริง uptimeHumanReadable (มิลลิวินาทีแบบยาวที่ไม่ได้ลงนาม) { อักขระคงที่ uptimeStr [32]; วินาทียาวที่ไม่ได้ลงนาม = มิลลิวินาที / 1,000; unsigned long mins = วินาที / 60; ชั่วโมง int ที่ไม่ได้ลงนาม = นาที / 60; วัน int ที่ไม่ได้ลงนาม = ชั่วโมง / 24; วินาที -= นาที * 60; นาที -= ชั่วโมง * 60; ชั่วโมง -= วัน * 24; sprintf(uptimeStr, "%d วัน %2.2d:%2.2d:%2.2d", (ไบต์) วัน (ไบต์) ชั่วโมง (ไบต์) นาที (ไบต์) วินาที); ส่งคืนสตริง (uptimeStr); }
ฟังก์ชันจะแสดงผลสตริงเช่นนี้ 5 วัน 10:23:14 น. แทนที่จะเป็นตัวเลขขนาดใหญ่แปลก ๆ
ขั้นตอนที่ 7: เริ่มและดีบักโครงการ
หลังจากรวบรวมโค้ดที่สร้างและแฟลชลงใน NodeMCU แล้ว อุปกรณ์จะเชื่อมต่อกับบริการคลาวด์และเริ่มส่งข้อมูล
คุณสามารถเพิ่มความละเอียดของการบันทึกได้โดยการตั้งค่าตัวแปรตัวประมวลผลล่วงหน้า CLOUD4RPI_DEBUG เป็น 1 (เพิ่ม -D CLOUD4RPI_DEBUG=1 ลงในส่วน build_flags ในไฟล์ platform.io)
ถัดไป เปิดไซต์ cloud4rpi.io และสังเกตเห็นอุปกรณ์ใหม่ทางออนไลน์ เปิดเพื่อดูค่าตัวแปรทั้งหมดที่ได้รับจากอุปกรณ์: เซ็นเซอร์และการวินิจฉัย
ขั้นตอนที่ 8: การกำหนดค่าแดชบอร์ด
ในขั้นตอนนี้ การเชื่อมต่อข้อมูลกับระบบคลาวด์ใช้งานได้ ตอนนี้ มากำหนดค่าการแสดงข้อมูลด้วยภาพ
ฉันใช้ UI การกำหนดค่าแดชบอร์ดเพื่อสร้างแดชบอร์ดต่อไปนี้
แดชบอร์ดนั้นแชร์ได้ ฉันจึงแชร์กับเพื่อนทันที
ขั้นตอนที่ 9: สรุป
รหัสโครงการฉบับเต็มมีอยู่ในส่วนสำคัญ
นั่นคือทั้งหมดที่สำหรับตอนนี้!
ยินดีต้อนรับคำถามและข้อเสนอแนะในความคิดเห็น
แนะนำ:
วัดอุณหภูมิและความชื้นโดยใช้ DHT11 / DHT22 และ Arduino: 4 ขั้นตอน
วัดอุณหภูมิและความชื้นโดยใช้ DHT11 / DHT22 และ Arduino: ในบทช่วยสอน Arduino นี้ เราจะเรียนรู้วิธีการใช้เซ็นเซอร์ DHT11 หรือ DHT22 สำหรับการวัดอุณหภูมิและความชื้นด้วยบอร์ด Arduino
การเชื่อมต่อเซ็นเซอร์ Infineon DPS422 กับ Infineon XMC4700 และการส่งข้อมูลไปยัง NodeMCU: 13 ขั้นตอน
การเชื่อมต่อเซ็นเซอร์ Infineon DPS422 กับ Infineon XMC4700 และการส่งข้อมูลไปยัง NodeMCU: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ DPS422 สำหรับการวัดอุณหภูมิและความดันบรรยากาศด้วย XMC4700 DPS422 DPS422 เป็นเซ็นเซอร์ความดันอากาศและอุณหภูมิแบบดิจิตอลขนาดเล็กที่มีความแม่นยำสูงและกระแสไฟต่ำ การบริโภค.
ESP32 เครื่องติดตามสภาพอากาศ M5Stack M5stick C พร้อม DHT11 - ตรวจสอบอุณหภูมิความชื้นและดัชนีความร้อนบน M5stick-C ด้วย DHT11: 6 ขั้นตอน
เครื่องตรวจสอบสภาพอากาศ M5Stack M5stick C ที่ใช้ ESP32 พร้อม DHT11 | ตรวจสอบอุณหภูมิความชื้นและดัชนีความร้อนบน M5stick-C ด้วย DHT11: สวัสดีทุกคน ในคำแนะนำนี้ เราจะเรียนรู้วิธีเชื่อมต่อเซ็นเซอร์อุณหภูมิ DHT11 กับ m5stick-C (บอร์ดพัฒนาโดย m5stack) และแสดงบนจอแสดงผลของ m5stick-C ดังนั้นในบทช่วยสอนนี้ เราจะอ่านอุณหภูมิ ความชื้น & ความร้อน ฉัน
คู่มือสำหรับผู้เริ่มต้นใช้งานเซ็นเซอร์ DHT11/DHT22 พร้อม Arduino: 9 ขั้นตอน
คู่มือสำหรับผู้เริ่มต้นใช้งานเซ็นเซอร์ DHT11/DHT22 พร้อม Arduino: คุณสามารถอ่านบทแนะนำนี้และบทช่วยสอนที่น่าทึ่งอื่นๆ ได้จากเว็บไซต์ทางการของ ElectroPeak ภาพรวมในบทช่วยสอนนี้ คุณจะได้เรียนรู้วิธีตั้งค่าเซ็นเซอร์ DHT11 และ DHT22 และวัดอุณหภูมิและความชื้นของสิ่งแวดล้อม เรียนรู้: DHT11 และ DHT22
สร้างอุปกรณ์ Apple HomeKit Temperature Sensor (DHT22) โดยใช้ RaspberryPI และ DHT22: 11 ขั้นตอน
สร้างอุปกรณ์ Apple HomeKit Temperature Sensor (DHT22) โดยใช้ RaspberryPI และ DHT22: ฉันกำลังมองหาเซ็นเซอร์อุณหภูมิ / ความชื้นราคาประหยัดที่ฉันสามารถใช้เพื่อตรวจสอบสิ่งที่เกิดขึ้นในพื้นที่รวบรวมข้อมูลของฉัน เนื่องจากฉันพบว่าฤดูใบไม้ผลินี้เปียกมาก และมีความชื้นมาก ดังนั้นฉันจึงมองหาเซ็นเซอร์ราคาสมเหตุสมผลที่ฉันสามารถ