H th ng t n g i u khi n b ng i n tho i b ng ệ ố ựđộ đ ề ể ằ đ ệ ạ ằ Bluetooth s d ng 8051 ử ụ
B iở Saddam 59 nh n xétậ
H th ng t ệ ố ự độ ng i u khi n b ng Bluetooth s d ng vi i u khi n 8051 đ ề ể ằ ử ụ đ ề ể
Hãy tưởng tượng r ng b n có th ki m soát các thi t b i n t c a nhà b n t m iằ ạ ể ể ế ị đ ệ ử ủ ạ ừ ọ
n i trong nhà, ch c n s d ng i n tho i thông minh c a b n.ơ ỉ ầ ử ụ đ ệ ạ ủ ạ Trong d án này,ự
chúng tôi s s d ng công nghẽ ử ụ ệ Bluetooth không dây để ki m soát Thi t b i n ể ế ị Đ ệ Gia d ng thông qua i n tho i Android ụ Đ ệ ạ Bluetooth có kho ng 10-15 mét, ả để ạ b n có
th b t và t t b t k thi t b i n t nào trong d i.ể ậ ắ ấ ỳ ế ị đ ệ ử ả Chúng tôi c ng ã phát tri nũ đ ể
m tộ chi c xe Toy ế đượ đ ềc i u khi n b i Android Phoneể ở , s d ng mô- un Bluetooth vàử ụ đ
Arduino
ây chúng tôi ã s d ng vi i u khi n 8051 v i mô- un Bluetooth, nh n d li u
không dây, được g i t i n tho i Android.ử ừ Đ ệ ạ Vì v y mà vi i u khi n có th b t và t tậ đ ề ể ể ậ ắ
các thi t b gia d ng cho phù h p.ế ị ụ ợ [Ki m tra t i ây h nể ạ đ ơ 8051 vi i u khi n d a trênđ ề ể ự
d ánự ]
Trang 2Các thành ph n chính ầ
• 8.051 vi i u khi nđ ề ể
• Mô un Bluetooth HC05đ
• Chuy n ti pể ế
• ULN2003
• Bóng ènđ
• Người giữ
• Dây i nđ ệ
• IC 7805
• đ ệi n tho i Androidạ
• Ứng d ng b i u khi n Bluetooth ng d ng trên Androidụ ộ đ ề ể ứ ụ
• T 10ufụ
• T 1000ufụ
• Đ ệi n tr 10Kở
• Đ ệi n tr 1kở
• Cung c p n ng lấ ă ượng
Bluetooth Module:
Mô- un Bluetooth HC-05 bao g m hai th là mô un giao di n n i ti p Bluetooth vàđ ồ ứ đ ệ ố ế
m t b chuy n ộ ộ ể đổi Bluetooth Mô- un n i ti p Bluetooth đ ố ế được s d ng ử ụ để chuy n ể đổi
c ng n i ti p sang Bluetooth.ổ ố ế
Trang 3Cách v n hành module Bluetooth? ậ
B n có th tr c ti p s d ng mô- un Bluetooth sau khi mua hàng t th trạ ể ự ế ử ụ đ ừ ị ường, b i vìở
không c n ph i thay ầ ả đổ ấ ỳi b t k cài đặt mô- un Bluetooth nào.đ M c nh baud rate c aặ đị ủ
module Bluetooth m i là 9600 bps.ớ B n ch c n k t n i rx và tx ạ ỉ ầ ế ố để đ ề i u khi n ho cể ặ
chuy n ể đổ ố ếi n i ti p và cung c p cho 5 volt dc quy nh cung c p n ng lấ đị ấ ă ượng cho mô-un
đ
Mô- un Bluetooth có hai ch đ ế độ là ch ế độ ch và th hai là ch ủ ứ ế độ nô l ệ Người dùng
có th thi t l p m t trong hai ch ể ế ậ ộ ế độ ằ b ng cách s d ng m t s l nh AT.ử ụ ộ ố ệ Ngay cả
người dùng có th thi t l p cài ể ế ậ đặ ủt c a module b ng cách s d ng l nh AT.ằ ử ụ ệ Dướ đi ây
là m t s l nh s d ng ộ ố ệ ử ụ được cho:
Trước tiên, người dùng c n ph i nh p ch ầ ả ậ ế độ AT v i t c ớ ố độ ba ba 38400 bps b ngằ
cách nh n nút EN mô un Bluetooth ho c b ng cách cho c p ấ ở đ ặ ằ ấ độ cao EN pin.ở L uư
ý: t t c các l nh ph i k t thúc v i \ r \ n (0x0d và 0x0a) ho c ENTER KEY t bànấ ả ệ ả ế ớ ặ ừ
phím
Sau ó n u b n g i AT đ ế ạ ử đến module sau ó mô- un s tr l i v i OKđ đ ẽ ả ờ ớ
AT → Test Command
AT + ROLE = 0 → Ch ế độ Nô l ch nệ ọ
AT + ROLE = 1 → Ch ế độ Master Mode
AT + NAME = xyz → Đặt tên Bluetooth
AT + PSWD = xyz → Đặt m t kh uậ ẩ
AT + UART = <value1>, <value2>, <value3> → thi t l p t c ế ậ ố độ truy nề
Ví d ụ AT + UART = 9600,0,0
Pin Mô t c a gia t c: ả ủ ố
Trang 41 STATE → Mở
2 Rx → Pin nh n hàngậ
3 Tx → Mã chuy n ti p n i ti pể ế ố ế
4 GND → ề n n
5 Vcc → + 5volt dc
6 EN → để vào ch ế độ AT
7
Làm vi c gi i thích: ệ ả
Trong d án này chúng tôi ã s d ng vi i uự đ ử ụ đ ề khi n 8051 ể để ki m soát toàn b quáể ộ
trình c a d án này.ủ ự Và m t mô- un Bluetooth ộ đ được s d ng ử ụ để đ ề i u khi n các thi tể ế
b gia ình không dây.ị đ Thi t b gia d ng s B T và T OFFT khi ngế ị ụ ẽ Ậ ười dùng ch m vàoạ
nút trong ng d ng di ứ ụ động Bluetooth trong i n tho i di đ ệ ạ động Android Để ch y d ánạ ự
này, đầu tiên chúng ta c n t i xu ng m u ng d ng Bluetooth C a hàng Googleầ ả ố ẫ ứ ụ ử
play Chúng tôi có th s d ng b t k ng d ng Bluetooth nào có th g i d li u b ngể ử ụ ấ ỳ ứ ụ ể ử ữ ệ ằ
Bluetooth Dướ đi ây là m t s tên ng d ng có th ộ ố ứ ụ ể được s d ng:ử ụ
1 Bluetooth Spp pro
2 B i u khi n Bluetoothộ đ ề ể
Trang 5Sau khi cài đặ ứt ng d ng, b n c n m nó và sau ó tìm ki m thi t b Bluetooth vàụ ạ ầ ở đ ế ế ị
ch n HC-05 Bluetooth device.ọ Và sau ó c u hình phím.đ ấ
ây trong d án này chúng tôi ã s
Ở đ ự đ ử d ng ng d ng b i u khi n Bluetooth ụ ứ ụ ộ đ ề ể
1 T i v và cài ả ề đặt Bluetooth Controller
2 B t ON Bluetooth di ậ động
3 Bây gi m ng d ng b i u khi n Bluetoothờ ở ứ ụ ộ đ ề ể
4 Nh n quétấ
5 Ch n thi t b Bluetooth mong mu n (Bluetooth Module HC-05).ọ ế ị ố
6 Bây gi hãy thi t l p các phím b ng cách n các nút trên màn hìnhờ ế ậ ằ ấ
thi t l p các phím c n ph i nh n 'set button' và thi t l p phím theo hình nh d i
ây:
đ
Trang 6Sau khi cài đặt các phím b m ok.ấ
B n có th th y trong hình trên có 9 nút, trong ó hàng ạ ể ấ đ đầu là để đ ề i u khi n qu t, thể ạ ứ
hai là để ể ki m soát ánh sáng và cu i cùng là ố để đ ề i u khi n TV.ể Các nút B t và T t c aậ ắ ủ
Hàng đầ đượu c s d ng ử ụ để ậ b t và t t qu t, các nút c a hàng th hai dành cho Lo iắ ạ ủ ứ ạ
ánh sáng và th ba cho TV.ứ Chúng tôi ã s d ng ba bóng èn có màu khác nhauđ ử ụ đ
thay vì TV và qu t, cho m c ích trình di n.ạ ụ đ ễ
Bây gi , khi chúng tôi ch m vào b t k nút nào trong ng d ng b i u khi nờ ạ ấ ỳ ứ ụ ộ đ ề ể
Bluetooth, i n tho i Android s g i m t giá tr cho mô- un Bluetooth, sau khi nh nđ ệ ạ ẽ ử ộ ị đ ậ
c giá tr này, mô- un Bluetooth g i giá tr ã nh n n vi i u khi n và sau ó vi
i u khi n c nó và so sánh nó v i giá tr c xác nh tr c
u x y ra sau ó vi i u khi n th c hi n các ho t ng t ng i
đấ ả đ đ ề ể ự ệ ạ độ ươ đố Cùng m t thao tácộ
s ẽ được th c hi n m i khi nh n nút.ự ệ ỗ ấ
Trang 7Bây gi , khi ngờ ười dùng ch m vào nút 'B t B t' trong ng d ng b i u khi nạ ậ ậ ứ ụ ộ đ ề ể
Bluetooth, vi i u khi n s nh n đ ề ể ẽ ậ được '1' thông qua mô un Bluetooth và sau ó i uđ đ đ ề
khi n B t 'B t' Qu t b ng cách s d ng trình i u khi n và relay ti p s c.ể ậ ậ ạ ằ ử ụ đ ề ể ế ứ Và khi
người dùng nh n nút 'Fan Off' trong ng d ng b i u khi n Bluetooth, vi i u khi nấ ứ ụ ộ đ ề ể đ ề ể
s nh n ẽ ậ được '2' thông qua module Bluetooth và sau ó i u khi n T t 'Off' Fan b ngđ đ ề ể ắ ằ
cách s d ng trình i u khi n và relay ti p s c.ử ụ đ ề ể ế ứ
Tương t , s i n tho i Android Phone 3,4,5,6 ự ố đ ệ ạ được g i khi b t Light On, Light Off,ử ậ
TV On, TV Off:
S ơ đồ m ch và Gi i thích ạ ả
M ch k t n i c a d án này r t ạ ế ố ủ ự ấ đơn gi n.ả Các chân Rx và Tx c a mô un Bluetoothủ đ
c k t n i tr c ti p v i chân Tx và Rx c a Vi i u khi n
đượ ế ố ự ế ớ ủ đ ề ể Ba r le 5 volt ơ được sử
d ng nh m t công t c ụ ư ộ ắ để ậ b t và t t các thi t b gia ình ch y trên ngu n AC.ắ ế ị đ ạ ồ Và m tộ
trình i u khi n chuy n ti p ULN2003 đ ề ể ể ế được s d ng ử ụ để truy n các r le.ề ơ Qu t, Ánhạ
Trang 8sáng và TV được k t n i P2.1, P2.2 và P2.3 thông qua r le và trình i u khi nế ố ở ơ đ ề ể
chuy n ti p.ể ế M t Dao ộ động tinh th 11.0592 MHz ể được s d ng trong m ch này ử ụ ạ để
t o ra tín hi u ạ ệ đồng h cho vi i u khi n.ồ đ ề ể Và m t i u áp 5 volt LM7805 ộ đ ề được s d ngử ụ
cung c p 5 volt cho toàn b m ch
Gi i thích ch ả ươ ng trình:
Trong chương trình này, trước h t chúng ta ã bao g m file header và xác nh ế đ ồ đị đầu vào, đầu ra pins và các bi n.ế
# Include <reg51.h>
Sbit Fan = P2 ^ 0;
Trang 9Sbit Ánh sáng = P2 ^ 1;
Sbit TV = P2 ^ 2;
Char str;
Char Charin = 0;
Sau ó chúng ta ã t o ra m t ch c n ng cho s ch m tr đ đ ạ ộ ứ ă ự ậ ễ
Thời gian trễ void (int time)
{
Unsigned int i, j;
Cho (i = 0, i <thời gian, i ++)
Cho (j = 0, j <1275; j ++);
}
ây chúng tôi có m t s ch c n ng mà chúng tôi ã s d ng trong ch ng trình
c a chúng tôi.ủ Trong trường h p này, chúng tôi ã c u hình t c ợ đ ấ ố độ truy n 9600bps ề ở
t n s 11.0592MHz Crystal Frequency.ầ ố
Void Serialwrite (byte char)
{
SBUF = byte;
Trong khi (TI);
TI = 0;
}
Void Serialprintln (char * p)
{
Trong khi (* p)
{
Sao chép đúp (* p);
P ++;
}
Sao chéo (0x0d);
}
Void Serialbegin ()
{
Trang 10TMOD = 0x20;
SCON = 0x50;
TH1 = 0xfd;
TR1 = 1;
}
Sau ó, trong chđ ương trình chính chúng ta ã kh i t o UART và theo dõi thanh ghiđ ở ạ
SBUF để nh n d li u.ậ ữ ệ Sau ó, d li u đ ữ ệ được so kh p và so sánh v i các giá tr ớ ớ ị được xác nh trđị ước và ho t ạ động tương đố đ đượi ã c th c hi n.ự ệ
Void main ()
{
P2 = 0x00;
Serialbegin ();
Serialprintln ("Hệ thống sẵn sàng ");
Chậm trễ (50);
Trong khi (1)
{
Trong khi (! RI);
Charin = SBUF;
Str = Charin;
RI = 0;
If (str == '1')
{
Fan = 1;
Serialprintln ("Fan ON");
Chậm trễ (50);
}
Else if (str == '2')
{
Fan = 0;
Serialprintln ("Fan OFF");
Chậm trễ (50);
}
Vì v y, ó là cách chúng ta có th t o ra m t h th ng toàn b cho ngôi nhà và có th ậ đ ể ạ ộ ệ ố ộ ể
k t n i t t c các thi t bế ố ấ ả ế ị AC v i vi i u khi n 8051 s d ng R le ớ đ ề ể ử ụ ơ Và h th ng ệ ố t ự
Trang 11ng i u khi n b ng i n tho i
độ đ ề ể ằ đ ệ ạ bluetooth có th ể được v n hành t i n tho i thông ậ ừ đ ệ ạ
minh
Mã s : ố
# Include <reg51.h>
Sbit Fan = P2 ^ 0;
Sbit Ánh sáng = P2 ^ 1;
Sbit TV = P2 ^ 2;
Char str;
Char Charin = 0;
Th i gian tr void (int time) ờ ễ
{
unsigned int i, j;
Cho (i = 0, i <th i gian, i ++) ờ
cho (j = 0, j <1275, j ++);
}
Void Serialwrite (byte char)
{
SBUF = byte;
Trong khi (TI);
TI = 0;
}
Void Serialprintln (char * p)
{
trong khi (* p)
{
Serialwrite (* p);
P ++;
}
Serialwrite (0x0d);
}
Void Serialbegin ()
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xfd;
TR1 = 1;
}
Void main ()
{
P2 = 0x00;
Serialbegin ();
Serialprintln ("H th ng s n sàng "); ệ ố ẵ
Ch m tr (50); ậ ễ
Trong khi (1)
{
while (! RI);
Charin = SBUF;
Str = Charin;
RI = 0;
If (str == '1')
{
Trang 12Fan = 1;
Serialprintln ("Fan ON");
Ch m tr (50); ậ ễ
}
Else if (str == '2')
{
Fan = 0;
Serialprintln ("Fan OFF");
Ch m tr (50); ậ ễ
}
Else if (str == '3')
{
Ánh sáng = 1;
Serialprintln ("Light ON");
Ch m tr (50); ậ ễ
}
Else if (str == '4')
{
Light = 0;
Serialprintln ("T t ánh sáng"); ắ
Ch m tr (50); ậ ễ
}
Else if (str == '5')
{
TV = 1;
Serialprintln ("TV ON");
Ch m tr (50); ậ ễ
}
Else if (str == '6')
{
TV = 0;
Serialprintln ("TV OFF");
Ch m tr (50); ậ ễ
}
Str = 0;
}
}
Code:
#include<reg51.h>
sbit Fan=P2^0;
sbit Light=P2^1;
sbit TV=P2^2;
char str;
char Charin=0;
void delay(int time)
{
unsigned int i,j;
Trang 13for(i=0;i<time;i++)
for(j=0;j<1275;j++);
}
void Serialwrite(char byte) {
SBUF=byte;
while(!TI);
TI=0;
}
void Serialprintln(char *p)
{
while(*p)
{
Serialwrite(*p);
p++;
}
Serialwrite(0x0d);
}
void Serialbegin()
{
TMOD=0x20;
SCON=0x50;
TH1=0xfd;
TR1=1;
}
void main()
{
P2=0x00;
Serialbegin();
Serialprintln("System Ready "); delay(50);
while(1)
{
while(!RI);
Charin=SBUF;
str=Charin;
RI=0;
if(str=='1')
{
Fan=1;
Serialprintln(" Fan ON"); delay(50);
}
else if(str=='2')
{
Fan=0;
Serialprintln(" Fan OFF"); delay(50);
}
else if(str=='3')
{
Light=1;
Serialprintln(" Light ON");
Trang 14delay(50);
}
else if(str=='4')
{
Light=0;
Serialprintln(" Light OFF"); delay(50);
}
else if(str=='5')
{
TV=1;
Serialprintln(" TV ON"); delay(50);
}
else if(str=='6')
{
TV=0;
Serialprintln(" TV OFF"); delay(50);
}
str=0;
}
}
Video: