本帖最后由 ljj3166 于 2020-10-17 23:01 编辑
最近破事一堆,久没更新。
周末搞起,基本达成了蓝牙网关的功能。
评测的蓝牙网关设计需求比较简单
采集蓝牙终端的RSSI信号,通过UDP传输给某个UDP Server
CH579M的开发例程正好也给出了UDP_Client和BLE_Observer
拿来主义,改吧改吧。
新建了个工程,大概是这么个结构:
自己建立工程的时候,得把BLE\HAL的相关文件也添加进来
看看测试环境
WCH579单板一块
从论坛薅来的小米手环2一只,广播名称:MI Band 2
一块蓝牙4.2的原型板,广播名称:NBWatch_RL60AF
如下:
瞅瞅code
先看看UDP,WCH的强项,非常好用。
主要就是网关IP,目标IP,本机IP,掩码,目的和源端口
然后调用CH57xNET_SocketSend或者CH57xNET_SocketUdpSendTo 发送相关数据即可
如果只有一个连接CH57xNET_SocketSend即可
注意最后一个发送数据包长度的参数,必须是个4字节变量的地址
想少发都不行
再来看看BLE Observer部分
例程中,观察者模式扫描周边设备时,主要的数据获取都在ObserverEventCB回调中的
GAP_DEVICE_INFO_EVENT情况下
这里主要获取RSSI和名称
获取的数据基本都在deviceInfo里面
直接在ObserverEventCB 被callback的时候copy出来就行了
因为似乎小米手环广播的时候并没有携带设备名称
而是被扫描后respon里面才有设备名称
所以代码里面做了很多奇怪的过滤和条件判断
请忽略
跑通了大概是这样:
通过RSSI来简单判断终端的远近
离得远亮灯,离得近灭灯
通过UDP把远近情况发送到UDP服务器(视频中安装在手机上)
拍个小短片吧:
WCH579试用评测可能得告一段落了
说说基本印象吧
外设配置比较有特点,蓝牙+ETH,直指蓝牙IoT网关。差异化明显,有搞头。
要是再能搞个轻量级WiFi......,逆天。可惜开发板没有把POE做上来试用一下,稍有遗憾。
一如既往的方便开发,外设配置简洁明了,上手比较快。可能比较符合国人习惯吧。
但是BLE部分的开发资料相对还是比较少,不过可以参考TI的CC2540。虽然如此,还是觉得少点啥。
可能和蓝牙本身的协议属性有关吧。
很可惜这次没有测试一下这颗IC的功耗,有空再跟上吧。
|