การทดลองเรื่อง ทดสอบการวัดค่าอุณหภูมิและความชื้นด้วยตัวตรวจวัด DHT11 แล้วส่งค่าไปแสดงที่สมาร์ทโฟน พร้อมทั้งสั่งให้ทำงานตามเงื่อนไขที่กำหนด
วัตถุประสงค์
1.เพื่อศึกษาหลักการทำงานของตัวตรวจจับอุณหภูมิและความชื้น DHT11 แล้วส่งข้อมูลไปแสดงผลบนสมาร์ทโฟน
2.เพื่อทดลองการเขียนโปรแกรมอ่านค่าและแสดงผลค่าอุณหภูมิและความชื้นที่ตรวจวัดได้ พร้อมทั้งควบคุมอุปกรณ์ตามเงื่อนไขที่กำหนด และนำค่าไปแสดงผลบนสมาร์ทไฟน

อุปกรณ์ที่ใช้ในการทดลอง
ลำดับ
|
รายการ
|
จำนวน
|
หน่วย
|
ภาพประกอบ
|
1
|
บอร์ดพัฒนาสำเร็จรูปการควบคุมผ่านอินเตอร์เน็ตด้วยชิปเซ็ต ESP8266
|
1
|
ชุด
|

|
2
|
เซ็นเซอร์วัดอุณหภูมิและความซื้น เชื่อมต่อแบบสายสัญญาณเส้นเดียว
|
1
|
ชุด
|

|
3
|
สายไฟสำหรับต่อวงจรแบบปลายตัวผู้-ตัวผู้
|
3
|
เส้น
|

|
4
|
สายไฟสำหรับต่อวงจรแบบปลายตัวเมีย-ตัวผู้
|
3
|
เส้น
|

|
5
|
โมดูลรีเลย์ 5V 2 ช่อง ทนกระแสและแรงดันเอาต์พุตสุงสุด 10A 250V
|
1
|
ชุด
|

|
6
|
สายเชื่อมต่อบอร์ดพัฒนากับพอร์ต Micro USB เพื่อการโปรแกรม
|
1
|
เส้น
|

|
7
|
เบรดบอร์ดสำหรับต่อวงจรขนาด 400 จุด
|
1
|
ชุด
|

|
ขั้นตอนการทดลอง
ต่อวงจรสำหรับการทดลองดังรูป

1.เชื่อมต่อบอร์ดพัฒนา NodeMCU ESP-12E เข้ากับคอมพิวเตอร์ โดยการเสียบสาย USB-A to Micro-B ด้านที่เป็น Micro-B ต่อเข้ากับบอร์ดพัฒนา NodeMCU ESP-12E และเสียบด้านที่เป็น USB-A เข้ากับ Port USB ของคอมพิวเตอร์หรือโน๊ตบุ๊ค
2.เปิดโปรแกรม Arduino IDE ขึ้นมา ท่านอาจจำเป็นต้องติดตั้ง Library ของ DHT11 Humidity & Temperature Sensor โดยการไปที่เมนู Sketch ไปที่ Include Library แล้วเลือก Manage Libraries... แล้วค้นหา Library ตามที่โปรแกรมแจ้งข้อผิดพลาดให้ติดตั้ง
3.ให้ท่านพิมพ์หรือคัดลอก source code ข้างล่างนี้ไปวางไว้ใน Arduino IDE
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include #include #include #include #include #define DHTPIN 12 //GPIO12 Or D6 pin #define DHTTYPE DHT11 DHT_Unified dht(DHTPIN, DHTTYPE); char auth[] = "YourAuthToken"; SimpleTimer timer; void setup() { Serial.begin(115200); Blynk.begin(auth, "YourSSID", "YourPassword"); dht.begin(); // Setup a function to be called every second timer.setInterval(1000L, sendUptime); } void sendUptime() { Blynk.virtualWrite(V5, millis() / 1000); sensors_event_t event; dht.temperature().getEvent(&event); if (!isnan(event.temperature)) { Blynk.virtualWrite(V1, event.temperature); if(event.temperature > 30){ digitalWrite(LED_BUILTIN, LOW); } else { digitalWrite(LED_BUILTIN, HIGH); } } dht.humidity().getEvent(&event); if (!isnan(event.relative_humidity)) { Blynk.virtualWrite(V2, event.relative_humidity); } } void loop() { Blynk.run(); timer.run(); }
|
4.จากนั้นให้ทำการ verify และ upload source code ไปยังบอร์ดพัฒนา NodeMCU ESP-12E
5.กลับมาที่ Application บนสมาร์ทโฟน ท่านสามารถใช้โครงการเดิมในการทดลองที่ 5 มาทำต่อได้ โดยให้ทำการเพิ่ม Widget อีก 2 อันคือ Gauge เข้ามาใน Project จากนั้นทำการตั้งค่า Gauge ทีละอัน โดยอันแรกให้ตั้งชื่อว่า Temperature เลือกสีเกจเป็นสีฟ้า ในช่อง INPUT ให้เลือกเป็น V1 ค่าอยู่ระหว่าง 0 – 100 ส่วน Gauge อันที่สองให้ตั้งชื่อว่า Humidity เลือกสีเกจเป็นสีเทา ในช่อง INPUT ให้เลือกเป็น V2 ค่าอยู่ระหว่าง 0 – 100 เมื่อเสร็จแล้วให้กดปุ่ม Run เพื่อรอรับค่าจากบอร์ดพัฒนาที่ได้อัปโหลดโปรแกรมเรียบร้อยแล้ว ดูค่าที่อ่านได้จากเกจทั้งสอง
ผลการทดลอง
จากการทดลองจะเห็นว่าเมื่อทุกอย่างทำงานอุปกรณ์ตรวจวัดค่าอุณหภูมิและความชื้นวัดค่าได้ส่งมาให้บอร์ดพัฒนา NodeMCU ESP8266 ทำการติดต่อไปยัง Blynk Server เรียบร้อยแล้วก็ทำการส่งค่าผ่านมายัง Server แล้วนำไปแสดงผลบน Application บนสมาร์ทโฟนที่เราได้เตรียมการรับค่าไว้ โดยเงื่อนไขในโปรแกรมที่ตั้งไว้คือถ้าค่าอุณหภูมิสูงเกินกว่าค่าที่กำหนด (30 องคา) ให้สั่งงานให้รีเลย์ทำงาน เพื่อไปควบคุมอุปกรณ์ไฟฟ้าแรงสูงต่ออีกที ซึ่งสามารถนำแนวคิดเหล่านี้ไปประยุกต์ใช้งานได้ตามความต้องการ