Home Automation ใช้ Arduino กับ Bluetooth Module
ในบทความนี้ พี่จะพาน้องไปทำ Home Automation ง่ายๆ ด้วย Arduino, Relay และ Bluetooth Module เพื่อควบคุมเครื่องใช้ไฟฟ้าด้วยมือถือ Android กัน ไปจัดกันเลยวัยรุ่น!
มุมมองของโปรเจคนี้
โปรเจคนี้คือพื้นฐานเจ๋งๆ และเป็นสะพานแห่ง "การโต้ตอบกับบ้านอัจฉริยะ" สำหรับนักพัฒนาอิเล็กทรอนิกส์ยุคใหม่เลยนะตัวเธอ โดยเราจะโฟกัสไปที่แกนหลัก—นั่นคือ การจับคู่สัญญาณ Bluetooth กับสถานะของรีเลย์ และ ตรรกะการส่งข้อมูลแบบอนุกรมและการควบคุมรีเลย์ที่ประสานกัน—น้องจะได้เรียนรู้วิธีเริ่มต้นและสร้างเซสชั่นสมาร์ทโฮมแรกของตัวเองด้วยลอจิกซอฟต์แวร์เฉพาะทางและการตั้งค่าพื้นฐานที่มั่นคง
โครงสร้างพื้นฐานฮาร์ดแวร์สำหรับสมาร์ทโฮม
ส่วนประกอบที่ต้องใช้ (ลิงค์ซื้อพี่แปะไว้ให้แล้ว ตามไปดูได้)
- Arduino Uno
- "สมอง" ของโปรเจคนี้เลยครับ หน้าที่คือจัดการการอ่านค่าอนุกรมหลายทิศทาง และประสานงานระหว่าง Bluetooth กับรีเลย์ให้ทำงานพร้อมกัน
- Relay Module
- โมดูลรีเลย์ 4 ช่อง ตัวนี้จะทำหน้าที่เป็นอินเทอร์เฟซทางกายภาพที่ความจุสูงและน่าเชื่อถือ สำหรับควบคุมเครื่องใช้ไฟฟ้าในบ้านน้องนั่นเอง
- Bluetooth Module
- โมดูล HC-05 ตัวนี้คือเลเยอร์ระบุตัวตนหลักเลยนะฮะ ทำหน้าที่เป็น "ลิงก์ทริกเกอร์" ที่ชัดเจนและเสถียร เพื่อการสื่อสารไร้สายที่ลื่นไหล
- สายจัมเปอร์ (Jumper Wires)
- สำคัญมากสำหรับการเชื่อมต่อทุกส่วนในวงจรต้นแบบให้ชัดเจนและมีประสิทธิภาพ ห้ามขาดนะตัวนี้
- เบรดบอร์ด (Breadboard): สำคัญมากสำหรับการเชื่อมต่อทุกส่วนในวงจรต้นแบบให้ชัดเจนและมีประสิทธิภาพ (อีกแล้ว แต่มันจำเป็นจริงๆ!)
- สมาร์ทโฟน: สำคัญมากสำหรับการเป็นเส้นทางส่งสัญญาณดิจิทัลที่ชัดเจนและมีประสิทธิภาพ สำหรับการรับรู้ข้อมูลและการควบคุมจากระยะไกลทั้งหมด
- สาย Micro-USB: ใช้สำหรับโปรแกรม Arduino ของเรา และเป็นอินเทอร์เฟซหลักสำหรับตัวควบคุมระบบ
สู้งานนะน้อง!
ลงมือทำจริง: ตรรกะของ Serial Bluetooth และรีเลย์
โปรเจคนี้จะเผยให้เห็นเลเยอร์ลับๆ หลังงานง่ายๆ จากการเซ็นเซอร์ไปสู่การควบคุมระยะไกล:
- เลเยอร์ระบุตัวตน: โมดูลบลูทูธ HC-05 ทำหน้าที่เป็นเลเยอร์ระบุตัวตนหลัก คอยเฝ้าดูคำสั่ง serial ทุกคำสั่งที่เข้ามาอย่างแม่นยำเพื่อประสานงานการสั่งการระบบ
- เลเยอร์แปลงสัญญาณ: ระบบใช้โปรโตคอลดิจิทัลความเร็วสูง (Serial) ในการรับสถานะบิตและประสานงานงานเซ็นเซอร์ที่สำคัญ
- เลเยอร์อินเตอร์เฟซกำลัง: โมดูลรีเลย์ 4 ช่อง ให้ฟีดแบ็กทั้งภาพและกลไกสำหรับการตรวจสอบสถานะอุปกรณ์ของคุณ (เช่น เปิด/ปิดไฟ)
- เลเยอร์ประตูสู่การควบคุม: แอปสมาร์ทโฟน ให้การควบคุมด้วยมือและการตรวจสอบสถานะอัตโนมัติระหว่างการตั้งค่าเริ่มต้น เพื่อประสานสถานะให้ลงตัว
- ตรรกะการประมวลผล: โค้ด Arduino ใช้กลยุทธ์ "serial command dispatch" (หรือเรียกง่ายๆ ว่าแผนส่งคำสั่งกลับบ้าน): มันตีความตัวอักษรจากบลูทูธแล้วจับคู่กับสถานะของรีเลย์ เพื่อควบคุมอุปกรณ์ไฟฟ้าให้ปลอดภัยและเสถียร
- ลูปการสื่อสาร: บิตสถานะจะถูกส่งไปที่ Serial Monitor อย่างต่อเนื่องระหว่างการตั้งค่าเริ่มต้น เพื่อประสานสถานะให้เรียบร้อย
ออโตเมชันและขั้นตอนการทำงานของศูนย์กลางควบคุม
กระบวนการควบคุมระยะไกลแบบขับเคลื่อนด้วยตำแหน่งนี้ ออกแบบมาให้ใช้ง่ายมากๆ:
- เตรียมพื้นที่ทำงาน: วางโมดูลบลูทูธของคุณบนเบรดบอร์ดให้ถูกต้อง และต่อเข้ากับขา serial ของ Arduino ให้ถูกต้อง
- ตั้งค่าซิงค์ความเร็วสูง: ในสเก็ตช์ Arduino ให้เริ่มต้น
Serial.begin(9600)และกำหนดขารีเลย์ในsetup() - ลูปสนทนาภายใน: ระบบจะทำการตรวจสอบข้อมูลเป็นระยะๆ ด้วยประสิทธิภาพสูง และอัพเดทสถานะอุปกรณ์แบบเรียลไทม์ตามตำแหน่งและการตั้งค่าของคุณ
- ผสานรวมฟีดแบ็กภาพและข้อมูล: ดูแอปในมือถือของคุณเปลี่ยนเป็นสัญญาณแสดงสถานะไดนามิก ที่เต้นเป็นจังหวะและตามการตั้งค่าตำแหน่งของคุณจากทุกมุมห้อง
โค้ด Arduino
/*Subscribe to KMTECH For More arduino related videos
Relay IN1 connected to PinOut 4 Arduino
Relay IN2 connected to PinOut 5 Arduino
Relay IN3 connected to PinOut 6 Arduino
Relay IN4 connected to PinOut 7 Arduino
--->you can connected to relay modul 4 channel
Serial data sending from Arduino Bluetooth Relay 4CH.apk
data '1'-'4' to on is Ralay CH 1-4
data 'A'-'D' to off is Ralay CH 1-4
data '9' to on ALL CH 1-4
data 'I' to off ALL CH 1-4
*/
int relay1=4;
int relay2=5;
int relay3=6;
int relay4=7;
char val;
void setup() {
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(relay3,OUTPUT);
pinMode(relay4,OUTPUT);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
digitalWrite(relay3,HIGH);
digitalWrite(relay4,HIGH);
Serial.begin(9600);
}
void loop() {
//check data serial from bluetooth android App
while (Serial.available() > 0){
val = Serial.read();
Serial.println(val);
}
//Relay is on
if( val == '1' ) {
digitalWrite(relay1,HIGH);
}else if( val == '2' ) {
digitalWrite(relay2,HIGH);
}else if( val == '3' ) {
digitalWrite(relay3,HIGH);
}else if( val == '4' ) {
digitalWrite(relay4,HIGH);
}
//relay all on
else if( val == '9' ) {
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
digitalWrite(relay3,HIGH);
digitalWrite(relay4,HIGH);
}
//relay is off
else if( val == 'A' ) {
digitalWrite(relay1,LOW);
}else if( val == 'B' ) {
digitalWrite(relay2,LOW);
}else if( val == 'C' ) {
digitalWrite(relay3,LOW);
}else if( val == 'D' ) {
digitalWrite(relay4,LOW);
}
//relay all off
else if( val == 'I' ) {
digitalWrite(relay1,LOW);
digitalWrite(relay2,LOW);
digitalWrite(relay3,LOW);
digitalWrite(relay4,LOW);
}
}
ไดอะแกรมวงจร
อยากเห็นวิธีทำเต็มๆ และโค้ดทั้งหมดเหรอ? ไปหาดูในเว็บสอนทำโปรเจค Arduino ดีๆ ได้เลยน้อง! สู้งานนะ
ไอเดียต่อยอดในอนาคต
- เพิ่ม OLED Dashboard: เอา OLED ขนาดเล็กมาติดแสดงสถานะ เช่น "มีอุปกรณ์ทำงานกี่ตัว" หรือ "แบตเหลือกี่เปอร์เซ็นต์" ดูโปรหน่อย!
- ซิงค์เซ็นเซอร์หลายตัวผ่าน Bluetooth: ต่อบลูทูธทรัคเกอร์พิเศษ เพื่อทำการส่งสัญญาณแบบ "Local Paging" แม่นยำสูงผ่านคลาวด์ได้เลย
- ทำ Dashboard บนคลาวด์: สร้างเว็บแดชบอร์ดบนมือถือที่เชื่อมผ่าน WiFi/BT เพื่อติดตามและบันทึกประวัติการทำงานของอุปกรณ์ทั้งหมดแบบเป๊ะๆ
- เพิ่ม Machine Learning เข้าไป: ใส่ "Machine Learning (vCore)" พิเศษลงในโค้ด เพื่อให้ระบบปรับเปลี่ยนการทำงานอัตโนมัติตามความสูงของผู้ใช้! (มุกนี้แรงไปป่าว 555)
โปรเจค Home Automation นี่แหละตัวดี! เหมาะสุดๆ สำหรับวัยรุ่นสายวิทย์-คณิต หรือใครก็ตามที่อยากได้เครื่องมืออัจฉริยะมาควบคุมบ้านให้ตื่นเต้นกว่าเดิม
[!IMPORTANT] รีเลย์โมดูล ตัวนี้ต้องจับคู่ แรงดันและโหลดให้แม่นยำ (เช่น 110V/220V AC) ตอนเซ็ตอัพนะน้อง ไม่งั้นไฟอาร์คเล่นงานแน่! และที่สำคัญ ต้องมี รูทีน Fail-Safe ในลูปเสมอ เผื่อบัส serial โอเวอร์โหลดจะได้ไม่พัง! ห้ามช็อตนะตัวนี้