Arduino 智能干湿垃圾分拣机:高效分离干垃圾与湿垃圾
元件与物料
| Arduino Mega 2560 | 主控核心 | ×1 |
| DFRobot Gravity: 电容式触摸传感器 | 辅助判断干垃圾 | ×1 |
| SparkFun 土壤湿度传感器 (带螺丝端子) | 检测湿度,区分干湿垃圾 | ×1 |
| SG90 微型舵机 | 执行机构 | ×1 |
| 亚克力板 | 分拣机机身 | ×1 |
| 半尺寸免焊面包板 | ×1 | |
| 杜邦线 (通用) | ×1 | |
| 9V 电池 | 电源 | ×1 |
所需工具
- 剥线钳/剪线钳 (18-10 AWG)
- 热熔胶枪
软件与在线服务
- Arduino IDE
项目简介
功能: 本分拣机可成功分离干垃圾与湿垃圾。
局限: 无法识别塑料或金属,需额外传感器模块扩展。
机械结构构建
- 两块亚克力板作为机身主体。
- SG90 舵机作为执行器,根据垃圾类型旋转不同角度。
- 利用废弃塑料直尺作舵机连杆,连接上盖与舵机输出轴,热熔胶固定(也可用瞬间胶,但需谨慎)。
- 湿度传感器固定在上盖倾倒区,垃圾投入直接落在传感器上;旁边并排触摸传感器检测干垃圾。机械部分完成。


为何需要触摸传感器?湿度传感器单独能否分类?
湿度传感器虽能识别湿垃圾,但无法识别干垃圾。因为“无垃圾”状态下湿度传感器默认读数为“干燥”,会导致分拣机持续偏向干垃圾一侧。引入触摸传感器:仅当有垃圾接触时触发,配合湿度读数才执行分拣动作,解决空闲误触发问题。
分步实施指南
- 准备两块亚克力板(本地五金店或网购均可)。
- 按图钻孔固定电池盒。
- 电池盒上方粘贴舵机,输出轴朝前。
- 塑料直尺底部钻孔 (略小于舵机轴径),用烙铁或细钢针加热穿孔。
- 第二块亚克力板粘贴在直尺顶端,热熔胶固牢。
- 湿度传感器与触摸传感器并排安装在上盖亚克力板上。
完成以上 6 步即可进入编程调试。
硬件原理深度解析
需深入掌握以下概念:
- Arduino: 单片机核心,学习参考 官网 与官方文档。
- C++ 编程: Arduino 编程基础,需中级水平。
- 湿度传感器接口: 电路连接与读数处理。
- 触摸传感器接口: 电路连接与信号读取。
- 舵机控制: PWM 驱动原理与 Arduino 接口。
智能分拣机工作流程
- 垃圾投入,落在湿度传感器上。
- 根据预设阈值,湿度传感器判定干/湿。
- 舵机立即旋转至对应角度,垃圾滑入相应隔间。
- 全过程自主循环,无需人工干预。
演示视频: 请查看项目页面底部链接。
完整代码
#include <Servo.h>
class Smart_Segregator {
/*
* 属性
* servo_pin: 舵机引脚
* moisture_sensor_pin: 湿度传感器引脚
* touch_sensor_pin: 触摸传感器引脚
* 方法
* dry_waste(): 盖板向右翻转 (干垃圾)
* wet_waste(): 盖板向左翻转 (湿垃圾)
* neutral_state(): 盖板居中待机
* execute(): 核心循环
*/
public:
int servo_pin;
int moisture_sensor_pin;
int touch_sensor_pin;
int detect_moisture;
int detect_touch;
Servo servo;
Smart_Segregator(int pin_1, int pin_2, int pin_3) {
servo_pin = pin_1;
moisture_sensor_pin = pin_2;
touch_sensor_pin = pin_3;
detect_moisture = 0;
detect_touch = false;
}
void init() {
Serial.begin(9600);
servo.attach(servo_pin);
servo.write(90); // 居中
pinMode(moisture_sensor_pin, INPUT);
pinMode(touch_sensor_pin, INPUT);
Serial.println("Your Smart Segregator is ready to Segregate!");
}
void dry_waste() { servo.write(0); }
void wet_waste() { servo.write(180); }
void neutral_state() { servo.write(90); }
void execute() {
detect_moisture = digitalRead(moisture_sensor_pin);
detect_touch = digitalRead(touch_sensor_pin);
if (detect_moisture > 85 && detect_touch == true) {
wet_waste();
} else if (detect_moisture <= 85 && detect_touch == true) {
dry_waste();
} else {
neutral_state();
}
}
};
Smart_Segregator segregator(8, 6, 2); // 舵机D8, 湿度D6, 触摸D2
void setup() {
segregator.init();
}
void loop() {
segregator.execute();
}
原理图


制造工艺
- 树莓派多传感器温度光照监测系统:DS18B20 实战构建
- 智能垃圾桶:多传感器物联网优化垃圾收集
- DHT11 温湿度传感器项目:LED 指示与压电蜂鸣器报警
- 智能窗帘:基于Arduino与太阳能的自动光控系统
- 智能物联网罐:ESP8266 + Arduino + 超声波传感器实时监测罐内物位
- 智能自系鞋带鞋:内置压电发电与计步功能
- Arduino Cloud 传感器塔:温度、动作与气体监测
- DIY 智能 Arduino 机械臂:主从控制与动作记忆教程
- Arduino 高速转速计 - 单次检测算法实测 6.5MHz 级响应,红外 + 红激光方案
- Arduino Nano 指纹传感器项目——分步教程
- 湿式与干式油底壳系统:全面对比指南
- Arduino传感器:类型、应用与实战项目