APP下载

一种基于STM32G0和中国电信EasyIoT 平台的NB-IoT终端设计及验证

2022-07-08杨世超陶建胜

电子设计工程 2022年13期
关键词:调试终端联网

杨世超,陶建胜

(国家无线电监测中心上海监测站,上海 201419)

2015 年以来,基于蜂窝的窄带物联网(Narrow Band Internet of Things,NB-IoT)聚焦于低功耗广覆盖(LPWA)物联网(IoT)市场,是一种可在全球范围内广泛应用的新兴技术,具有连接多、覆盖广、功耗少、架构优、成本低等特点,旨在为成本、能耗、吞吐量都很低的海量物联网设备提供支撑[1],适合用于远程抄表、监控监测、智能停车、智慧农业等领域[2]。

物联网平台作为整个物联网解决方案的核心,可提供设备SDK 或API,负责从传感器和终端设备中获取数据,并生成有意义的结果和操作[3]。现在国内外对于物联网平台并没有统一的标准和定义,有百度云、阿里云、华为云、中国移动OneNet等,通信协议种类也不断增多,加上科技巨头纷纷投入物联网平台市场,使其呈现出百花争艳的局面。因此与之对应的物联网终端呈现出开发难度大、研发周期长的问题。

该文以温湿度传感器SHT10 的数据采集为例,介绍了一种基于STM32G0 的终端设计,并与中国电信EasyIoT 物联网平台通信,最后将数据显示在手机APP上,实现数据的实时远程显示。

1 系统功能与总体架构

1.1 系统主要功能

1)实现数据的采集,主要是接收终端/传感器的信息,文中主要指空气温、湿度。

2)终端与EasyIoT 通信:通过EasyIoT 发送AT 指令,实现对终端的控制;发送终端采集的信息至EasyIoT 平台。

3)手机通过APP 能与EasyIoT 通信,获取实时温湿度信息。

4)进行USB Type-C 接口调试,方便程序调试和终端升级。

1.2 系统总体架构

该系统的总体架构框图如图1 所示,主要分为3部分。

图1 系统总体架构图

1)物联网云端平台:选取中国电信EasyIoT 平台作为物联网云端,通过北向接口经基站与应用通信,通过南向接口经基站与终端通信。提供在线的可视化开发调试环境,集信息规则、参数解析、协议适配于一体,通过云端一体协同、简化中间环节,有效降低了研发门槛与成本。

2)终端:以微处理器为核心,以发射/接收电路、SIM 电路、传感器数据采集电路等组成NB-IoT 节点。

3)行业垂直应用:云平台兼容UDP、http 等协议,在手机、数据处理服务器等设备中通过云端平台获取终端的传感器信息。

另外,开发者可通过因特网访问云端,利用可视化开发调试环境,在平台上执行创建产品、注册设备、对产品和设备进行在线调试等操作,还可以通过平台查看设备的详细信息、查看设备上报数据与状态、查看设备运行状态的统计、通过平台向终端下发指令等。开发者通过USB Type-C 接口对终端进行调试、升级。

2 终端硬件设计

系统硬件主要包含温湿度传感器数据采集、处理,信息传输等功能,终端系统框图如图2 所示。该系统的硬件主要包括单片机、射频收发模块、传感器、SIM 卡等[4-7]。单片机选取意法半导体芯片STM 32G071RBT6,这是2019 年初推出的基于CoreTex-M0+内核,是世界上第一个支持USB Type-C 的高性价比微控制器,主频高达64 MHz,具备超过93%的GPIO 利用率,嵌入了精确的内部时钟、外围设备,内嵌两个UCPD接口(USB Type-C/USB Power Delelivery Interface)等优点[8],完全满足系统需求,而且方便调试,节省了物料。

图2 终端系统框图

2.1 UCPD电路

