說明:我們可以通過TTL轉(zhuǎn)USB模塊使電腦和HC05相連 ,通過電腦藍(lán)牙串口進行調(diào)試
我們上電時應(yīng)該按住復(fù)位鍵再上電,這樣才能進入AT模式(下圖軟件設(shè)置也能進入AT模式),否則是配對模式。
另外我們電腦串口波特率應(yīng)該設(shè)置為38400 (AT模式都為38400)
注:物理狀態(tài):AT模式下1s閃爍一次? 配對模式下:等待連接時也是閃爍(但是比AT模式下間隔時間短) 連接成功時會雙閃 以此來進行狀態(tài)判斷
引腳說明:
序 號 | 引腳 名稱 |
說明 | |||
1 | VCC | 3.3/5V 電源輸入 | |||
2 | GND | 地線 | |||
3 | TXD | 串口數(shù)據(jù)發(fā)送引腳, TTL 電平 |
|||
4 | RXD | 串口數(shù)據(jù)接收引腳, TTL 電平 |
|||
5 | EN | 模式引腳,懸空時默認(rèn) 為低電平 ? 高電平時模塊進入 AT 命令模式 ? 低電平時模塊為串 口透傳模式 |
|||
6 | STATE | 配對狀態(tài)輸出 ? 配對狀態(tài)時輸出為 高電平 ? 未配對時輸出為低 |
一:發(fā)送AT指令
注:發(fā) AT 指令時必須回車換行, AT 指令只能在模塊未連接狀態(tài)下才能生效,一旦藍(lán)牙
模塊與設(shè)備連接上,藍(lán)牙模塊即進入數(shù)據(jù)透傳模式。\r\n 為直接按電腦回車鍵,如不能按回
車鍵則加\r\n。AT 指令不分大小寫)
下面簡單基本AT指令:
1.測試指令:AT? ?響應(yīng)OK
2.模塊復(fù)位(重啟) AT+RESET 響應(yīng)OK
3設(shè)置藍(lán)牙名稱:.AT+NAME=<Param>? 如(AT+NAME=HC_05)修改名稱為HC_05 響應(yīng)OK
4.設(shè)置配對模式下的波特率 AT+UART=<Param>,<Param>,<Param> 如設(shè)置波特率為9600
AT+UART=9600,0,0\r\n???第一個0表示停止位為1位 第二個0表示無檢驗位
5.修改配對密碼 AT+PSWD=<Param> 如 AT+PIN="8888"\r\n (此處要加雙引號)修改密碼位8888
其他:可以查詢AT指令集
二:代碼如下:
1.與藍(lán)牙模塊相連引腳配置(一般為USARTx)
static void HC05_NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
void BLT_USART_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //為什么推挽復(fù)用功能 因為通過片內(nèi)外設(shè)USART控制高or低電平不是ODR寄存器 //可以查數(shù)據(jù)手冊每個外設(shè)應(yīng)該引腳模式配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); //我的模塊不配置38400會出現(xiàn)亂碼 USART_InitStructure.USART_BaudRate = 38400; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No ; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART3, &USART_InitStructure); HC05_NVIC_Configuration(); USART_ITConfig(USART3, USART_IT_RXNE, ENABLE); USART_ITConfig (USART3, USART_IT_IDLE, ENABLE ); USART_Cmd(USART3, ENABLE); USART_ClearFlag(USART3, USART_FLAG_TC); }
#define USART_BIFF_SIZE 1024
typedef struct
{
volatile uint16_t datanum;
uint8_t uart_buff[UART_BUFF_SIZE];
uint8_t receive_data_flag;
}ReceiveData;
ReceiveData USART3_ReceiveData;
void USART3_IRQHandler(void)
{
uint8_t ucCh;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
ucCh = USART_ReceiveData(USART3);
if(USART3_ReceiveData.datanum < UART_BUFF_SIZE)
{
if((ucCh != 0x0a) && (ucCh != 0x0d))
{
USART3_ReceiveData.uart_buff[BLT_USART_ReceiveData.datanum] = ucCh;
USART3_ReceiveData.datanum++;
}
}
}
if(USART_GetITStatus(USART3, USART_IT_IDLE ) == SET )
{
USART3_ReceiveData.receive_data_flag = 1;
USART3_ReceiveData(USART3);
}
}
?然后主函數(shù)中對數(shù)據(jù)進行處理就行啦!文章來源:http://www.zghlxwxcb.cn/news/detail-459247.html
最后需要手機APP藍(lán)牙助手的可以到博主的資源中下載(免費)!文章來源地址http://www.zghlxwxcb.cn/news/detail-459247.html
到了這里,關(guān)于HC05藍(lán)牙模塊與手機APP連接的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!