藍牙HC05是主從一體的藍牙串口模塊;拿到模塊需要對該模塊進行配置,比如藍牙名稱、連接時的密碼、主從和波特率等。
一、需要的工具:
usb轉ttl模塊(CH340G)
藍牙HC-05(我買的是兼容版的,功能沒差)
杜邦線4根
二、連線
連接usb轉ttl模塊和藍牙模塊,把兩個模塊的VCC口相連,GND口相連,TX和RX交叉相連(既TX連RX,RX連TX)
注意:請勿將電源接到信號腳上,會直接燒壞模塊!輸入電壓禁止超過7V!
注意:藍牙模塊的VCC只能接5V,不能接3.3V!
三、開始設置
連接好兩個模塊之後,按住藍牙模塊上的小按鈕(按住上電是配置模式,直接上電是正常使用模式),然後把usb轉ttl模塊插上電腦(一直按住小按鈕直到通電)。
注意:紅燈快閃是正常使用模式,紅燈慢閃是配置模式
然後打開串口調試助手,點擊通用串口,如上圖所示;選擇usb轉ttl模塊的端口(具體是哪個,可以去查看設備管理器中usbttl是哪個com口,如下圖所示);
之後選擇藍牙串口,點擊AT按鈕,如果左邊界面出現OK字樣就證明已經連接成功了,然後就開始根據需求進行配置
配置:(點完都要再點下手動發送,然後在看左邊窗口是否返回ok,纔算成功設置)
- 點擊設置從機。
- 點擊設置模式,在右上角改1爲0然後點擊手動發送。
- 點擊設置波特率,PS:波特率要和單片機的波特率設置爲一樣,通常51單片機的程序都是用9600,這裏默認9600(跟單片機上的晶振的多少而設,11.0592爲9600)。
- 設置密碼,默認1234,自己隨意設置。
- 設置名稱,自己隨意設置。
四、Android手機與HC-05簡單通訊
通過以上步驟配置後,就可以進行簡單配置通訊了
1、HC-05與單片機相連(TX連RX,RX連TX)
2、燒錄以下事例,主要是對led的控制,數據的收發(有人說燒錄程序時,要把藍牙連接的tx/rx口斷開,經測試無需斷開,沒有任何影響;要是覺得有影響,可以在每次燒錄程序前斷開該兩端口即可)
#include <reg52.h>
sbit led1 = P1^0;
sbit led2 = P1^1;
char i, date, num;
/*串口初始化配置*/
void UartConfiguration()
{
TMOD=0x20; //設置計數器1的工作方式2
TH1=0xfd; //設置計數器1的初值,決定波特率
TL1=0xfd; //設置計數器1的初值,決定波特率
PCON=0x00; // 波特率倍增0x00不加倍 0x80加倍
SCON=0x50; //設置工作方式1 開啓接受允許
EA=1; //開啓總中斷
ES=1; //開啓串口接受中斷
TR1=1; //計數器1開始運行
}
/*發送數據*/
void sendDate(char date)
{
SBUF=date; //接收到的數據放入發送緩存器發送
while(!TI); //等待發送數據完成
TI=0; //清除發送完成標誌位
}
//發送字符串
void PostString(unsigned char *p)
{
while(*p) //若指針指向地址爲空,則跳出循環
{
sendDate(*p); //指針第一次默認指向首地址
delay(20); //延時,提高發送準確度
p++;
}
}
void main()
{
UartConfiguration();
while(1)
{
if(num == 20)
{
num = 0;
sendDate('1'); //發送字符1
//比如發送DHT11的溫溼度到手機上
//PostString("38.1");
}
}
}
/*中斷函數*/
void Uart() interrupt 4
{
date=SBUF; //取出接受到的數據
RI=0; //清除接受中斷標誌位
//收到的數據是date
if (date==0x31){led1=0;}
if (date==0x08){led2=0;}
if (date==0x05){led1=1;led2=1;}
num++;
}
3、Android機打開藍牙串口調試助手(文末提供下載地址,網上的都是廣告,功能都用不到,看得心煩,然後自己敲了一個)
查看手機是否連接至HC-05了,然後通過發送代碼中的特定指令,對LED燈的開關及HC-05向手機發送數據的測試
4、至此通過HC-05Android手機對單片機的控制就完成了,是不是很簡單o(* ̄) ̄*)o
點擊下載以上用到的工具
Android藍牙串口調試助手
PC串口調試助手