概述
HC-05藍(lán)牙模塊是一種基于藍(lán)牙協(xié)議的簡(jiǎn)單無(wú)線通信設(shè)備。該模塊基于BC417單芯片藍(lán)牙IC,符合藍(lán)牙v2.0標(biāo)準(zhǔn),支持UART和USB接口。
具有兩種工作模式:命令響應(yīng)工作模式和自動(dòng)連接工作模式。
當(dāng)模塊處于命令響應(yīng)工作模式(或者AT模式)時(shí)能才能執(zhí)行 AT 命令,用戶可向模塊發(fā)送各種 AT指令,為模塊設(shè)定控制參數(shù)或發(fā)布控制命令。(AT指令就是我們PC與一些終端設(shè)備(例如藍(lán)牙,WiFi模塊)之間進(jìn)行通信的,配置這些終端設(shè)備參數(shù)的一套指令。)在自動(dòng)連接工作模式下模塊又可分為主(Master)、從(Slave)和回環(huán)(Loopback)三種工作角色。當(dāng)模塊處于自動(dòng)連接工作模式時(shí),將自動(dòng)根據(jù)事先設(shè)定的方式連接的數(shù)據(jù)傳輸。主模式:該模塊可以主動(dòng)搜索并連接其它藍(lán)牙模塊并接收發(fā)送數(shù)據(jù)。從模式:只能被搜索被其它藍(lán)牙模塊連接進(jìn)行接收發(fā)送數(shù)據(jù)。回環(huán):藍(lán)牙模塊就是將接收的數(shù)據(jù)原樣返回給遠(yuǎn)程的主設(shè)備。
HC-05藍(lán)牙模塊有六個(gè)管腳
STATE:狀態(tài)指示。未連接時(shí)輸出低電平,連接時(shí)輸出高電平。
RXD:UART接收引腳
TXD:UART發(fā)射引腳
GND:地
VCC:接電源,可以用+5V。
EN:使能。接地禁用模塊,懸空或接3.3V使能。
如何進(jìn)入AT模式:
HC-05與HC-06不同,HC-06沒(méi)有連接上時(shí),就是AT模式,而HC-05需要有個(gè)開(kāi)關(guān),注意到模塊上的小黑點(diǎn)沒(méi)有,不按的時(shí)候是可配對(duì)狀態(tài),1秒閃2次。按它再上電就使HC-05進(jìn)入AT模式了,嚴(yán)格的講,它只是一個(gè)開(kāi)的作用,無(wú)法退出AT模式。(退出的話可以在串口發(fā)送AT+RESET復(fù)位,或者重新上電)此時(shí)指示燈慢閃(2秒亮一次),模塊進(jìn)入AT狀態(tài)。
常用AT指令有:
AT
AT+RESET:模塊復(fù)位
恢復(fù)默認(rèn)狀態(tài)
AT+NAME:查詢修改藍(lán)牙名稱(chēng)。
AT+NAME或AT+NAME?,返回藍(lán)牙名稱(chēng)。
AT+NAME=XXX,修改藍(lán)牙名稱(chēng)為XXX。
AT+ROLE:查詢修改主從模式。AT+ROLE或AT+ROLE?,返回當(dāng)前主從模式,1表示主機(jī),0表示從機(jī)。
AT+ROLE=X,修改主從模式,X為1或0,對(duì)應(yīng)主機(jī)和從機(jī)。主模式與從模式的區(qū)別:主機(jī)是指能夠搜索別人并主動(dòng)建立連接的一方,從機(jī)則不能主動(dòng)建立連接,只能等別人連接自己。
AT+CMODE:查詢修改連接模式。
AT+CMODE或AT+CMODE?,返回連接模式,1表示任意藍(lán)牙地址連接模式,0表示指定藍(lán)牙地址連接模式,需要地址綁定
AT+COMDE=X。
AT+PSWD:查詢修改配對(duì)密碼。AT+PSWD或AT+PSWD?,返回密碼,默認(rèn)是1234。
AT+PSWD=XXXX,XXXX為新密碼。
AT+ADDR:查詢藍(lán)牙模塊地址。
返回藍(lán)牙模塊地址,如98D3:31:F6338B
AT+BIND:查詢修改綁定連接地址。
AT+BIND或AT+BIND?,返回綁定連接地址。
AT+BIND=XX,XX,XX,修改綁定地址,在CMODE=0時(shí)可用,注意冒號(hào)改為逗號(hào)。
AT+UART:查詢修改串口波特率。
AT+ORGL:復(fù)位藍(lán)牙模塊。
AT+RMAAD:清空配對(duì)列表。
at數(shù)據(jù)的發(fā)送格式是需要在指令后接回車(chē)換行的,如果按下回車(chē)后發(fā)送指令無(wú)效,那么可以在指令后加上:\r\n ,例如:AT\r\n,再次發(fā)送。
同樣的指令后接‘=’就是修改,后接‘?’就是讀取。
兩個(gè)藍(lán)牙模塊相互連接
配置藍(lán)牙A為主機(jī),指定地址連接;藍(lán)牙B為從機(jī)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-780955.html藍(lán)牙A、B進(jìn)入AT模式。
設(shè)置B配對(duì)碼,AT+PSWD=“1234”。
設(shè)置B從模式,AT+ROLE=0。
查詢B地址,AT+ADDR,得到B地址21:13:508222。
設(shè)置A配對(duì)碼,AT+PSWD=“1234”。(配對(duì)碼要一樣)
設(shè)置A主模式,AT+ROLE=1。
設(shè)置A指定地址連接,AT+CMODE=0。
A綁定B,AT+BIND=21:13:508222。
重新上電,連接成功后HC-05上的指示燈將進(jìn)入2s周期的快速雙閃。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-780955.html
//初始化HC05模塊
//返回值:0,成功;1,失敗.
u8 HC05_Init(void)
{
u8 retry=10,t;
u8 temp=1;
RCC->APB2ENR|=1<<4; //使能PORTC時(shí)鐘
GPIOC->CRL&=0XFF00FFFF; //PC4,推挽輸出;PC5,輸入
GPIOC->CRL|=0X00830000;
GPIOC->ODR|=1<<5; //PC5上拉
USART2_Init(36,9600); //初始化串口2為:9600,波特率.
while(retry--)
{
HC05_KEY=1; //KEY置高,進(jìn)入AT模式
delay_ms(10);
u2_printf("AT\r\n"); //發(fā)送AT測(cè)試指令
HC05_KEY=0; //KEY拉低,退出AT模式
for(t=0;t<10;t++) //最長(zhǎng)等待50ms,來(lái)接收HC05模塊的回應(yīng)
{
if(USART2_RX_STA&0X8000)break;
delay_ms(5);
}
if(USART2_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
{
temp=USART2_RX_STA&0X7FFF; //得到數(shù)據(jù)長(zhǎng)度
USART2_RX_STA=0;
if(temp==4&&USART2_RX_BUF[0]=='O'&&USART2_RX_BUF[1]=='K')
{
temp=0;//接收到OK響應(yīng)
break;
}
}
}
if(retry==0)temp=1; //檢測(cè)失敗
return temp;
}
通過(guò)AT模式來(lái)判斷是否有藍(lán)牙存在
//獲取HC05模塊的角色
//返回值:0,從機(jī);1,主機(jī);0XFF,獲取失敗.
u8 HC05_Get_Role(void)
{
u8 retry=0X0F;
u8 temp,t;
while(retry--)
{
HC05_KEY=1; //KEY置高,進(jìn)入AT模式
delay_ms(10);
u2_printf("AT+ROLE?\r\n"); //查詢角色
for(t=0;t<20;t++) //最長(zhǎng)等待200ms,來(lái)接收HC05模塊的回應(yīng)
{
delay_ms(10);
if(USART2_RX_STA&0X8000)break;
}
HC05_KEY=0; //KEY拉低,退出AT模式
if(USART2_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
{
temp=USART2_RX_STA&0X7FFF; //得到數(shù)據(jù)長(zhǎng)度
USART2_RX_STA=0;
if(temp==13&&USART2_RX_BUF[0]=='+')//接收到正確的應(yīng)答了
{
temp=USART2_RX_BUF[6]-'0';//得到主從模式值
break;
}
}
}
if(retry==0)temp=0XFF;//查詢失敗.
return temp;
}
通過(guò)AT指令來(lái)判斷是什么模式
//ATK-HC05設(shè)置命令
//此函數(shù)用于設(shè)置ATK-HC05,適用于僅返回OK應(yīng)答的AT指令
//atstr:AT指令串.比如:"AT+RESET"/"AT+UART=9600,0,0"/"AT+ROLE=0"等字符串
//返回值:0,設(shè)置成功;其他,設(shè)置失敗.
u8 HC05_Set_Cmd(u8* atstr)
{
u8 retry=0X0F;
u8 temp,t;
while(retry--)
{
HC05_KEY=1; //KEY置高,進(jìn)入AT模式
delay_ms(10);
u2_printf("%s\r\n",atstr); //發(fā)送AT字符串
HC05_KEY=0; //KEY拉低,退出AT模式
for(t=0;t<20;t++) //最長(zhǎng)等待100ms,來(lái)接收HC05模塊的回應(yīng)
{
if(USART2_RX_STA&0X8000)break;
delay_ms(5);
}
if(USART2_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
{
temp=USART2_RX_STA&0X7FFF; //得到數(shù)據(jù)長(zhǎng)度
USART2_RX_STA=0;
if(temp==4&&USART2_RX_BUF[0]=='O')//接收到正確的應(yīng)答了
{
temp=0;
break;
}
}
}
if(retry==0)temp=0XFF;//設(shè)置失敗.
return temp;
}
通過(guò)AT模式來(lái)設(shè)置主從模式
void HC05_Sta_Show(void)
{
if(HC05_LED)LCD_ShowString(120,140,120,16,16,"STA:Connected "); //連接成功
else LCD_ShowString(120,140,120,16,16,"STA:Disconnect"); //未連接
}
#define HC05_LED PCin(5) //藍(lán)牙連接狀態(tài)信號(hào)
到了這里,關(guān)于藍(lán)牙模塊HC-05使用指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!