基于STM32的驿站取货小车系统设计

发表时间:2021/8/9   来源:《中国建设信息化》2021年7期   作者:连昕辉
[导读] 为了解决当今快递行业在快递过程中出现的快递错分,误分及丢件等问题,

        连昕辉
        浙江迈思智能科技有限公司
        摘要:为了解决当今快递行业在快递过程中出现的快递错分,误分及丢件等问题,本着提高快递分拣正确率、取货效率,改善快递行业的形式的要求,本项目设计了一款将视觉识别技术与取货系统相结合的基于STM32的驿站取货小车。
        本设计采用的是STM32F103C8T6单片机作为主控模块,视觉识别系统采用带FIFO的OV7670作为信号输入,实现数字识别的功能。
        关键词:视觉识别;STM32;驿站取货
一、引言
        随着互联网技术的发展,网购大规模增加,快递的数量也随之增加,物流配送的时效性和准确性主要取决于物流货运中的分拣搬运环节。驿站取货小车设计作为社区物流业的出发口,在社会中一旦形成了这种闭环的生态物流圈,并将各种增值服务连接到生态圈,便会提高快递服务的效率,也会增强用户的粘性。
二、控制系统设计
(一)系统方案
        采用STM32F103C8T6作为主控芯片控制,以OV7670作为信号输入摄像头,其驱动方式为PWM驱动技术。取货小车要求在短时间内准确快速的找到目标货物。加入按键,输入取货码,利用光的反射造成AD采样值不同驱动电机正反转。
(二)系统工作原理
1.系统的工作原理
        光线反射到光敏电阻上,可以通过检测光敏电阻的阻值来判断小车是否在黑色区域内。离黑色区域越近,光吸收的越多,反射的越少,光敏电阻阻值越大,分压也就越大,反之,离黑色区域越远,分压越小,电压大小控制电机,进而控制小车方向。
2.系统的结构
        (1)主机控制模块
        主控芯片采用STM32f103c8t6,通过软件程序控制显示模块、电机驱动模块及视觉识别模块。
        (2)电机驱动模块
        通过两个电机的正反转开控制小车的方向及行驶,达到符合程序所要求的目的。
        (3)视觉识别模块
        通过ov7670完成图像的获取,再通过程序及stm32实现数字识别,最终根据已识别的数字准确找到目标快件。
三、硬件电路设计
(一)主控模块的选择
        单片机选型应尽可能要符合成本、性能、控制精度、工作电压、功耗等要求,STM32f103的芯片内核为ARM32位Cortex-M3 CPU,最高工作频率为72MHz,1.25DMIPS/MHz。芯片上集成32-512KB的Flash存储器和6-64KB的SRAM存储器。
(二)电机驱动模块
        电机驱动模块的作用是在小车行驶过程中,通过控制电机的正反转,完成小车在方向上的变化。对于电机,要求电机转速上限高。
        本设计采用的是强磁直流减速电机,直流减速电机即齿轮减速电机,是在普通直流电机的基础上,加上配套齿轮减速箱。
(三)ov7670模块电路
        OV7670带FIFO模块增加了一个FIFO(先进先出)存储芯片,同样包含30w像素的CMOS图像感光芯片,FIFO的采用便捷了数据的采集,这样可减小甚至不用关心CMOS的控制以及时序关系,就能够实现图像的采集。
(四)电源模块电路
        LM1117是一个低压差电压调节器系列。其压差在1.2V输出,负载电流为800mA时为1.2V。LM1117-33有可调电压的版本,另外还有5个固定电压输出的型号。输入电压为7V,输出电压为5V,输入与输出电压相差2V,达到稳压。


四、软件设计
        系统的软件设计通过keiluVision5软件实现,在使用该软件的过程中,可以使用C语言或者汇编语言进行编程,编译后生成以.hex为后缀名的程序文件。在程序编写完成并检查完语法错误之后,可以生成编译调试器以方便观看程序运行过程中的改变,更好的运行与发现错误。
(一)系统主程序设计
        主程序循环模块中的程序执行优先级应是最低的。主程序的设计首先应包含单片机初始化,以及开机过程中所必要的实施模块。其次,单片机应该具有循环执行的模块,这些模块即是在单片机运行过程中保持单片机一直运行的模块。在程序设计中,最重要的操作是确定程序流程框图。
        主程序部分包括系统的初始化、等待取货码、循迹、识别、完成取货、最后返回。
(二)数字识别子程序设计
        数字识别实现的基本过程是:灰度处理、二值化、图像分割、识别。
1.灰度处理
        灰度处理的目的是将彩色图像转化成为灰度图像。彩色图像中的每个像素的颜色由R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围,而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。
2.识别
        利用代码将原始图像进行上下左右的切割,使其具有与模板的数字图像同样的大小,之后将切割后的图片的对应坐标像素点与其余的模板的像素点相减(像素点一般挑选十个),求出所有差的绝对值之和。
(三)按键模块子程序设计
        按键所要实现的功能有:计数、确认、清除、启动。首先进行I/O口初始化,依次在按键上按下取货码,每按下一位,若输入正确,便储存,若错误,则可以重新输入。每按一轮取货码便进行复位,已达到清零的目的。
(四)电机驱动子程序设计
        自动取货小车的启动以及方向改变均由电机正反转控制,上电时电机启动,电机均正转时小车匀速前进,电机分别正反转时,小车改变方向,向左右转弯,电机均反转时,小车倒退。在岔路口转弯处和取货处,利用AD采样值不同,设计两种不同时间的停留,并在每次返回到出发点时,所有变量均初始化。
五、仿真与调试
(一)实物展示
        系统主要有六个部分组成:电源模块、ov7670模块、电机驱动模块、显示模块、按键模块以及主控模块这六个模块组成,在系统的搭建上,采用模块分别进行的方式在万用板上搭建电路。四节干电池放在电池盒内,与此同时引出两根导线,与电路板相接,为整个系统提供电流。
(二)实验效果
1.循迹过程
        用黑胶带模拟取货路径,在岔路口由于黑胶带反射光亮不同,AD采样值发生变化,当采样值大时,说明小车位于黑胶带之上,当采样值小时,说明小车位于岔口空白处,会有大约50ms短暂的停顿,之后按照按键输入的取货码,由单片机控制,在指定取货位停留5秒。之后单片机控制,电机反转原路返回。
2.显示模块
        在按键输入取货码后,LCD1602显示出相应的数字,用以查证输入是否正确,提高正确率,并且在取货数字识别的过程中ov7670模块识别数字之后也会显示相应数字。
六、结论
        本设计采用STM32作为主控芯片,利用ov7670进行数字识别、将LCD1602作为显示屏,通过光的反射影响AD采样值不同这一原理完成循迹。在按键输入取货码后,识别数字,按照程序设定,小车到达指定取货位置,停留5秒进行取件并由ov7670摄像头进行扫描确认快递无误后,再同样的循迹原理按照原路返回。
参考文献
        [1]倪爽,蔡文杰,张燕,谢鹏飞.基于STM32的遥控小车[J].电脑知识与技术,2021,17(07):228-230.
        [2]刘雪飞,李勇.基于STM32单片机的智能小车控制系统[J].电子世界,2020(19):164-165.
        [3]秦新林,陈伯亨.单片机的应用——STM32智能小车[J].农家参谋,2019(19):194.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: