สิ่งที่ต้องเตรียม
บอร์ด Arduino Uno (ดาวโหลดโปรแกรม Arduino IDE)
เซ็นเซอร์ DHT11 (เซนเซอร์วัดความชื้นและอุณหภูมิ)
Servo Motor Module
สาย Jumper (ผู้-เมีย 3 เส้น , ผู้-ผู้ 3 เส้น)
วิธีทำ
ต่อวงจร ตามภาพด้านล่างนี้
เปิดโปรแกรม Arduino IDE แล้วคัดลอกโค้ดด้านล่าง เพื่อนำส่งเข้าสู่บอร์ด Arduino
ตรวจสอบ //เงื่อนไขในการควบคุม Servo Motor หรือ อุณหภูมิ ให้ตรงกับกิจกรรมที่กำหนดด้านล่าง
สามารถนำไปประยุกต์ใช้และพัฒนาต่อในชีวิตประจำวันได้หลากหลายมาก เช่น
แนวคิด: ใช้ Servo Motor เพื่อทำหน้าที่เป็น "ตัวเปิด-ปิดช่องระบายอากาศอัตโนมัติ"
การประยุกต์ใช้:
ในโรงเรือนเพาะปลูกขนาดเล็ก: เมื่อ DHT11 ตรวจพบว่าอุณหภูมิในโรงเรือนสูงเกินไป Servo Motor จะหมุนเปิดช่องระบายอากาศเพื่อให้ความร้อนระบายออก
ในห้องเก็บของหรือตู้เสื้อผ้า: เมื่อ DHT11 ตรวจพบว่าความชื้นสูงเกินไป Servo Motor จะเปิดช่องระบายอากาศเพื่อป้องกันเชื้อราและกลิ่นอับ
การต่อยอด: สามารถเพิ่มโมดูล WiFi เพื่อส่งค่าอุณหภูมิและความชื้นไปยังโทรศัพท์มือถือ และควบคุมการเปิด-ปิดช่องระบายอากาศจากระยะไกลได้
แนวคิด: ใช้ Servo Motor ในการล็อกหรือปลดล็อกประตู และใช้ DHT11 ในการตรวจสอบสภาพแวดล้อม
การประยุกต์ใช้:
ประตูโรงเก็บของที่มีความเสี่ยง: หาก DHT11 ตรวจพบว่ามีอุณหภูมิสูงผิดปกติ (อาจเกิดจากไฟไหม้) หรือความชื้นสูง (น้ำท่วม) ระบบจะสั่งให้ Servo Motor หมุนเพื่อปลดล็อกประตูอัตโนมัติ และส่งสัญญาณเตือนไปยังผู้ดูแล
การต่อยอด: สามารถเพิ่มโมดูลบลูทูธเพื่อควบคุมการล็อก-ปลดล็อกประตูจากโทรศัพท์มือถือในระยะใกล้
แนวคิด: ใช้ Servo Motor ในการควบคุมกลไกการป้อนหรือหยอดอาหาร โดยมีเงื่อนไขจากเซ็นเซอร์ DHT11
การประยุกต์ใช้:
เครื่องให้อาหารสัตว์เลี้ยงอัตโนมัติ: ในบางกรณีที่อาหารแห้งต้องเก็บในอุณหภูมิที่เหมาะสม หาก DHT11 ตรวจพบว่าอุณหภูมิสูงเกินไป ระบบจะส่งเสียงแจ้งเตือนและหยุดการทำงานเพื่อป้องกันอาหารเสีย
เครื่องหยอดน้ำยาในห้องปฏิบัติการ: หาก DHT11 ตรวจพบว่าสภาพแวดล้อม (อุณหภูมิและความชื้น) ไม่เหมาะสมกับการทดลอง ระบบจะสั่งหยุดการทำงานของ Servo Motor เพื่อป้องกันผลลัพธ์ผิดพลาด
การนำไปประยุกต์ใช้ในชีวิตประจำวันขึ้นอยู่กับความคิดสร้างสรรค์ของนักเรียน การเรียนรู้การควบคุมอุปกรณ์แบบพื้นฐานนี้จะช่วยให้นักเรียนสามารถสร้างระบบที่ซับซ้อนขึ้นได้ในอนาคต
#include "DHT.h"
#include <Servo.h>
// กำหนดการเชื่อมต่อสำหรับเซ็นเซอร์ DHT11
#define DHTPIN 2 // ขา Digital ที่ต่อกับเซ็นเซอร์
#define DHTTYPE DHT11 // ชนิดของเซ็นเซอร์ DHT
// กำหนดการเชื่อมต่อสำหรับ Servo Motor
#define SERVO_PIN 9 // ขา Digital ที่ต่อกับสัญญาณ Servo
// กำหนดค่าตำแหน่งของ Servo Motor
#define OPEN_POSITION 90 // ตำแหน่งเปิด (ในองศา)
#define CLOSE_POSITION 0 // ตำแหน่งปิด (ในองศา)
// สร้าง Object สำหรับควบคุมเซ็นเซอร์และ Servo
DHT dht(DHTPIN, DHTTYPE);
Servo myservo;
void setup() {
Serial.begin(9600); // เริ่มต้น Serial Monitor สำหรับดูค่า
Serial.println("DHT11 and Servo Motor Automatic Control");
dht.begin(); // เริ่มต้นการทำงานของเซ็นเซอร์ DHT
myservo.attach(SERVO_PIN); // เชื่อมต่อ Servo กับขาที่กำหนด
myservo.write(CLOSE_POSITION); // สั่งให้ Servo อยู่ในตำแหน่งปิด
delay(1000);
}
void loop() {
// อ่านค่าจากเซ็นเซอร์ DHT11 ทุก 2 วินาที
delay(2000);
float temperature = dht.readTemperature();
// ตรวจสอบว่าอ่านค่าได้หรือไม่
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Current Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
// เงื่อนไขในการควบคุม Servo Motor
if (temperature > 30) {
// ถ้าอุณหภูมิสูงกว่า 30 องศา ให้ Servo หมุนไปที่ตำแหน่งเปิด
myservo.write(OPEN_POSITION);
Serial.println("Temperature is HIGH, Servo is OPEN.");
} else if (temperature < 28) {
// ถ้าอุณหภูมิลดลงต่ำกว่า 28 องศา ให้ Servo หมุนกลับไปที่ตำแหน่งปิด
myservo.write(CLOSE_POSITION);
Serial.println("Temperature is LOW, Servo is CLOSED.");
}
}
#include "DHT.h" / <Servo.h>: เรียกใช้ไลบรารีที่จำเป็น
#define DHTPIN 2: กำหนดขาที่ต่อ DHT11
myservo.attach(SERVO_PIN): เป็นคำสั่งสำคัญที่บอก Arduino ว่า Servo Motor ถูกต่ออยู่ที่ขา Digital Pin 9
setup(): เมื่อโปรแกรมเริ่มต้น จะสั่งให้ Servo หมุนไปที่ตำแหน่ง CLOSE_POSITION (0 องศา) เพื่อให้แน่ใจว่าอยู่ในสถานะปิด
loop():
อ่านค่าอุณหภูมิจาก DHT11 ทุก 2 วินาที
ใช้คำสั่ง if และ else if เพื่อตั้งเงื่อนไข
ถ้า temperature > 30 -> สั่งให้ myservo.write(OPEN_POSITION) (หมุนไปที่ 90 องศา)
ถ้า temperature < 28 -> สั่งให้ myservo.write(CLOSE_POSITION) (หมุนกลับมาที่ 0 องศา)
นักเรียนสามารถแก้ไขค่า OPEN_POSITION, CLOSE_POSITION และอุณหภูมิในเงื่อนไขได้ตามต้องการ
ลองทดสอบโค้ดแล้วดูผลใน Serial Monitor
สนใจสั่งซื้อ
1.บอร์ด Arduino Uno https://s.shopee.co.th/AA70eKn5JR
2.เซ็นเซอร์ DHT11 (เซนเซอร์วัดความชื้นและอุณหภูมิ) https://s.shopee.co.th/4L9DhG8U9w
3.Servo Motor Module https://s.shopee.co.th/7V6FTeZQs0
4.สาย Jumper ผู้-เมีย 3 เส้น https://s.shopee.co.th/8fICs89zq1
5.สาย Jumper ผู้-ผู้ 3 เส้น https://s.shopee.co.th/8fICs89zq1