突然想試試怎么玩藍牙模塊,本文演示工程較為簡單,最后結(jié)果為通過手機藍牙助手控制單片機上小燈的亮滅。
用到的軟件:STM32CubeMX、Keil、串口調(diào)試助手XCOM 、藍牙調(diào)試寶(手機藍牙調(diào)試助手)
用到的硬件:32單片機、HC-05藍牙模塊、USB轉(zhuǎn)TTL模塊
本文在了解如何使用STM32CubeMX、Keil的基礎上進行。
配置藍牙模塊
首先配置藍牙HC-05。
通過USB轉(zhuǎn)TTL模塊(CH340)將HC-05模塊與電腦建立連接,是為了初始化配置藍牙模塊。
注意:
只需連接四個引腳
藍牙? —— TTL(下面一一對應)
VCC —— VCC
GND —— GND
TXD —— RXD
RXD —— TXD
先將USB轉(zhuǎn)TTL模塊與藍牙模塊連接好后,按住藍牙模塊上的小按鍵不動,將USB接口插到電腦上之后再松手,此做法是為了讓藍牙模塊上電時以“命令響應模式”連接電腦。
以“命令響應模式”成功上電后,藍牙模塊上的小燈會進入慢閃狀態(tài)。
然后我們打開串口調(diào)試助手XCOM,對藍牙模塊進行配置。
在設備管理器端口處通過拔插USB轉(zhuǎn)TTL模塊可以知道要連接的是哪一個端口,然后在XCOM中選擇相應串口。向HC-05寫AT指令時波特率為38400,停止位1,數(shù)據(jù)位8,奇偶校驗無。配置完成后打開串口。(左下角默認勾選“發(fā)送新行”)
指令 | 響應 | 注釋 |
AT+ORGL | OK | 恢復默認狀態(tài) |
AT+RESET | OK | 模塊復位 |
AT+ADDR? | +ADDR:Param? OK |
獲得藍牙模塊地址 |
AT+VERSION? | +VSRSION:Param OK |
獲得軟件版本號 |
AT+ROLE=Param | OK | Param參數(shù)取值如下: 0-從角色;1-主角色; 2-回環(huán)角色;默認值:0 |
AT+CMODE=1 | OK | 藍牙連接模式為任意地址連接模式,設置后該模塊可以被任意藍牙設備連接 |
AT+NAME=Param | OK | 設置設備名稱? Parm:想要設置的名字 |
AT+NAME? | +NAME:Param? OK |
獲取設備名稱 |
AT+PSWD=Param | OK | 設置模塊密碼 : Parm:想要設置的密碼; 默認為“1234” |
AT+PSWD? | +PSWD:Param? OK |
獲得模塊密碼 |
AT+UART=Param1,Param2,Param3 |
OK | 設置串口參數(shù) Param1:波特率?; Param2:停止位 ; Param3:校驗位。 注意: 停止位:0 —— 1位 |
AT+UART? | +UART:Param1,Param2,Param3? OK |
獲得串口參數(shù) |
AT指令錯誤 | 0、1、2、3 | 指令錯誤or指令結(jié)果為默認值or設備不支持 |
對HC-05藍牙模塊進行設置:
將此藍牙模塊設置為從模式、連接模式為任意地址連接、自定義名稱和密碼;
設置串口參數(shù)為:
波特率9600,停止位1,校驗位0.(即AT+UART=9600,0,0)
到這里藍牙模塊的配置就完成了。
CubeMX+Keil
此處省略CubeMX的基礎配置......
開啟兩個小燈。
配置串口和波特率等參數(shù)。
使能中斷
添加DMA傳輸通道
更新代碼到Keil
寫一段代碼......
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
if(huart == &huart3)
{
HAL_UART_Transmit_DMA(&huart3, receiveDate, Size);
if (receiveDate[0] == 0xAA) //驗證數(shù)據(jù),翻轉(zhuǎn)小燈,發(fā)送數(shù)據(jù)較長
{
if(receiveDate[1] == Size)
{
uint8_t sum = 0;
for (int i = 0; i < Size - 1; i++)
{
sum += receiveDate[i];
}
if (sum == receiveDate[Size - 1])
{
for (int i = 2; i < Size - 1; i += 1)
{
switch (receiveDate[i])
{
case 01 : HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_5); break;
case 02 : HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_6); break;
}
}
}
}
}
HAL_UARTEx_ReceiveToIdle_DMA(&huart3, receiveDate, sizeof(receiveDate));
}
}
此處代碼參考b站keysking的藍牙模塊視頻,在這不做講解。
將藍牙模塊于單片機連接,注意RXD——TXD、TXD——RXD,供電。
噢,不要忘記燒代碼。
連接手機藍牙
先將手機藍牙打開,將手機藍牙與你命名的藍牙模塊配對(我前面命名的Wcz)
我使用安卓系統(tǒng)手機下載了一個叫“藍牙調(diào)試寶”的軟件。
授權(quán)進去,可以查找到附近的藍牙設備
點擊連接
根據(jù)所寫代碼發(fā)送數(shù)據(jù)(代碼里面加了檢驗,數(shù)據(jù)較長)
通過手機發(fā)送數(shù)據(jù)控制小燈亮滅。
這就完成了,通過手機藍牙助手向藍牙模塊傳輸數(shù)據(jù),來實現(xiàn)對小燈的控制。從這個簡單的思路出發(fā),可以完成更多的sao操作,要我們自己去玩代碼咯。文章來源:http://www.zghlxwxcb.cn/news/detail-785735.html
最后
想玩玩藍牙,剛剛學會,寫下來,僅以此博客來記錄一下我的學習。也希望能幫到你。文章來源地址http://www.zghlxwxcb.cn/news/detail-785735.html
到了這里,關于STM32F407+藍牙HC-05+手機藍牙助手的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!