Arduino Based Home Automation Project via Bluetooth
1. Hardware
1.1 Arduino UNO R3 // เป็นบอร์ดประะมวลผล ( MCP )
1.2 HC – 05 Bluetooth Module // เป็นบอร์ดโมดูล Bluetooth ( INPUT )
1.3 Arduino Relay Module 5V 4 Channel High Trigger 250V/10A // เป็นโมดู รีเลย์ ( OUTPUT)
1.4 สมาร์ทโฟนหรือแท็บเล็ต (เปิดใช้งาน Bluetooth) // ( INPUT )
2. Software
#include <SoftwareSerial.h> // การอ้างอิงชุดคำสั่งจากแหล่งอื่น
const int rxPin = 4; // ตัวแปลค่าคงที่ กำหนดขา tx=4
const int txPin = 2; // ตัวแปลค่าคงที่ กำหนดขา rx=2
SoftwareSerial mySerial(rxPin, txPin);
const int Loads[] = {9, 10,
11, 12}; // ตัวแปลค่าคงที่ กำหนดขา Loads=9,10,11,12
int state = 0; // กำหนดค่า state = 0
int flag = 0; // กำหนดค่า flag = 0
void setup()
{
for (int i=0;i<4;i++) //
{
pinMode(Loads[i], OUTPUT); // กำหนดขาLoads[i] ให้เป็น OUTPUT
}
mySerial.begin(9600);
for (int i=0;i<4;i++)
{
digitalWrite(Loads[i],
LOW); // กำหนดขาLoads[i] ให้เป็น LOW
}
}
void loop()
{
if(mySerial.available() > 0)
{
state =
mySerial.read(); // อ่านค่าจาก state
flag=0; // กำหนด flag = 0
flag=0; // กำหนด flag = 0
}
switch(state) // คำสั่งสำหรับการสร้างเงื่อนไขแบบทำหลายทิศทาง
{
case '0':digitalWrite(Loads[0],
HIGH); // เงื่อนไข 0 สถานะลอจิก Loads[0] เป็น HIGH
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชอง loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
case '1':digitalWrite(Loads[0],
LOW); // เงื่อนไข 1 สถานะลอจิก Loads[0] เป็น LOW
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชอง loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
case '2':digitalWrite(Loads[1],
HIGH); // เงื่อนไข 2 สถานะลอจิก Loads[1] เป็น HIGH
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชอง loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
case '3':digitalWrite(Loads[1],
LOW); // เงื่อนไข 3 สถานะลอจิก Loads[1] เป็น LOW
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชอง loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
case '4':digitalWrite(Loads[2],
HIGH); // เงื่อนไข 4 สถานะลอจิก Loads[2] เป็น HIGH
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชอง loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
case '5':digitalWrite(Loads[2],
LOW); // เงื่อนไข 5 สถานะลอจิก Loads[2] เป็น LOW
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชองร loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
case '6':digitalWrite(Loads[3],
HIGH); // เงื่อนไข 6 สถานะลอจิก Loads[3] เป็น HIGH
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชอง loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
case '7':digitalWrite(Loads[3],
LOW); // เงื่อนไข 7 สถานะลอจิก Loads[3] เป็น LOW
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชอง loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
case '8':digitalWrite(Loads[0],
LOW); // เงื่อนไข 8 สถานะลอจิก Loads[0] เป็น HIGH
digitalWrite(Loads[1], LOW); // เงื่อนไข 8 สถานะลอจิก Loads[1] เป็น HIGH
digitalWrite(Loads[2], LOW); // เงื่อนไข 8 สถานะลอจิก Loads[2] เป็น HIGH
digitalWrite(Loads[3], LOW); // เงื่อนไข 8 สถานะลอจิก Loads[3] เป็น HIGH
flag=1; // กำหนดให้ flag มีค่า = 1
break; // จบการทำงานชองร loop นี้ โดยไม่ทำคำสั่งอื่นต่อ
}