基于MicroPython的物联网热成像智能终端

2021-06-21 01:35刘海成王宗旭杨延洪
黑龙江工程学院学报 2021年3期
关键词:外设存储器脚本

刘海成,王宗旭,杨延洪

(1.黑龙江工程学院 电气与信息工程学院,哈尔滨 150050;2.浙江大华技术股份有限公司,杭州 310000;3. 哈尔滨市胸科医院,哈尔滨 150056)

由于2019-nCoV新冠病毒疫情的冲击,非接触式人体测温设备的需求激增。热成像技术的非接触式区域测温和全天候工作能力等优势使它成为人体体温检测场景下的最佳选择,其在工业、养殖、巡检等场景下也有非常多的应用,比如对生产机器关键部分的轴承测温和高压电网的异常巡检等,在结合物联网技术后可以将测得的信息发送到远端,实现远端监测。未来使用灵活的脚本语言来开发配置设备是嵌入式领域的重要发展方向[1-4]。笔者研究基于MicroPython的物联网热成像智能终端设备,将物联网技术和热成像相结合,实现通过网络获取非接触式区域测温终端设备的相关数据,并提供二次开发接口,即可根据需求设计适合自身项目的测温应用。

1 整体框架及硬件电路设计

文中给出的基于MicroPython的物联网热成像智能终端设备如图1所示。以微控制器为核心的嵌入式硬件平台作为物理硬件设备,使用ST的HAL外设库和RTOS内核搭建底层驱动框架,采用驱动设备注册机制,注册Pin、Serial、adc、dac、I2C、SPI、RTC、WDT等所需要的设备,将外设驱动与系统内核剥离,功能模块化,降低各模块之间的耦合性,提高模块内部的内聚性[5-9]。然后,跨平台移植MicroPython到Keil MDK5环境下,移植USB-Mass-Storage大容量存储类并挂载文件系统,用以支持MicroPython的离线脚本模式[10-11],实现设备的离线运行,并针对热成像传感器、网络模块等硬件外设进行MicroPython外设特定库的设计,使用MicroPython控制热成像传感器实现测温功能。

图1 整体软件框架结构

如图2所示,热成像智能终端由STM32F407ZGT6微控制器与片上外设、外围电路以及热成像传感器组成。微处理器的所有GPIO引出,方便外设拓展、外接LED和BEEP外设,组成声光报警模块。拓展FSMC以连接LCD液晶屏,还有SPI接口的Flash以提供脚本存储介质,USB Slave接口用作USB数据传输,外部PHY模块提供网络功能支持,外接串口Wifi模块实现无线联网,MLX90640-D55热成像模块挂载在I2C总线接口上,提供非接触测温功能支持[12-16]。

图2 嵌入式硬件平台结构

MLX90640-D55是一款红外热成像传感器,32像素×24像素,检测目标温度在-40~300 ℃,精度为±1 ℃,它可以精确地检测特定区域和温度范围内的目标物体,也可以应用到各种工业或智能控制的测温场景中[17]。热成像测温部分整体由电源和热成像传感器两部分组成,电源部分为传感器工作提供电能,传感器部分采集的数据通过I2C总线接口发送到主控芯片,完成数据采集工作,热成像模块硬件电路如图3所示。

图3 热成像模块电路

2 MicroPython标准库和USB-Mass-Storage库的匹配

MicroPython的主流应用方式是基于Linux环境下开发,通过编写Makefile,编译整个工程,链接生成.HEX、.bin、.dfu 3种可烧录文件,通过芯片的烧录模式将二进制文件烧录到片内Flash,芯片上电,即可运行[18]。而要将MicroPython标准库移植到Windows的Keil MDK5中,则需要对照Linux编译过程所生成的各种类型文件和Keil MDK5编译器所报出的错误与警告,相互佐证研究,将MicroPython的REPL(交互式解释器)挂载在底层驱动框架的Serial设备上,调试所移植的标准库,完成MicroPython标准库的移植。MicroPython的运行流程如图4所示。

图4 MircroPython运行流程

MicroPython有两种开发方式:交互式命令行和离线脚本运行模式。交互式命令行适合调试过程使用,而实际运行则使用离线脚本模式更稳定,离线脚本模式需要将脚本存储在本地的USB存储器中,存储器的物理介质选用SPI总线接口的Flash,在 Flash上挂载文件系统并虚拟成USB存储器,即可实现对脚本文件的存储。存储器模块组成框架如图5所示。

