新一代无线 MCU 和模块如何实现互联物联网应用
投稿人:DigiKey 欧洲编辑
2016-08-16
从大量的边缘节点,到云端分析和控制应用,任何基于物联网 (IoT) 的业务模型都依赖可靠、安全的无线通信。 在面对基于微控制器的传感器和致动器设计时,开发人员可以使用许多现成的 MCU 开发平台和工具链。 在过去,提供无线通信很难实现。 由于区域性的无线监管认可要求,使用或建立自己的验证型无线协议堆栈的需要,以及完全射频的复杂性,设计工程师经常会采用预批准的无线模块,而不是要挑战性地构建分立的设计。
新一代无线 MCU 和模块可以满足物联网边缘节点和传感器的无线连接和相对较低的计算需求,而且不需要额外的 MCU 主机。 这些无主机或单机式器件和模块加快并简化了整个设计过程。 然而,问题并不仅仅是要有能够满足开发人员需求的合适模块可用。 在当今的产品开发环境下,嵌入式工程师没有时间从头开始了解模块的完整功能。 而且,软件驱动程序、代码片段和评估平台的可获得性正慢慢变得与器件的功能同样重要。 开发人员越快实现器件与云的通信,就越可能将器件投入市场并获得商业上的成功。
其中一个成功的无线 MCU 实例就是 Texas Instruments 的 CC3200 SimpleLink™ 系列。 SimpleLink 系列是一个由评估板、代码实例和 SDK 组成的完整生态系统。 CC3200 提供多种封装尺寸,集成了 ARM® Cortex®-M4 应用微控制器(运行频率为 80 MHz)与 802.11 b/g/n Wi-Fi 网络处理器子系统。 这种次级子系统具有自己专用的 ARM MCU 内核,可从应用 MCU 卸除所有 Wi-Fi 通信堆栈。
图 1:CC3200 硬件概览框图。
CC3200 针对基于电池的物联网设计进行了优化,包含许多其他功能,例如电池管理功能和一整套外设接口,包括 GPIO、UART、SPI、PWM 和 4 通道 12 位 ADC。 主要功能集如图 1 所示。 CC3200 除了带有 256 kB RAM,还具有一个 256 位硬件加密引擎,用于快速 AES、DES 和 3DES 加密以及 SHA2 和 MD5 验证。 通过其自身的电源管理子系统及集成的 DC-DC 转换器,它不仅能够适用广泛的电压范围,而且还能够具有低功耗模式;最低功耗模式使器件进入休眠模式,而 RTC 仍然运行。 在此模式下,所需电流小于 4 μA。
图 2:CC3200 嵌入式软件概览。
图 2 显示了 CC3200 的另一面,即器件嵌入式软件功能。 Wi-Fi 子系统支持 Station、Access Point 和 Wi-Fi Direct 模式以及 WPA2 Personal 和 Enterprise 安全和 WPS 2.0。 片上嵌入了 TCP/IP、TLS/SSL 和 HTTP 服务器堆栈。
图 3 全面展示了 CC3200 的功能,重点显示了 GPIO 和外设接口、电源管理以及相对少量且必需的附加无源元件。
图 3:CC3200 功能框图。
当您研究器件的引脚复用功能时,就会理解 CC3200 的设计思想。 针脚复用是比较流行的在最小封装尺寸内纳入大量外设接口功能的做法,它允许将外设集映射到特定引脚。 通过硬件配置和寄存器控制组合可以实现引脚复用。 此过程的完整信息和映射选项均可从 TI CC3200 规格书中找到。 为了帮助进行设计,TI 创建了一个针对各种不同应用案例的推荐引脚复用配置表(图 4)。 此方法在广泛的应用初期阶段有助于使设计成型,从而充分利用外设集和可用的引脚分配。
CC3200 推荐引脚分配分组使用 - 实例(1) | |||||||||||
家用安全高端玩具 | Wi-Fi 语音 ++ 工业 | 传感器标签 | 家用安全玩具 | Wi-Fi 语音 ++ 工业 | Wi-Fi 遥控,带 7x7 小键盘和语音 | 传感器门锁火警玩具,带或不带摄像头 | 工业家电 | 工业家电智能插头 | 工业家电 | GPIO | |
外部 32 kHz(2) | 外部 32 kHz(2) | 外部 TCXO 40 MHz(-40 至 85°C) | |||||||||
摄像头 + I2S (Tx 或 Rx) + I2C + SPI + SWD + UART-Tx + (App Logger) 2 GPIO + 1 PWM + *4 层覆盖从 Hib 唤醒 | I2S(Tx 或 Rx)+ 1 Ch ADC + 1x 4 线 UART + 1x 2 线 UART + 1bit SD Card + SPI + I2C + SWD + 3 GPIO + 1 PWM + 1 GPIO,带从 Hib 唤醒 | I2S(Tx 或 Rx)+ 2 Ch ADC + 2 线 UART + SPI + I2C + SWD + 2 PMW + 6 GPIO + 3 GPIO,带从 Hib 唤醒 | Cam + I2S(Tx 或 Rx)+ I2C + SWD + UART-Tx + (App Logger) 4 GPIO + 1PWM + *4 层覆盖从 Hib 唤醒 | I2S(Tx 和 Rx)+ 1 Ch ADC + 2x 2 线 UART + 1bit SD Card + SPI + I2C + SWD + 4 GPIO + 1 PWM + 1 GPIO ,带从 Hib 唤醒 | I2S(Tx 和 Rx)+ 1 Ch ADC + UART(仅 Tx)I2C + SWD + 15 GPIO + 1 PWM + 1 GPIO ,带从 Hib 唤醒 | I2S(Tx 和 Rx)+ 2 Ch ADC + 2 线 UART + SPI + I2C + 3 PMW + 3 GPIO,带从 Hib 唤醒 + 5 GPIO SWD + | 4 Ch ADC + 1x 4线 UART + 1x 2线 UART + SPI + I2C + SWD + 1 PWM + 6 GPIO + 1 GPIO ,带从 Hib 唤醒(针对外部 40 MHz TCXO) | 3 Ch ADC + 2 线 UART + SPI + I2C + SWD + 3 PWM + 9 GPIO + 2 GPIO,带从 Hib 唤醒 | 2 Ch ADC + 2 线 UART + I2C + SWD + 3 PWM + 11 GPIO + 5 GPIO,带从 Hib 唤醒 | ||
引脚编号 | 11 号引脚分配 | 10 号引脚分配 | 9 号引脚分配 | 8 号引脚分配 | 7 号引脚分配 | 6 号引脚分配 | 5 号引脚分配 | 4 号引脚分配 | 3 号引脚分配 | 2 号引脚分配 | 1 号引脚分配 |
图 4:CC3200 推荐引脚复用配置。
如果希望在应用中采用 CC3200 器件,可供选择的开发选项很多。 除了针对应用设计自己的 PCB,还可以选择使用包含屏蔽式 CC3200 的 CC3200 模块,其尺寸仅为 20.5 x 17.5 x 1.5 mm,在紧凑模块上集成了无源元件、晶体和芯片天线。
在对 CC3200 模块进行原型开发时,CC3200 LaunchPad XL 评估板(图 5)很有帮助。 该评估板提供了用户 LED、按钮、加速计和温度传感器等多种器件选择,通过 USB 可以直接连接到 PC,配套 JTAG 仿真功能可进行 Flash 编程。
图 5:CC3200 LaunchPad XL 评估板。
TI 包含许多 SimpleLink 系列专用资源,包括产品页、软件开发 Wiki 以及专门面向云生态系统合作伙伴的页面。 SimpleLink SDK 可以从 Wiki 下载,它提供了许多实例应用、应用源代码和技术信息。 TI 推荐了许多受行业喜爱的 IDE,可与 SDK 一起使用,其中包括其 Code Composer Studio 和 IAR Workbench 工作台。 也提供了 Include 和 header 文件,以及 GCC make 脚本和其他库功能。 代码实例文档说明十分详细,并提供应用书面描述、关键可配置参数及其运行方式。 对于每个实例,包含了全套 C 语言源代码和 header 文件。其中一个实例展示了 CC3200 与站点“openweathermap.org”进行通信,以请求某一城市的天气情况,并将其显示在连接的超级终端上。 图 6 可看到这一输出。
图 6:CC3200 获取天气应用输出。
其他代码实例包括 MQTT 客户端/服务器应用的实现、电子邮件演示和充分利用休眠模式的基于传感器的设计。
虽然 CC3200 SDK 中提供的应用实例专注于 C/C++ 的使用,但也有许多其它选择。 其中一个就是 MicroPython。 MicroPython 基于 Python 3 解释性编程语言,是一次成功资助 Kickstarter 活动的成果,是专门针对微控制器而优化的语言。 MicroPython 的网络就绪型版本完全支持 CC3200 器件,并且可以从其网站下载。
提供 Wi-Fi 通信功能的 CC3200 SimpleLink 方法和应用处理器已在物联网市场获得广泛支持。 IBM 的一个例子就是通过使用 MQTT 将 CC3200 LaunchPad 连接到 IBM Watson 物联网基础平台。 其它云平台生态系统合作伙伴包括 Temboo 和 Xively。
另一个预认证型独立式 Wi-Fi 模块系列就是来自 Silicon Labs 的 Bluegiga WF121 系列(图 7)。 与 CC3200 一样,它包含两个主要元器件,一个使用 Microchip PIC32 系列 32 位微控制器、运行频率为 80 MHz 的应用微控制器和一个符合 2.4 GHz 802.11 b/g/n 规范的无线电。 该系列的详细信息以及参考指南和应用实例可以在这里找到。
图 7:Silicon Labs Bluegiga WF121。
主机与无线收发器之间的通信通过 UART、USB 或 SPI 进行,如图 8 所示。 这也显示了软件架构。 既然可以使用 BGLib ANSI C 主机库为微控制器进行应用编程,那么也可以使用 Bluegiga 的脚本语言 BGScript。 此语言基于 BASIC 形式的编程结构,提供了一种简易的方法来学习如何创建较为复杂、强大的应用。 此语言提供了命令和函数,用于设置和管理无线链接、安全、数据传输以及与可用外设、GPIO、SPI、I2C 等设备进行交互。
图 8:Bluegiga 软件环境。
BGScript 还可在完全独立的 Bluegiga 系列模块之间使用,包括那些提供蓝牙连接的模块。 图 9 展示了一段简短的读取模块 ADC 的 BGScript 代码实例。
图 9:读取 ADC 的 BGScript 实例
Bluegiga DKWF121 是一个用于 Wi-Fi 独立设计原型开发的评估板,使用了 WF121 模块。 该评估板包含了该模块的所有可用引脚分配,使之易于连接到试验设计。 所有 GPIO 引脚都安排在围绕一个大的原型开发区域的焊盘上。 DigiKey 网站上有一个有用的在线目录页,其中提供了有关 DKWF121 的所有使用入门信息。
如前所述,Bluegiga 系列还包含独立的蓝牙模块,如 BLE113。 使用 BGScript 的应用开发目标针对小型电池供电型应用和配件,提供了一种极其方便且易于使用的方法来建立链路并传输数据。 Bluegiga 产品系列得到了广大的物联网开发人员和专业创客社区的极力支持,这也使得有些程序库开始支持其他开发语言(例如用于 Node.js 的 bglib 和用于 Python 的 bgapi_py)。 图 10 展示了使用 Node.js 库将输入的蓝牙数据解析为其独立变量的简易性。
图 10:在 Bluegiga BLE113 模块上使用 Node.js BGLib 库解析蓝牙输入数据。
使用预认证无线模块大大加快了物联网应用的设计速度,而使用独立无线模块则进一步简化了整个设计过程同时减少了整体 BOM 成本。 研究此方法时,建议嵌入式工程师不仅要考虑硬件功能,还要考虑软件工具的数量、编程语言的灵活性以及可获得的应用实例数。 采用此方法,独立的物联网器件可快速投入市场,节省了昂贵的设计资源和预算。
免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。