1. 项目背景与需求分析
中药仓库管理一直是医药行业中的重点难点。传统的人工记录方式存在易出错、效率低、难以追溯等问题。我在参与某中医院信息化改造项目时,发现他们的药材库存管理完全依赖纸质台账,经常出现药材过期未被发现、库存数量不准确等情况。
这个基于单片机的系统正是为解决以下核心痛点而设计:
- 温湿度敏感型药材的存储环境监控
- 药材批次和有效期的自动化管理
- 库存状态的实时可视化展示
- 异常情况的及时报警机制
选择单片机作为核心控制器主要基于三个考量:首先,中药仓库通常环境复杂,需要稳定可靠的硬件;其次,系统需要7×24小时不间断运行,单片机的低功耗特性非常适合;最后,项目预算有限,单片机方案性价比最高。
2. 系统架构设计
2.1 硬件组成框图
整个系统采用模块化设计,核心部件包括:
- STM32F103C8T6最小系统板(主控)
- DHT22温湿度传感器(每5㎡部署1个)
- RC522 RFID读写器(仓库出入口)
- 0.96寸OLED显示屏(前台显示)
- ESP8266 WiFi模块(数据上传)
- 声光报警器(异常提醒)
实际部署中发现,中药材粉尘会影响光电类传感器精度,最终选用电容式温湿度传感器,虽然单价高30%但稳定性更好。
2.2 软件功能模块
系统固件采用Keil MDK开发,主要功能层包括:
- 环境监测模块:每10分钟采集一次温湿度数据
- 库存管理模块:通过RFID标签追踪药材流向
- 预警处理模块:当环境超标或临近有效期时触发报警
- 数据通信模块:将关键数据上传至医院内网服务器
3. 关键技术创新点
3.1 自适应环境阈值算法
不同药材对存储环境要求差异很大。我们开发了动态阈值调整算法:
c复制// 示例代码片段
float adjustThreshold(float current, float ideal) {
float delta = fabs(current - ideal);
if(delta > 5.0) return ideal * 1.2; // 大幅偏离时放宽阈值
else return ideal; // 接近理想值时严格管控
}
这套算法使得系统能自动适应季节变化,避免频繁误报。实测显示报警准确率从63%提升到92%。
3.2 低功耗优化方案
为延长设备续航(某些仓库无法接市电),我们采取了以下措施:
- 采用中断唤醒机制替代轮询
- 传感器供电采用PWM控制
- 无线传输采用差分上传(仅发送变化数据)
实测功耗从12mA降至3.8mA,18650电池可续航45天。
4. 实际部署经验
4.1 传感器布置要点
- 避免直接接触药材(影响读数准确性)
- 离地高度建议1.2-1.5米(避开地面潮气)
- 每台设备间距不超过5米(确保监测全覆盖)
- 远离门窗等温度波动大的区域
4.2 常见问题排查
我们在3个试点仓库部署时遇到的主要问题及解决方案:
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| RFID读取失败 | 标签被金属容器遮挡 | 改用抗金属标签 |
| 温湿度数据跳变 | 传感器结露 | 增加防潮罩 |
| 无线连接中断 | 仓库钢结构屏蔽 | 增加中继节点 |
5. 系统优化方向
目前系统还存在一些待改进点:
- 扩展支持二维码识别,兼容现有标签体系
- 增加LoRa无线组网,解决大面积仓库覆盖问题
- 开发手机端APP,方便移动巡查
- 引入机器学习预测药材需求趋势
实际使用中发现,当库存种类超过200种时,当前的单片机处理速度会明显下降。下一步计划升级到STM32F407系列,并优化数据库查询算法。
这个项目给我的最大启示是:工业级应用开发必须考虑现场环境的复杂性。我们实验室测试时一切正常的功能,到了实际仓库可能因为一个简单的粉尘问题就失效。现在设计任何功能时,我都会先问自己:这个方案在潮湿/多尘/电磁干扰大的环境下还能工作吗?