一、项目概述
1.1 项目背景
本项目基于2021年全国大学生电子设计竞赛F题“智能送药小车”展开。题目要求设计一台能够自主识别病房号、装载药品并自动运送至指定病房,随后返回药房的小车系统。整个任务流程模拟医院场景中的药品配送:工作人员将数字标号纸张展示给小车,小车识别后等待药品装载,确认装载完成后自动出发,沿走廊寻径行驶至目标病房,停车等待卸载,卸载完成后自动掉头返回药房,完成任务。基本要求包括:识别数字标号、检测药品装载、沿红线寻径行驶、在路口转向、到达病房后等待卸载、自动掉头返回药房。单次送药流程需在20秒内完成。发挥部分还涉及两车协同、无线通信等扩展功能。
1.2 系统组成小车系统由以下核心模块组成:
-
- 1.3 设计思路
- 整个系统采用模块化设计,硬件选型注重稳定性与扩展性,软件架构清晰,便于调试与功能扩展。核心思想是:分工明确、模块解耦、参数集中、便于标定。K230负责视觉识别,CW32负责运动控制与任务调度巡线模块负责方向修正,编码器负责距离测量任务参数以宏定义形式集中管理,方便根据实际地图调整主程序采用状态机结构,流程清晰,易于扩展
二、硬件详解2.1 主控芯片CW32L012
CW32L012是基于ARM Cortex-M0+内核的微控制器,主频可达96MHz,配备64KB Flash与4KB SRAM。其核心优势包括:
-安全机制:支持硬件奇偶校验,可将存储区划分为只能执行指令但不能直接读数据的区域,保护核心代码不被抄袭
-
- -低功耗与宽电压:待机功耗低,电压范围宽,适合电池供电场景
-
- 2.2 巡线模块
-
- 采用基于CW32L010开发的五路智能寻线模块,由5路可见光白光LED发射与光敏三极管接收组成。
-
- 硬件原理:LED发射可见光,照射到不同颜色区域反射回来光敏三极管接收反射光,两端电压随光强变化ADC采集电压值,转换为数字量白色区域反射强,三极管导通强,电压低(约0.2V)黑色线条吸收光,三极管导通弱,电压高(2~3V)
-
- 软件原理:设置比较阈值COMPARE_VALUE,默认200循环比较实时ADC值与校准白值差值大于阈值则认为压线校准值存储在Flash中,断电不丢失模块输出数字高低电平给主控
-
- 颜色识别扩展:
-
- 为只识别红线、不识别黑线,将简单作差比较改为区间判断。只有ADC值落入红色区间时判定结果才返回1,区间外返回0。这需要精确测量各颜色对应的ADC值。
2.3 电机与编码器
电机驱动:
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):红色,等待卸载指示均为低电平点亮
-
- 按键:SW1连接PA5,内部上拉输入松开时高电平,按下时低电平软件检测下降沿并消抖
-
- OLED屏:128x64分辨率,I2C通信实时显示小车状态与电池电压通过显存方式存储像素状态
- ADC电压采集:电池电压经1/6分压后送入PA4软件读取ADC值后乘6还原真实电压使用内部1.2V基准反推参考电压指数平滑滤波防止电压突变
扫码加入QQ群 3群| 610403240
196