หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ Home automation ด้วย Arduino

สร้างระบบ Home automation ที่รองรับ Bluetooth และสั่งการด้วยเสียงด้วยตัวคุณเอง !!

โปรเจกต์ Home automation ด้วย Arduino

รายการอุปกรณ์และเครื่องมือ

1x HC-05 Bluetooth Module
🛒 สั่งซื้อ
1x Female Header 8 Position 1 Row (0.1")
🛒 สั่งซื้อ
1x 4 Channel SPDT relay
🛒 สั่งซื้อ
1x Arduino Wireless Proto Shield
-
1x AC Load
-

รายละเอียดและวิธีทำ

โปรเจกต์นี้คือระบบบ้านอัจฉริยะแบบ IoT ที่คุณสามารถควบคุมไฟผ่าน Bluetooth ได้

วงจร

Arduino

  • เชื่อมต่อ Pins 5V ของ Arduino เข้ากับรางไฟบวกบน Shield
  • เชื่อมต่อ Pins Ground ของ Arduino เข้ากับราง Ground บน Shield

HC-05 Bluetooth module

  • เชื่อมต่อ Pins VCC ของ Bluetooth module เข้ากับรางไฟ
  • เชื่อมต่อ Pins Ground ของ Bluetooth module เข้ากับราง Ground
  • เชื่อมต่อ Pins Transmit [Tx] ของ Module เข้ากับ Pins 3 บน Arduino
  • เชื่อมต่อ Pins Receive [Rx] ของ Module เข้ากับ Pins 2 บน Arduino

หมายเหตุ: ในขณะที่เชื่อมต่อ Pins Tx และ Rx ของ Bluetooth module เข้ากับ Arduino นั้น Pins Tx จะกลายเป็น Pins Rx บน Arduino และในทางกลับกัน ดังนั้นใน Code ตอนที่กำหนดค่า Object BTserial คุณจะต้องระบุลำดับของ Pins Tx และ Rx ตามที่เชื่อมต่อจริงใน Arduino

SoftwareSerial BTserial(3,2); 

Relay module

  • เชื่อมต่อ Pins VCC ของ Relay module เข้ากับรางไฟ
  • เชื่อมต่อ Pins GND ของ Module เข้ากับราง Ground
  • เชื่อมต่อ IN 1 เข้ากับ Pins 11 บน Arduino
  • เชื่อมต่อ IN 2 เข้ากับ Pins 10 บน Arduino
  • เชื่อมต่อ IN 3 เข้ากับ Pins 9 บน Arduino
  • เชื่อมต่อ IN 4 เข้ากับ Pins 8 บน Arduino

Load

  • เชื่อมต่อขั้วหนึ่งของแหล่งจ่ายไฟ AC เข้ากับขั้วหนึ่งของ Load และเชื่อมต่ออีกขั้วของ Load เข้ากับ Pins Common บน Relay
  • เชื่อมต่ออีกขั้วของแหล่งจ่ายไฟ AC เข้ากับ Pins NO (Normally Open) บน Relay

หมายเหตุ: ควรระมัดระวังอย่างมากในขณะที่ทำงานกับแรงดันไฟฟ้า AC แรงดันไฟฟ้า AC สามารถอยู่ในช่วง 110 ถึง 240 โวลต์ ขึ้นอยู่กับแต่ละประเทศ แรงดันไฟฟ้าระดับนี้อันตรายมาก ตรวจสอบให้แน่ใจว่า Relay module ของคุณสามารถรองรับระดับแรงดันไฟฟ้า AC ที่จ่ายเข้ามาได้

หมายเหตุ: Pins Common, Normally Open และ Normally Closed บน Relay module จะอยู่ในรูปแบบของขั้วต่อแบบขันสกรู (Screw terminals) โดย Pins Normally Open จะเป็น Pins ที่อยู่ขวาสุดของแต่ละหน่วย Relay และ Pins Common จะเป็น Pins ที่อยู่ซ้ายสุดของแต่ละหน่วย Relay

Relay module pin diagram

การสร้างแอป

ผมได้ใช้ MIT App inventor 2 ในการสร้างแอปที่สามารถควบคุม LEDs บน Arduino ผ่าน Bluetooth ผมเลือกที่จะสร้างแอปขึ้นมาเองแทนที่จะติดตั้งจาก Play Store ด้วยเหตุผล 2 ประการ:

  • ผมต้องการเพิ่มฟีเจอร์การจดจำเสียง (Speech recognition)
  • ผมต้องการที่จะสามารถกำหนดจำนวน LEDs ที่ต้องการควบคุมได้

การออกแบบ

  • ขั้นแรก ให้เพิ่ม Component ที่ไม่ปรากฏบนหน้าจอ (Non-visible components) ทั้งหมด ได้แก่ Speech recognition, Bluetooth client และ Notifier
  • สร้างการจัดวางแบบตาราง (Table arrangement) 3 แถว และเพิ่ม Label ในแต่ละแถวสำหรับไฟแต่ละดวง
  • ถัดไป ให้เพิ่มการจัดวางแนวนอน (Horizontal arrangement) ข้างๆ แต่ละ Label และลาก Buttons 2 ปุ่มเข้าไปในแต่ละ Horizontal arrangement ซึ่งจะทำหน้าที่เป็นสวิตช์เปิดและปิด
  • สุดท้าย ให้เพิ่มปุ่มสำหรับเปิดใช้งาน Speech recognition เมื่อคลิก

เท่านี้การออกแบบก็เสร็จสมบูรณ์ คราวนี้เรามาเขียน Code กัน

ในส่วน Blocks editor,

  • สร้าง Variable text เพื่อเก็บข้อความจากเสียงพูดของเรา หากมีการคลิกปุ่ม Speech recognition เราจะใช้ Variable นี้ในภายหลังใน Code
  • ถัดไป ให้สร้าง Function เพื่อเชื่อมต่อกับ HC-05 Bluetooth module โดยอัตโนมัติเมื่อหน้าจอถูกเปิดขึ้น (Initialized) หากการเชื่อมต่อสำเร็จ เราจะแสดงข้อความแจ้งเตือน (Alert) ว่าการเชื่อมต่อสำเร็จแล้ว
  • ถัดไป เราจะตรวจสอบว่ามีการคลิกปุ่มใดใน Horizontal component และส่งข้อความที่เหมาะสมไปยัง HC-05 module
  • เนื่องจากเราไม่สามารถถอดรหัส String เต็มๆ ที่รับโดย HC-05 ได้ง่ายนักใน Arduino เราจึงสามารถใช้ตรรกะการเข้ารหัสแบบง่ายๆ ที่แสดงหมายเลขไฟ (Light 1, Light 2... เป็นต้น) และสถานะไฟ (เปิด - 1 หรือ ปิด - 0) ตัวอย่างเช่น "10" จะหมายถึงไฟดวงที่ 1 ปิด และ "21" จะหมายถึงไฟดวงที่ 2 เปิด
Code สำหรับแอป

Code

เริ่มแรก เราเริ่มต้นด้วยการรวม Software serial library ซึ่งจะถูกใช้เพื่อสร้างการสื่อสารระหว่าง HC-05 Bluetooth module และแอป เราจะใช้ Software serial library เพื่อสร้าง Object ที่ชื่อว่า BTserial และระบุ Parameters เป็น Pins บน Arduino ที่ต่อกับ Pins Tx และ Rx ของ HC-05

#include<SoftwareSerial.h>
SoftwareSerial BTserial(3,2); // TX|RX

ถัดไป เราประกาศ Variable ทั้งหมดที่จำเป็นสำหรับโปรแกรม เราจะต้องมี Variable สำหรับเก็บข้อความที่ได้รับจาก HC-05 module และ Variable ที่ระบุ Pins ที่ต่อกับ LEDs

String msg = "";
String v1 = "";
int light_1 = 11;
int light_2 = 10;
int light_3 = 9;
int

ในส่วน void setup เราตั้งค่า Serial monitor และ Virtual Bluetooth serial ที่ Baudrate 9600

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
BTserial.begin(9600);
}

