2021电赛F题国一作品 - 嘉立创EDA开源硬件平台

编辑器版本 ×
标准版 Standard

1、简单易用,可快速上手

2、流畅支持300个器件或1000个焊盘以下的设计规模

3、支持简单的电路仿真

4、面向学生、老师、创客

专业版 professional

1、全新的交互和界面

2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计

3、更严谨的设计约束,更规范的流程

4、面向企业、更专业的用户

标准版 2021电赛F题国一作品

  • 1.7w
  • 4
  • 38

简介:2021电赛F题国一作品

开源协议: Public Domain

(未经作者授权,禁止转载)

创建时间: 2021-12-12 22:12:06
更新时间: 2024-04-25 15:37:40
描述

1.前言

本项目为2021年电赛F题智能送药小车。

2.团队介绍

三名成员为来自电信、测控等专业三名大四学生。

3.项目分析

任务如图

9SNxLsFFqxBEyrpf0oZUFV08mU1S5Sgu5maN1NZb.png

基础项要求

Dw2vTfGYC4NELbkaT5EqcKhfVwQgbBcA1dUota88.png

4JdLInyfGqfzBlU7aCb6aOsM4WzKCgp3UNlMx6jl.png

基础项分析:首先基础项是单个小车,小车不能使用麦轮或者履带,尺寸有要求,我们的方案是两主动轮加一万向轮支撑,尺寸尽可能紧凑;循线,这里我们使用了带MCU 的红外循迹模块(从车使用的七路红外循迹模块,也可以达到要求),加入了串口陀螺仪对转向进行闭环;数字识别,尝试了openmv,最后用的k210,帧率高;由于高度限制,在主车上装了两个k210进行识别;其他外设,LCD屏,微动开关(相当于按键,检测药品),三色LED,蓝牙模块等。

HSRyNUbV4G22TPBuCYN4zjtmTRU3EkdTKMOoK3eR.png

D8AdkBmBc0A4nadTDO4qdzEerG8htKlpChVWgy5R.png

发挥项:在于两车的协同,从车使用一个k210及七路红外循迹,其他与主车相同,注意的主要在软件部分。

 

4.原理图电路分析

电源部分 

3zYzCZq5HkabPaeQwrAxfOSrMTNzcILGilksGv3J.png

使用xl4015作为为舵机供电

7d5kaa9oG88gIJtqtq0svdwJwEc1r2IuXeA6uSxS.png

5V电压输出使用tps5430

OnKBgpbbwjxgvoiwwvnaE4cGRwmdYae2r1CEzPIA.png

3V3使用tps7333,两个芯片分别为外设和MCU供电

其他外设,基本的按键LED蜂鸣器拨码,引出了所有串口,引出了空余的IO,预留了4路电机驱动接口,接电机驱动板,电池使用两节18650供电。

I9qUsHJx2IchgcEV5vJQYJI2q6AdNjwvbwpsbmn7.png

电机驱动使用BTN7960方案。

 

5.PCB设计分析

I7U9SsUzVaKh3mf4jIu5oodjgNd8NBZW9GK4Bq4B.png

电源部分比较集中,打了许多的GND过孔散热,上串口下电机接口,右侧接电机驱动板的输入。

odyW00dy52baEg3UvhfZoOts1cuID4W5xjNFUic0.png

电机驱动板

6.实物展示

BRqTwOx6Gk0WsNLAcnOzFHSG4oOtmiHnafUFH6Lh.jpeggWIoRzFX1XKYl1sPoImsRJAVAvpGn5GGwLefmFc5.jpeg

7.作品装配

IsliuZpOttbhh3ryhbAY48U2x88RfFGowL7uegl2.png

小车底板(电机孔少了一个,不影响)

T1WggunYGVVXIHMfEEQXUOdVOty5gGJRAMeaf1su.png

顶板及镜头固定件,使用5mm亚克力激光切割得到。

电池使用两节18650,电池盒热熔胶固定在底部电机与万向轮之间,两块板子固定在板上面。

注意电机要使用高线速的!

8.程序设计

VWhT3wgIstTSze59tM1tQ6jpYykX8jyl5P8eCWfp.png

主车函数如上,前面为lcd刷屏以及陀螺仪初始化,后面为出发和返程的函数。

