杨 京,焦 亭,杨雅婷,樊冰芬,平家乐,廉宇凯
(山西大学自动化系,山西 太原 030006)
随着人民日益增长的美好生活需要的提高,社区服务业正处于蓬勃发展阶段。为老百姓衣食住行提供服务的零售行业,现在正面临着巨大的挑战,一方面要为社区顾客提供满意的服务,另一方面又要面对庞大的客流。无人超市作为一种新型的购物模式逐渐走进人们的生活,其目的正是为了解决零售行业目前所面临的问题,而要真正实现无人化,就需要结算装置能自动识别目标商品。
电子秤因其便捷、精准的特点,已经成功取代了传统的机械秤,并且在零售行业得到了广泛的使用。在原有电子秤的基础上加上微控制器以及显示器,就构成了目前常见的具有结算功能的电子秤,而这种电子秤的缺点就在于其需要人工输入代码,才能调用数据,并且花费顾客大量的时间去等待;同时因为装置的专业性,员工需要事先培训,才能正确使用。电子秤仅实现了结算的半自动化,并没有解决无人超市的根本问题。
因此,亟待开发具有自动识别功能的超市蔬果称重装置。本科研项目在传统电子秤的基础上,加入自动识别模块,利用摄像头采集蔬果信息,通过算法,得出结果,实现蔬果自动识别的功能,并在此基础上提高电子秤的可操作性。简单的操作模块,顾客只需按照提示进行操作,即可完成结算。这样既节省了顾客的宝贵时间,也为商家减少了人力的投入,真正实现了超市无人化。
该系统由软件和硬件两部分组成。
硬件包括核心控制器STM32F103ZET6 单片机、OV5640 摄像头、液晶显示屏、压力传感器及其HX711AD 转换模块等。第76 页图1 为电路原理图。摄像头图像采集模块实时采集当前待称重的蔬果图像信息,并将该信息传给STM32 单片机;运行于STM32 单片机上的AI 图像识别程序通过分析蔬果图像信息以识别当前待称重蔬果的种类(该步骤为本项目实施的重点内容);然后称重模块将重量数据传给STM32 单片机,STM32 单片机再根据蔬果的种类与重量,计算出当前待称重蔬果的价格,在显示模块进行显示,并通过打印模块打印出相应的价格标签。软件部分依据上述自动识别系统编写。
单片机作为本科研项目的核心部件,选用STM32F 系列产品,属于中低端的32 位ARM 微控制器,为高性能、低成本、低功耗的嵌入式应用专门设计,十分适合智能系统的研发。其内核为ARM32 位Cortex-M3 CPU,最高72 MHz 工作频率,具有高可靠计算速度,为实现自动识别算法提供了可靠的硬件基础。STM32F103ZET6 单片机采用144引脚的设计,其中GPIO 口多达112 个,提供多输入多输出端口,方便数个模块同时接入。除了模拟输入,所有端口都可以被映射到16 个外部中断向量, 并且允许5 V 以内的端口输入电压。STM32F103ZET6 单片机具有丰富的通信接口:USART 接口(摄像头图像采集模块使用)、IIC 接口(称重模块使用)、SPI 接口(显示模块与网络连接模块使用) 以及其他接口等[1]。
图1 电路原理图
摄像头图像采集模块是单片机的眼睛,必须保证其采集图像的清晰度,同时也要满足低功耗、体积小、便于连接等特点。OV5640 是一款CMOS 类型数字图像传感器,它具有体积小,工作电压低等特点,最大像素也可达到30万(640×480 分辨率),适合作为本项目的图像采集模块。输出图像数据采用VGA 时序,支持YUV(422/420)、YCbCr422 以及RGB565 数据格式,可以进行伽马曲线、白平衡、饱和度、色度等基础处理,补偿所采集的图像,为自动识别算法提供了辨识度高的图像,提高了结果的准确度[2]。
图2 为OV5640 图像传感器与单片机引脚连接示意图,其中共有8 条并行数据线,分别接单片机的PB8~PB15;VDD 接3V3;GND 接地;其余为控制信号线,其中SIO_C 为SCCB 接口的控制时钟线;SIO_D 为SCCB 接口的串行数据输入端;VSYN为帧同步信号(输出信号) 端;HREF 为行同步信号(输出信号) 端;PCLK 为像素时钟(输出信号)端;XCLCK 为时钟信号(输入信号) 端;RRST 为读指针复位信号端;WRST 为写指针复位信号端;OE 为输出数据使能端;WEN 与HREF 共同控制FIFO 的WE 引脚,当WEN 与HREF 同时为高电平时,WE 为低电平,OV5640 可向FIFO 写入数据。
图2 摄像头图像采集模块接口图
称重模块采用HX711 AD,该模块将压力传感器检测到的重量转换成数字信号传输给单片机,保留了传统电子秤的精确度。HX711 AD 模块为24 位高精度模块,带有放大器功能,IO 口时序简单,类似于I2C 接口,方便使用,故采用此模块来替代放大器,并进行数模转换[3]。
压力传感器与HX711AD 共有4 根信号线连接,用来采集传感器应压片的差压信号,经模数转化,传递至单片机。单片机与HX711AD 连接,其中VCC 用来供5 V 电压,GND 接地,DT 为串口数据输出线,SCK 为串口时钟输入。其连接见图3。
图3 称重模块接口图
显示模块作为信息输出的终端,将自动识别算法和最终要显示的信息通过可观的形式,显示在屏幕上,方便用户获取结果。ILI9341 是一种薄膜晶体管(Thin Film Transistor,TFT) 液晶显示器,具有26万色的240RGB×320 像素显示解决方案。ILI9341 支持并行8/9/16/18 位数据总线MCU 接口,6/16/18 位数据总线RGB 接口和3/4 线串行外围接口(SPI)。窗口地址功能内部GRAM 可以制定移动图像区域。选择性更新指定的窗口区域,这样可将所选的静止区域和移动区域同时显示。在设计重量显示程序时,只需要将商品的重量信息设为移动区域,其余为静止区域,减少屏幕的刷新频率,大大降低系统消耗功率[4-6]。
ILI9341 与单片机连接见第77 页图4。其中DB0~DB15 为并行数据输入/输出端;有5 条GND地线;VCI 接3V3 电源;IOVCC 为数字电路电源(1.65 ~3.3 V);CS_MAIN 接LCD_CS,为 片 选 端(低有效);RS 接LCD_RS,为命令/数据输入端(0:命令,1:数据);WR 接LCD_WR,可以向LCD 写入数据控制端;RD 接LCD_RD,可以从LCD 读出数据控制端;LCD_RESET 接LCDRESET为复位管脚(低有效);其中3 个NC 口悬空,不接线。同时该屏幕有触摸控屏功能,因为本项目没有用到,所以不在此赘述。
图4 显示模块连接图
网络模块是自动识别算法实现的核心,将采集的图像信息上传至百度云智能识别平台,通过AI算法,得到一系列结果并下传至单片机,单片机便可做后续处理。W5500 是一种简单易用的硬件化以太网接入方案,可以使单片机实现与互联网的连接。硬件协议栈的方式可以建立快速高效的连接,简化产品开发方案,降低编程的工作量。它代替了以往的单片机来处理这些中断请求,单片机只负责向用户的应用层数据,其他层全部由外围WIZnet芯片完成。这种工作方式做了几乎所有的TCP/IP协议工作,大大减少了单片机的中断次数,使单片机可专注于其他工作。而且硬件化的电路处理协议会更加快速、稳定。对于有限的内存来说,这套方案的代码量仅有10 KB 左右,主要是完成对Socket的编程以及寄存器的调用,远小于软件协议方案。同时硬件化的逻辑门电路弥补了网络协议安全性不足的短板,网络攻击和病毒对它无效,免受安全问题的困扰。
用户将商品放置在压力传感器上,同时传感器将商品重量通过HX711 数模转换并发送至单片机;摄像头采集模块自主采集商品图像并将商品图片信息发送至单片机。单片机通过W5500 连接互联网,并与百度AI 智能识别平台实现互联。用户在按下“结算”按键后,单片机将图像信息上传到百度AI智能识别平台,经过云计算,得到商品信息,由于得到结果是该图像的一系列识别结果及其置信度,单片机自动选取置信度最高的结果作为所得商品信息,调用事先录入的商品单价,通过函数计算得到最终的结果,即商品品名、单价和总价(见第78 页图5)。
如果用户发现所识别商品信息与实际不符,可以选择重新识别。用户需要按下“重新识别”按键,液晶屏显示“请调整商品角度并进行重新识别”,待重新调整结束,用户继续结算,系统便可重新识别产品。
若摄像头、传感器、网线未插好,液晶屏会显示“设备未准备好,请先检查设备”。待用户重新接线后,系统自动重启并初始化,重新检测接线状态,若接线信号无误,便可正常运行。
图5 程序流程图
本项目最核心的技术是运用物联网,将单片机与互联网连接,实现自主识别功能。这是未来自动化技术发展的大趋势,同时百度云智能识别平台已具备成熟的技术,可以供开发者调用,又能大大降低编程的难度,是极好的实施方案。
在调试中,发现在没有连接摄像头和压力传感器时,LCD 液晶屏会出现白屏的情况,这是因为程序在没有传感器信号传回时,程序不能自主跳到下一步。所以在原有程序的基础上添加了检测程序,当单片机检测到没有信号后,会提示用户“设备未准备就绪”,提醒用户检查接线是否正确,待用户重新接线后,便可继续使用。
考虑到在特殊情况时没有网络,自动识别系统将无法使用,为了使电子秤继续使用,可以选择将其调至传统工作模式,即需要人工输入商品信息该称重装置才能正常使用。所以添加传统超市电子秤子程序,显示并打印商品的信息,保证了商户的正常运作。
该称重装置结构合理,既实现了自动识别功能,同时也兼容了传统电子秤的性能,方便用户使用,以实现无人超市为目标,体现了较强的过渡性,充分考虑目前市场需求,具有良好的应用前景和市场推广价值。
在接下来的研究中,考虑构建自己的图像识别系统,以便在离线的情况下也可以具有自动识别功能,进一步改善系统性能。