1. 项目背景与需求分析
去年夏天,我在小区里观察到一个有趣的现象:虽然每个单元楼下都配备了分类垃圾桶,但至少有一半的居民仍然把各类垃圾混在一起丢弃。这让我开始思考,如何用技术手段解决垃圾分类"最后一米"的难题。基于单片机的智能分类垃圾桶,正是针对这个痛点的低成本解决方案。
这个项目的核心价值在于:
- 降低居民垃圾分类的学习成本
- 通过自动化提升分类准确率
- 适用于家庭、办公室、公共场所等多种场景
- 硬件成本控制在200元以内
2. 系统架构设计
2.1 整体方案选型
经过多次方案对比,最终确定采用"传感器+单片机+机械结构"的三层架构:
code复制[传感器层] → [控制层] → [执行层]
│ │ │
├─ 重量检测 ├─ STM32 ├─ 舵机控制
├─ 红外检测 └─ 逻辑判断 └─ LED提示
└─ 金属探测
选择STM32F103C8T6作为主控芯片,主要考虑:
- 充足的GPIO接口(37个)
- 内置12位ADC(用于模拟信号采集)
- 性价比高(单价<15元)
- 丰富的开发资源
2.2 传感器方案详解
2.2.1 垃圾类型识别方案
采用多传感器融合策略提高识别准确率:
-
红外光电传感器(检测物体颜色)
- 型号:TCRT5000
- 安装角度:45°斜向照射
- 检测距离:2-10cm可调
- 成本:<2元/个
-
称重传感器(HX711模块)
- 量程:5kg
- 精度:±10g
- 采样率:10Hz
- 需配合弹簧减震结构
-
金属探测线圈(自制)
- 线圈直径:8cm
- 振荡频率:120kHz
- 检测距离:3-5cm
2.2.2 传感器数据融合算法
开发了基于阈值的分级判断算法:
c复制if(metal_detected){
return METAL;
}else if(weight > 300g && color == BLACK){
return WET_WASTE;
}else if(infrared_value > 800){
return RECYCLABLE;
}else{
return DRY_WASTE;
}
3. 硬件实现细节
3.1 机械结构设计
采用四格分离式结构,每个格口配备:
- 5kg称重模块
- 20kg微型舵机(控制挡板)
- RGB LED状态灯
- 防夹手红外对射
关键参数:
- 整体尺寸:40×40×80cm
- 开合角度:90°
- 响应时间:<1s
- 工作噪音:<45dB
3.2 电路设计要点
-
电源管理:
- 主电源:12V/2A适配器
- 电压转换:
- 5V(传感器供电)
- 3.3V(MCU供电)
- 加入1000μF电容消除电机干扰
-
信号隔离:
- 光耦隔离舵机控制信号
- 磁珠滤波传感器信号线
-
PCB布局:
- 传感器接口集中在一侧
- 电机驱动单独分区
- 保留SWD调试接口
4. 软件实现
4.1 主程序流程图
plaintext复制初始化 → 传感器校准 → 进入待机
↓
检测到物体
↓
启动识别流程
↓
[重量检测]→[颜色检测]→[金属检测]
↓
综合判断类型
↓
控制对应仓门
↓
记录统计数据
4.2 关键代码实现
4.2.1 传感器数据采集
c复制#define SAMPLE_TIMES 10
uint16_t get_avg_adc(ADC_HandleTypeDef* hadc){
uint32_t sum = 0;
for(int i=0; i<SAMPLE_TIMES; i++){
sum += HAL_ADC_GetValue(hadc);
HAL_Delay(5);
}
return (uint16_t)(sum/SAMPLE_TIMES);
}
4.2.2 舵机控制
c复制void set_servo_angle(TIM_HandleTypeDef* htim, uint8_t angle){
// 0.5ms-2.5ms → 0-180°
uint16_t pulse = 500 + angle * 11;
__HAL_TIM_SET_COMPARE(htim, TIM_CHANNEL_1, pulse);
}
5. 调试与优化
5.1 常见问题排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 误识别率高 | 环境光干扰 | 加装遮光罩 |
| 舵机卡顿 | 电源不足 | 增加4700μF电容 |
| 金属检测不稳定 | 线圈松动 | 用热熔胶固定 |
| 称重数据漂移 | 机械振动 | 增加橡胶垫 |
5.2 性能优化记录
-
采样策略优化:
- 原始方案:单次采样
- 问题:受随机干扰大
- 改进:滑动窗口滤波
- 效果:误差降低62%
-
功耗优化:
- 待机电流:从85mA→12mA
- 方法:
- 关闭未用外设时钟
- 采用中断唤醒
- 降低ADC采样率
-
结构改进:
- 增加导流槽防止液体渗漏
- 采用磁吸式仓门便于清洁
6. 项目扩展方向
在实际使用三个月后,发现几个有价值的改进点:
-
联网功能:
- 加入ESP8266模块
- 上传数据至云平台
- 实现满桶提醒
-
语音提示:
- 添加SYN6288语音芯片
- 播报分类结果
- 适合老年人使用
-
太阳能供电:
- 6V/10W太阳能板
- 18650电池组
- 阴雨天续航>7天
这个项目最让我意外的发现是:通过添加简单的反馈机制(如LED颜色变化+蜂鸣器提示),用户的正确分类率能提升40%以上。硬件成本增加不到5元,但行为引导效果显著。