สุดท้าย ในส่วน void loop เราตรวจสอบคำสั่งจาก Bluetooth serial และเปิดปิดไฟตามความเหมาะสม

void loop() {
// put your main code here, to run repeatedly:
if (BTserial.available() > 0){
msg = BTserial.parseInt();
}
if(msg == "11"){
digitalWrite(light_1,LOW);
}
if(msg == "10"){
digitalWrite(light_1,HIGH);
}
if(msg == "21"){
digitalWrite(light_2,LOW);
}
if(msg == "20"){
digitalWrite(light_2,HIGH);
}
if(msg == "31"){
digitalWrite(light_3,LOW);
}
if(msg == "30"){
digitalWrite(light_3,HIGH);
}
if(msg == "41"){
digitalWrite(light_3,LOW);
}
if(msg == "40"){
digitalWrite(light_3,HIGH);
}
Serial.println(v1);
delay(500);
}

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: home-automation-with-arduino-6a9be2
2450 บาท
PromptPay QR Code

ประเมินราคาอัตโนมัติ + Reference Code

อยากได้งานคล้ายโปรเจคนี้ ให้ AI ประเมินราคาก่อน

กรอกข้อมูลให้ครบ ระบบจะสร้างรหัสอ้างอิงและประเมินราคา/ระยะเวลาคร่าว ๆ จากรายละเอียดงาน แล้วให้กด Add LINE พร้อมพิมพ์รหัสนี้เพื่อคุยต่อ

คำถามให้ AI ประเมินแม่นขึ้น

หลังส่งฟอร์ม ระบบจะโชว์ Reference Code ให้ copy แล้วกด Add LINE เพื่อคุยต่อ ข้อมูลส่วนตัวจะไม่ถูกส่งเข้า GA4

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...