非接触感应水龙头联动门禁系统:后疫情时代的卫生安全方案
项目背景与意义
新冠疫情期间,接触式水龙头与门把手成为交叉感染高风险点。本项目设计一套低成本(约 $11)、易复制的非接触洗手-通行联动系统:超声波检测手部触发出水,红外传感器验证洗手完成后驱动舵机/电磁锁开门,全程零接触,兼具节水与防疫功能。原型采用潜水泵模拟水龙头,舵机模拟门锁,适配家庭、办公室、商场等自动门场景,亦可改装为免洗手液分配器。
硬件架构
| 模块 | 型号/规格 | 接口/引脚 | 功能 |
|---|---|---|---|
| 主控 | Arduino UNO R3 | 核心逻辑、定时、通信 | 1 |
| 手部检测 | HC-SR04 超声波测距 | Trig D5, Echo D4, 量程 2-400cm | 1 |
| 洗手确认 | 红外避障/循迹模块 (TCRT5000) | OUT D3, 检测距离 2cm 可调 | 1 |
| 出水执行 | 单路继电器模块 (高电平触发) | IN D6, 控制 12V 潜水泵/电磁阀 | 1 |
| 开门执行 | SG90 微型舵机 | 信号 D9, 旋转 0°→90° 模拟开锁 | 1 |
| 状态显示 | 16×2 I2C LCD (PCF8574, 0x27) | SDA A4, SCL A5 | 1 |
| 电源 | 5V/2A 适配器 + 12V/1A 适配器 (泵/锁独立供电) | 共地连接 | 各1 |
系统工作流程
- 待机态:LCD 显示 "Wash your hands before you enter",继电器断开,舵机 0°(门锁)。
- 检测洗手:HC-SR04 测得距离 1-15cm,判定有手伸入,清屏显示 "Hands detected / Wash hands - 20s",继电器吸合启动水泵,状态标记
state=1。 - 出水持续:水泵持续运行,1s 后 LCD 切换 "You are safe now",保持出水直至手部离开(距离 >15cm),继电器释放停水。
- 验证通行:若
state==1且 IR 传感器检测到手 (LOW),LCD 显示 "You may go in / 10 seconds left",舵机转 90° 开门,延时 10s 后复位 0°,LCD 恢复待机提示,state=0。 - 拦截未洗手:若
state==0触发 IR,LCD 警示 "Wash your hands to grant access",门锁不动作。
核心代码实现
// 关键常量
#define TRIG_PIN 5
#define ECHO_PIN 4
#define IR_PIN 3
#define RELAY_PIN 6
#define SERVO_PIN 9
#define WASH_DIST_MIN 1
#define WASH_DIST_MAX 15
#define DOOR_OPEN_TIME 10000
// 全局变量
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo doorServo;
int state = 0; // 0=未洗手, 1=已洗手
void setup() {
lcd.init(); lcd.backlight();
lcd.print("Wash your hands");
lcd.setCursor(0,1); lcd.print("before you enter");
doorServo.attach(SERVO_PIN);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(IR_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 超声波测距
digitalWrite(TRIG_PIN, LOW); delayMicroseconds(5);
digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
int distance = duration * 0.0343 / 2; // cm, 声速 343m/s
// 红外读取
int irVal = digitalRead(IR_PIN); // LOW=有物体
// 状态机逻辑
if (distance > WASH_DIST_MIN && distance < WASH_DIST_MAX) {
// 检测到洗手
if (state == 0) {
lcd.clear();
lcd.setCursor(1,0); lcd.print("Hands detected");
lcd.setCursor(0,1); lcd.print("Wash hands - 20s");
digitalWrite(RELAY_PIN, HIGH);
state = 1;
delay(1000); // 继电器防抖
lcd.clear(); lcd.print("You are safe now");
}
} else {
digitalWrite(RELAY_PIN, LOW); // 手离开停水
}
// 通行验证
if (state == 1 && irVal == LOW) {
lcd.clear();
lcd.setCursor(1,0); lcd.print("You may go in");
lcd.setCursor(1,1); lcd.print("10 seconds left");
doorServo.write(90);
delay(DOOR_OPEN_TIME);
doorServo.write(0);
lcd.clear();
lcd.print("Wash your hands");
lcd.setCursor(0,1); lcd.print("before you enter");
state = 0;
} else if (state == 0 && irVal == LOW) {
lcd.clear();
lcd.print("Wash your hands");
lcd.setCursor(0,1); lcd.print("to grant access");
}
}
工程化改进建议
执行器升级
- 电磁阀替代潜水泵:直接接入自来水管道,响应快、寿命长、无噪音、防倒吸污染。
- 电磁锁/电控锁替代舵机:承受力强、故障安全 (断电开锁/闭锁可选)、符合消防规范。
- 固态继电器 (SSR):无触点、静音、寿命长,适合高频切换水阀。
感知增强
- 毫米波雷达 (LD2410):替代超声波,穿透非金属面板隐蔽安装,可检测呼吸微动,防绕过。
- ToF 测距 (VL53L0X):精度 ±3mm,抗环境光干扰,适合强光/镜面环境。
- 双红外交叉光束:确认手部在出水口下方,防止误触发。
交互与管理
- 语音提示模块 (DFPlayer Mini):播放 "请洗手"、"洗手完成,门已开启" 等语音,提升无障碍体验。
- 计数与统计:EEPROM 记录每日洗手/通行次数,串口/蓝牙导出,用于卫生合规审计。
- 联网管理:ESP8266 接入 MQTT,远程配置参数、固件升级、异常告警(水泵堵转、门锁故障)。
免洗手液分配器变体
- 将水泵替换为蠕动泵/隔膜泵,容器密封防挥发。
- 出液量标定:PWM 控制泵转速×时间,单次 1-2mL 可调。
- 增加液位报警 (电容式/光电式),缺液推送通知。
安全与合规
- 电气隔离:强电 (水泵/门锁) 与弱电 (MCU) 通过继电器/光耦完全隔离。
- 防水设计:传感器模块 IP65 封装,控制箱 IP54 以上,排水孔朝下。
- 故障安全:门锁默认断电开启 (Fail-Safe),满足消防疏散要求。
- 隐私保护:不采集生物特征/图像,仅统计计数,符合 GDPR/个保法最小化原则。
成本估算 (原型 BOM)
| 项目 | 单价 (CNY) | 数量 | 小计 |
|---|---|---|---|
| Arduino UNO R3 兼容板 | 18 | 1 | 18 |
| HC-SR04 | 3 | 1 | 3 |
| 红外避障模块 | 2 | 1 | 2 |
| 单路继电器模块 | 4 | 1 | 4 |
| SG90 舵机 | 6 | 1 | 6 |
| I2C LCD1602 | 12 | 1 | 12 |
| 潜水泵 12V | 15 | 1 | 15 |
| 电源适配器/线材/外壳 | 30 | 1 | 30 |
| 合计 | 约 90 元 ($13) |
批量采购可进一步压缩至 $8 以内,极具推广价值。
制造工艺
- 树莓派接 KY‑033 循迹/门状态传感器:简易 Python 实现
- 树莓派构建稳健传感器 API:基于 GY‑91 多功能模块的 Flask 实现
- 树莓派 DIY 红外运动传感器:从原理到代码的完整指南
- 树莓派蓝牙近感智能门锁:手机离开自动上锁
- 树莓派传感器与执行器控制实战:加速度计、舵机与数据流
- 树莓派家庭安防系统:PIR 运动检测 + 摄像头邮件报警
- Portenta H7 对接 MAX6675 热电偶温度传感器教程
- K30 CO₂ 传感器:室内空气质量实时监测
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- Marposs推出BLÚ LT模块化系统 实现中等复杂度机床实时工控
- 仿皮肤软触觉传感器赋能机器人精准抓取