【21年电赛】智能送药小车项目全解析——硬件讲解
一、项目概述
1.1 项目背景
本项目基于2021年全国大学生电子设计竞赛F题“智能送药小车”展开。题目要求设计一台能够自主识别病房号、装载药品并自动运送至指定病房,随后返回药房的小车系统。整个任务流程模拟医院场景中的药品配送:工作人员将数字标号纸张展示给小车,小车识别后等待药品装载,确认装载完成后自动出发,沿走廊寻径行驶至目标病房,停车等待卸载,卸载完成后自动掉头返回药房,完成任务。基本要求包括:识别数字标号、检测药品装载、沿红线寻径行驶、在路口转向、到达病房后等待卸载、自动掉头返回药房。单次送药流程需在20秒内完成。发挥部分还涉及两车协同、无线通信等扩展功能。
1.2 系统组成小车系统由以下核心模块组成:
主控MCU:CW32L012,负责整车调度与外设控制
摄像头模块:K230开发板,负责数字识别
巡线模块:五路智能寻线模块,基于CW32L010开发
电机与编码器:带编码器的直流减速电机,左右轮各一个
人机交互:OLED屏、按键、LED、蜂鸣器
电源管理:电池供电,ADC电压监测
1.3 设计思路
整个系统采用模块化设计,硬件选型注重稳定性与扩展性,软件架构清晰,便于调试与功能扩展。核心思想是:分工明确、模块解耦、参数集中、便于标定。
K230负责视觉识别,CW32负责运动控制与任务调度
巡线模块负责方向修正,编码器负责距离测量
任务参数以宏定义形式集中管理,方便根据实际地图调整
主程序采用状态机结构,流程清晰,易于扩展
二、硬件详解
2.1 主控芯片CW32L012
CW32L012是基于ARM Cortex-M0+内核的微控制器,主频可达96MHz,配备64KB Flash与4KB SRAM。其核心优势包括:
-安全机制:支持硬件奇偶校验,可将存储区划分为只能执行指令但不能直接读数据的区域,保护核心代码不被抄袭
IO口滤波:所有IO口自带滤波防抖动,比软件滤波更省事,抗干扰效果好
高级定时器:支持多路互补PWM输出,适合电机控制与数字电源
Cordic硬件运算模块:做三角函数、开方等数学计算速度极快,相比软件运算快几十到上百倍,节省内存,减轻CPU负担
-低功耗与宽电压:待机功耗低,电压范围宽,适合电池供电场景
抗干扰性能:经过三万伏高压放电、小黑盒、特斯拉线圈等严苛干扰测试,设备依旧稳定运行
-模拟外设丰富:集成2路轨到轨运放、2路DAC、2路12位ADC,最高1M采样速率,支持9种编码器模式
2.2 巡线模块
采用基于CW32L010开发的五路智能寻线模块,由5路可见光白光LED发射与光敏三极管接收组成。
硬件原理:
LED发射可见光,照射到不同颜色区域反射回来
光敏三极管接收反射光,两端电压随光强变化
ADC采集电压值,转换为数字量
白色区域反射强,三极管导通强,电压低(约0.2V)
黑色线条吸收光,三极管导通弱,电压高(2~3V)
软件原理:
设置比较阈值COMPARE_VALUE,默认200
循环比较实时ADC值与校准白值
差值大于阈值则认为压线
校准值存储在Flash中,断电不丢失
模块输出数字高低电平给主控
颜色识别扩展:
为只识别红线、不识别黑线,将简单作差比较改为区间判断。只有ADC值落入红色区间时判定结果才返回1,区间外返回0。这需要精确测量各颜色对应的ADC值。
2.3 电机与编码器
电机驱动:
使用带编码器的直流减速电机,左右轮各一个
方向控制引脚:PB3、PB4、PB5、PA12
以右轮为例:PB3高电平、PB4低电平则正转,翻转则反转
PWM调速使用GTIM1的通道3与通道4
预分频系数16,重装载值400,PWM频率7.5kHz
编码器:
左轮编码器接入GTIM2的CH1、CH2
配置为硬件四倍频正交编码器模式
定时器硬件自动识别A、B两相脉冲相位关系,自动加减计数
无需CPU中断,CPU只需在需要时读取计数器值
四倍频模式下,每个完整脉冲周期计四次,分辨率提高四倍
2.4 摄像头模块
数字识别采用01科技K230开发板。
硬件组成:
Type-C口:烧录和调试
SD卡插口:需拷贝官方镜像
UART通信:5V供电、GND、TX、RX
蓝色LED:供电不足时亮起
红色LED:上电即亮
复位按钮
模型训练:
搜集照片,可自己拍或网上找
通过官方训练平台训练视觉模型
得到.py文件和.kmodel文件
.py供K230运行,.kmodel是模型文件
在IDE修改调试后放入K230
2.5 人机交互外设
LED:
LED2(PC13):绿色,任务完成指示
LED3(PC14):红色,等待装载指示
LED4(PC15):红色,等待卸载指示
均为低电平点亮
蜂鸣器:
PA15驱动,高电平鸣叫
NPN三极管基极经限流电阻R4连接PA15,发射极接地
R5下拉电阻防止上电误导通
R4限制基极电流,保护IO口
按键:
SW1连接PA5,内部上拉输入
松开时高电平,按下时低电平
软件检测下降沿并消抖
OLED屏:
128x64分辨率,I2C通信
实时显示小车状态与电池电压
通过显存方式存储像素状态
ADC电压采集:
电池电压经1/6分压后送入PA4
软件读取ADC值后乘6还原真实电压
使用内部1.2V基准反推参考电压
指数平滑滤波防止电压突变


