1、简单易用,可快速上手
2、流畅支持300个器件或1000个焊盘以下的设计规模
3、支持简单的电路仿真
4、面向学生、老师、创客
1、全新的交互和界面
2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计
3、更严谨的设计约束,更规范的流程
4、面向企业、更专业的用户
标准版 2021电赛F题国一作品
简介:2021电赛F题国一作品
开源协议: Public Domain
1.前言
本项目为2021年电赛F题智能送药小车。
2.团队介绍
三名成员为来自电信、测控等专业三名大四学生。
3.项目分析
任务如图
基础项要求
基础项分析:首先基础项是单个小车,小车不能使用麦轮或者履带,尺寸有要求,我们的方案是两主动轮加一万向轮支撑,尺寸尽可能紧凑;循线,这里我们使用了带MCU 的红外循迹模块(从车使用的七路红外循迹模块,也可以达到要求),加入了串口陀螺仪对转向进行闭环;数字识别,尝试了openmv,最后用的k210,帧率高;由于高度限制,在主车上装了两个k210进行识别;其他外设,LCD屏,微动开关(相当于按键,检测药品),三色LED,蓝牙模块等。
发挥项:在于两车的协同,从车使用一个k210及七路红外循迹,其他与主车相同,注意的主要在软件部分。
4.原理图电路分析
电源部分
使用xl4015作为为舵机供电
5V电压输出使用tps5430
3V3使用tps7333,两个芯片分别为外设和MCU供电
其他外设,基本的按键LED蜂鸣器拨码,引出了所有串口,引出了空余的IO,预留了4路电机驱动接口,接电机驱动板,电池使用两节18650供电。
电机驱动使用BTN7960方案。
5.PCB设计分析
电源部分比较集中,打了许多的GND过孔散热,上串口下电机接口,右侧接电机驱动板的输入。
电机驱动板
6.实物展示
7.作品装配
小车底板(电机孔少了一个,不影响)
顶板及镜头固定件,使用5mm亚克力激光切割得到。
电池使用两节18650,电池盒热熔胶固定在底部电机与万向轮之间,两块板子固定在板上面。
注意电机要使用高线速的!
8.程序设计
主车函数如上,前面为lcd刷屏以及陀螺仪初始化,后面为出发和返程的函数。
(control.c)
出发函数,任务是获得配送目标数字,区分基础或是发挥项,此处通过蓝牙串口有无接受到返回值判断,并对数组做初始化。
(control.c)
两个部分包括近中远端配送,都是边行进,行进到十字时判断是否与目标数字相匹配,并记录经过的十字以及在这个十字上前进的方向(比如前进左右转),此处记录的路径在返回时作为依据。
初始化十字记录
基础项近端配送
基础项中端和远端,具体见注释
转向的同时给从车发送信息
对k210返回信息处理,注意210可能会误判,尤其是在没有看全数字时,就要多次读取去处理。
十字判断函数,包括返回时T字 的判断。(从车使用的七路红外,检测函数不同)
左右转函数
终点检测函数
返回函数(部分)
有无加载药物检测
(isr.c)
运动的控制,串口相关的也在isr.c里
老模板了,主要函数大概在以上里面
视觉部分
数字识别的方案尝试了有以下三种:
(1) 用openmv对不同数字图像做模板匹配,这种方案最为简单,用openmv自带的例程就可以实现,缺点在于检测精度低;
(2) 用jetson nano跑yolov3网络进行识别,这种方案检测精度较高,但是有两个问题,第一是检测速度只有每秒几帧,第二是nano加上电源会加重小车的重量,不利于整车的控制;
(3) 用k210跑yolov2-tiny网络进行检测,这种方案不仅检测精度高,检测速度也高,而且有现成的解决方案;
经过三种方案的尝试,最终决定采用第三种方案,用k210做数字的识别。
1. 数据集的采集
为保证识别的准确度,先将摄像头固定在小车上,然后进行数据集的采集,由于车在实际运动过程中都是正着看数字的,可能有时候会有一定的倾斜,所以我们只要拍正对数字的图片就可以了,为方便照片的采集,参考网上教程写了一个数据采集的程序。分别在不同距离不同角度采集了差不多300张图片,后期因为6和8、4和7这几个数字容易识别错误,又基于这几个数字采集100张图片做了数据增强。
2. 数据集的标注
利用labelImg-master可视化程序进行数据集的标注。
3. 数据的划分与训练
首先是配置电脑的环境,利用Mx-yolo自带的环境配置可执行程序可以进行一键配置,安装好相应的python及其依赖库和cuda、cudnn,非常地方便,安装过程中可能会有报错,一般是网络的问题,换源之后就解决了。
配置好电脑环境之后,选择yolov2 MobileNet网络,调整Batch_size为8,Alpha为0.75,训练150次,然后用gpu训练大概20分钟,训练成功会得到yolov2.tflite的模型文件。
4. 模型部署与预测
将训练的模型yolov2.tflite文件转化为yolov2.kmodel文件,然后将其放在sd卡的根目录下,然后通过下面的k210程序调用摄像头进行数字的实时识别。再将识别的结果通过串口通信实时地传给单片机。
5. 识别效果展示
识别成功率接近100%。
9.总结
有足够的材料准备,方案要及早定下,队员多线并行提高效率。控制思路要明了,程序先写好框架再完善,多写注释。
10.附件
演示视频:【21电赛F题作品展示-哔哩哔哩】 https://b23.tv/j76tiI9
代码等见附件
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 |
展开
加载中...
是否需要添加此工程到专辑?