首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows下的HM-10串行通信

Windows下的HM-10串行通信
EN

Stack Overflow用户
提问于 2019-10-16 10:54:49
回答 2查看 5.5K关注 0票数 2

低成本的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设备对话可以顺利地工作:

代码语言:javascript
运行
复制
# 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”,结果立即出现以下通知:

代码语言:javascript
运行
复制
Notification handle = 0x0025 value: 61

当快速键入数个字符组合在同一个通知中时:

代码语言:javascript
运行
复制
Notification handle = 0x0025 value: 72 65 77

通过BT向Arduino发送字符也是直截了当的,以下是发送字符'b':

代码语言:javascript
运行
复制
[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/

EN

Stack Overflow用户

发布于 2022-08-13 07:20:07

Windows蓝牙标准配置不起作用,因为蓝牙设备使用的是不需要配对的ble模式。使用它,它通过ble模式接收并重定向到com端口。https://github.com/Jakeler/ble-serial

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58411638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档