sjPMvvRPlsVjQdPJJar9cQi2P4B7PEikwCT7uVP4.png

(control.c)

出发函数,任务是获得配送目标数字,区分基础或是发挥项,此处通过蓝牙串口有无接受到返回值判断,并对数组做初始化。

f7Km4Z7RdRBjNaByGIqtZXCs5DO31pYHsfMRyODY.png

(control.c)

两个部分包括近中远端配送,都是边行进,行进到十字时判断是否与目标数字相匹配,并记录经过的十字以及在这个十字上前进的方向(比如前进左右转),此处记录的路径在返回时作为依据。

SncStkKQmk5CJ3EIaplebu1JTBLf6nNP48fdjwHn.png

初始化十字记录

NuOqS9mg8MJEEDTBPWG6d4cLBITG5Cubx8cmGURK.png

基础项近端配送

FLHffvSdoeHZtBS5DGjpt7jpr2k9j5Bd20K9oHsr.png

基础项中端和远端,具体见注释

TDNMk3fC18lUvg8xET5ZYKgGEwKGZfI5PK9olHfB.png

转向的同时给从车发送信息

xOedhAcvBvS9phmQgMwtkWCsifabjt40lW5MgP7z.png

对k210返回信息处理,注意210可能会误判,尤其是在没有看全数字时,就要多次读取去处理。

LXiIyd2VXzrlCEMDVKJgbiwSjldafAaRanXgVHPR.png

十字判断函数,包括返回时T字 的判断。(从车使用的七路红外,检测函数不同)

aruykmz8flqBfJK9L39ydBw7D3e9BcSGvMUje4FR.png

BoDsnqhg9HSW3VqhL4Ah9j36ZKo53httX1UEacsj.png

左右转函数

iOYLxKjuuf6FIQUX8KjZcotEnxcBmos3eV23iLpp.png

终点检测函数

cgkEb8eOk2oELIR90K6eRLMV7cCuMoFdKAQHYiWK.png

返回函数(部分)

4C32BJNLfV8Z4Tk6cGbGaPSZ0IKxswzVcBLOE574.png

有无加载药物检测

iwI9ukN6wx9TOMn4KLnvklfucfxnkJ4weYA2go9z.png

(isr.c)

运动的控制,串口相关的也在isr.c里

B1dFbyqDcLMN7VaRSKkqGGp3hI9TTIqdQpmalTUz.png

老模板了,主要函数大概在以上里面

视觉部分

数字识别的方案尝试了有以下三种:

(1) openmv对不同数字图像做模板匹配,这种方案最为简单,用openmv自带的例程就可以实现,缺点在于检测精度低;

(2) jetson nano跑yolov3网络进行识别,这种方案检测精度较高,但是有两个问题,第一是检测速度只有每秒几帧,第二是nano加上电源会加重小车的重量,不利于整车的控制;

(3) k210yolov2-tiny网络进行检测,这种方案不仅检测精度高,检测速度也高,而且有现成的解决方案;

经过三种方案的尝试,最终决定采用第三种方案,用k210做数字的识别。

1. 数据集的采集

为保证识别的准确度,先将摄像头固定在小车上,然后进行数据集的采集,由于车在实际运动过程中都是正着看数字的,可能有时候会有一定的倾斜,所以我们只要拍正对数字的图片就可以了,为方便照片的采集,参考网上教程写了一个数据采集的程序。分别在不同距离不同角度采集了差不多300张图片,后期因为68、4和7这几个数字容易识别错误,又基于这几个数字采集100张图片做了数据增强。

RuU7Zv9XrMGg1roa9EcGMj3uxGpGWfC3GAhE2gZg.png

2. 数据集的标注

利用labelImg-master可视化程序进行数据集的标注。

V7A4IDg80ExnrAL4gyKyELmSWnS1eZpSeLPND5bP.png

3. 数据的划分与训练

首先是配置电脑的环境,利用Mx-yolo自带的环境配置可执行程序可以进行一键配置,安装好相应的python及其依赖库和cuda、cudnn,非常地方便,安装过程中可能会有报错,一般是网络的问题,换源之后就解决了。

6AptwHHwQEl6anl2bCjUyyhPD87yrEhs7vv8CLrS.png

