- ส่วนประกอบที่จำเป็น
- แผนภูมิวงจรรวม
- DHT11 เซ็นเซอร์อุณหภูมิและความชื้น
- การเขียนโปรแกรม NodeMCU ESP8266 Live Temperature and Humidity Monitoring
ไมโครคอนโทรลเลอร์มีหน่วยความจำภายในขนาดเล็กซึ่งไม่เพียงพอที่จะบันทึกข้อมูลที่เซ็นเซอร์สร้างขึ้นเป็นเวลานานไม่ว่าคุณจะต้องใช้อุปกรณ์หน่วยความจำภายนอกหรือสามารถบันทึกข้อมูลบนคลาวด์บางส่วนโดยใช้อินเทอร์เน็ต นอกจากนี้บางครั้งก็ยากที่จะจัดการเมื่อเซ็นเซอร์ถูกติดตั้งในพื้นที่ที่มีสภาพรุนแรงซึ่งมนุษย์ไม่สามารถเข้าถึงได้หรือยากที่จะไปที่นั่นบ่อยๆ ในการแก้ไขปัญหาประเภทนี้เรามักจะมองหาวิธีที่เราต้องการตรวจสอบข้อมูลเซ็นเซอร์แบบเรียลไทม์จากที่ใดก็ได้โดยไม่ต้องมีตัวตน ณ ที่นั้น
ฐานข้อมูลเวลาจริงสามารถนำมาใช้ในสถานการณ์นี้ที่เราก็มีการติดต่อควบคุมบางอย่างที่สามารถเชื่อมต่อกับอินเทอร์เน็ตและจะสามารถแลกเปลี่ยนข้อมูลกับเซิร์ฟเวอร์คลาวด์ ข้อมูลเซิร์ฟเวอร์จะมีประโยชน์ในการตรวจสอบพฤติกรรมของระบบเรียลไทม์การวิเคราะห์ฐานข้อมูลการวิเคราะห์และประมวลผลทางสถิติและการตีความสำหรับกรณีการใช้งานในอนาคต มีแพลตฟอร์มฮาร์ดแวร์ IoT และแพลตฟอร์มคลาวด์มากมายที่พร้อมใช้งานเพื่อตอบสนองวัตถุประสงค์นี้ หากคุณพบปัญหาในการค้นหาแพลตฟอร์มที่เหมาะสมสำหรับแอปพลิเคชัน IoT ของคุณให้ไปที่ลิงค์
ก่อนหน้านี้เราได้กล่าวถึง ThingSpeak, Adafruit IO และซอฟต์แวร์ IoT อื่น ๆ อีกมากมายแล้ว วันนี้เราจะสร้างโครงการที่คล้ายกันซึ่งเราจะใช้เซ็นเซอร์อุณหภูมิและความชื้น DHT11และโมดูล NodeMCU ESP8266เพื่อบันทึกอุณหภูมิและความชื้นแบบเรียลไทม์บนเซิร์ฟเวอร์ฐานข้อมูล Firebase ของ Google
เราจะแบ่งโครงการออกเป็นสองส่วน ประการแรกเราจะเริ่มต้นด้วยการประกอบส่วนประกอบฮาร์ดแวร์และอัปโหลดเฟิร์มแวร์เข้าไป และประการที่สองเราจะใช้ Firebase เพื่อตั้งค่ากับ NodeMCU เพื่อแลกเปลี่ยนข้อมูลแบบเรียลไทม์ หากคุณเพิ่งเริ่มใช้ ESP8266 หรือ Firebase ให้ทำตามบทแนะนำก่อนหน้านี้เกี่ยวกับการควบคุม LED โดยใช้ Firebase
ส่วนประกอบที่จำเป็น
- โมดูล NodeMCU ESP8266
- DHT11 เซ็นเซอร์อุณหภูมิและความชื้น
แผนภูมิวงจรรวม
DHT11 เซ็นเซอร์อุณหภูมิและความชื้น
โมดูล DHT11 มีส่วนประกอบของความชื้นและอุณหภูมิพร้อมเอาต์พุตสัญญาณดิจิตอลที่ปรับเทียบแล้วหมายความว่าโมดูลเซ็นเซอร์ DHT11 เป็นโมดูลรวมสำหรับตรวจจับความชื้นและอุณหภูมิซึ่งให้สัญญาณเอาต์พุตดิจิตอลที่ปรับเทียบแล้ว DHT11 ให้ค่าความชื้นและอุณหภูมิที่แม่นยำมากและรับประกันความน่าเชื่อถือสูงและความเสถียรในระยะยาว เซ็นเซอร์นี้มีส่วนประกอบการวัดความชื้นแบบตัวต้านทานและส่วนประกอบการวัดอุณหภูมิประเภท NTC พร้อมไมโครคอนโทรลเลอร์ 8 บิตในตัวซึ่งมีการตอบสนองที่รวดเร็วและคุ้มค่าและมีให้ในแพ็คเกจ 4 ขาแถวเดียว
ก่อนหน้านี้เราใช้ ESP12E เพื่ออัปเดตการอ่าน DHT11 บนเว็บเซิร์ฟเวอร์นอกเหนือจากนั้นคุณสามารถตรวจสอบโครงการที่ใช้ DHT11 ทั้งหมดที่เราใช้ DHT11 เพื่อเชื่อมต่อกับไมโครคอนโทรลเลอร์อื่น ๆ เช่น Arduino, PIC, Raspberry และสถานีตรวจอากาศที่สร้างขึ้นโดยใช้
การเขียนโปรแกรม NodeMCU ESP8266 Live Temperature and Humidity Monitoring
โปรแกรมที่สมบูรณ์พร้อมวิดีโอการทำงาน จะได้รับในตอนท้าย เรากำลังอธิบายส่วนสำคัญบางส่วนของโค้ดที่นี่
อันดับแรกรวมไลบรารีสำหรับใช้ ESP8266 และ firebase
# รวม
ดาวน์โหลดและติดตั้งไลบรารีตามลิงค์ด้านล่าง:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
ในขณะคอมไพล์หากคุณพบข้อผิดพลาดว่าไม่ได้ติดตั้งไลบรารี ArduinoJson.hโปรดติดตั้งโดยใช้ลิงค์ที่ระบุด้านบน
เราจะตั้งโปรแกรม NodeMCU ให้อ่านค่าจากเซ็นเซอร์ DHT11 และส่งไปยัง Firebase ทุกๆ 5 วินาทีของช่วงเวลา เราจะกำหนดเส้นทางสำหรับการผลักดันข้อมูล ตอนนี้สองพารามิเตอร์ ได้แก่ ความชื้นและอุณหภูมิจะถูกส่งไปในเส้นทางแม่เดียวกันและเส้นทางลูกที่แตกต่างกัน
พารามิเตอร์ทั้งสองนี้มีความสำคัญมากในการสื่อสารกับ firebase การตั้งค่าพารามิเตอร์เหล่านี้จะเปิดใช้งานการแลกเปลี่ยนข้อมูลระหว่าง ESP8266 และ firebase หากต้องการค้นหาพารามิเตอร์เหล่านี้สำหรับโครงการของคุณให้ทำตามบทแนะนำก่อนหน้าของเราเกี่ยวกับการตั้งค่า Firebase
#define FIREBASE_HOST "your-project.firebaseio.com" // ที่อยู่ชื่อโปรเจ็กต์จากรหัส firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // คีย์ลับที่สร้างจาก firebase
หลังจากค้นหาข้อมูลรับรองสำเร็จแล้วให้เปลี่ยนรหัสด้านบน
ป้อน SSID และรหัสผ่าน Wi-Fi ของคุณเพื่อเชื่อมต่อกับเครือข่ายของคุณ
#define WIFI_SSID "network_name" // ใส่ชื่อ wifi ที่บ้านหรือสาธารณะของคุณ #define WIFI_PASSWORD "password" // รหัสผ่านของ wifi ssid
กำหนดพินข้อมูล DHT ใน NodeMCU คุณสามารถใช้พิน Digital GPIO ใดก็ได้ใน NodeMCU
# กำหนด DHTPIN D4
ไลบรารี DHT สร้างขึ้นสำหรับรุ่น DHT ทั้งหมดและมาพร้อมกับตัวเลือกที่คุณต้องการใช้เซ็นเซอร์ DHT เช่น DHT11 หรือ DHT22 เพียงเลือกเซ็นเซอร์ DHT ที่เหมาะสมและดำเนินการต่อ
#define DHTTYPE DHT11 // เลือกประเภท dht เป็น DHT 11 หรือ DHT22 DHT dht (DHTPIN, DHTTYPE);
เชื่อมต่อกับเครือข่าย Wi-Fi ที่เลือกและเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล firebase
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
เริ่มต้นการอ่านที่ขาของ D4 NodeMCU
dht.begin ();
อ่านค่าความชื้นและอุณหภูมิจากเซ็นเซอร์ DHT และบันทึกเป็นค่าลอย
ลอย h = dht.readHumidity (); // การอ่านอุณหภูมิหรือความชื้นใช้เวลาประมาณ 250 มิลลิวินาที! ลอย t = dht.readTemperature (); // อ่านอุณหภูมิเป็นเซลเซียส (ค่าเริ่มต้น)
เพียงตรวจสอบว่าเซ็นเซอร์ DHT ต่อสายอย่างถูกต้องหรือไม่หรือไม่เสียหายและคอนโทรลเลอร์สามารถอ่านค่าที่อ่านได้ หากการอ่านไม่แสดงขึ้นแสดงว่าเซ็นเซอร์เสียหายเพียงแสดงข้อความแสดงข้อผิดพลาดและกลับไปตรวจสอบอีกครั้งโดยไม่ต้องดำเนินการต่อ
if (isnan (h) - isnan (t)) {// ตรวจสอบว่าการอ่านใดล้มเหลวและออกก่อนเวลา (เพื่อลองอีกครั้ง) Serial.println (F ("ล้มเหลวในการอ่านจากเซ็นเซอร์ DHT!")); กลับ; }
พิมพ์ข้อมูลเซ็นเซอร์ในมอนิเตอร์แบบอนุกรมสำหรับการดีบักและบันทึกค่าของอุณหภูมิและความชื้นในรูปแบบสตริงเพื่อส่งไปยัง firebase โปรดทราบว่าการหน่วงเวลาต่ำสุดที่จำเป็นระหว่างการอ่านสองครั้งจากเซ็นเซอร์ DHT11 คือ 2 วินาทีดังนั้นควรใช้การหน่วงเวลามากกว่า 2 วินาทีเสมอ หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ DHT11 คุณสามารถดูเอกสารข้อมูลอย่างเป็นทางการ
Serial.print ("ความชื้น:"); Serial.print (h); สตริง fireHumid = สตริง (h) + สตริง ("%"); // แปลงความชื้นจำนวนเต็มเป็นความชื้นสตริง Serial.print ("% Temperature:"); Serial.print (เสื้อ); Serial.println ("° C"); สตริง fireTemp = สตริง (t) + สตริง ("° C"); ล่าช้า (4000);
ในที่สุดส่งข้อมูลอุณหภูมิและความชื้นไปยัง firebase ที่เส้นทาง“ your-project.firebaseio.com/DHT11/Humidity/”
Firebase.pushString ("/ DHT11 / ความชื้น", fireHumid); // เส้นทางการตั้งค่าและส่งการอ่าน Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // เส้นทางการตั้งค่าและส่งการอ่าน
คุณสามารถดูข้อมูลทั้งหมดในบัญชี firebase ของคุณ เพียงไปที่ส่วน“ ฐานข้อมูล ” ใน“ โครงการของคุณ ” ที่“ คอนโซลของฉัน ” ใน Firebase
ในการตั้งค่า Firebase สำหรับการส่งและตรวจสอบข้อมูลคุณสามารถดูบทแนะนำก่อนหน้าของเราได้
รหัสและวิดีโอที่สมบูรณ์สำหรับการตรวจสอบอุณหภูมิและความชื้นตาม IoTได้รับด้านล่าง