Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
BLE主机
米家蓝牙温湿度计2代
WIFI模块_RW007
RW007 高速WIFI 模块连接米家蓝牙温湿度计2代
发布于 2021-04-19 20:11:32 浏览:1760
订阅该版
[tocm] 通过前面的几篇分享文章,基本上知道`RW007`高速`WIFI`模块可以使用`BLE`主机功能去连接`BLE`从机设备,进行数据交互。下面将会说明如何使用`RW007`高速`WIFI`模块的`BLE`主机功能去连接米家蓝牙温湿度计2代并解析温湿度数据。 ## 一、米家蓝牙温湿度计2代简介  米家蓝牙温湿度计2代内置瑞士Sensirion高精度数字温湿传感器,能快速精准的发现温湿变化,感受0.1℃的温度波动和1%RH的湿度变化。通过米家蓝牙网关,米家蓝牙温湿度计2 可与家中其他智能设备联动,改善室内冷暖干湿,让你的家变得更舒适。米家蓝牙温湿度计2贴心设计了婴儿模式,当温度或湿度超出婴儿的舒适区间,米家APP将自动提醒,同时为你提供应对建议。其采用超低功耗屏幕,一颗CR2032纽扣电池可供电待机约1年。 有位知乎网友把第1代米家蓝牙温度计和第2代做了一些对比测评: 外观一如既往地延续了米家白色米家简约风格,只是相比第1代米家蓝牙温度计,第2代最大的外观改变在于,更加小巧了,还从起初的圆柱体演变为轻薄的正方体。除此之外,米家蓝牙温湿度计2 采用了1.5寸(28×28mm)液晶LCD、超低功耗的显示屏,不仅减少耗电量,而且确保数字段码效果,显示更清晰。当拿出米家蓝牙温湿度计2,撕去里面的电池下面的膜,就能看到屏幕上的数字段码效果。我们通过观察屏幕信息,可以发现有3部分数据进行显示——“19.7℃、75%、(-∧-)”,如果连接了蓝牙,还会显示有蓝牙连接的符号。当然,当电量过低时,屏幕也会有一个电池图标出现,提醒更换电池。 总的来说,米家蓝牙温湿度计2 代温湿度传感器的精度更高,续航能力更强。 ## 二、手机测试连接并解析数据 作为一个 DIY 爱好者,十分好奇米家蓝牙温度计2代里面的温湿度数据是怎样同步到手机 APP 的。为了一探究竟,这里我们尝试用 `BLE`调试助手进行调试,看看能否查到温湿度数据是怎样传输的。 * 1.第一步:使用 `BLE`调试助手进行扫描周围的蓝牙设备,可以找到 `LYWSD03MMC`名称的蓝牙设备,这个就是需要连接的米家蓝牙温湿度计2代的设备,这个名称可以从设备后盖上查到。  ***注意:这里需要记录米家蓝牙温湿度计2代的 MAC 地址,后面需要用到*** * 2.第二步:通过第一步,扫描周围的蓝牙设备,找到需要连接的米家蓝牙温湿度计2代的设备进行连接,点击`CONNECT`按键就可以进行连接了,当连接完成后,会进入设备提供的`Service`列表,如下图:  看到提供的`Device Information`这个`Service`,尝试读取数据,验证一下数据读取是否有限制。   可以发现只要连接上设备后,读取数据没有任何限制,这样就可以继续尝试进行读取温湿度数据了。 * 3.第三步:关于米家蓝牙温湿度计2代温湿度数据对应的 `UUID`,这个比较麻烦,需要从设备提供的众多`Service `列表中去查找,去猜测。所幸的是依靠强大的`度娘`或`谷哥`,这些坑已经有人踩过了,这里就可以参考他们的踩坑经验快速定位到需要的数据。在`https://github.com/JsBergbau/MiTemperature2/issues/1`这个`issue`中,就有不少的借鉴经验,例如读取温湿度的 `UUID`和温湿度数据的换算方式。   ``` 读取的原始数据: E6 0A 36 B4 0A 温度换算方法 温度 = 0x0AE6 = 2790 湿度 = 0x36 = 54 电量 = 0x0AB4 =2740 实际显示: 温度:27.9 C 湿度: 54% 电量: 2.742 V (读数后使用万用表测量电池) ```  对比获取数据时,米家蓝牙温湿度计2代的当前读数和读取数据经换算后的数据是一致的,验证了读取温湿度数据的准确性。 ## 三、使用`RW007 `高速`WIFI`模块连接并解析数据 通过使用手机测试连接米家蓝牙温度计2代并参考相关的资料可以正确解析数据后,这里尝试使用`RW007`高速`WIFI`模块的`BLE`主机功能尝试读取米家蓝牙温度计2代的温湿度数据,这里使用`STM32F411-NUCLEO开发板` 和`RW007 EVB`进行测试。 * 1.第一步:`RW007`扫描附近的设备,查找米家蓝牙温度计2代设备,并进行连接。 由于前面使用手机测试连接米家蓝牙温度计2代设备时知道了,米家蓝牙温度计2代设备的`mac`地址为`A4:C1:38:35:52:94`,使用`RW007`模块进行扫描,在扫描的结果列表中可以找到对应的`mac`地址。 使用以下的命令,进行`RW007`初始化和执行扫描操作。 ``` msh />rw007_ble init central msh />rw007_ble scan ```  * 2.第二步:`RW007`模块连接上米家蓝牙温湿度计2代的设备,后会收到来自米家蓝牙温湿度计2代的设备的`NOTIFY`数据,内容刚好是温湿度及电量数据。 ``` msh />rw007_ble connect A4:C1:38:35:52:94 ``` 通过上面的命令进行连接米家蓝牙温湿度计2代的设备。  * 3.第三步:在接收到数据的位置添加解析数据的功能,由于连接上米家蓝牙温湿度计2代的设备后就能接收到包含温湿度及电量数据的`NOTIFY`,在接收数据的位置,添加解析数据的功能即可,在`rw007_ble_ntf_handle`的函数中进行以下的修改。 ``` case RW007_BLE_NTF_TYPE_NOTIFY_RX: { rt_kprintf("RW007_BLE_NTF_TYPE_NOTIFY_RX\n"); int offset = 0, notify_data_len = 0; char *pcBegin = NULL; char *pcEnd = NULL; char cRes[15]={0}; struct ble_gap_event *event = RT_NULL; void *notify_data = RT_NULL; event = (struct ble_gap_event *)data; offset = sizeof(struct ble_gap_event); notify_data = data + offset; notify_data_len = size - offset; hex_dump(notify_data, notify_data_len); //下面为解析温湿度及电量数据的功能实现 int32_t temp = 0xffff; int hum = 0xff; int32_t v_bat = 0xffff; rt_uint8_t *ptr = notify_data; temp = 0xffff & ptr[1]; temp = temp<<8; temp = temp | ptr[0]; hum = ptr[2]; v_bat = 0xffff & ptr[4] ; v_bat = v_bat << 8 ; v_bat = v_bat | ptr[3]; rt_kprintf("temp=%d mC,hum=%d%,v_bat=%dmV\n",temp,hum,v_bat); break; } ``` * 4.第四步:编译烧录程序,验证功能。   验证功能成功! ## 四、总结 通过这次的RW007 模块连接米家蓝牙温湿度计2代设备,主要体验了如何通过 BLE 调试助手调试米家蓝牙温湿度计2代设备的过程,还有 `RW007 BLE` 主机功能的操作,以及如何把米家蓝牙温湿度计2代设备的温湿度数据进行换算的流程,总的来说 RW007 BLE 主机功能使用还算方便,比较麻烦和多坑的是解析温湿度数据,开始一直没弄清楚哪一个 UUID 和 温湿度数据有关的,也是折腾了不少时间,幸好在朋友的帮助下才顺利解析到温湿度数据。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
shadowliang
Hello,world!!!
文章
10
回答
100
被采纳
6
关注TA
发私信
相关文章
1
wlan设备测试,除了rw007模块,还有哪些可以测试?
2
rw007 开机进不了spi模式
3
RW007wifi模块扫描热点超时的问题
4
stm32f429+RW007 初始化一直失败???
5
RW007 TCP发送数据出现瞬间卡顿问题,请问是怎么回事?
6
关于K210使用RW007的注意
7
RW007 没有作为从机连接手机的例子吗?
8
RW007 运行异常
9
RW007 wifi 模块中断回环电阻的作用?
10
RW007模块有Arduino开发板上的例程吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
cubemx
UART
ESP8266
WIZnet_W5500
BSP
ota在线升级
PWM
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
ADC
GD32
定时器
编译报错
flashDB
keil_MDK
socket
中断
rt_mq_消息队列_msg_queue
Debug
ulog
SFUD
msh
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
821
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部