大家好,我是张巧龙,今天给大家继续带来电赛F题的分享:智能送药小车。

今天这个车也获得了全国一等奖,这次获奖队伍和上次获奖队伍,都是我赛前指导的学生做的。

上次的文章链接:做个全国一等奖的小车,其实不难(F题:智能送药小车方案分享)

赛前我带了比较多学生专门做控制题,我带的学生还有2组获得了全国二等奖,由于获奖规则的名额限制,每个学校最多2个国一,2个国二。

我们学校今年在F题取得了满额指标,其实我觉得2个国二获奖队伍也可以拿国一,奈何规则限制。

当然,组委会定的规则非常合理,必须让更多学校参与并获奖。

闲话不多说,先看展示视频:

01 

 

方案设计

通过分析赛题可知,单个智能送药小车首先在药房处识别病房号,等待装载药品后,开始自动运送。

在运送过程中,通过识别地面上的红实线和病房号,实现自动寻径,将药品送到指定病房,并能够自动返回到药房。两车协同送药需要两车相互配合完成运送。

经过上述分析,将系统分为4个基本部分,包括单片机、摄像头处理模块、载物检测模块和无线通信模块,系统总体设计框图如图所示。

STM32F103RCT6单片来做控制,OpenMV来做巡线,K210用来识别数字,选择ZigBee模块做双车通信。

8a29bdb335b80a752a905ab58cda788f.png

图1  整体设计结构图

02 

 

理论分析与计算

2.1  数字识别算法

数字识别算法通过K210的模型训练来实现,模型训练过程如图3-1所示。准备好需要训练的数据集后,只需上传到Maixhub即可快速训练出模型。

本作品采用目标检测方法和Mx-yolov3模型训练,首先使用K210采集数字照片,按照数字“1”到“8”进行数据集标注和打包后,上传数据集并创建训练任务。

训练结束后,将训练结果文件拷贝至SD卡,插入开发板后上电即可运行。

K210识别数字卡片的结果通过串口发送给单片机,单片机接收并执行相应操作。

583f9b1cd6dfe4d6654be3a0c37c285a.png

图2 模型训练过程

2.2  自动寻径算法

自动寻径算法通过OpenMV的像素颜色统计来实现,寻径示意图如图2所示。

首先从OpenMV的视野中划分出七个相连的矩形区域,然后在这七个区域内依次进行颜色统计,如果某个区域内的颜色阈值在红色阈值范围内,则认为该区域内包含红实线。


将包含红实线的区域标记为“1”,其余标记为“0”,以二进制数的方式记录数值并通过串口发送给单片机。

单片机通过标记信息判断小车相对于红实线的偏移程度,并利用PID算法精确控制小车的转向角,及时调整小车的前进方向,即可完成自动寻径。

93f7c501f3231708b248c48a2157ff02.png

图2   寻径示意图(OpenMV视野)

单片机通过红实线的标记信息对小车的转向进行调整的具体操作如下:

(1)若第一个区域标记了“1”,则控制小车左转0.5度;

(2)若第二个区域标记了“1”,则控制小车左转0.4度;

(3)若第三个区域标记了“1”,则控制小车左转0.3度;

(4)若第五个区域标记了“1”,则控制小车右转0.3度;

(5)若第六个区域标记了“1”,则控制小车右转0.4度;

(6)若第七个区域标记了“1”,则控制小车右转0.5度。

(7)若第二、第五两个区域,或第二、第六两个区域,或第三、第五两个区域,或第三、第六两个区域同时标记了“1”,则认为小车到达十字路口,控制小车左转或右转90度。

2.3  PID算法

小车的速度和转向控制采用PID算法。PID算法是按照系统偏差的比例(P)、积分(I)和微分(D)进行控制的一种闭环控制算法,它具有原理简单,易于实现和适用面广等优点。PID算法原理如图3所示。

eb43d27e85c258cc9bea4a77f3f35fb4.png

图3   PID算法框图

在实际的软件控制中,使用的是离散化的PID算法表达式:

cc43d6223ef8f810e0791f6ed955ec8f.png

在不同的运用场景中,只需对式(1)选择相应的组合并对、和三个系数进行调节即可实现相应的PID控制。

