本帖最后由 linyu0395 于 2020-11-5 09:06 编辑
当管理员通知我贸泽电子硬件狂想设计大赛获取开发板使用资格的时候,非常惊喜,因为当初申请了ESPRESSIF的开发板,项目上刚好又有用到过,想想是手到擒来。但是后来管理员告知因为资源紧张,最终换成了安森美BLE-SWITCH001-GEVB模块。看了一下资料简介,因为手头上暂时没有其他蓝牙模块与之对接控制,所以想通过手机的蓝牙来控制模块的IO口,用LED灯来指示控制状态,用简单的入门操作来了解一下这个模块的性能。
安森美半导体BLE-SWITCH001-GEVB适用于能量采集的低功耗蓝牙项目应用,包括照明、门窗控制和步进计数器,该电路板采用RSL10 SIP和ZF Electronic的高能效采集器开关组合,2Mbps数据速率,深度睡眠模式下的功耗为62.5nW,完全集成的天线,各项参数都非常优秀。 模块内部出厂已经固化了EDDYSTONE的固件。Eddystone 是谷歌2015年7月谷歌一款开源信标格式的开源蓝牙信标平台,主要为公共场合向人们发送各种信息设计。利用蓝牙LE(Low Energy)技术,点对点通讯。蓝牙信标是物联网的趋势之一。他们通常由电池供电,向周围发送某种特定信息。我们可以下载Beacon Scan的APP,直接按动模块的开关,就可以发送2-3次蓝牙信标的信息,APP上就可以显示采集的数据了。当然,接下来我们就要好好研究一下具体的开发流程。
RSL10支持ON Semiconductor IDE、MDK、IAR的开发环境。这里我着重介绍一下MDK的开发方式。 打开https://www.onsemi.cn/support/design-resources/software?rpn=RSL10
下载RSL10 Software Package,运行MDK,打开Pack Installer,点击File菜单,选择Ipmort导入下载解压的ONSemiconductor.RSL10.3.4.2-4.pack文件,安装后,会多出RSL10.
Copy出Examples里面的ble_peripheral_sever_bond工程项目,
编译运行,没有发现错误,自此就可以开始修改代码进行BLE测试了。
通过选择Jlink工具,可以进行在线仿真烧写,只需要把板上的SWD口焊接出来(板上也有预留JTAG口,因为焊接麻烦,故选择SWD),顺便也把预留的IO10也给引了出来,接上一个LED灯,方便调试测试使用。顺便提一下,最好也要把RST引脚印出来,因为调试低功耗的设备,经常会进入睡眠,这个时候没有RST复位,一般在线调试或者烧写都会提示失败。
至于这个软件测试代码中,已经把底层都初始化好了,直接可以通过蓝牙设备搜索出模块的信息,比如我是通过nrf-Connect APP来配合调试蓝牙模块。打开之后通过搜索,就可以找到蓝牙模块。
其中第一个就是我们要调试的蓝牙模块,点击Connect,就可以连上设备了。
程序上我稍作修改,在main的开头,我添加了 Sys_DIO_Config(10, DIO_MODE_GPIO_OUT_0);来初始化IO10以此来控制LED的状态.
在app_customss.h 文件中,把CS_CHAR_TX_UUID 改成和CS_CHAR_RX_UUID一样,这样子在app_customss.c文件的CUSTOMSS_RXCharCallback函数调用中就可以同时处理模块的发送和接收数据了。
简单地修改了一下这个回调函数,根据判断operation来区别接收还是发送数据,在APP上发送0x00表示关灯,发送0x01表示开灯,自此,就可以简单通过app发送数据来控制蓝牙模块的IO口来驱动LED灯,如果换成继电器,就可以控制大功率的设备,因为手头上暂时没有其他的蓝牙模块,要不然就可以互相控制了,等后续闲下来,再做进一步的评估。
程序编译无误,并下载到芯片,打开APP,连接上后,就可以通过自定义的UUID发送来控制IO口来驱动LED灯了。
最后,我还要在补充一下,安森美半导体BLE-SWITCH001-GEVB这个模块,除了低功耗的蓝牙RSL10模块,更看中的是能量采集开关。在以后的智能设备发展道路中,除了有深远的应用领域之外,还为以后的低功耗、节能、环保等提供了一个广阔的思路,以后我在新的智能化项目中也会积极使用此类型的模块来进行项目开发,感谢贸泽电子这次举办的活动,给了我一次这么好的测试机会,从一开始的不甚了解,到逐渐摸索出一点头绪,虽然花费了近一周时间来熟悉这个平台,但是付出还是值得的! 最后附上我调试的视频和工程代码,功能虽然简单,只是通过app来简单控制模块的IO口,但是后续我相信能玩转的更好的,谢谢!
ble_peripheral_server_bond.zip
(128.68 KB)
|