由于Type-C 不分正反面均可插入,而且端口的读写速度都能达800 MB/s 以上,目前主流的电脑、手机都采用该接口[9]。文中选取Type-C 接口,也是迎合电子行业发展趋势的一次尝试。由于之前的单片机没有提供UCPD 接口,终端开发一般额外购买外置USB-stlik 调试工具,或者外加一个单片机设计和一个在线仿真调试电路。如果采用Micro-USB 接口的,还要设计USB 接口转串口电路、电平转换电路,比较复杂。文中Type-C 接口CC1、CC2 引脚接端口保护芯片TCPP01-M12,然后接MCU。FLT 是故障报告标志位,由过压、欠压、过热来触发;通过检测Source 电压来判断是否有外接电源,如果有,通过DB 启动芯片,允许CC1、CC2 信号通过。此外,为了抑制高速通信时产生的共模噪声,D+、D-经共模滤波器ECMF02-2AMX6 至MCU,如图3 所示。在软件设置上可以通过微控制器图形工具STM32CubeMX配置UCPD 接口,非常方便。

图3 UCPD电路设计

2.2 数据采集电路

文中重点研究终端设计及对传感器采集数据的处理,因此传感器选取体积小、功耗低、响应快且比较通用的温湿度传感器SHT10[10],具体电路如图4 所示。由于没有接其他传感器,数据线DATA 可以直接连接到MCU 的I2C 总线[11]。

图4 数据采集电路

2.3 SIM电路

SIM电路如图5所示。文中采用的是7脚MicroSIM卡座,物联网卡可以通过微信公众号“天翼物联”来申请购买。

图5 SIM卡电路

2.4 射频发射/接收电路

射频电路模块选择SPSGRF-915,它是一种可编程无线收发器,集成巴伦(BALF-SPI-01D3)和板载天线,最大传输速率达500 kbps,主要包括4 个可编程I/O 口和一个SPI 接口。除了SPI 接口用于通信、SDN 引脚用于使能,文中还连接了一个GPIO 口用于中断输出。由于是贴片式封装,PCB 布局时应当远离功率器件、场器件,背面也严禁摆放器件。

图6 射频发射/接收电路

2.5 电源及其他电路

终端可以通过Type-C USB 供电,还可以通过圆柱型钴酸锂电池ICR18650 供电,二者通过一个二选一拨码开关进行切换。ICR18650 电量为3 400 mAh,额定电压为3.7 V;USB供电电压是5 V,而系统正常工作需要3.3 V 电压,因此还需要通过AMS1117-3.3 V来调节。

时钟有两个,一个接外部的32.768 kHz晶振,提供实时时钟;另一个是接8 MHz 晶振,为MCU 内部振荡器提供高速时钟。还包括复位电路、指示灯电路等。

3 EasyIoT平台应用软件架构

EasyIoT 平台应用软件架构如图7 所示。

图7 EasyIoT平台应用软件架构

EasyIoT 平台应用主要分为3 部分:平台Web 操作、接口调用和接口回调。可以通过网页登录EasyIoT 平台进行Web 操作,如上所述,如创建并编辑产品,注册终端等。接口调用主要指获取EasyIoT平台管理信息和服务模式后,设定回调接口,然后通过发送指令对设备进行操作。接口调用包括设备管理接口和业务管理接口。接口回调用来接收终端上报数据和指令响应。值得说明的是,设定回调接口地址时,可使用“注册订阅地址”接口,把需要订阅的信息和回调地址注册到平台,平台在对应事件产生后会产生对应的POST 请求,将信息回调到指定的URL上,这也是其他数据处理服务器、手机APP(第三方)控制终端、获取终端信息的途径。

4 软件设计

4.1 Web操作创建产品

用户消息是实现物联网业务能力的消息、命令以及响应等的CoAP 码流规则。需要在EasyIoT 平台构建产品并定义好设备数据协议,包括传感器、设备消息以及控制命令和响应,然后设备侧根据CoAP 协议Payload 部分的报文约定来实现CoAP 码流的编解码[12]。文中传感器指温湿度传感器SHT10。设备消息主要指时间戳、温度、湿度等数据。终端信息包括设备序列号、设备名称、设备连接点、服务模式、经度、纬度等。终端序列号即所用终端通信模块的IMEI 号(该值必须保证正确,否则终端将无法正确上报数据消息和接收指令)。设备连接点选择“ctc-nanjing-iot-137”(位于南京的中国电信物联网开放平台)。

4.2 终端开发过程