在智能送药小车系统的PID控制中:

(1)小车的速度控制使用PI控制,其入口参数为电机编码器脉冲数测量值和电机编码器脉冲数理论值;

(2)小车的转向角控制使用PD控制,其入口参数为小车转向角测量值和小车转向角理论值。

03 

 

电路与程序设计

3.1 电路方案设计

根据题目要求,设计了系统控制板,主要包括STM32F103RCT6单片机、电源、降压模块、ZigBee、OLED、MPU6050模块、红外传感器、电机驱动、编码器、舵机、OpenMV、K210等模块的接线端口。

实现了用STM32F103RCT6单片机控制各个模块运行的功能,电路方案设计框图如图4所示。

304eadcbeaffca7d7d724608611b719d.png

图4 电路结构图

3.2 程序设计

小车1需完成单个小车运送药品和两车协同运送药品的任务,程序设计流程图见:

0da4d6c4a63829a7c9ba5ba14940ab07.png

图5  小车1程序设计流程图

4.2  小车2的程序设计

小车2需完成两车协同运送药品中送药到同一中部病房和去不同远端病房取药的任务,程序设计流程图见:

d268fe27a24a7784681444dd3bea53e0.png

图6  小车2程序设计流程图

05 

 

最后

由于篇幅有限,过多的细节在此不放了,本篇F题的设计报告以及代码,都已经放到知识星球了星球的朋友们可以直接获取下载链接。

未加入星球的同学也可以获取部分代码和设计报告,可以添加微信:

d41794bf69df1732619e12829ce7b6ec.png

还没加入星球的同学可以加入,第一期开放100人,现在已经有50人加入。

顺带着推荐下知识星球,之前发了朋友圈想做个付费平台,至于为什么要做?

1. 答疑。

很多朋友都在微信上给我留言咨询一些问题,一般我都会回复,但看到一些朋友提问表达的方式:

我想学单片机该从哪里下手?

我想参加比赛,该如何学习?

我想转行硬件,但软件也不想丢,该咋办?

这些问题太大了,真的无法回答。

其次,很多都是重复性的问题,反复回答,真的累死人。

大家可能不知道我微信总共加了多少人,三个微信号,共1.7w人。可想而知,光回答问题我每天的工作量都很大了。

这也就导致为什么很多消息回复不及时,我也有自己的工作,不可能时时刻刻守着微信给大家回消息。

也正因为回复消息不及时,许多朋友会觉得我不礼貌,直接就删除好友,我也哭笑不得。

这就可以引出第二点:沉淀知识。

2. 知识星球是什么?

知识星球是一个付费加入的社群,可以直接用小程序查看,也可以下载APP,有问答、打卡、作业、文件、图片等功能。容易用来做知识沉淀,

3. 为什么不做微信群,QQ群?

微信群的缺点大家都知道,信息容易遗漏、分享的文件容易失效,无法积累。知识星球则弥补了这些缺点。而且微信群、QQ群加入的人形形色色,发广告的,闲聊的,乱七八糟的一大堆。

知识星球对比微信社群的好处是,它更像一个社区,每天更新的内容更容易沉淀且搜索,且价值度更高。

。。。。。。

4. 搭建一个圈子。

想做一个电子相关的圈子,付费加入的朋友,肯定都是想来提升自己,付费之后肯定会更珍惜,并且更注重知识方便的学习。

希望能在圈子里让更多的球友建立联系,内推、招聘、工作经验分享,对于学生,学校保研、比赛、等等。

同时也会邀请一些大厂的工程师、高校老师、优秀的学长学姐加入星球。

。。。

星球刚上线,现在价格199元/年,未毕业的学生,提供学信网截图,99元/年,因为精力有限,可以维护的人数也是有限的,所以不会开放太多人。

价格贵?也就一两毛一天。

不贵?也需要199块钱。

第一期开放100人,现在已经有50人加入。

就看大家如何去看待。

5. 知识星球介绍

136dfa1ce5cc6941e7f253ffe8ab0911.png

bb9fc9a4715253b472b624876daa4da1.png

想要加入的同学,可以加微信:great_xiaolong,私聊,备注【知识星球


1f007bd23ec92bd98c94d95d7f912e58.png

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