陈朋谊,房宇佳,甘伟鹏,邵万鹏,王 燕,夏思雨,阮伟华,王海鹏
(三江学院 电子信息工程学院,江苏 南京210012)
近年来随着人工智能的火热,在图像识别的方向也有了长足的进步,有越来越多的成熟物体检测和识别的模型。而对于微控制器这种级别的芯片如果想要实现复杂的识别和大量的计算,目前来说很难实现,但是通过图像无线传输的方法将微控制器和计算能力强大的设备结合起来,即由本地采集图像,然后通过无线Wi-Fi将图像数据传输给计算机[1],在计算机端进行复杂的识别运算算法,再将算法处理结果通过无线网络传输到微控制器,最后再由微控制器做出决策。在这种拓扑结构中,图像的传输具有极其重要的作用:第一,图像的传输技术能够采集具有高清晰度的图像,这样可以提高识别的准确度;第二,更快的传输速度可以使计算终端接收帧率更高的图像,提升识别速度和实时性。所以图像传输和人工智能的结合在未来将大有潜力。
在无人机中经常可以看到图像传输(简称“图传”)系统的身影[2],而图传系统在安防系统中的地位更是举足轻重。在移动的嵌入式设备上很多时候也需要将图像传输到其他终端上,以便观察或者完成其他的操作[3-10],本文提出并设计一种基于Wi-Fi无线传输的低成本图传系统。
图1 所示为整个原型系统框图,主要包括两端,是图像的采集和发送端,其中包含摄像头模块(OV2640),负责图像的采集和压缩。微控制MCU(STM32F407ZGT6)用来接收摄像头模块发送过来的数据[6],并将数据通过SPI接口传输到Wi-Fi模块。Wi-Fi模块(ALK8266)转发数据到图像的接收端,也可转发另一端消息MCU,另一端图像接收端用来查看Wi-Fi发送过来的图像,这一端是终端接收设备,可以是一台电脑或者手机,并运行上位机软件或者浏览器。
图1 基于STM32微控制器的Wi-Fi图传原型系统框图
整个系统采用由下而上开发的顺序,如图2所示。软件开发总体分成四层结构,首先要确定最底层的硬件接口,保证所有接口合理分配并和MCU资源接口匹配,例如Wi-Fi模块需要串行外设接口(SPI)方式通信,不可以随意分配端口。上一层需要完成底层驱动的编写,初始化所有外设,使MCU控制所有外设模块。再上一层就需要完成2个部分的内容,一个是对于Wi-Fi模块中TCP/IP协议栈配置[7],另一个是对于图像数据的采集和存储。顶层为应用层,主要负责完成发送图像到其他终端,由于需要发送图像到浏览器,所以包含WEB服务器的实现。
图2 基于STM32微控制器的图传原型系统软件开发顺序框图
首先对核心板通电,烧录测试代码,观察到核心板上绿色LED灯进行闪烁。实物效果如图3所示,通过串口查看获取到的图像数据。最终检测Wi-Fi模块,通电启动后查看Wi-Fi模块状态指示灯是否正常,供电电压是否达到3.3V,通过连接热点进行数据的发送,串口打印接收到的数据。
图3 图传系统整体实物图
连接好各模块后,就可以将图像数据通过TCP服务器发送到连接上的客户端。图像发送的格式为JPEG格式,这是一种压缩后的图像格式,JPEG图像以二进制打开会看到编码是以0XFF、0XD8开头,以0XFF、0XD9结尾,通过编写函数来查找特定开头和结尾的十六进制数,就可以得到写入SRAM中一幅完整JPEG图像的开头地址和数据的长度,特别需要注意的是在向浏览器每次发送图片之前都要加入如下帧头:
" --camera "
"Content-Type:image/jpeg "
"Content-Length:"+ "jpeg_data_len"+" "
需要注意参数“jpeg_data_len”是图片大小,发送是需要将整型转化为字符串,这样浏览器就可以一直显示视频流直到关闭浏览器。图像的发送核心的代码如图4所示:
图4 图像的发送核心的代码截图
搭建好原型系统之后,运行调试程序,摄像头会采集图像信息,传输到STM32微控制器开发平台中进行处理,调用图像发送函数,经过Wi-Fi传输到上位机和浏览器中,打开图像接收上位机软件,输入代码中设置的IP地址和端口号,然后点击启动。实验现象如图5所示,上位机程序接收图像。浏览器接收到的图像如图6所示。
图5 上位机接收图像
图6 浏览器接收到的图像
本论文设计实现了一套基于微控制器的低成本无线图传系统,可通过Wi-Fi技术实现较高帧率的无线图像传输,利用成本较低、在资源有限的微控制器上实现摄像头数据的采集和发送,Wi-Fi模块可以让嵌入式设备连接网络,并且可以通过浏览器直接查看视频,整套系统成本约为150元。传输的速度超过许多同类原型系统,为后来此类图传问题提供了一种可行的解决思路。