简介:HC-05蓝牙串行配置
在一些Arduino项目中使用Android设备和HC-05 Bluetooth SPP模块时,我想检查和更改HC-05波特率和其他参数,而无需连接PC USB端口。结果就是这样。
HC-05模块通过蓝牙串行端口配置文件(SPP)连接串口和蓝牙设备。Arduino社区中的许多人已经描述了如何配置和使用这些模块,包括几个Instructables.使用HC-05通常需要初始硬接线串行连接。大多数操作它描述了使用某种usb到串行适配器,通常是一个Arduino板,从PC访问模块的“命令”模式。我宁愿有一个小部件,我可以把HC-05插进去,然后继续。
这可能包括:
- 一幅素描…
- 立即指示当前的串行比特率(这可能是您所需要的全部)
- 检测当前速率并开始串行通信
- 通过蓝牙SPP收集用户输入
- 信号按HC-05命令按钮
- 向模块发送命令
- 如有需要,接收HC-05的回复
- 释放命令按钮的信号
- 通过BT连接回复用户
- 即用设备
- 可选的便利
- 非常低的成本
- 非常小
- 准备插入HC-05模块
- 由microUSB电缆供电
- 使用一个Digispark-喜欢有ATtiny85单片机的电路板
我已经在UNO克隆和Digispark克隆上测试了草图。它可能在其他Arduino ish板上工作,这些板在引脚0上实现了带有RX的“串行”类。
供应
第一步:试试看
在考虑开始焊接之前,先试一下草图。
我一直在叫它baudat因为它涉及波特和在命令这也归功于ssr。埃米尔Baudot。
如果你正在读这篇文章,你可能会有类似HC-05和类似于UNO R3的“普通”Arduino ish ATmega328板,或者没有太大的不同。草图在UNO R3克隆上进行了测试。我希望它能在实现串行类的其他板上工作,并使用引脚0进行串行接收。或者编辑serialRxPin。
- 下载草图,将其上传到您的板,并打开Serial Monitor窗口。
- 您应该能够在初始噪声中读取连接比特率。现在你知道连接速度,但是baudat不喜欢。
- 在它上面键入一些东西。它应该检测到比特率并继续。在键盘上随机敲击可能会起作用。“U”像x0101010101x一样穿过电线,这是无误的。任何两个或两个以上的常用打印字符(7位,不是“扩展”)都会被发送在一起(line-at-a-time vs character-at-a-time)应该有效。
- 尝试以不同的速度连接监视器。HC-05模块支持的通用速度应该可以工作。baudat不能识别非常慢、非常快或“奇怪”的速度,比如14400 bps。
- 尝试一下交互,看看如果它连接了,它会发送什么到您的HC-05。
步骤2:示例:提示的基本配置
它应该是这样的:
[[示例baudat会话通过串行监视器]]
噪音噪音噪音# # # # # # # #
这是57600个基点。键入一些东西。“U”是健壮的。
噪音噪音噪音# # # # # # # #
波特HC-05配置工具
设置BT名称、“极轴”和串行比特率?[y/n]y
设置蓝牙设备名称?[y / n] y
新名字:My_New_BT_Widget
设置BT连接状态极性?[y/n]y
连接时,设置状态引脚LOW(0)或HIGH(1)?(0/1) 0
支持的串行波特率:a:500000 b:230400 c:115200 d:57600 e:38400 f:19200 g:9600 h:4800 i:2400选择新速度:[a-i]a
====新参数===BT名称:My_New_BT_小部件连接状态信号电平:0波特:115200
准备按HC-05命令模式按钮…LED灯时按;当LED闪烁时释放。
准备好的[任意键]
去……[[LED灯固体;AT+NAME=My_New_BT_Widget AT+POLAR=1,0 AT+UART=115200,0,0 AT+RESET [[HC-05 RESET into 38.4kbps command mode]] AT+RESET [[LED闪光灯;您将释放命令按钮]]AT+RESET[[发送在38.4kbps;将HC-05重置为配置速率的通信模式]][[重复启动]]
这项试验实际上没有任何作用,因为循环中没有HC-05。当连接到baudat通过蓝牙:
- 在命令模式下,您将看不到发送到模块的命令
- reset可能会或者不会杀死蓝牙连接,这取决于HC-05固件版本
- 例如,HC-05固件版本3.0-20170601可以在不中断BT连接的情况下更改串行比特率。
还是……
步骤3:示例:任意AT命令
要输入任意AT命令,请拒绝提示配置:
[[启动…]]
设置BT名称、“极轴”和串行比特率?[y/n]n
输入命令:+版本
准备按HC-05命令模式按钮…LED灯时按;当LED闪烁时释放。
准备好的[任意键]
去……
[[LED灯亮起;选择命令模式][[HC-05解释以下命令]]AT+版本[[baudat记录超时或缓冲区满时的响应][[LED闪烁;释放命令模式]]
结果:[[存储结果]]
输入命令:
(这些示例是分步骤进行的,以避免格式化错误。如果它们被破坏了,请查看附加的文本文件。)
步骤4:极性吗?
当蓝牙设备连接到HC-05时重新启动处理器会非常有帮助。例如,通过蓝牙上传草图。但要做到这一点需要一点努力。
虽然在“HC-05”载波板之间有一些变化,许多(大多数?)有一个STATE引脚,当有一个活跃的BT连接时,信号高(1)。这对于重置处理器来说几乎是有用的,但它在错误的时间指示了错误的方式。
方便的是,模块提供了一个命令,在+极地=,改变现状极性这个信号的状态销了低(0)当另一个蓝牙设备连接时。这解决了一个问题。
如果没有STATE引脚,或者它不工作,你想要这个函数,直接从HC-05模块本身获取信号。参见上面示意图中的注释。
(示意图来源于在这里;来自hiletgo.cn(也许吧?)
第五步:用你已经拥有的硬件试试
如果您已经完成了这一步,那么应该能够连接并配置HC-05了。
电阻值不如其(近似)比值重要。比率应接近(5-3.3)/3.3。
如果使用3.3V mcu板,跳过电阻分压器,直接连接TX/RX引脚。您可能需要对HC-05的电源做一些不同的操作。
对于Android,我喜欢串口蓝牙终端.
这应该工作。你可能就完了。
可选择的:
STATE和RESET引脚之间的连接通过电容解决了最后一步遗留下来的时间问题。通过将STATE信号的极性反转,当新的蓝牙连接建立时,HC-05可以重新启动处理器。
异端的:
有些人说,电阻分压器是不必要的,可以省略而不破坏你的BT模块。他们是傻瓜和骗子。我会Ne**咳嗽考虑做这样的事情…但一个愚蠢的无赖谁可以做到这一点,只要四跳。
第六步:制作小部件
是的,到目前为止。但是这真的比任何其他没有PC USB端口的配置HC-05更容易吗?
如果你愿意奉献一块可以编程的电路板,把它连接到HC-05上,放在你的书桌抽屉里。
Arduino板克隆已经变得相当便宜,有些板很小,这有助于使这成为一件明智的事情Digispark.它们比HC-05小(在载体板上),克隆几乎是免费的。
这篇文章的其余部分展示了如何构建上图中的小部件。
步骤7:收集零件
很明显,你有很大的空间来做你想做的事。我是这样做的。
部分
- Digispark-like委员会(阿里巴巴全球速卖通- Digistump不再销售)
- 与microUSB
- 性能板(阿里巴巴全球速卖通)
- 减少0.7英寸至0.8英寸
- 6引脚母头(阿里巴巴全球速卖通)
- 6引脚& 2引脚公头(阿里巴巴全球速卖通)
- 0603电阻器10 kΩ (阿里巴巴全球速卖通)
- 0603电阻器15 kΩ
- 0603电容1 μF (阿里巴巴全球速卖通)
- 电线(阿里巴巴全球速卖通)
- (这个例子也使用了一些截止组件引线)
切割FR4 perfboard
切割一小块我列出的FR4 perfboard可能很容易,但解释如何使其容易会占用太多空间,所以我在这里写了一篇文章这是我的责任.
步骤8:为Digispark/ATtiny85编译
Digistump通过使用简化的微控制器基本Arduino“IDE”不知道的东西。所以你需要添加支持。我用了不同的串行库,所以也有这个。
请阅读将Digispark支持添加到Arduino的完整说明在这里. 要点包括:
- add "Additional Boards Manager URL":http://digistump.com/package_digistump_index.json
- 在Board Manager中安装包:数字泵AVR板
- 选择板:Digispark(默认值-16.5mhz)
解压SoftSerial-INT0图书馆在你库文件夹从文件夹名称中删除“-master”。
(更多的关于SoftSerial-INT0库)
为Digispark编译时,草图使用不同的接点指定:
- 引脚2上的RX - SoftSerial-INT0库的硬要求
- 引脚0上的TX -大多数Digispark变体都有引脚1上的LED
- 如果你的电路板上有引脚0上的LED,编辑草图,以交换LED和TX引脚
真正的数码公园将禁用RESET功能。似乎有许多(大多数?,全部?)克隆使RESET函数处于活动状态。如果您的单板已禁用RESET,而您想重新启用它,请读取在这里.
在将Digispark焊接到任何东西之前,您可能需要对其进行编程和测试。
步骤9:构建它
图片。因为说起来容易,说起来难。
请在开始之前浏览所有的图片和注释,因为有时后面的细节有助于解释前面的步骤。
第十步:享受劳动成果
最后一幅画就是第一幅画。
评论