收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
·【电赛源码合集】19电磁炮、17板球、15风力摆、13倒立摆
【电赛源码合集】
链接:百度网盘——19电磁炮.zip
提取码:wz1n
–来自百度网盘超级会员V3的分享
链接:百度网盘——17板球.zip
提取码:czjt
–来自百度网盘超级会员V3的分享
链接:百度网盘——15风力摆.zip
提取码:h30l
–来自百度网盘超级会员V3的分享
链接:百度网盘——13倒立摆.zip
提取码:y7fx
–来自百度网盘超级会员V3的分享
链接:百度网盘——(1994-2021)全国大学生电子设计竞赛历年真题
提取码:rv3l
–来自百度网盘超级会员V3的分享
智能送药小车(F题)
参赛队号:XXX
2021年11月7日
<致敬媛哥>
智能送药小车(F题)
摘 要
本设计以STM32单片机为主控模块,设计了主要包含k210机器视觉模块、Openmv机器视觉模块、蓝牙通信模块、压力检测模块、电机驱动和电源模块的智能送药小车控制系统。通过k210机器视觉模块将采集到的图片集进行本地训练,获得自己的数字检测模型。检测模型的精准度会随着训练图片集数目和训练时间不断提高。两轮的小车结构更有利于小车的转向,减小了小车所占空间。经测试,单个小车可以在20s内运送药品到指定的近端病房、中部病房、远端病房并返回到药房。60s内两个小车可以协同运送药品到同一指定的中部病房,到不同的远端病房送、取药品。两个小车性能分尺可靠,技术指标达到了设计要求。
关键词:STM32单片机;本地训练;蓝牙通讯;串级PID
1引言
该系统为了将200g药品送到指定病房,在视觉模块识别到病房号后,小车自动开始运送,根据走廊上的标识信息自动循迹,在到达指定药房并且卸载药品之后,小车自动返回。
为实现以上功能,我们将系统分为几个模块,分别有巡线模块,数字检测模块,药品检测模块,电机控制模块,蓝牙模块和供电模块。其中使用k210进行数字识别,在识别到数字之后,传输给STM32来控制电机旋转,在小车运行时k210持续检测,在路口处检测目标病房的数字,判断左右转。在到达目标病房并且已经卸载完药品之后,依然通过识别数字返回原位。两个小车之间通过蓝牙模块实现通信。
2系统方案
本系统主要由循迹模块、数字识别模块、药品检测模块、电机控制模块组成,下面分别论证这几个模块的选择。
2.1 循迹模块的论证与选择
方案一:使用openmv机器视觉模块。将摄像头拍摄到的图片转化为灰度图并划分为6部分,在不同区域分别确定色块位置,根据位置判定十字路口,丁字路口和直线。在直线运动阶段,通过直线色块中心点坐标与图像中心点坐标之差确定误差值,传输给下位机调节PID。
方案二:使用红外传感器。通过接收器接收红色电工胶带发出的红外线,根据接收器信号确定小车与路径相对位置,通过PID调节位置偏移量。红外传感器对于红色路径识别度较低,故舍弃改方案。
方案三:使用灰度传感器。使用高亮LED灯,通过接收管对不同强度反射光的强弱处理对比区分出路径,将接收器接收到的信号传入STM32中,通过PID调节位置偏移量。灰度传感器一手环境影响,所以舍弃该方案。
为保证识别精度,确保巡线的稳定性,所以选择方案一。
2.2 数字识别模块的论证与选择
方案一:使用k210机器视觉模块。通过配置环境以及制作数据集进行本地训练,随着数据集中数据量的增大,识别精度也随之升高。且k210环境配置简单,训练方便。
方案二:使用树莓派模块。通过配置环境,编写树莓派代码以及制作数据集进行训练,相较于k210数字识别,树莓派环境配置更繁琐,且安装繁琐。
组内成员系统学习过k210识别,所以选择方案一。
2.3 药品检测模块的论证与选择
方案一:使用光电传感器。通过光电传感器检测到药品已经放置在固定位置,将电平信号传递给STM32引脚实现相应动作。光电传感器仅能识别出是否放置,无法确定药品重量,精度较低,故舍弃该方案。
方案二:使用压力传感器。将药品放置在电阻式薄膜上,当检测出有200g物体,将电平信号传递给STM32引脚,控制小车的启动。相较于方案一,该方案识别精度更高。
为保证在准确识别到200g药品,所以选择方案二。
2.4 电机控制模块的论证与选择
方案一:使用直流电机控制。STM32输出PWM波,根据占空比控制电机转速。在调节角度时需要外接编码器,硬件连接更加繁琐。
方案二:使用编码电机控制。STM32通过L298N控制电机转动,带编码器的电机可以精准控制小车转动一定角度,相较于直流电机性能更加稳定,硬件连接更简洁,角度控制更精准。
为了让电机运行更准确,接线更简单,所以选择方案二。
3系统结构与电路设计
3.1智能送药小车结构设计
小车结构图如图1所示,小车尺寸为20cm20cm20cm,符合设计要求。小车采用两轮结构,在旋转90°时两轮可以有效降低控制难度,通过给两轮极性相反的PWM来减小旋转半径。
图1(a) 小车主视图
图1(b) 小车俯视图
3.2电路设计
3.2.1 系统总体框图与实物图
系统总体框图如图2所示,实物图如图3所示。系统主要由STM32F103单片机、K210视觉识别、灰度传感器、蓝牙模块、压力传感器、电机驱动等组成。
图2 系统总体框图
图3 实物图
3.2.2 电机控制电路原理图
电机控制系统电路
如图4所示,将L298N的输入引脚IN1,IN2连接单片机,输出引脚OUT1,OUT2连接电机的端子。通过改变PWM占空比来调节电机转速。
图4 电机控制系统电路
3.3程序的设计
程序流程图系统控制程序流程图,如图5所示。包含主程序流程和中断程序流程。
基于题目要求需要控制小车巡线和数字识别转向,小车巡线可以通过openmv采集当前位置和直线中心点的偏差,通过串口将偏差值输入单片机进行PID调节,单片机输出相应指令实现小车巡线运动。数字识别转向可以通过k210机器视觉模块识别图片中的数字种类和图片所在的坐标,并将识别信息传递给单片机。
图5 主程序流程图和中断程序流程图
4测试方案与测试结果
4.1测试方案
4.1.1 软件调试
Openmv和k210的视觉识别代码采用软件调试的方法,通过串口发送识别到的数字,在串口调试软件上直接打印出接收到的数字,确保代码的正确性。
4.1.2 硬件软件联调
在搭建好小车的硬件结构之后,安装Openmv,k210,STM32之后,上位机和下位机通信,上位机传输识别的数字和位置坐标,下位机进行相应动作。
4.2 测试条件
测试条件:黑色和红色电工胶带用于测试巡线和停止。数字图片用于测试数字识别。
4.3 测试结果及分析
4.3.1测试结果
单个小车运送药品到指定的近端病房并返回到药房测试结果如表1,表2,表3,表4,表5所示。
4.3.2结论
根据上述测试数据可以得出以下结论:
1、本次设计采用模块化思想,先后完成了数字检测、电机驱动、蓝牙通讯、巡线识别和电源电路等模块的设计,较好地完成了题目的基本要求,实现了单个小车运送药品到指定的病房。在此基础上,进一步完成了题目的发挥部分,即限定时间内两个小车协同运送药品到指定病房
2、影响电机驱动的稳定性和控制精度的主要因素是两电机电流分配不均匀,为有效减少电机转速不同影响,采用双电机驱动模块分别给两个电机供电,从而有效地提高了控制精度。
3、为保证识别精度,k210在训练时要保证数据集中图片包含多个角度,每个数据包含多张图片。随着数据集增大,识别精度提高。在训练过程中,从最初50张只有50%的精度到最后500张有80%的精度,数据识别更准确,系统更加稳定。
4.3.3视觉识别结果
图6 k210识别数字
图7 openmv循迹结果
附录1:电路原理图
附录2:源程序
收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
HTa-1715762230225)]
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!