Arduino Based Home Automation Project via Bluetooth
Hardware ประกอบไปด้วย
1. Arduino uno r3
2. Module Relay
3. HC – 05 Bluetooth Module
4. Load
5. สมาร์ทโฟน
5. สมาร์ทโฟน
Input
1. HC – 05 Bluetooth Module
2. สมาร์ทโฟน
Output
1.Module Relay
2.Load
Software
#include <SoftwareSerial.h> // การอ่านไฟล์จากไดเร็กทอรี หรือโฟลเดอร์ที่กำหนดไว้
const int rxPin = 4; // ประกาศตัวแปร ชื่อ rxPin มีค่าเท่ากับ 4
const int txPin = 2; // ประกาศตัวแปร ชื่อ txPin มีค่าเท่ากับ 2
SoftwareSerial mySerial(rxPin, txPin); //ฟังก์ชั่นของ SoftwareSerial กำหนดพอร์ต 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++) // กำหนดตัวแปร i เท่ากับ 0 i น้อยกว่า 4 i เพิ่มขึ้นที่ละ1
{
pinMode(Loads[i], OUTPUT); // ตั้งค่าขา Loadsให้เป็นเอาต์พุต
}
mySerial.begin(9600); //ประกาศการใช้งานการสื่อสารรับส่งข้อมูลผ่าน พอร์ตRS232
//ค่าเริ่มต้นเพื่อติดต่อสื่อสารกับคอมพิวเตอร์อัตราเร็ว9600บิตต่อวินาที
//ค่าเริ่มต้นเพื่อติดต่อสื่อสารกับคอมพิวเตอร์อัตราเร็ว9600บิตต่อวินาที
for (int i=0;i<4;i++) // กำหนดตัวแปร i เท่ากับ 0 i น้อยกว่า 4 i เพิ่มขึ้นที่ละ1
{
}
}void loop() // ฟังก์ชั่นใช้ในการเขียนโค้ดโปรแกรมการทำงานของArduinoเป็นฟังก์ชั่นการวนลูปไปเรื่อยๆ
{
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 โดยให้ Loads
0เป็น HIGH, 1
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
case '1':digitalWrite(Loads[0], LOW); // เงื่อนไขที่1 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads0
เป็น LOW, 0
flag=1; // ให้ flag ค่าเป็น 1
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
case '2':digitalWrite(Loads[1], HIGH); // เงื่อนไขที่2 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads1
เป็น HIGH, 1
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
case '3':digitalWrite(Loads[1], LOW); // เงื่อนไขที่3 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads1
เป็น LOW, 0
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
case '4':digitalWrite(Loads[2], HIGH); // เงื่อนไขที่4 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads 2
เป็น HIGH, 1
เป็น HIGH, 1
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
case '5':digitalWrite(Loads[2], LOW); // เงื่อนไขที่5 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads 2
เป็น LOW, 0
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
case '6':digitalWrite(Loads[3], HIGH); // เงื่อนไขที่6 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads 3
เป็น HIGH, 1
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
case '7':digitalWrite(Loads[3], LOW); // เงื่อนไขที่7 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads 3
เป็น LOW, 0
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
case '8':digitalWrite(Loads[0], LOW); // เงื่อนไขที่8 ส่งค่าลอจิก ไปยังขา digital โดยให้ Loads
digitalWrite(Loads[1], LOW); 0,1,2,3 เป็น LOW, 0
digitalWrite(Loads[2], LOW);
digitalWrite(Loads[3], LOW);
flag=1; // ให้ flag ค่าเป็น 1
break; //สั่งที่ให้โปรแกรมออกจาก loop ทันที โดยไม่ทำคำสั่งที่เหลือต่อ
}
}