การอธิบายส่วนต่างๆของโปรแกรม
How To Make Arduino Based Home Automation Project via Bluetooth?
Circuit Diagram
Components
The list of components mentioned here are specifically for controlling 4 different loads.
- Arduino UNO =บอร์ดอาดูโน่
- HC – 05 Bluetooth Module =บลูทูธ-โมดูล
- 10 KΩ Resistor =รีซิสเตอร์ ค่า10k โอม
- 20 KΩ Resistor =รีซิสเตอร์ ค่า20k โอม
- 1 KΩ Resistor X 4 =รีซิสเตอร์ ค่า1k โอม 4ตัว
- 2N2222 NPN Transistor X 4 =ทรานซิสเตอร์ 2n2222 4 ตัว
- 1N4007 Diode X 4 =ไดโอด 1n4007 4ตัว
- 12 V Relay X 4 = รีเลย์12v 4ตัว
- Prototyping board (Bread board) = บอร์ดต้นแบบ
- Connecting wires = สายเชื่อมต่อ
- 12 V Power supply = พาเวอร์ซัพพลาย 12v
- Smartphone or tablet (Bluetooth enabled) =สมาร์ทโฟน หรือ แทปเล็ต ที่มีการเปิด ใช้งานบลูทูธได้ 1.Hardware 1.1Arduino 1.2บลูทูธ-โมดูล 1.3สมาร์ทโฟน หรือ แทปเล็ต ที่มีการเปิด ใช้งานบลูทูธได้ Input
- บลูทูธ-โมดูล output
- Load หรือ หลอดไฟ 2.Software อธิบายส่วนต่างๆ #include <SoftwareSerial.h> = ซอฟแวร์
const int rxPin = 4; = กำหนดค่าที่ขา4 const int txPin = 2; = กำหนดค่าที่ขา2 SoftwareSerial mySerial(rxPin, txPin); = ฟังก์ชั่นพิเศษ const int Loads[] = {9, 10, 11, 12}; = กำหนดค่าที่ขา 9/10/11/12 int state = 0; = ข้อมูลตัวแปร int flag = 0; = ข้อมูลตัวแปร void setup() = เป็นฟังก์แรกที่เมื่อ Arduino ทำงานแล้วจะ เรียกเพื่อทำการ Setup ค่าตามจุดประสงค์ของ ฟังก์ชั่น { for (int i=0;i<4;i++) = คำสั่งกำหนดตาม เงื่อนไขที่เรากำหนกไว้ { pinMode(Loads[i], OUTPUT); = สั่งใหดLodeเป็นเอาพุต } mySerial.begin(9600); = ความเร็วในการส่งข้อมูล ให้ทำการๆปเรื่อยๆ for (int i=0;i<4;i++) { digitalWrite(Loads[i], LOW); = สั่งให้ Loads โลว์ } } void loop() = คำว่าลูปคือการทำงาน ซ้ำนั่นเอง { if(mySerial.available() > 0) = (mySerial.available() > 0) ทำให้มีค่ามากกว่า 0 { state = mySerial.read(); = การอ่านข้อมูล flag=0; = ให้ฟังก์ชั่น flag=0; =0 } switch(state) = คือการกำหนด เงื่อนไข { case '0':digitalWrite(Loads[0], HIGH); = สั่งLoads 0 ให้ เป็นHIGH flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด case '1':digitalWrite(Loads[0], LOW); = สั่งLoads 0 ให้ เป็นLow flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด case '2':digitalWrite(Loads[1], HIGH); = สั่งLoads 1 ให้ เป็นHIGH flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด case '3':digitalWrite(Loads[1], LOW); = สั่งLoads 1 ให้ เป็นLow flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด case '4':digitalWrite(Loads[2], HIGH); = สั่งLoads 2 ให้ เป็นHIGH flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด case '5':digitalWrite(Loads[2], LOW); = สั่งLoads 2 ให้ เป็นLow flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด case '6':digitalWrite(Loads[3], HIGH); = สั่งLoads 3 ให้ เป็นHIGH flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด case '7':digitalWrite(Loads[3], LOW); = สั่งLoads 3 ให้ เป็นLow flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด digitalWrite(Loads[1], LOW); = สั่งLoads 1 ให้ เป็นLow digitalWrite(Loads[2], LOW); = สั่งLoads 2 ให้ เป็นLow digitalWrite(Loads[3], LOW); = สั่งLoads 3 ให้ เป็นLow flag=1; = ฟังก์ชั่นตัวแปรงค่า break; = คำสั่งให้หยุด }
} 3.การเขียนโฟชาจผังการเริ่มต้นทำงานจจนจบการทำงาน