1. 项目背景与需求分析
中药仓库管理一直是医药行业中的重点难点。传统的人工记录方式存在易出错、效率低、难以追溯等问题。我在参与某中药企业仓储改造项目时,发现他们还在使用纸质台账记录药材的入库、出库和库存情况,经常出现账实不符的情况。
这个基于单片机的解决方案,主要解决以下几个痛点:
- 温湿度监测不精准导致药材变质
- 库存数据更新滞后造成管理混乱
- 药材批次信息难以追溯
- 人工盘点效率低下
2. 系统整体架构设计
2.1 硬件组成
系统采用模块化设计,主要包含:
- 主控模块:STM32F103C8T6最小系统板
- 环境监测模块:
- DHT22温湿度传感器
- BH1750光照传感器
- 数据采集模块:
- RFID读卡器(MFRC522)
- 称重传感器(HX711)
- 人机交互模块:
- 0.96寸OLED显示屏
- 矩阵键盘
- 通信模块:
- ESP8266 WiFi模块
- 4G模块(SIM800C)
2.2 软件架构
采用分层设计:
- 驱动层:硬件抽象层(HAL)
- 中间件层:FreeRTOS实时操作系统
- 应用层:
- 数据采集任务
- 环境监控任务
- 通信任务
- 人机交互任务
3. 核心功能实现细节
3.1 药材标识与识别
每包药材贴附无源RFID标签(NTAG213),存储以下信息:
- 药材编号(12位数字)
- 入库时间(Unix时间戳)
- 批次号(8位字母数字组合)
- 重量(单位:克)
标签数据采用AES-128加密,防止篡改。读卡距离控制在3-5cm,避免误读。
3.2 环境监控系统
温湿度采样周期设置为5分钟,当出现以下情况触发报警:
- 温度>28℃或<15℃(持续30分钟)
- 湿度>65%或<45%(持续30分钟)
报警策略:
- 本地声光报警(蜂鸣器+LED)
- 微信推送(通过企业微信API)
- 短信通知(4G模块)
3.3 库存管理算法
采用动态权重算法计算库存预警值:
code复制预警值 = 基础库存 × (1 + 季节系数 + 销量波动系数)
其中:
- 基础库存:过去3个月平均用量
- 季节系数:0.1(夏季)、0(春秋)、-0.05(冬季)
- 销量波动系数:最近7天销量变化率的移动平均
4. 通信协议设计
4.1 数据上传协议
采用MQTT协议,主题设计:
- 上传主题:/warehouse/[deviceID]/upload
- 指令主题:/warehouse/[deviceID]/command
数据包格式:
json复制{
"timestamp": 1634567890,
"device_id": "WH-001",
"sensor_data": {
"temp": 25.3,
"humi": 58.2,
"light": 120
},
"inventory": [
{
"id": "HERB-202109-001",
"weight": 500,
"location": "A-12"
}
]
}
4.2 离线处理机制
当网络中断时:
- 数据暂存内部Flash(循环存储,最多1000条)
- 网络恢复后按时间顺序补传
- 超过24小时未恢复时,通过短信发送关键数据
5. 电源管理设计
采用双电源供电方案:
- 主电源:220V AC转5V DC
- 备用电源:18650锂电池组(2节并联)
电源切换逻辑:
- 主电源正常时:给系统供电并充电
- 主电源异常时:自动切换电池供电
- 电池电压<3.3V时:进入低功耗模式(关闭非必要外设)
实测待机功耗:
- 全功能模式:85mA@5V
- 低功耗模式:12mA@5V
6. 实际部署经验
6.1 安装注意事项
-
RFID天线安装:
- 距金属表面至少5cm
- 避免多个读卡器天线正对
- 最佳读取角度:标签与天线平面夹角<30°
-
传感器布置:
- 每50㎡布置1个温湿度监测点
- 避开空调出风口和门窗
- 高度1.5-1.8米(与人呼吸带同高)
6.2 常见问题排查
-
RFID读取失败:
- 检查标签是否完好
- 调整读卡器功率(建议26dBm)
- 更换不同频段的标签(13.56MHz/125kHz)
-
数据上传异常:
c复制// 网络重连示例代码 void wifi_reconnect() { while(WiFi.status() != WL_CONNECTED) { WiFi.disconnect(); delay(1000); WiFi.begin(ssid, password); delay(5000); if(retry_count++ > 3) { switch_to_4g(); break; } } }
7. 系统优化方向
- 引入机器学习算法预测库存需求
- 增加图像识别辅助RFID校验
- 开发手机端盘点APP
- 对接企业ERP系统
实际运行数据显示,系统投入使用后:
- 库存准确率从78%提升至99.6%
- 药材损耗率降低43%
- 盘点效率提高5倍
这个项目让我深刻体会到,好的物联网系统不仅要技术可靠,更要深入理解行业特性。比如不同药材的存储要求差异很大,需要灵活配置监控参数。下一步我计划加入药材特性知识库,实现更智能的环境调控。