บลูทู ธ ระบบอัตโนมัติภายในบ้านควบคุมโดยใช้ 8051
ที่ฝัง
ลองนึกภาพว่าคุณสามารถควบคุมเครื่องใช้ไฟฟ้าในบ้านของคุณได้จากทุกที่ภายในบ้านเพียงแค่ใช้สมาร์ทโฟนของคุณ ในโครงการนี้เราจะใช้แบบไร้สายบลูทู ธ ในการควบคุมเครื่องใช้ในบ้านอิเล็กทรอนิกส์ผ่านโทรศัพท์มือถือ บลูทู ธ มีช่วงของ 10-15 เมตรเพื่อให้คุณสามารถเปิดและปิดเครื่องใช้ไฟฟ้าใด ๆ ภายในช่วง เรายังพัฒนารถของเล่นควบคุมด้วยโทรศัพท์ Androidโดยใช้โมดูลบลูทู ธ และ Arduino
ที่นี่เราได้ใช้ไมโครคอนโทรลเลอร์ 8051 กับโมดูลบลูทู ธ เพื่อรับข้อมูลแบบไร้สายที่ส่งจากโทรศัพท์ Android เพื่อให้ไมโครคอนโทรลเลอร์สามารถเปิดและปิดเครื่องใช้ในบ้านได้ [ตรวจสอบโครงการที่ใช้ไมโครคอนโทรลเลอร์มากกว่า8051 ]
องค์ประกอบหลัก
- 8051 ไมโครคอนโทรลเลอร์
- โมดูลบลูทู ธ HC05
- ถ่ายทอด
- ULN2003
- กระเปาะ
- เจ้าของ
- ลวด
- IC 7805
- โทรศัพท์ Android
- แอพควบคุมบลูทู ธ แอพ Android
- ตัวเก็บประจุ 10 ยูเอฟ
- ตัวเก็บประจุ 1000 ยูเอฟ
- ตัวต้านทาน 10K
- ตัวต้านทาน 1k
- พาวเวอร์ซัพพลาย
โมดูลบลูทู ธ :
โมดูลบลูทู ธ HC-05 ประกอบด้วยสองสิ่งหนึ่งคือโมดูลบลูทู ธ แบบอนุกรมและอะแดปเตอร์บลูทู ธ โมดูลอนุกรม Bluetooth ใช้สำหรับแปลงพอร์ตอนุกรมเป็น Bluetooth
วิธีการใช้งานโมดูลบลูทู ธ
คุณสามารถใช้โมดูลบลูทู ธ ได้โดยตรงหลังจากซื้อจากตลาดเพราะไม่จำเป็นต้องเปลี่ยนการตั้งค่าของโมดูลบลูทู ธ อัตรารับส่งข้อมูลเริ่มต้นของโมดูล Bluetooth ใหม่คือ 9600 bps คุณเพียงแค่ต้องเชื่อมต่อ rx และ tx กับคอนโทรลเลอร์หรือซีเรียลคอนเวอร์เตอร์และจ่ายไฟ 5 โวลต์ dc ให้กับโมดูล
โมดูลบลูทู ธ มีสองโหมดหนึ่งคือโหมดหลักและที่สองคือโหมดทาส ผู้ใช้สามารถตั้งค่าโหมดใดโหมดหนึ่งโดยใช้คำสั่ง AT บางคำสั่ง แม้ผู้ใช้สามารถตั้งค่าการตั้งค่าของโมดูลโดยใช้คำสั่ง AT นี่คือคำสั่งที่ใช้บางคำสั่ง:
ก่อนอื่นผู้ใช้จำเป็นต้องเข้าสู่โหมด AT ด้วยอัตราการรับส่งข้อมูล 38400 bps โดยการกดปุ่ม EN ที่โมดูลบลูทู ธ หรือโดยการให้ระดับสูงที่ขา EN หมายเหตุ: คำสั่งทั้งหมดควรลงท้ายด้วย \ r \ n (0x0d และ 0x0a) หรือ ENTER KEY จากแป้นพิมพ์
หลังจากนั้นถ้าคุณส่ง AT ไปยังโมดูลจากนั้นโมดูลจะตอบสนองด้วยตกลง
AT →คำสั่งทดสอบ
AT + ROLE = 0 →เลือกโหมด Slave
AT + ROLE = 1 →เลือกโหมดมาสเตอร์
AT + NAME = xyz →ตั้งชื่อบลูทู ธ
AT + PSWD = xyz →ตั้งรหัสผ่าน
AT + UART = <value1>, <value2>, <value3> →กำหนดอัตรารับส่งข้อมูล
เช่น. ที่ + UART = 9600,0,0
Pin คำอธิบายของ accelerometer:
- รัฐ→เปิด
- Rx →ขารับสัญญาณอนุกรม
- Tx →ขาส่งสัญญาณอนุกรม
- GND →กราวด์
- Vcc → + 5volt dc
- EN →เพื่อเข้าสู่โหมด AT
คำอธิบายการทำงาน:
ในโครงการนี้เราได้ใช้ ไมโครคอนโทรลเลอร์ 8051 เพื่อควบคุมกระบวนการทั้งหมดของโครงการนี้ และโมดูลบลูทู ธ ใช้สำหรับควบคุมเครื่องใช้ภายในบ้านแบบไร้สาย เครื่องใช้ในบ้านจะเปิดและปิดเมื่อผู้ใช้จะแตะปุ่มในแอพมือถือบลูทู ธ ในโทรศัพท์มือถือ Android ในการเรียกใช้โครงการนี้ก่อนอื่นเราต้องดาวน์โหลดแอปบลูทู ธ จาก Google Play store เราสามารถใช้แอพ Bluetooth ใดก็ได้ที่สามารถส่งข้อมูลโดยใช้ Bluetooth นี่คือชื่อแอพที่สามารถใช้ได้:
- Bluetooth Spp pro
- ตัวควบคุมบลูทู ธ
หลังจากติดตั้งแอพคุณจะต้องเปิดและค้นหาอุปกรณ์บลูทู ธ แล้วเลือกอุปกรณ์บลูทู ธ HC-05 แล้วกำหนดค่าปุ่มต่างๆ
ที่นี่ในโครงการนี้เราได้ใช้บลูทู ธ แอปควบคุม
- ดาวน์โหลดและติดตั้งตัวควบคุมบลูทู ธ
- เปิดบลูทู ธ มือถือ
- ตอนนี้เปิดแอพควบคุมบลูทู ธ
- กดสแกน
- เลือกอุปกรณ์บลูทู ธ ที่ต้องการ (โมดูลบลูทู ธ HC-05)
- ตอนนี้ตั้งค่าปุ่มโดยการกดปุ่มตั้งค่าบนหน้าจอ
ในการตั้งค่าปุ่มเราจำเป็นต้องกดปุ่ม 'ตั้งค่า' และตั้งค่าคีย์ตามภาพที่ระบุด้านล่าง:
หลังจากการตั้งค่าปุ่มกดตกลง
คุณสามารถเห็นในภาพด้านบนว่ามีปุ่ม 9 ปุ่มที่แถวแรกใช้สำหรับควบคุมพัดลม, ปุ่มที่สองใช้สำหรับควบคุมแสงและปุ่มสุดท้ายใช้สำหรับควบคุมทีวี หมายถึงปุ่มเปิดและปิดของแถวที่หนึ่งใช้สำหรับเปิดและปิดพัดลมปุ่มของแถวที่สองใช้สำหรับแสงและปุ่มที่สามใช้สำหรับทีวี เราใช้หลอดไฟสามสีที่แตกต่างกันแทนทีวีและพัดลมเพื่อการสาธิต
ตอนนี้เมื่อเราแตะปุ่มใด ๆ ในแอพควบคุมบลูทู ธ โทรศัพท์ Android จะส่งค่าไปยังโมดูลบลูทู ธ หลังจากได้รับค่านี้โมดูลบลูทู ธ จะส่งค่าที่ได้รับไปยังไมโครคอนโทรลเลอร์แล้วไมโครคอนโทรลเลอร์อ่านและเปรียบเทียบกับค่าที่กำหนดไว้ล่วงหน้า หากการแข่งขันใด ๆ เกิดขึ้นไมโครคอนโทรลเลอร์จะทำการดำเนินการที่เกี่ยวข้อง การทำงานเดียวกันจะดำเนินการทุกครั้งเมื่อกดปุ่ม
ตอนนี้เมื่อสัมผัสของผู้ใช้พัดลม On 'ปุ่มใน app ควบคุมบลูทู ธ แล้วไมโครคอนโทรลเลอร์ได้รับ '1' ผ่านโมดูลบลูทู ธ และจากนั้นควบคุมสวิทช์ 'ใน' แฟนโดยใช้โปรแกรมควบคุมการถ่ายทอดและการถ่ายทอด และเมื่อผู้ใช้กดปุ่ม 'ปิดพัดลม' ในแอพควบคุมบลูทู ธ ไมโครคอนโทรลเลอร์จะได้รับ '2' ผ่านโมดูลบลูทู ธ แล้วควบคุมสวิตช์ 'ปิด' พัดลมโดยใช้ไดรเวอร์รีเลย์และรีเลย์
หมายเลข 3,4,5,6 จะถูกส่งโดยโทรศัพท์ Android เมื่อเปิดไฟ, ปิดไฟ, เปิดทีวี, ปิด TV TV ตามลำดับ:
ปุ่ม
|
ข้อมูล
|
การทำงาน
|
เปิดพัดลม
|
1
|
เปิดพัดลม
|
ปิดพัดลม
|
2
|
ปิดพัดลม
|
เปิดไฟ
|
3
|
แสงเปิด
|
ปิดไฟ
|
4
|
แสงปิด
|
เปิดทีวี
|
5
|
ทีวีเปิด
|
ปิดทีวี
|
6
|
ทีวีปิด
|
แผนภาพวงจรและคำอธิบาย
การเชื่อมต่อวงจรของโครงการนี้ง่ายมาก หมุด Rx และ Tx ของโมดูล Bluetooth เชื่อมต่อโดยตรงกับหมุด Tx และ Rx ของไมโครคอนโทรลเลอร์ รีเลย์ 5 โวลต์สามตัวใช้เป็นสวิตช์สำหรับเปิดและปิดเครื่องใช้ในบ้านที่ใช้ไฟ AC และไดร์เวอร์รีเลย์ ULN2003 ใช้สำหรับขับรีเลย์ พัดลม, แสงและทีวีเชื่อมต่อที่ P2.1, P2.2 และ P2.3 ผ่านรีเลย์และตัวขับรีเลย์ วงจรออสซิลเลเตอร์คริสตัล 11.0592 MHz นี้ถูกใช้ในการสร้างสัญญาณนาฬิกาสำหรับไมโครคอนโทรลเลอร์ และควบคุมแรงดันไฟฟ้า 5 โวลต์ LM7805 ใช้สำหรับให้ 5 โวลต์สำหรับวงจรทั้งหมด
คำอธิบายโปรแกรม:
ในโปรแกรมนี้ก่อนอื่นเราได้รวมไฟล์ส่วนหัวและกำหนดอินพุตพินเอาต์พุตและตัวแปร
#include <reg51.h> sbit Fan = P2 ^ 0; sbit Light = P2 ^ 1; sbit TV = P2 ^ 2; str char ถ่าน Charin = 0;
หลังจากนี้เราได้สร้างฟังก์ชันสำหรับการหน่วงเวลา
โมฆะล่าช้า (เวลา int) { int i ที่ไม่ได้ลงนาม j; สำหรับ (i = 0; i <เวลา; i ++) สำหรับ (ญ = 0; J <1275; J ++); }
ที่นี่เรามีฟังก์ชั่นบางอย่างที่เราใช้ในโปรแกรมของเรา ในที่นี้เราได้กำหนดค่าอัตรารับส่งข้อมูล 9600bps ที่ความถี่คริสตัล 11.0592MHz
เป็นโมฆะ Serialwrite (ถ่านไบต์) { SBUF = ไบต์; ในขณะที่ (TI); TI = 0; } ถือเป็นโมฆะ Serialprintln (ถ่าน * p) { ในขณะที่ (* P) { Serialwrite (p *); P ++; } Serialwrite (0x0D); } เป็นโมฆะ Serialbegin () { TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; }
หลังจากนี้ในโปรแกรมหลักเราได้เริ่มต้น UART และตรวจสอบการลงทะเบียน SBUF เพื่อรับข้อมูล จากนั้นข้อมูลจะถูกจับคู่และเปรียบเทียบกับค่าที่กำหนดไว้ล่วงหน้าและมีการดำเนินการที่เกี่ยวข้อง
โมฆะหลัก () { P2 = 0x00; Serialbegin (); Serialprintln ("ระบบพร้อม ... "); ล่าช้า (50); ในขณะที่ (1) { ในขณะที่ (RI!); ชรินทร์ = SBUF; STR = ชรินทร์; RI = 0; ถ้า (STR == '1') { พัดลม = 1; Serialprintln ("Fan ON"); ล่าช้า (50); } อื่นถ้า (str == '2') { พัดลม = 0; Serialprintln ("Fan OFF"); ล่าช้า (50); }
นั่นคือวิธีที่เราสามารถสร้างระบบทั้งในบ้านและสามารถเชื่อมต่อทุกเครื่องใช้ไฟฟ้า AC เข้ากับไมโครคอนโทรลเลอร์ 8051 โดยใช้รีเลย์ และระบบอัตโนมัติภายในบ้านที่ควบคุมบลูทู ธนี้ สามารถใช้งานได้จากสมาร์ทโฟน
รหัส
#include <reg51.h>
sbit Fan = P2 ^ 0;
sbit Light = P2 ^ 1;
sbit TV = P2 ^ 2;
sbit Light = P2 ^ 1;
sbit TV = P2 ^ 2;
str char
ถ่าน Charin = 0;
ถ่าน Charin = 0;
void delay (int time)
{
int ไม่ได้ลงนาม i, j;
สำหรับ (i = 0; i <time; i ++)
สำหรับ (j = 0; j <1275; j ++);
}
{
int ไม่ได้ลงนาม i, j;
สำหรับ (i = 0; i <time; i ++)
สำหรับ (j = 0; j <1275; j ++);
}
ถือเป็นโมฆะ Serialwrite (ถ่านไบต์)
{
SBUF = ไบต์;
ในขณะที่ (TI);
TI = 0;
}
{
SBUF = ไบต์;
ในขณะที่ (TI);
TI = 0;
}
ถือเป็นโมฆะ Serialprintln (ถ่าน * p)
{
ในขณะที่ (* p)
{
Serialwrite (* p);
P ++;
}
Serialwrite (0x0d);
}
{
ในขณะที่ (* p)
{
Serialwrite (* p);
P ++;
}
Serialwrite (0x0d);
}
เป็นโมฆะ Serialbegin ()
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xfd;
TR1 = 1;
}
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xfd;
TR1 = 1;
}
เป็นโมฆะหลัก ()
{
P2 = 0x00;
Serialbegin ();
Serialprintln ("ระบบพร้อม ... ");
ล่าช้า (50);
ในขณะที่ (1)
{
ขณะที่ (! RI);
ชรินทร์ = SBUF;
STR = ชรินทร์;
RI = 0;
if (str == '1')
{
Fan = 1;
Serialprintln ("Fan ON");
ล่าช้า (50);
}
ถ้า if (str == '2')
{
Fan = 0;
Serialprintln ("Fan OFF");
ล่าช้า (50);
}
{
P2 = 0x00;
Serialbegin ();
Serialprintln ("ระบบพร้อม ... ");
ล่าช้า (50);
ในขณะที่ (1)
{
ขณะที่ (! RI);
ชรินทร์ = SBUF;
STR = ชรินทร์;
RI = 0;
if (str == '1')
{
Fan = 1;
Serialprintln ("Fan ON");
ล่าช้า (50);
}
ถ้า if (str == '2')
{
Fan = 0;
Serialprintln ("Fan OFF");
ล่าช้า (50);
}
อื่นถ้า (str == '3')
{
Light = 1;
Serialprintln ("เปิดไฟ");
ล่าช้า (50);
}
{
Light = 1;
Serialprintln ("เปิดไฟ");
ล่าช้า (50);
}
อื่นถ้า (str == '4')
{
Light = 0;
Serialprintln ("ปิดไฟ");
ล่าช้า (50);
}
{
Light = 0;
Serialprintln ("ปิดไฟ");
ล่าช้า (50);
}
อื่นถ้า (str == '5')
{
TV = 1;
Serialprintln ("TV ON");
ล่าช้า (50);
}
{
TV = 1;
Serialprintln ("TV ON");
ล่าช้า (50);
}
อื่นถ้า (str == '6')
{
TV = 0;
Serialprintln ("TV OFF");
ล่าช้า (50);
}
str = 0;
}
}
{
TV = 0;
Serialprintln ("TV OFF");
ล่าช้า (50);
}
str = 0;
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น