低成本的BlueTooth 4.0模块通过UART连接到Arduino (默认设备名为MLT-BT05),通常被称为“BLE4.0蓝牙HM-10 CC2540 CC2541串行无线模块Arduino Android”,是一个Bluetooth低能设备。
在Arduino端,它的工作方式就像一个普通的蓝牙2.0串行调制解调器--连接到Rx、Tx引脚来传输数据。
然而,BLE不支持在Windows上连接BT设备时创建“虚拟串行端口”服务的传统RFCOMM串行协议。
然而,在支持BT4.0的PC上,该设备可以配对( PIN 123456而不是传统的1234),它的服务可以通过BlueTooth LE Lab软件进行开发。
也就是说,Windows显然能够与这个设备对话,探索它的服务等等。
现在,当我使用Android手机时,我可以用这个模块与Arduino蓝牙控件(HM-10 Module) Android应用程序很好地连接到Arduino。它的工作原理和预期一样--就像一个通常的串行终端。在终端上键入的字符被传输到Arduino的UART Rx引脚,从Arduino的UART Tx引脚发送的字符在Android应用程序中被传输和显示。(事实上,我正在使用SoftwareSerial来使用不同的引脚,但这并不重要)。
现在我的问题是-这种串行连接可以在Windows PC上完成吗?
我只发现有一页在讨论与Reflowduino交谈,声称相同的过程适用于HM-10:https://github.com/botletics/Reflowduino/wiki/Windows-10-BLE。
不幸的是,事实并非如此。我可以在Windows机器上的BT LE Lab上找到该设备,查看其特性和服务,但它们都不像“未知特性”,即有“写入”编辑行来发送数据。不过,这只允许发送,但不允许接收。
如果这个设备(HM-10)是用于串行通信的,而且很明显它可以在安卓(也很可能是iPhone)上工作,我想知道为什么没有人愿意在Windows上实现这个功能呢?
问题是,旧的好的BlueTooth 2.0系列调制解调器(如HC-05)与iPhones不兼容,所以如果BLE与iPhones对话,我们可以使用它作为通用的替代品,与所有的平台兼容--当我们想要通过BT控制嵌入式设备的时候。
只是一个附带的评论,从Linux (同一台PC)上与HM10 BTLE设备对话可以顺利地工作:
# hcitool dev
Devices:
hci0 <my BT address>
# hcitool lescan
LE Scan ...
50:F1:4A:BC:14:4C HM10-11
# gatttool -b 50:F1:4A:BC:14:4C -I
[50:F1:4A:BC:14:4C][LE]> connect
Attempting to connect to 50:F1:4A:BC:14:4C
Connection successful
[50:F1:4A:BC:14:4C][LE]> primary
attr handle: 0x0001, end grp handle: 0x000b uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0022 uuid: 0000180a-0000-1000-8000-00805f9b34fb
attr handle: 0x0023, end grp handle: 0xffff uuid: 0000ffe0-0000-1000-8000-00805f9b34fb
[50:F1:4A:BC:14:4C][LE]> char-desc
...many others...
handle: 0x0025, uuid: 0000ffe1-0000-1000-8000-00805f9b34fb
...some more...
然后从Arduino发送一个字符“a”,结果立即出现以下通知:
Notification handle = 0x0025 value: 61
当快速键入数个字符组合在同一个通知中时:
Notification handle = 0x0025 value: 72 65 77
通过BT向Arduino发送字符也是直截了当的,以下是发送字符'b':
[50:F1:4A:BC:14:4C][LE]> char-write-req 0x0025 62
因此,使用底层gatttool为Linux编写一个简单的终端程序应该很容易,我很快就会在这里发布它。如果PowerShell也能运行这个系统,那就太好了.(?)
另一个注意事项:我甚至不必对来自Linux的设备进行配对(可能是因为gatttool的默认安全性设置为低)。
添加另一个非常有用的资源:http://www.martyncurrey.com/hm-10-bluetooth-4ble-modules/
发布于 2022-08-13 07:20:07
Windows蓝牙标准配置不起作用,因为蓝牙设备使用的是不需要配对的ble模式。使用它,它通过ble模式接收并重定向到com端口。https://github.com/Jakeler/ble-serial
https://stackoverflow.com/questions/58411638
复制相似问题