完成产品创建后,平台将自动生成代码文件(注册设备时生成的头文件和设备C 文件),下载并进行必要的修改;然后在官网下载固件文件(包含API 和AT 固件,可以用keil 打开);随后将修改后的代码文件置于keil 编译环境的UserDefine 目录中;最后,将代码文件编译完成后直接加载到开发板上,实现终端硬件的快速开发。

4.3 固件开发流程

下载固件文件后,对照业务需求,开发步骤如下:首先是硬件初始化,实现外设驱动;然后是数据采集回调函数的实现;随后是指令响应回调函数的实现。如果数据采集的周期、采集函数的回调指针、指令响应函数指针等需要改变,则还要修改或配置指令[13]。

4.4 开机初始化

开机初始化包括传感器、通信模块、SIM 卡初始化。开机后,通信模块打开射频电路搜索信号,主动连接基站。然后是SIM 鉴权过程,MCU 从SIM 卡读取IMSI,经基站发送IMSI 到网络。网络判断该IMSI有效后进行鉴权,验证通过后将通信模块IMEI 发给基站,得到一个有效IP 地址[14]。

4.5 传感器数据采集

发送一组“传输启动”序列进行数据传输初始化;然后发送测量命令。“0000 0101”是相对湿度测量,“0000 0011”是相对温度测量[15]。测量时间大约320 ms;最后接收两个字节的测量数据和8 位CRC校验值。数据传输的准确性由CRC 校验来保证,确保能检测出错误的数据并删除。单次数据采集流程如图8 所示。

图8 单次数据采集流程图

4.6 主程序设计

文中通过CoAP 协议,采用大端序进行数据传输。它是基于UDP 的应用层协议,具有小巧精简的特点[16]。终端初始化之后,会建立EasyIoT 平台的连接。连接成功后周期性查询并解析EasyIoT 平台下发的数据包,如果有新的命令就执行;如果没有则执行传感器数据采集和发送任务。工作流程如图9 所示,文中对数据实时性和连续性的要求不高,所以设置数据采集周期是5 min,随后进入休眠,定时器采用RTC 实时时钟。

图9 主程序流程图

4.7 手机端连接软件Mqtt Buddy

文中尝试用一款国外的现成软件Mqtt Buddy 在手机端进行通信和显示。该软件虽然功能简单,但是没有广告,应用程序免费,支持物联网文字数据交换,测试和实验非常方便。下载安装该软件后,首先要连接服务器,设置好参数,包括EasyIoT 平台服务器地址、端口、用户名、密码等,连接成功后右上角连接标志会用蓝色点亮。随后新增设备,通信按钮选择“TEXT”,以文字的形式显示。传感器选择EasyIoT 平台设置的传感器名称和数据,其他按照默认操作即可。

5 测试结果

硬件设备连接完好并正常工作后,EasyIoT平台能正常接收到终端发来的温、湿度信息,并能在手机APP的软件Mqtt Buddy上显示,测量的温度是21.8 ℃,湿度是46.9%RH,手机截图如图10 所示。

图10 测试结果手机截图

6 结束语

该文设计的基于STM32G0 的NB-IoT 终端,充分利用中国电信EasyIoT 平台在线的可视化开发调试环境和具备强大的数据解析、多协议适配的能力引擎,以及现成的国外物联网开发测试软件Mqtt Buddy,仅仅需要修改必要的代码,固定程序化的软件设置,即能实现传感器信息在手机上远程显示,极大地降低了系统开发的复杂度,减少了研发周期和成本。同时,利用STM32G0 具有USB Type-C 接口的特性设计了UCPD 电路,节约了物料,方便了调试和后期升级。此外,可以根据实际工作对采集信息的不同需求,对文中终端进行简单修改,使用目标传感器替换温、湿度传感器,就能灵活应用在其他领域,也为NB-IoT 在其他监测领域的终端设计提供了新的思路。

猜你喜欢

调试终端联网
“身联网”等五则
《物联网技术》简介
《物联网技术》简介
复杂线束在双BCI耦合下的终端响应机理
电气仪表自动化安装与调试分析
X美术馆首届三年展:“终端〉_How Do We Begin?”
物联网下的智控萌宠屋
基于声波检测的地下防盗终端
基于航拍无人机的设计与调试
核电厂主给水系统调试