图5 存储器模块组成框架

STM32F407ZGT6对USB接口进行硬件支持,意法对STM32系列处理器提供了USB-OTG库支持。Python代码需要以文件格式存入,因此,需要实现USB-Mas-Storage大容量存储类。将STM32F4系列USB-OTG库添加USB-Mas-Storage源码,文件系统接口开放给usbd_storage_msd.c,即可使用USB总线对存储设备进行初始化和读写操作,实现处理器上电,即在PC端显示存储设备已连接,并对存储设备进行读写文件操作,完成USB存储器的设计。

3 热成像Sensor特定库设计及验证

标准库移植成功后开始特定库的设计,特定库就是对标准库的拓展,即进一步封装底层驱动,实现在MicroPython层面控制硬件外设。MicroPython的接口分为三大类:module,type和function。比如machine是module类型,machine.Pin是type类型,而Pin.value()就是function类型。经过研究,总结出一套MicroPython特定库注册规则,module的注册规则如下[19-20]:

STATIC const mp_rom_map_elem_t mp_module_test_globals_table[]

= {

{MP_ROM_QSTR(MP_QSTR___name__),

MP_ROM_QSTR(MP_QSTR_test)},

};

STATIC MP_DEFINE_CONST_DICT(mp_module_test_globals, mp_module_test_globals_table);

const mp_obj_module_t mp_module_test = {

.base = { &mp_type_module },

.globals = (mp_obj_dict_t*)&mp_module_test_globals,

};

首先定义全局字典对象,将后续的type和function添加其中,然后将test_globals_table注册到mp_module_test_gloabals里面,定义module类型。但是只注册module类型并不能实现任何功能,还需要在module下添加function,function的注册方法如下:

STATIC mp_obj_t test_test0()

{

printf("This is test0");

return mp_const_none;

}

STATIC const MP_DEFINE_CONST_FUN_OBJ_0(test_obj_test0, test_test0);

在全局对象字典注册块中添加function信息,然后使用脚本生成字符串对应的QSTR码添加到QSTR池中。

{ MP_ROM_QSTR(MP_QSTR_test0),MP_ROM_PTR(&test_obj_test0) },

QDEF(MP_QSTR_test_test0, (const byte*)"x4ax0a" "test_test0")

在type下添加带参function则有所不同,type类型在Python中是类,带参数的函数需要实例化1个对象出来,对应到C语言中需要有1个对应的分配空间创建对象的函数,来完成type下function的注册。

MicroPython外设特定库的设计就是将编写好的底层外设驱动接口按照MicroPython的注册规则添加到MicroPython中,即可实现使用MicroPython配置外设,针对热成像传感器驱动,封装构造函数,实现调用,即对MLX90640 Sensor初始化,并封装getMinTmp()、getMaxTmp()、display_Process()等功能函数,实现对测温范围内的最低温度、最高温度的获取并上传网络,以及将温度分布情况显示到LCD显示屏上。

MicroPython的离线脚本模式需要编写Python脚本,命名为main.py,通过USB传输协议将脚本写入嵌入式硬件平台的USB存储器中,处理器上电即可自动运行脚本。本研究测试过程编写Sensor模块功能代码,首先构造Sensor类,初始化Sensor设备,并获取检测范围内的最低温度和最高温度,刷新到LCD液晶屏上,在此过程中会一直获取温度分布图像,实时显示在LCD液晶屏上,同时验证MLX90640-D55的性能。离线脚本模式的验证效果如图6所示。

图6 离线脚本模式效果

4 结束语

文中所设计的基于MicroPython的物联网热成像智能终端设备使用STM32F407ZGT6及其外围传感器电路作为嵌入式硬件平台,以ST-HAL库为基础搭建底层驱动框架,在Keil MDK5环境中移植MicroPython的标准库并设计热成像Sensor特定库,实现使用脚本语言开发嵌入式设备和非接触式测温应用,并可以直接在Keil MDK5环境下对工程源码进行二次开发。本研究具有广泛的移植性,可为未来智慧工厂的柔性生产和物联网等提供新的解决方案。

猜你喜欢
外设存储器脚本
酒驾
静态随机存储器在轨自检算法
安奇奇与小cool 龙(第二回)
自动推送与网站匹配的脚本
存储器——安格尔(墨西哥)▲
外设天地行情
外设天地行情
外设天地行情
Buffalo推出四硬盘网络存储器 主打Soho一族
外设天地行情