姜 周
(淮安市高级职业技术学校, 江苏 淮安 223005)
1 设计背景1.1 物联网产业发展近年来,物联网概念已与产业应用融合,成为我国智慧城市建设、新型工业化和传统产业转型升级、农业现代化等信息化整体方案的主导性技术思维。产业链方面,中国已经形成较完整的物联网生态产业链。RFID、二维码等技术已经普及,基础芯片设计、高端传感器等方面与国外先进水平的差距不断缩小,运营和服务质量不断提高,平台化、服务化发展模式逐渐成熟。
未来,物联网发展主要聚焦以下三个领域:
1)低速广域物联网,如智慧城市、智慧物流、智慧建筑、智慧农业等。这种网络的传输数据量小,传输速率一般低于100 kbps,但覆盖范围较广阔。国内主要采用部署于2G 蜂窝网络的窄带物联网技术(NB-IoT,Narrow Band IoT,未来也可部署到5G)、需要自己部署网络的远距离无线电技术(LoRa)以及短距离无线通信技术ZigBee。
2)中速率物联网,如智慧家庭、智能手表等可穿戴设备、物联网POS 机等。这种物联网应用场景将从根本上影响人们的生活。其大量使用RFID、NFC、Wi-Fi、2G ~5G 移动通信技术,以及可部署于4G-LTE 网络的eMTC 技术(LTE Enhanced Machine Type Communication)。
3)高速物联网,如工业物联网、车联网等。这种物联网需要移动网络提供较高的数据传输速率以及毫秒级以下的延迟,以优化工业生产的流程和对交通的管理,提高生产效率和交通效率,实现工业智能化和交通的智能化。这种网络一般需要未来的5G 技术提供更多的支持。
1.2 物联网开发平台研究现状物联网产业的重要基础之一就是工业化物联网平台。周斌斌、古乐声对国内相对成熟的几个厂商所提供的物联网平台进行了研究[1],认为现代工业物联网平台主要由设备管理平台、连接管理平台、应用支持平台和业务分析平台四部分组成,每部分负责从底层的信息采集、网络层的网络连接到应用层的应用支持和数据分析等不同的业务功能。而事实上厂商提供的物联网平台服务则大多从软件层面着手,主要基于IaaS、PaaS 和SaaS 这3 种“云模型”,呈现功能一体化的发展趋势。主要代表产品有阿里云物联、百度云的“物接入(IoT Hub)”产品、QQ 物联、京东微联、中国移动物联网开放平台等。
国外由于与物联网行业的演进与国内并不同步,在较长的一段时间内,“物联网(IoT,Internet of Things)”这个说法并没有得到广泛的使用,所以难以考察“物联网平台”或“物联网开发平台”这些方面的研究始于何时,然而可查的是各个应用领域的具体名称,例如机器间智能互联M2M(Machine to Machine)、智能电网(Smart Grid)、车联网(Telematics)、地理信息系统GIS(Geographic Information System)等。
对于现代化的工业物联网平台,马智详细介绍了亚马逊AWS IoT、微软Azure IoT 等8 家服务提供商提供的产品和详细操作方法。经过对比,这些产品的架构和功能与国内产品并无显着的不同,受网络条件限制,各方面使用体验还略差于国内互联网大厂的云服务平台。
通过以上有关物联网产业发展和开发平台现状的分析,我们看到目前市场上常见的物联网开发平台在技术方面整合度不高、扩展性不强,存在开放性不足、易用性不强的问题,本文即从聚合性、通用性角度,研究设计一款基于嵌入式网关硬件的物联网开发平台。
2 设计需求物联网开发平台设计使用“自顶向下,逐步求精”的模块化设计方法进行。由于物联网的技术日新月异,所以本平台采用通用协议,使其具备较强的扩展性,同时,模块化的设计也让平台的维护更加简单。
作为一款开发平台,要求支持的功能(或实验模块)比较多,但并不是同时使用到所有的功能,将这些功能分为板载功能、通信功能和子模块等三类。
板载功能是嵌入式网关模块本身支持的功能,通信功能是指可通过外接各种通信模块或工业级终端,由第三方支持的功能。这样的通信模块提供商很多,具体厂商与实验中的选型待下一节讨论。子模块是指与实验平台进行协作、组网的模块。物联网开发平台设计如图1 所示。
图1 物联网开发平台功能设计
以上分析的设计需求,既相对独立,又紧密联系。由此确定平台设计原则:
1)通用化。也叫标准化。作为实验开发平台,所使用的元器件规格、封装,连接件功能、尺寸等均应达到通用化标准,选用市场上最常见且易购得的产品。
2)系列化。开发平台其实不是单一的产品,是系列化产品。例如,平台中的嵌入式网关和各个通信模块控制,实现不同的功能,在使用中,每个部件都可以单独进行功能扩展和升级换代,形成系列化、集合化产品。
3)模块化。以上“两化”要求平台设计中采用模块化思想,要对各个模块的功能进行科学规划,接口预留充分,可单独使用,也可组合使用。一个模块的功能或指标的升级和更新换代不影响整体的使用和功能实现。
3 硬件方案3.1 平台架构本文设计的物联网开发平台是以嵌入式网关为核心,各通讯接口及各模块、终端和云端协同配合的架构,如图2 所示。
图2 平台架构
嵌入式网关作为开放型网络的控制中心,各个模块传输过来的指令和数据被接收后,经处理后分发到相应的接口。要开发这样的开放式系统互联平台,首先要对嵌入式网关进行设计。
3.2 嵌入式网关设计作为开发平台的核心模块,需要提供一定的人机交互功能,故选用性能较强的嵌入式ARM处理器设计,这样的设计同时也提供计算机嵌入式系统开发的功能。
处理器选用恩智浦半导体(NXP)基于Cortex-M3核心的微处理器LPC1788,这款处理器有片内外设丰富、扩展接口强大、开发难度较低特点。
在嵌入式网关硬件设计部分,我们主要设计LPC1788 最小系统,按键和显示电路,A/D、D/A 和PWM实验电路、温度检测、JTAG 调试、串口和USB电路等。
供电、复位和晶振是最小系统,电路图如图3 所示。不选择挂载片外SDRAM和Flash,一方面是因为LPC1788 的片内RAM 和Flash 足够实验使用,另一方面,LPC1788FBD208 有208 只引脚,如果外挂SDRAM 和Flash,那么将需要采用4 层PCB 板进行布线,这样做提高了整个系统的成本。
图3 供电、复位和晶振电路
LPC1788 采用3.3 V 供电。将5 V 适配器输入转换为3.3 V。设计时3.3 V 电源只用于与核心有关的部件,外部的LED、液晶屏等用电量较大的负载直接使用适配的5 V 供电,做好控制接口的电平匹配。LPC1788 具备RTC 功能,需为RTC 功能设计3 V 钮扣电池供电电路,与3.3 V 电源进行衔接。
使用专用复位芯片MAX809 设计复位电路,提供低电平复位。MAX809 采用SOT-23 超小型封装,主要用于监控微处理器的电源电压,提供复位信号。
使用双晶振,选用一只32.768 kHz 晶振为RTC电路使用的晶振。
设计按键编码电路,将8 个按键信号编为3 位,不提供长按、组合按键等功能,电路如图4 所示。
图4 按键编码电路
设计LCD 显示模块。虽然LPC1788 自带LCD 接口,但由于没有外挂SDRAM,96 kB 内部SRAM 不足以提供显存,故不使用LPC1788 可以直接驱动的TFT-LCD,选用传统的单色点阵液晶模块19 264。
19264 是192×64 点阵液晶,国内有许多厂商生产,每只价格在20~30 元之间,并且具有比较通用的20 针接口形式。这部分的电路同样是由5 V 电源供电,数据和控制信号通过74245 收发器连接到LPC1788 的IO 口,如图5 所示。
设计A/D、D/A、PWM输出、JTAG 调试电路,由于LPC1788 直接提供这些接口,根据参考电路连接即可,不再赘述。
设计串口转USB 电路。使用3.3 V 供电时,需将CH340G 的第4 脚V3 连接到3.3 V 电源,TxD 和RxD务必要连接到LPC1788 的UART0 管脚P0[2]和P0[3]。LPC1788 使用这两个管脚和P2[10]管脚来实现ISP 编程,具体过程是,LPC1788 在复位时采样P2[10]管脚电平,如果为低电平,LPC1788 进入ISP 模式,接受来自P0[2]和P0[3]的编程请求,故设计ISP 电路时需要将P2[10]管脚引出、拉高,再通过两芯排针接地,当用户需对LPC1788 进行ISP 编程时,只要在关机状态将排针短路,开机,即可使用NXP 提供的ISP 软件FlashMagic 烧写程序。
3.3 通信模块选择及电路设计平台的通信功能设计主要围绕4 个串口相连接的模块进行。以太网通信功能选用USR-TCP232-T2插针式以太网模块,该模块可将一路UART 接口转换到以太网RJ-45 接口,实现TCP 和UDP 连接s。
Wi-Fi 通信功能:将一路UART 接口转换到Wi-Fi,板载陶瓷天线,配备IPEX 连接器,可外接天线。同时使用一路3.3 V 供电,持续发送时工作电流170 mA。
GPRS 通信功能:将一路UART 转换到移动数据网络,内置SIM卡,外接天线。模块使用3.8 V 供电,IO 口兼容3.3 V 系统,其射频模块功率较大,最大工作电流750 mA,另外设计一路输出至少在1.2 A 的3.8 V 供电电路[3]。
RFID 模块使用广州致远电子开发的13.56MHz读写卡模块ZLG600A-T2,支持IIC 和UART 两种接口,使用5 V 供电,工作电流75 mA。
ZigBee 通信使用广州致远电子ZM32P2S24E 串口转ZigBee 模块,将一路UART 转为ZigBee 网络,外接IPEX 天线。并且使用3.3 V 供电,发射电流74 mA,峰值电流139 mA,另外单独设计一路供电。
蓝牙通信使用上海稳恒科技WH-BLE103a 串口转BLE 模块,将一路UART 转为BLE 网络,支持Mesh 自组网,板载PCB 天线。使用3.3 V 供电,工作电流约5 mA,无需单独供电[4]。
定位模块选用深圳天工SKM81DC,可接收北斗、GPS 和格洛纳斯(GLONASS)信号,自带天线,无需另外设计天线。采用5 V 供电,工作电流30 mA,输出一根TxD 口线(UART 发送),兼容3.3 V 系统电平。
根据以上分析,将LPC1788 的通信接口进行规划。具体规划如表1 所示。
3.4 终端节点设计物联网终端节点一般由微控制器(MCU)、传感器、执行机构和通信模块组成的小型控制系统,可以实现特定信号的采集或执行某种操作,并与网关进行通信。终端节点的原理框图如图6 所示。
图6 物联网终端节点组成
从功能上看,每个终端节点的任务是比较单一的。例如,采集特定位置的温度和湿度,设计温湿度节点,选购数字式温湿度传感器SHT10(Sensirion 公司),这个传感器拥有一个类似于IIC 接口的串行接口,MCU 只需要设计读写这个串口的时序,就可实现温湿度的采集,这样的功能利用单片机实验平台就可以开发。再如,设计灯光控制模块,这个模块将随灯具一起安装,MCU 通过继电器或可控硅来控制灯光的开关、明暗等,也是比较容易实现的。
关于通信部分,终端节点选用何种通信方式与嵌入式网关(主控)或者用户进行通信,是厂商物联网系统的核心技术所在。例如,海尔U-home 智能家居方案采用ZigBee 和Wi-Fi 相结合的通信模式,而小米的家用电器,包括灯、电饭锅等则倾向于使用BT/BLE 和Wi-Fi 与手机端直连,接收控制指令。其中,通220V强电的设备,不太需要考虑功耗的问题,首选Wi-Fi;需要和手机进行交互的设备,一般选用BT/BLE 连接手机;手持设备、使用电池的传感模块,这类有着低功耗要求和安全性考虑的设备,使用ZigBee 进行通信。
目前,各种常见的物联网终端设备或模块在市场上都有供应,如果自行设计开发这样的模块,实现方案有以下两种。
第一种方案是使用通用单片机作为模块MCU,外挂上一节使用的各通信模块进行开发。利用单片机实验平台即可实现这种开发。
第二种方案基于之前的分析,物联网终端的数据采集和控制功能比较单一,这样的功能几乎任意一款微处理器都可以胜任,那么考虑将通信模块自身的微处理器用于信号的采集和控制。这个微处理器由于须执行比较复杂的协议转换等任务,其性能不会低于增强型51,例如通过乐鑫提供的ESP8266 SDK 对ESP8266EX 的IO 管脚进行开发,以实现简单的控制功能。再如,ZigBee 模块常使用TI 的CC2530 方案,这个方案采用增强型51 作为CPU,可搭建IAR Embedded Workbench for 8051 集成开发环境,对其进行各种功能的开发。又如,Nordic 半导体的BLE 芯片nRF52832使用了ARM Cortex-M4 内核,可以方便地使用Keil MDK-ARM 结合ARM.CMSIS 开发包以及Nordic Semiconductor 提供的nRF_DeviceFamilyPack 和nRF5 SDK开发包进行蓝牙模块的开发。
以上根据需求分析,将物联网开发平台按照基于ARM的嵌入式网关和各通信终端设备两个部分进行设计。网关的设计使用了具有丰富内部外设和大量扩展接口的Cortex-M3 微控制器产品,这款芯片可完全满足物联网各项实验的功能需求,又具有一定的扩展性,可以支持底层C、μC/OS-II 操作系统、Modbus 应用层以及远程云服务开发。对于通信终端的设计,文章也给出了两种方案:一是使用单片机实验平台作为基础,外挂串口转接模块,可将单片机的UART 接口直接转换为各种网络接口,进行组网和数据通信,这种方案开发成本低,使用成熟的通信模块,可靠性高,但硬件成本也略高;二是直接在现有通信模块上进行二次开发,增加一部分数据采集和控制功能,即可实现,这种方案开发成本较高,产品可靠性需要验证,但降低了少许硬件成本。另外,在平台使用过程中,有时并不需要用到所有的功能,结合实际需求,研究了嵌入式物联网平台的兼容性,即通过一定的设计与规划,使平台可供熟悉更多其他型号CPU 的开发者和学习者选用。
4 平台兼容性设计4.1 与STM32 的兼容STM32 微控制器是意法半导体(ST)基于ARM Cortex 内核设计生产的系列微控制器产品,产品力较强,有着相当庞大的开发者用户群体。在STM32 系列产品中,与LPC1788 同样具有Cortex-M3 内核的中等容量单片机STM32F103 系列体积小巧,各种通信接口齐全,功耗超低,价格低廉,与本文所讨论的物联网开发场景非常契合,且使用这款芯片的开发者众多,相关例程及资料丰富。
选择STM32F103 系列中48 脚LQFP 封装、64KB Flash 的型号STM32F103C8T6 开展兼容性设计。
根据STM32F103C8T6 引脚图,要实现嵌入式网关的基本实验功能,对需要由CPU 提供的I/O 口数量进行规划,见表2。
表2 平台功能与I/O 口规划
借鉴某些知名手机厂商提出的“双层主板”设计思路,以及早些年一些企业出于成本考虑将某些BGA 封装芯片设计为多层“核心板”的做法,在本平台嵌入式网关设计中增加兼容接口,通过插针连接STM32 最小系统“兼容板”,以实现平台多CPU 支持。
4.2 与树莓派PICO 的兼容树莓派2021 年推出首款低成本微控制器产品RP2040 及其模块化开发平台PICO,RP2040 基于Cortex-M0 内核,片内2MB Flash 和256KB SRAM,开发平台PICO 则采用精致小巧邮票孔设计,支持大批量的卷盘式供货、贴片机生产,可立即投入商用。
由于 PICO 只提供 26 个 I/O 引脚,比STM32F103C8T6 略少,可在表2 基础上,将兼容接口的口线对应到PICO 管脚,以实现与PICO 的兼容。
4.3 与ESP32 的兼容ESP32 是中国芯片设计公司乐鑫科技近年来推出的一款功能强大的物联网芯片,它可以作为嵌入式微控制器使用,又自带蓝牙、Wi-Fi 通信模块,可以看作上一章讨论的Wi-Fi 解决方案ESP8266EX 的升级,乐鑫为ESP32 提供了带板载PCB 天线或外部天线接口的ESP32-S3-WROOM-1 模组。
在讨论嵌入式平台与ESP32 模组的兼容性时,可分两种情况考虑。
1)前面STM32 和树莓派PICO 相似,用ESP32 来替换平台主板上的CPU,达到兼容CPU 的效果,所以将模组的接口与主板兼容接口相对应,设计外围电路。
2)将ESP32 模组作为主板的通讯外设,即主板上正常安装LPC1788 控制器,将嵌入式主板的部分通信接口连接到ESP32 模组的相应口线,即可作为主板的蓝牙或Wi-Fi 通信模块使用。
以上讨论了嵌入式网关平台的与当前流行的几款CPU 开发平台的兼容性,通过增加主板兼容接口,可将LPC1788 控制器替换为管脚丰富、功能全面、用于消费电子和工业控制的STM32,或是开发方便、成果极低的树莓派PICO,又或是速度超快、功能强大、专为物联网而生的国产ESP32 模组,供更多的开发者和学习者使用。