配置好电脑环境之后,选择yolov2 MobileNet网络,调整Batch_size8,Alpha为0.75,训练150次,然后用gpu训练大概20分钟,训练成功会得到yolov2.tflite的模型文件。

ndIVlfuxAww6NqAlwGEyj6pitxVqvcCKHM5mNXQp.png

4. 模型部署与预测

将训练的模型yolov2.tflite文件转化为yolov2.kmodel文件,然后将其放在sd卡的根目录下,然后通过下面的k210程序调用摄像头进行数字的实时识别。再将识别的结果通过串口通信实时地传给单片机。

OCh1XO7QwsFl2LSQtOSTPEMcAJAquLvsQPmjuNrY.png

5. 识别效果展示

识别成功率接近100%

jL9N1t2MGlyrcAcEfmABA0nVjYHER6EU3xaeWNm8.png

9.总结

有足够的材料准备,方案要及早定下,队员多线并行提高效率。控制思路要明了,程序先写好框架再完善,多写注释。

10.附件

演示视频:【21电赛F题作品展示-哔哩哔哩】 https://b23.tv/j76tiI9

代码等见附件

设计图
原理图
1 /
PCB
1 /
未生成预览图,请在编辑器重新保存一次
ID Designator Footprint Quantity
1 BZ1 BUZZER ACTIVE 12X9 1
2 C14 0603 1
3 C15 CAP ELEC 3.5-8.0X12.0(__0.6) 1
4 C38,C42,C47 CAP TANT 2917/7343-31 3
5 C40,C41,C43,C45,C46,C48 0603 6
6 C44 CAP MLCC 0805 1
7 C56,C58,C76,C78 CAP TANT 1210/3528-21 4
8 C57,C59,C77,C79 CAP MLCC 0805 4
9 D4 DO-214AB 1
10 D5 DIODE SMA(DO-214AC) 1
11 D6 DIODE SOD323 1
12 J1 HDR-M-2.54_2X4 1
13 J2,J3,DRIVER HDR-M-2.54_2X5 3
14 L1 INDC SMDP 744355(13X13) 1
15 L2 INDC SMDP 744325(11X10.5) 1
16 LED1,LED2 3MMLED__Ɫ 2
17 M1,M2,M3,M4 XH2.54_6 4
18 P1 CONN-TH_8P-P3.81_WJ15EDGRC-3.81-8P 1
19 P5,P6,P8 CONN-TH_2P-P3.81_WJ15EDGRC-3.81-2P 3
20 Q3 SOT23-3W 1
21 R15,R16,R17,R18 RES 0603 4
22 R22,R23,R31,R32,R33,R34,R100,R101,R102,R103 0603 10
23 S2 SWITCH DIP 2.54-4 1
24 S3,S9 BUTTON SMD 3X6 2
25 S4,S8 SWITCH TOGGLE 7101SYZBE CK 2
26 SERVO1,SERVO2,SERVO3,SERVO4,SERVO5,SERVO6,SERVO7,SERVO8 HDR-M-2.54_1X3 8
27 U1 SOPOWERPAD-8_L4.9-W3.9-P1.27-LS6.0-BL-EP 1
28 U2,U3 SOIC-8_L5.0-W4.0-P1.27-LS6.0-BL 2
29 U4 KV58_CORE_LQ 1
30 U16 TO-263-5 1
31 UART0,UART1,UART2,UART3,UART4,UART5 XH2.54_4 6
32 C1,C2,C3,C4 RESC2012N 4
33 C5 CAP-D6.3×H5.5 1
34 MOTOR_L,MOTOR_R MOTOR 2
35 OUT,POWER HEAD2_SMALL 2
36 PL,PR HDR-M-2.54_2X3 2
37 R1,R2,R3,R4,R6,R7,R9,R10,R11,R12,R14,R15 RESC2012N 12
38 R5,R8,R13,R16 RESC2012N 4
39 S1,S2 SWITCH_N 2
40 U1 TO263-7-1 1
41 U2,U3,U4 TO263-7-1 3
42 VOL HDR-F-2.54_1X2 1

展开

工程视频/附件
工程成员
侵权投诉
相关工程
换一批
加载中...
添加到专辑 ×

加载中...

温馨提示 ×

是否需要添加此工程到专辑?

温馨提示
动态内容涉嫌违规
内容:
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 技术支持

support
  • 开源平台公众号

MP