• 正文
    • 1.模塊選型
    • 2. 硬件連接(以HC-05為例)
    • 3. 軟件配置
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

嵌入式開(kāi)發(fā)中藍(lán)牙模塊的配置及使用

16小時(shí)前
255
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

大家好,我是專注分享職業(yè)規(guī)劃/技術(shù)科普/智能生活有關(guān)原創(chuàng)文章的allen康哥。

藍(lán)牙嵌入式開(kāi)發(fā)中是經(jīng)常使用的模塊,今天介紹下在使用單片機(jī)開(kāi)發(fā)中藍(lán)牙模塊的配置和使用。

1.模塊選型

常見(jiàn)的藍(lán)牙模塊類型:

經(jīng)典藍(lán)牙(BR/EDR):如HC-05、HC-06(通過(guò)AT指令配置)。

低功耗藍(lán)牙(BLE):如JDY-08、TI CC2541、Nordic nRF系列等。

集成協(xié)議棧的模塊:如ESP32(支持藍(lán)牙+WiFi)。

HC-05,這款模塊適合初學(xué)者,就是通過(guò)UART直接通信。下面就以這款模塊為例。

2. 硬件連接(以HC-05為例)

藍(lán)牙模塊引腳 STM32引腳 說(shuō)明
VCC 3.3V/5V 注意模塊電壓要求
GND GND 共地
TXD USART_RX 如PA3(USART2)
RXD USART_TX 如PA2(USART2)
KEY GPIO/3.3V 用于進(jìn)入AT模式

注意:

若藍(lán)牙模塊為5V電平,需使用電平轉(zhuǎn)換電路(如分壓電阻)。

部分模塊需在AT模式下配置(如HC-05需拉高KEY引腳再上電)。

3. 軟件配置

1.啟用USART外設(shè):

使用STM32CubeMX配置USART為異步模式(Asynchronous)。

設(shè)置波特率(如9600、115200,需與藍(lán)牙模塊匹配)。

啟用USART中斷(如需接收數(shù)據(jù))。

2.編寫串口收發(fā)代碼:

// 發(fā)送數(shù)據(jù)到藍(lán)牙模塊
char?msg[] =?"Hello Bluetooth!rn";
HAL_UART_Transmit(&huart2, (uint8_t*)msg,?strlen(msg), HAL_MAX_DELAY);

// 接收數(shù)據(jù)(中斷模式)
uint8_t?rx_buffer[128];
HAL_UART_Receive_IT(&huart2, rx_buffer,?1);?// 每次接收1字節(jié)

3.中斷回調(diào)處理:

void?HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)?{
? ??if?(huart->Instance == USART2) {
? ? ? ??// 處理接收到的數(shù)據(jù)(例如存入緩沖區(qū))
? ? ? ??static?uint8_t?index =?0;
? ? ? ? rx_buffer[index++] = rx_byte;
? ? ? ??if?(rx_byte ==?'n'?|| index >=?sizeof(rx_buffer)-1) {
? ? ? ? ? ? rx_buffer[index] =?'';
? ? ? ? ? ? process_data(rx_buffer);?// 自定義數(shù)據(jù)處理函數(shù)
? ? ? ? ? ? index =?0;
? ? ? ? }
? ? ? ??// 重新啟用接收中斷
? ? ? ? HAL_UART_Receive_IT(&huart2, &rx_byte,?1);
? ? }
}

4.藍(lán)牙模塊配置(AT指令)

通過(guò)發(fā)送AT指令修改藍(lán)牙模塊參數(shù)(如名稱、配對(duì)碼):

// 進(jìn)入AT模式(HC-05需拉高KEY引腳后重啟)
HAL_Delay(1000);
char?at_cmd[] =?"AT+NAME=MY_STM32rn";
HAL_UART_Transmit(&huart2, (uint8_t*)at_cmd,?strlen(at_cmd), HAL_MAX_DELAY);

常見(jiàn)AT指令(HC-05為例):

AT+NAME=<name>:設(shè)置設(shè)備名稱。

AT+PSWD=<pin>:設(shè)置配對(duì)碼(如1234)。

AT+UART=<baud>,<stop>,<parity>:設(shè)置波特率。

5.解析數(shù)據(jù)

幀格式:[Start][Data][Checksum][End]

示例:$DATA,123,456,789#($為起始符,#為結(jié)束符)。

void?process_data(uint8_t?*data)?{
? ??if?(data[0] ==?'$'?&& data[strlen(data)-1] ==?'#') {
? ? ? ??// 提取有效數(shù)據(jù)并處理
? ? ? ??sscanf((char*)data,?"$%[^#]", payload);
? ? ? ??// 進(jìn)一步解析payload(如逗號(hào)分隔)
? ? }
}

6.調(diào)試工具

串口調(diào)試助手:驗(yàn)證藍(lán)牙模塊基礎(chǔ)功能。

手機(jī)APP:如nRF Connect(BLE)、Bluetooth Terminal(經(jīng)典藍(lán)牙)。

邏輯分析儀:抓取UART信號(hào)排查通信問(wèn)題。

資源鏈接:

HC-05 Datasheet

https://www.alldatasheet.com/datasheet-pdf/pdf/3042/MOTOROLA/HC05.html

相關(guān)推薦