看到传感器论坛的网友们在玩着各种花样调试无线传感器,我也心里有点痒,在寻思是否有一个好用的工具能将嵌入式端的数据方便的导入到工作的电脑上。在看过小马哥的系列视频后,觉得web Bluetooth应当是能够胜任的,所以就动手DIY了一个网站https://SiComBlue.herokuapp.com,网站目前还在开发阶段,可能会遇到带宽和流量的影响,很多功能还没有完全稳定,但是基本实现了连接ST开发板并顺利下载相关数据。有兴趣的朋友可以用手中的sensorTile或者nucleo套件作作实验,记得把实验结果告诉我就好了:)
先说一下SiCom工具的运行条件:由于Microsoft对于web Bluetooth的不瘟不火的态度,目前web Bluetooth只能在Chrome和Opera浏览器上实现。好在虽然Google被禁,但chrome还是能够顺利下载的。那么你的Windows10(WIN7也能用,但需要打补丁)装好最新版Chrome后,在设备管理器中使能蓝牙选项就好了。在Mac或者Linux操作系统下,Chrome的web Bluetooth工具应当也是都能用的,但有鉴于我自己的设备限制,没能实际测试,如果你恰好有非Windows设备,那么不妨也试一下,然后告诉我你的使用体验吧!
主备就绪,那就开始吧:~~
https://SiComBlue.herokuapp.com
网站首先打开看到的是这样的:
我标注数字的各个区域会有不同的功用,尽管样子不太好看(还有更不好看的版本,这里就不说那些表面文章的辛酸事了),重在功能实现,同时也相应的做了条件锁定--比如在没有调用到profile之前,5区和6区的按钮是禁用的,而在连接建立以后,5区6区使能后,2区的profile选择功能就被锁定和禁用,这样能为工具的平稳运行做出好的逻辑。
大家在使用蓝牙传输传感器数据的时候,都绕不开要采用GATT的profile。在2区的select profile选择中,我已经预设了4个profile,包括BBC microbit, ST BlueST, ST BlueST Full 以及ST BlueNRG。分别对应 BBC Microbit官方硬件的蓝牙profile(V1_11,小马哥的神作),ST官方BlueST协议的简化版,ST官方BlueST协议的近似完整版(要实现完整版还得一些时间),以及ST BlueNRG 开发板的标准sensorDemo profile。如果你有上述任何一款硬件并装有相关的profile,那你就可以直接从这里选择了。如果你自己定制了uuid和profile,那也没关系,你可以参考1区profile example中的格式将自己的profile文件做好,然后经由2区的upload your own profile选择本地上传,这样就可以了,如果profile调用顺利的话,工具界面会是下面的样子:
你会看到6区的下面显示出来你所选profile中包含的服务和特性的内容。下图是选择本地硬盘的test.json文件的效果。
接下来是验证工具和你的ble传感器节点是否匹配的关键步骤了,我称之为三板斧:扫描-连接-发现服务/特性。这三板斧是web Bluetooth最重要的过程。该过程经由Chrome的web Bluetooth api实现,尽管Chrome官方标注该api仍处于实验阶段,但是用起来还是杠杠滴~点击5区的发现设备按钮DiscoverDevices~下面分别是BBC Microbit profile和test.Json profile的连接截图。
这里需要指出,web Bluetooth api是严格按照你的设备广播名称来筛选的,我在SiCom工具中采用了广播名的首2个字母来进行器件名称的扫描识别。也就是说,如果profile中设定的“namePrefix” 是 “FL”,那你的ble设备需要以FL为广播名的首两个字母广播,SiCom工具才会发现并将设备显示在配对选择的界面中。BBC microbit无疑采用的是“BB”为“namePrefix”,而BlueST中的情况比较多,有AM,FL, TA,.....相同Functional Pack但不同板子的命名还可能不同(比如FP-Sensing),但我已经把多数情况放在预制的profile中了,所以,如果你没有修改过官方的广播名,那应当就能扫描出来//ST设备有时可能会需要10~20S的时间完成扫描,如果等得时间太长,可以尝试reset一下开发板:)
扫描出来你的设备后,就是按部就班的选择、配对然后工具会自动完成服务发现的过程,该过程有可能持续数秒至数十秒。三板斧过程顺利完成的标志就是2区的设备名称、连接状态和服务发现已完成的状态都更新了,像下面的样子: 或者这样子:
嗯,这里需要提醒一下,三板斧完成后,2区可选项全部被禁锁定,也就是当前节点已经按照设定的profile实现成功的连接。同时5/6区的按钮和选择框全部解除封禁,意味着你的数据调试可以开始了!
这时,你点击任何一个勾选蓝底色的选择框,系统都会立即做出响应--具体的响应主要是将服务和特性作对应,并且将已列出但未发现的特性从6区隐去。
那么如果你有了解profile中的各个服务和特性,你就可以正确的选择比如消息通知(N)、读(R)或者写(W)来对该特性进行操作。如果你不了解,点击了该特性并未提供的服务也没有关系,SiCom工具会提示你所选的N/R/W该特性未提供,并将相关的勾选框禁用。下图可以看到具体效果。
当你勾选的N/R/W选项继续有效后,你可以选择点击Act!按钮立即对该特性的NRW作执行,或者可以在6区点击processAllChar大按钮--这样所有的特性只要你做出选择的NRW会同时执行(画面很漂亮,真的)
提醒一下大家,profile中包含的特性参数大多都能执行,但有些时候BLE设备的带宽和计算能力有限,如果同时对同一设备操作太多的消息或读写,嵌入端系统可能会宕机,所以SiCom虽然是可以Simultaneously执行的,但也要量设备节点的能力而为之。
最后,玩好以后,收工之前,你可能会想要存储刚才收到的通知数据,SiCom已经为你准备好了。你只要点击断开连接按钮,系统会弹出提示框询问是否需要保存数据,你确认后,在download目录下应当就能见到你的数据了。酱紫:
嗯嗯,以上就是SiCom web Bluetooth工具的一点小小的介绍,希望你也能从实际运用发现更多的精彩!