赞
踩
突然想试试怎么玩蓝牙模块,本文演示工程较为简单,最后结果为通过手机蓝牙助手控制单片机上小灯的亮灭。
用到的软件:STM32CubeMX、Keil、串口调试助手XCOM 、蓝牙调试宝(手机蓝牙调试助手)
用到的硬件:32单片机、HC-05蓝牙模块、USB转TTL模块
本文在了解如何使用STM32CubeMX、Keil的基础上进行。
首先配置蓝牙HC-05。
通过USB转TTL模块(CH340)将HC-05模块与电脑建立连接,是为了初始化配置蓝牙模块。
注意:
只需连接四个引脚
蓝牙 —— TTL(下面一一对应)
VCC —— VCC
GND —— GND
TXD —— RXD
RXD —— TXD
先将USB转TTL模块与蓝牙模块连接好后,按住蓝牙模块上的小按键不动,将USB接口插到电脑上之后再松手,此做法是为了让蓝牙模块上电时以“命令响应模式”连接电脑。
以“命令响应模式”成功上电后,蓝牙模块上的小灯会进入慢闪状态。
然后我们打开串口调试助手XCOM,对蓝牙模块进行配置。
在设备管理器端口处通过拔插USB转TTL模块可以知道要连接的是哪一个端口,然后在XCOM中选择相应串口。向HC-05写AT指令时波特率为38400,停止位1,数据位8,奇偶校验无。配置完成后打开串口。(左下角默认勾选“发送新行”)
指令 | 响应 | 注释 |
AT+ORGL | OK | 恢复默认状态 |
AT+RESET | OK | 模块复位 |
AT+ADDR? | +ADDR:Param OK | 获得蓝牙模块地址 |
AT+VERSION? | +VSRSION:Param OK | 获得软件版本号 |
AT+ROLE=Param | OK | Param参数取值如下: 0-从角色;1-主角色; 2-回环角色;默认值: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 | 设置串口参数 Param1:波特率 ; Param2:停止位 ; Param3:校验位。 注意: 停止位:0 —— 1位 |
AT+UART? | +UART:Param1,Param2,Param3 OK | 获得串口参数 |
AT指令错误 | 0、1、2、3 | 指令错误or指令结果为默认值or设备不支持 |
对HC-05蓝牙模块进行设置:
将此蓝牙模块设置为从模式、连接模式为任意地址连接、自定义名称和密码;
设置串口参数为:
波特率9600,停止位1,校验位0.(即AT+UART=9600,0,0)
到这里蓝牙模块的配置就完成了。
此处省略CubeMX的基础配置......
开启两个小灯。
配置串口和波特率等参数。
使能中断
添加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) //验证数据,翻转小灯,发送数据较长
- {
- 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)
我使用安卓系统手机下载了一个叫“蓝牙调试宝”的软件。
授权进去,可以查找到附近的蓝牙设备
点击连接
根据所写代码发送数据(代码里面加了检验,数据较长)
通过手机发送数据控制小灯亮灭。
这就完成了,通过手机蓝牙助手向蓝牙模块传输数据,来实现对小灯的控制。从这个简单的思路出发,可以完成更多的sao操作,要我们自己去玩代码咯。
想玩玩蓝牙,刚刚学会,写下来,仅以此博客来记录一下我的学习。也希望能帮到你。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。