How To Make Arduino Based Home Automation Project via Bluetooth?

Hardware ได้แก่
- Arduino UNO
- HC – 05 Bluetooth Module
- Smartphone or tablet (Bluetooth enabled)
Input
- HC – 05 Bluetooth Module
- Smartphone or tablet (Bluetooth enabled)
- Smartphone or tablet (Bluetooth enabled)
Output
- Load
Software
#include <SoftwareSerial.h> หัวเรื่อง
const int rxPin = 4; ตัวแปล txPin เป็น 4
const int txPin = 2; ตัวแปล txPin เป็น 2
SoftwareSerial mySerial(rxPin, txPin); ฟังก์ชั่นของ SoftwareSeria
const int Loads[] = {9, 10, 11, 12};ตัวแปล Load มีค่า เป็น(9,10,11,12)
int state = 0; ตัวแปล start มีค่าเป็น 0
int flag = 0; ตัวแปล flag มีค่าเป็น 0
void setup() เป็นฟังค์ชันค่าเริ่มต้น
{
for (int i=0;i<4;i++) กำหนดตัวแปล i=0,iน้อยกว่า4 เพิ่มทีละ1
{
pinMode(Loads[i], OUTPUT); กำหนดขาLoadsเป็น OUTPUT
}
mySerial.begin(9600); การใช้งานการสื่อสารรับส่งข้อมูลผ่านพอร์ตRS232 ความเร็วรับส่งข้อมูล(9600)ต่อวินาที
for (int i=0;i<4;i++) กำหนดตัวแปล i=0,iน้อยกว่า4 เพิ่มทีละ1
{
digitalWrite(Loads[i], LOW); ส่งค่าลอจิกไปยังขาdigitalให้Loadเป็นLOW
}
}
void loop() ฟังค์ชัน การทำซ้ำวนไปเรื่อยๆ
{
if(mySerial.available() > 0) ถ้าค่าของ mySerial.available()มีค่ามากกว่า0ให้ทำด้านล่าง
{
state = mySerial.read(); อ่านค่าของตัวแปรของstate
flag=0; flagเป็น0
}
switch(state) การจัดการเงื่อนไข โดยเลือกเงื่อนไขใดก็ได้
{
case '0':digitalWrite(Loads[0], HIGH); เงื่อนไขที่0ส่งค่าไปยังขาdigital ให้Loads0 เป็นHIGH
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '1':digitalWrite(Loads[0], LOW); เงื่อนไขที่1ส่งค่าไปยังขาdigital ให้Loads0 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
break; ให้โปรแกรมไม่ต้องทำต่อ
case '3':digitalWrite(Loads[1], LOW); เงื่อนไขที่3ส่งค่าไปยังขาdigital ให้Loads1 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '4':digitalWrite(Loads[2], HIGH); เงื่อนไขที่4ส่งค่าไปยังขาdigital ให้Loads2 เป็นHIGH
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '5':digitalWrite(Loads[2], LOW); เงื่อนไขที่5ส่งค่าไปยังขาdigital ให้Loads2 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '6':digitalWrite(Loads[3], HIGH); เงื่อนไขที่6ส่งค่าไปยังขาdigital ให้Loads3 เป็นHIGH
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '7':digitalWrite(Loads[3], LOW); เงื่อนไขที่7ส่งค่าไปยังขาdigital ให้Loads3 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '8':digitalWrite(Loads[0], LOW); เงื่อนไขที่8ส่งค่าไปยังขาdigital ให้Loads3 เป็นLOW
digitalWrite(Loads[1], LOW); เงื่อนไขที่8ส่งค่าไปยังขาdigital ให้Loads1 เป็นLOW
digitalWrite(Loads[2], LOW); งื่อนไขที่8ส่งค่าไปยังขาdigital ให้Loads2 เป็นLOW
digitalWrite(Loads[3], LOW); เงื่อนไขที่8ส่งค่าไปยังขาdigital ให้Loads3 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
}
}
FlowChart
const int rxPin = 4; ตัวแปล txPin เป็น 4
const int txPin = 2; ตัวแปล txPin เป็น 2
SoftwareSerial mySerial(rxPin, txPin); ฟังก์ชั่นของ SoftwareSeria
const int Loads[] = {9, 10, 11, 12};ตัวแปล Load มีค่า เป็น(9,10,11,12)
int state = 0; ตัวแปล start มีค่าเป็น 0
int flag = 0; ตัวแปล flag มีค่าเป็น 0
void setup() เป็นฟังค์ชันค่าเริ่มต้น
{
for (int i=0;i<4;i++) กำหนดตัวแปล i=0,iน้อยกว่า4 เพิ่มทีละ1
{
pinMode(Loads[i], OUTPUT); กำหนดขาLoadsเป็น OUTPUT
}
mySerial.begin(9600); การใช้งานการสื่อสารรับส่งข้อมูลผ่านพอร์ตRS232 ความเร็วรับส่งข้อมูล(9600)ต่อวินาที
for (int i=0;i<4;i++) กำหนดตัวแปล i=0,iน้อยกว่า4 เพิ่มทีละ1
{
digitalWrite(Loads[i], LOW); ส่งค่าลอจิกไปยังขาdigitalให้Loadเป็นLOW
}
}
void loop() ฟังค์ชัน การทำซ้ำวนไปเรื่อยๆ
{
if(mySerial.available() > 0) ถ้าค่าของ mySerial.available()มีค่ามากกว่า0ให้ทำด้านล่าง
{
state = mySerial.read(); อ่านค่าของตัวแปรของstate
flag=0; flagเป็น0
}
switch(state) การจัดการเงื่อนไข โดยเลือกเงื่อนไขใดก็ได้
{
case '0':digitalWrite(Loads[0], HIGH); เงื่อนไขที่0ส่งค่าไปยังขาdigital ให้Loads0 เป็นHIGH
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '1':digitalWrite(Loads[0], LOW); เงื่อนไขที่1ส่งค่าไปยังขาdigital ให้Loads0 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '2':digitalWrite(Loads[1], HIGH); เงื่อนไขที่2ส่งค่าไปยังขาdigital ให้Loads1 เป็นHIGH
flag=1; flagเป็น1break; ให้โปรแกรมไม่ต้องทำต่อ
case '3':digitalWrite(Loads[1], LOW); เงื่อนไขที่3ส่งค่าไปยังขาdigital ให้Loads1 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '4':digitalWrite(Loads[2], HIGH); เงื่อนไขที่4ส่งค่าไปยังขาdigital ให้Loads2 เป็นHIGH
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '5':digitalWrite(Loads[2], LOW); เงื่อนไขที่5ส่งค่าไปยังขาdigital ให้Loads2 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '6':digitalWrite(Loads[3], HIGH); เงื่อนไขที่6ส่งค่าไปยังขาdigital ให้Loads3 เป็นHIGH
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '7':digitalWrite(Loads[3], LOW); เงื่อนไขที่7ส่งค่าไปยังขาdigital ให้Loads3 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
case '8':digitalWrite(Loads[0], LOW); เงื่อนไขที่8ส่งค่าไปยังขาdigital ให้Loads3 เป็นLOW
digitalWrite(Loads[1], LOW); เงื่อนไขที่8ส่งค่าไปยังขาdigital ให้Loads1 เป็นLOW
digitalWrite(Loads[2], LOW); งื่อนไขที่8ส่งค่าไปยังขาdigital ให้Loads2 เป็นLOW
digitalWrite(Loads[3], LOW); เงื่อนไขที่8ส่งค่าไปยังขาdigital ให้Loads3 เป็นLOW
flag=1; flagเป็น1
break; ให้โปรแกรมไม่ต้องทำต่อ
}
}
FlowChart
