传感器、BLE及云的完美结合——TI CC2650STK开发板评测
扫描二维码
随时随地手机看文章
可穿戴设备、IoT,很热门的话题,笔者也尝试做过几个小的项目,感觉一个字:累!
IoT产品设计是一项系统化工程,工程师关注的一个很关键的问题是:如何快速设计一个产品原型以供评估?通常情况下,迭代方式设计是一个比较好的选择。从现有的简单硬件开始,逐步添加功能需求,例如先选定主控制器件如MCU,然后根据需要添加传感器或致动器,器件以什么样的协议来进行通信(如I2C或是SPI等)。获取的数据以什么方式上传到其它设备或网络,使用BLE还是WiFi,然后再...,很头疼。
直到发现TI的STK评估套件,确有相见恨晚的感觉!
TI的CC2650STK套件,就是一款能让你更快的体验TI CC2650的开发板。TI的STK(SensorTag Tik)系列目前主要有三款:
• CC2650STK – Multi standard supporting Bluetooth low energy, 6LoWPAN, and ZigBee
• CC1350STK – Bluetooth low energy and Sub-1 GHz long range wireless
• CC3200STK-WIFIMK – Low-power wireless SimpleLink Wi-Fi
这三款STK工具基本涵盖了目前无线通信的主要技术,如BLE/6LoWPAN/ZigBee、Sub-1 GHz及Wi-Fi等。TI将STK系列定位为下一代IoT演示套件,除了无线通信技术,STK系列都板载了丰富的传感器并实现了云端连接的功能,TI宣称可在3分钟内实现快速体验,看上去很美。
那就先来看一看。
CC2650STK的包装盒,熟悉的TI标识,熟悉的TI愿景:Connect More WITH TI。还需要表达更多么。
一张简单的用户开始指南,看到第一步就是下载APP,TI提供了两种形式的APP,可以从Apple App Store及Google Play下载适合用户的APP。
所有的东西都在这里了,SensorTag Kit都设计成可以挂在钥匙扣上的形式,可随身携带。
硅胶封套上也不忘了TI的标识,STK套件被包裹在里面,现在还看不到内部包含的物件。
封套的另一面是开了窗的,这是为了让STK上的传感器更好的工作,如光传感器、红外传感器等。
TI的官网也给出了关于CC2650STK套件外观的尺寸及功能详细描述,见下图参考:
下面让我们来拆解一下看看内部的真正的CC2650STK开发板!
取下封套后的CC2650STK,里面是塑料盒,这里为TI DevPack预留的接口,TI DevPack可以为STK进一步扩展功能,如添加一个显示屏;也可以用来给STK下载新的程序/固件。
塑料盒子的另一面是透明的亚克力板,可以清晰的看到开发板的内部结构及元器件等。
都拆开来看,这下清楚了。拆开了,是一块CC2650STK开发板,组合起来,就是一个产品,尽管体积还是有点大。
这是开发板正面的样子,黑色PCB,上面的元器件整排整齐,布局也比较宽松,尽管STK上集成了大量的传感器,集成的元器件都是模块化的而且体积也很小,在开发板上一点也不占地。
背面可以看到CR2302电池仓占了很大一块位置,其它的一些接口还包括JTAG及DevPack等。
其实单从开发板设计的角度来看,应该是还可以设计得更紧凑一点。不过估计是为了和其它的DevPack配合使用,所以才设计成这个尺寸的,TI的Watch DevPack可以与STK配合使用,这是一款提供了1.3英寸显示屏的扩展套件,提供了96X96点的显示能力,如下图[!--empirenews.page--]
STK系列的特色是提供了丰富的传感器,STK系列都提供了如下的传感器
• 环境光传感器
• IR传感器
• 温、湿度传感器
• 气压传感器
• 海拔(高度)传感器
• 9轴运动传感器
• 加速计
• 磁力计
• 陀螺仪
• 数字麦克风
这些传感器在开发板上的位置如下图所示
这些传感器大多是现代可穿戴设备上常见的传感器,有了这些传感器,配合TI CC2650 MCU控制器,就可以实现大量的原型设计及体验。
CC2650 器件是一款面向 Bluetooth Smart、ZigBee和 6LoWPAN以及 ZigBee RF4CE 远程控制应用的无线MCU,具体型号为CC2650F128。
该器件属于 CC26xx 系列的经济高效型超低功耗 2.4GHz RF 器件。它具有极低的有源 RF 和 MCU 电流以及低功耗模式流耗,可确保卓越的电池使用寿命,适合小型纽扣电池供电以及在能源采集型应用中使用。
CC2650 器件含有一个 32 位 ARM Cortex-M3 处理器(与主处理器工作频率同为 48MHz),并且具有丰富的外设功能集,其中包括一个独特的超低功耗传感器控制器。此传感器控制器非常适合连接外部传感器,还适合用于在系统其余部分处于睡眠模式的情况下自主收集模拟和数字数据。因此,CC2650 器件成为 广泛的 工业、消费类电子和医疗产品中各类应用的理想选择。
Bluetooth 低能耗控制器和 IEEE 802.15.4 MAC 嵌入在 ROM 中,并在 ARM Cortex-M0 处理器上单独运行。此架构可改善整体系统性能和功耗,CC2650的典型功耗如下
• Active-Mode RX: 5.9 mA
• Active-Mode TX at 0 dBm: 6.1 mA
• Active-Mode TX at +5 dBm: 9.1 mA
• Active-Mode MCU: 61 µA/MHz
• Active-Mode MCU: 48.5 CoreMark/mA
• Active-Mode Sensor Controller: 8.2 µA/MHz
• Standby: 1 µA (RTC Running and RAM/CPU Retention)
• Shutdown: 100 nA (Wake Up on External Events)
从数据手册上看到的低功耗特性还是相当不错的,TI宣称STK使用CR2032电池供电的话,可达一年之久。
CC2650的整体功能框图如下
从功能框图上可以看到,CC2650内置了两颗MCU,一颗Cortex-M3内核作为主控,用来与片内外设如I2C、UART等外设进行交互,另一颗Cortex-M0则主要负责RF内核,以实现更低的功耗控制。
值得注意的是,CC2650还专门为传感控制器提供了2KB的SRAM,以实现更有效的数据传输。
STK系列都内置了出厂固件,不同产品的固件提供了对应于开发板的相应功能,如TI CC2650就提供了ZigBee和BLE两个不同类型的固件,实现对应的通信功能,TI CC2650默认提供的是BLE固件。TI CC1350STK和TI CC2650STK要实现网络通信(云端功能)的话,可以使用移动设备如手机来将数据推送到云端。因此,要体验TI CC2650STK的完整功能,需要先安装SensorTag APP,这里以Android平台为例,看看如何读取传感器数据并将数据推送到云端。
正式使用TI CC2650STK之前,记得将锂电池中间的塑料膜抽取出来,这样CR2032才能给设备供电,此时可以看到开发板上的LED灯开始闪烁,表明设备已开始工作。
下载并安装好SensorTag APP,打开程序,程序提示需要打开手机的蓝牙功能,之后可以看到已检测到TI CC2650STK设备,如下图
新版本的SensorTag APP还提供了配置Wi-Fi连接的功能,该功能是针对Wi-Fi SensorTag提供的。
在APP上点击发现的TI CC2650STK设备,APP开始初始化数据,检测STK设备上的传感器型号等参数,如下
这里报告找到14个设备,共提供了41项具体的参数。等设备参数检测加载完毕,就可以看到读取的具体值了,如下
读取的设备检测值都分类以数字及图形化的方式进行表示,看上去一目了然。[!--empirenews.page--]
另外从设备信息节可以看到当前产品的型号CC2650STK及当前固件(Firmware)的版本号,此处为1.3,与PCB上的标出的固件版本一致。
APP提供了固件OAD升级功能,在APP滑动内容至底部,打开TI OAD Service,检测当前设备可用的固件,如下图
可以看到针对CC2650STK的固件有两个,一个是BLE版本,版本号为1.32,另一个是ZigBee版本,版本号为1.12,这里选择将固件升级为BLE的1.32版本,点击下载升级按钮,APP开始下载固件并升级,如下图
这是下载升级新版固件的画面。
然而悲剧总是在不经意间发生。为了截取下载升级固件的画面,在手机上截图时不小心打破了升级的过程,然后CC2650就变砖了,真变砖了!LED没有了闪烁,APP也检测不到任何设备。
不过对于一款开发板来说,是没有变砖的说法的。只不过意味着再一次刷写固件代码而已,不过STK有自己的特殊性,并没有板载XDS调试/下载器,所以需要使用Debug DevPack来再次为CC2650STK烧录代码。
CC2650STK的出厂代码在BLE-STACK2软件包中,从官方下载该SDK包并安装,使用CCS7来编译得到一个HEX文件并通过DevPack下载到开发板,然后就满血复活了,当前最新的固件版本呈为1.4,奇怪的是,该版本号比OAD升级中的1.32版本号要高,估计是最新的固件版本号还没有在OAD服务中提供吧。
接下来将数据推送到云端,按如下设置打开云端推送功能
打开Push to Cloud开关,数据将推送到云端,实现网络访问功能。默认设置是将数据推送到IBM Watson网络,该网络不需要特定的认证,只需要一个唯一的设备标识即可,如下图
其中247189e99b06是设备的ID号,下面显示的是推送数据的图形化显示,APP向云端推送了很多数据,这里显示的是温度数据,如果想显示其它数据如光照值的图形化显示,在页面的下部选择相应的指标值即可。
这样子确实很方便,不过有一个问题。从头到尾,你只不过是个观众,要了解设备的工作原理,还是需要从代码着手。接下来看看如何使用CCS(Code Composer Studio)来建立、编译及调试一个程序,让开发板按照我们的意愿来执行任务。
CCS当前最新的版本为CCS7,从CCS7开始,TI免费提供CCS的使用,也就是不再需要License了。从官网下载CCS7安装程序,安装过程中CCS会根据用户设置的选项从网络下载需要的软件包,另外要注意的是CCS安装过程中最好是关闭操作系统的反病毒软件如Windows Defender等程序
这里我们选择了针对TI CC13XX及CC26XX系列的MCU支持,后期如果需要添加其它设备的硬件支持,可以在CCS里再行添加。
安装好CCS之后,可以新建工程,从头开始编写代码,实现特定的功能。最快的方式无疑是使用TI为设备提供的示例代码,CCS中的资源管理器可以联机搜索代码资源,针对TI CC2650STK的相关代码包如下
CCS资源管理器左边是可用的资源,右边可以对资源进行相关的操作,首先要下载相关的资源到本地,然后再导入到CCS中编译及调试/下载。
这里以PWM LED为例,该示例工程是TI-RTOS里面的示例代码。TI-RTOS是TI专门为MCU打造的一款RTOS系统,相比与裸机程序而言,在RTOS里面编写代码可以更加专注代码功能,而代码的调度等工作则交给RTOS来管理,程序的逻辑性更强。
PWM LED的主要代码如下
同大多数MCU工程代码一样,在main函数里先是初始化硬件,例如时钟的配置,GPIO/PWM的配置等。初始化硬件之后,是配置一个PWM专用的任务函数,交由RTOS来管理及调度,TI-RTOS中的任务创建通过使用Task_Params结构体来指定相关的参数如任务函数名及任务参数等。
任务创建好后调用BIOS_start()来启动主循环,开始调度用户创建的任务。
具体实现PWM任务的函数定义如下
这一段代码设定占空比,通过duty变量的值来实现调整不同的输出亮度,然后使用Task_sleep来指定简单的延迟,需要注意的Task_sleep中的参数是tick值,默认每个tick是10us,该值在每个工程文件的cfg文件中指定。
编译并下载代码到开发板,实现的效果如下
前面曾提到CC2650变砖及修复的问题。如果已有对应固件的HEX文件,也可以不使用CCS来下载。[!--empirenews.page--]
SDK里还提供了很多的示例代码,有兴趣的用户可以慢慢研究。
TI提供的SmartRF Flash Programmer 2可以用来给STK下载固件,下图是使用该程序来恢复固件操作的画面
使用Browser按钮载入要写入的固件,设定好擦除/编程/校验等参数,就可以写入固件。需要注意的是可能要先安装TI XDS驱动程序,如上图中要能找到XDS110这个设备,否则写入会报错。
总体而言,TI CC2650STK的使用体验还是很不错的。笔者其实一直都觉得TI的双核设计功能是相当棒的,只是就笔者个人的感受,总觉得TI的产品在国内受追棒的程度比不上其它的一些MCU厂商,这也许应了一句中国的古话,好酒也怕巷子深啊。
作为结论,笔者觉得TI的STK系列有如下优势。一是为TI的主流MCU提供了一个快速体验的环境,结合APP及CCS,可以快速上手。二是STK上集成了丰富的传感器件,无需借助三方模块,可以迅速体验可穿戴的强大功能。最后一点,快速的云端配置及体验,为STK更是增色不少。
参考资源:
TI CC2650STK: http://www.ti.com/tool/CC2650STK
TI CC2650: http://www.ti.com/product/cc2650