唐 军,杜秀君
(1.宜宾职业技术学院 电子信息与人工智能学院,四川 宜宾 644003;2.宜宾职业技术学院 科技处,四川 宜宾 644003)
Huawei LiteOS发布于2015年5月的华为网络大会上,是面向IoT领域构建的轻量级物联网操作系统[1]。本设计利用LiteOS系统,通过NB-IOT技术完成与华为IOTDA物联网平台的对接,可以将数据发送到该平台,也可以从该平台下发指令,控制设备侧。本设计来源于横向课题,要求基于NB-IOT技术,将温度、光照度、数字量、开关量输入数据传入IOTDA平台,并能依据IOTDA平台指令,控制继电器输出。
按项目需求,本设计需要在采集完外界的温度、光照度数据与数字开关量数据后,对数据进行上传处理,并能对外部的一些数字IO量进行开关的控制。为方便现场的数据调试,设计采用串口触摸屏进行显示。数据采集完成后,通过NB-IOT模块,系统将数据传送到华为的IDOA平台,进行远程处理。
图1 系统架构设计
系统由STM32小系统、高速数字量输入电平转换、光照度数据采集、PT100温度采集模块、开关量输出、触摸屏通信接口、NB-IOT模块通信接口设计构成。
外部数据的开关量,其电平标准为5 V,而STM32的端口为3.3 V,故需要设计一个高速数字量输入电平转换模块完成电平转换功能,实现电平转换与端口保护。本设计采用光耦6N137实现此功能。
系统的整体设计参考了小熊派开发板的设计。该开发板包含采集光照度的E53智慧路灯模块。本设计直接采用该模块,连接与光照度模块的接口。光照度模块采用IIC接口进行通信。
PT100采集外部的温度信号,经过电桥电路后,得到与温度相关的信号,然后将电压值送入仪表放大,放大后的电压信号送入STM32,利用STM32内部自带的ADC模块进行模数转换,并利用查表法完成温度信号的换算,从而得到具体的温度信号[2]。设计出的具体电路,如图2所示。
图2 PT100温度采集模块设计
按设计要求,系统需要能够对华为物联网平台IOTDA下发的指令进行解析,用以控制继电器。
本设计在STM32上实现了华为的LiteOS系统运行。该系统可以很方便地与华为IOTDA平台实现连接。本设计,一是在MDK平台上,完成了LiteOS的迁移;二是单独为每一个电路模块标志了驱动程序,通过触摸屏完成了数据的显示;三是利用NB-IOT将所采集到的数据上报到华为IOTDA平台。在云端,本设计也对应开发了相应的程序用以响应和控制设备侧。
Huawei LiteOS是华为面向IoT领域构建的轻量级物联网操作系统[3],系统可广泛应用于智能家居、个人穿戴、车联网、城市公共服务、制造业等领域[4]。
LiteOS系统迁移之前,需要在STM32裸机上完成对应外设的驱动开发后开始进行迁移。系统迁移的步骤主要包括增加新移植开发板的目录、适配新开发板的外设驱动和HAL库配置文件、配置系统时钟、适配串口初始化文件、修改链接脚本和适配编译配置等步骤。
在实现LiteOS成功移植后,通过加入在STM32裸机上已经调试运行成功的外设程序,就可以通过NB-IOT模块与云端IOTDA平台进行通信。系统的整体功能架构如图3所示。
图3 系统的整体功能架构
系统上电后,首先初始化LiteOS内核,然后在LiteOS中创建STM32硬件初始化任务,对STM32时钟、串口、ADC、IIC的进行配置,再创建数据采集和数据上报任务,将采集到的各种数据,利用NB-IOT上传到IOTDA平台。
IOTDA云测平台中对系统模型进行了定义,在模型中一共定义了4个服务,即Sensor,LED,Temperature和In_put,分别对应这个设备侧上传到云侧的光强度数据、LED的开关指令、PT100采集到的温度数据和开关量的状态,通过这4个服务,就可以实时把测量到的数据上传到IOTDA平台,并可以由LED指令控制设备侧的LED亮灭。
本文利用华为的LiteOS技术设计了远程设备的管理平台,可以实现光照度、温度、数字量IO的数据上报,也可以在云侧通过SET_LED指令实现对设备侧的控制。NB-IOT在LiteOS的控制下,实时向IOTDA平台传递数据,在IOTDA平台,通过设置Set_LED的状态为ON,可以点亮LED,完成对开关量的控制。