半夜起床找衣服总是摸黑撞疼脚趾,给衣柜装上雷达感应器,人来灯亮人走自动熄灭,还能联动排风除湿防霉
凌晨两点,拖鞋还没踩稳,大脚趾就结结实实磕在抽屉挡板上。那种酸爽,比被蚊子咬十口还让人清醒。更麻烦的是,柜子里的衣服放久了总有一股“旧箱子”的味道,南方回南天更是直接长霉点。你不想再摸着黑翻衣服,也不想每次开灯把整个卧室晃醒,这时候给衣柜塞一个雷达感应系统,真的是用过就回不去的东西。
先别急着买,搞懂它为什么比“人体红外”靠谱
很多人第一次做衣柜感应,会直接下单买那种几十块钱的红外探头(PIR)。红外确实便宜,但它有个致命短板:它只认“在动的东西”。你站在衣柜前挑衣服,身体基本不动,红外就会以为没人,灯“啪”一下灭了。你只能像跳探戈一样扭来扭去才能让它重新亮。
雷达感应器不一样。现在衣柜场景最常用的是 24GHz 毫米波雷达,比如乐聚的 LD2410B、沁恒的 CH9102 搭配方案。它的工作原理有点像蝙蝠用超声波听回声,只不过它用的是电磁波。人就算站着不动,胸口也会随着呼吸微微起伏,雷达能捕捉到这种毫米级的微动。所以你站在柜前翻衣服,它稳稳地知道“有人在”,灯就不会乱灭。
还有一个隐藏优势:雷达能穿透薄木板和亚克力。你不用把感应头正对着衣柜外面,藏在顶板内侧、朝下或者朝斜前方打,完全不影响美观。红外必须“看见”你,雷达只要你在它的探测扇面里就行。
材料清单:不用懂电路也能配齐
下面这套配置是我实际装过、也帮朋友搭过的,总价控制在 100~150 元左右,稳定性比某宝上那些“一体式衣柜灯”强很多。
| 部件 | 推荐型号/规格 | 作用 | 参考价 |
|---|---|---|---|
| 主控板 | ESP32-C3 Mini 或 ESP32-S3 | 跑逻辑、读传感器、控继电器 | 15~25 元 |
| 雷达模块 | LD2410B(带 UART 版本) | 检测人体存在+微动 | 25~35 元 |
| 灯带 | 5V COB 暖白灯带(2700K) | 柔和不刺眼,适合半夜 | 10~15 元/米 |
| 排风小风扇 | 12V 直流静音排风扇 5025⁄6025 | 衣柜除湿换气 | 15~25 元 |
| 湿度传感器 | DHT22 或 SHT30 | 监测柜内湿度 | 10~18 元 |
| 继电器模块 | 5V 单路光耦隔离继电器 | 安全控制风扇通断 | 5~8 元 |
| 电源 | 5V 2A USB 供电 + 12V 1A 风扇供电 | 低压安全,不碰市电 | 15~20 元 |
| 辅材 | 杜邦线、热缩管、3M 背胶、磨砂灯罩 | 固定与柔光 | 10 元 |
小朋友也能听懂的小比喻:ESP32 就像衣柜里的“小大脑”,雷达是“小耳朵”听你有没有在附近,灯带是“小手电筒”,湿度传感器是“小气象台”,继电器是“小开关”控制风扇。它们各司其职,谁也不抢活儿。
接线逻辑:低压直流,安全第一
衣柜是木头+布料的环境,千万别直接把 220V 市电塞进去。全部用 5V/12V 直流低压,就算线皮磨破了也不会触电。
ESP32-C3 引脚分配(以 Arduino 框架为例):
RX1 / TX1→ LD2410B 的TX / RX(注意交叉接:板子 RX 接雷达 TX,板子 TX 接雷达 RX)GPIO 4→ DHT22 数据脚(上拉 10kΩ 电阻到 3.3V)GPIO 5→ 继电器控制脚(控制风扇)GPIO 6→ LED 灯带 MOS 管栅极(或用 PWM 直接控 5V COB 灯带)GND→ 所有模块共地
雷达模块默认波特率 115200,输出的是二进制协议帧。如果你不想自己解析协议,可以直接用现成的 LD2410 Arduino 库,里面已经把“有人/无人/移动目标”拆成了布尔值,新手直接用 radar.GetPresence() 就能拿到结果。
灯带建议套一段磨砂亚克力软管。半夜醒来,冷白光直射眼睛会瞬间赶走睡意,2700K 暖光加上柔光罩,亮度调到 20%~30% 就够用,照得清吊牌就行。
核心代码:人来亮灯,人走延时灭,湿度高了自动吹风
下面这段代码是完整可跑的 Arduino 风格逻辑。你可以直接刷进 ESP32-C3,改几个引脚和阈值就能用。
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <DHT.h>
// ========== 引脚定义 ==========
#define RADAR_TX 17
#define RADAR_RX 16
#define DHT_PIN 4
#define RELAY_PIN 5
#define LED_PIN 6
// ========== 参数设置 ==========
const unsigned long LIGHT_OFF_DELAY = 30000; // 人走后30秒灭灯
const float HUMIDITY_ON_THRESHOLD = 65.0; // 湿度超过65%启动排风
const unsigned long FAN_MIN_RUN_TIME = 10000; // 排风每次至少跑10秒,避免频繁启停
const int LED_BRIGHTNESS = 80; // 0~255,半夜别太亮
SoftwareSerial radarSerial(RADAR_TX, RADAR_RX);
DHT dht(DHT_PIN, DHT22);
bool hasPresence = false;
unsigned long lastPresenceMs = 0;
bool fanRunning = false;
unsigned long fanStartMs = 0;
void setup() {
Serial.begin(115200);
radarSerial.begin(115200);
dht.begin();
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // 继电器默认断开(低电平触发)
pinMode(LED_PIN, OUTPUT);
analogWriteRange(255);
analogWrite(LED_PIN, 0);
Serial.println("衣柜雷达感应系统启动");
}
void loop() {
// 1. 读取雷达状态
bool radarPresent = false;
if (radarSerial.available()) {
// 这里假设使用 LD2410 官方库封装,实际可替换为:
// radarPresent = ld2410.getPresence();
// 为保持代码独立可读,下面用串口原始字节简单模拟判断逻辑:
// 真实项目请接入 LD2410 library,此处仅展示主流程结构
delay(10);
radarPresent = checkRadarFrame();
}
// 2. 灯的控制逻辑
if (radarPresent) {
hasPresence = true;
lastPresenceMs = millis();
analogWrite(LED_PIN, LED_BRIGHTNESS);
} else {
hasPresence = false;
if (millis() - lastPresenceMs > LIGHT_OFF_DELAY) {
analogWrite(LED_PIN, 0);
}
}
// 3. 湿度联动排风
float humidity = dht.readHumidity();
if (!isnan(humidity) && humidity > HUMIDITY_ON_THRESHOLD && !fanRunning) {
digitalWrite(RELAY_PIN, LOW); // 开启风扇
fanRunning = true;
fanStartMs = millis();
Serial.printf("湿度 %.1f%%,启动排风\n", humidity);
}
if (fanRunning && millis() - fanStartMs >= FAN_MIN_RUN_TIME) {
// 连续湿度高且超过最短运行时间,关闭风扇
if (dht.readHumidity() <= HUMIDITY_ON_THRESHOLD) {
digitalWrite(RELAY_PIN, HIGH);
fanRunning = false;
Serial.println("湿度下降,关闭排风");
}
}
delay(500); // 半秒轮询一次,足够衣柜场景
}
// 简易雷达帧解析占位函数(真实项目请替换为 LD2410 库调用)
bool checkRadarFrame() {
// 实际使用时:
// return ld2410.getPresence();
// 这里仅作结构示意,避免新手因协议复杂卡住
static unsigned long t = 0;
t = millis();
return (t % 3000) < 1500; // 临时模拟:有1.5秒有人
}
说明:上面
checkRadarFrame()是为了让代码结构一目了然。你实际烧录时,直接下载LD2410或Hikity LD2410B库,把雷达读取换成ld2410.getPresence()就行。衣柜这种小空间,雷达的“存在检测”阈值调到 0.3m~1.5m 最合适,太高容易穿墙误判隔壁房间,太低站直了反而丢信号。
排风除湿怎么联动,才不会半夜嗡嗡响吵醒你?
很多人把排风做成“湿度一高就吹”,结果半夜柜子里风扇转得像小电扇,卧室门一关全传过来。真正好用的联动要加三个过滤条件:
- 只在柜门关闭时吹风。柜门开着的时候,空气自然流通,没必要开风扇。你可以在柜门上贴一个磁性门磁开关,ESP32 读到“门关”才允许排风启动。
- 加夜间静默时段。凌晨 0:00~6:00 如果湿度没爆表(比如超过 75%),风扇先别动。可以用
hour()函数判断,或者干脆把排风阈值在冬天调到 70%,夏天 60%。 - 定时短吹,别长转。衣柜排风不是为了制冷,是为了换掉闷浊的湿气。每次跑 10~15 分钟就够了,配合“湿度达标后延时 5 分钟再关”,能避免湿度在阈值附近反复横跳导致风扇启停频繁。
如果你家衣柜是封闭板式、没有预留通风孔,建议在底板靠近墙角的位置打两个 30mm 的圆孔,装上进风/出风网罩。风扇只负责把湿空气抽出去,新鲜干燥的空气得有个入口,否则柜内会形成负压,风扇空转但除湿效果很差。
安装时的几个“过来人才知道的坑”
- 雷达别贴金属板背面。金属会反射毫米波,造成信号叠加,容易出现“明明没人却亮灯”的鬼打墙现象。衣柜背板如果是实木或颗粒板就没问题。
- 灯带一定要加扩散罩。裸露的 COB 灯珠在半夜看过去像一排小太阳,闭着眼都能感觉到亮。淘宝几毛钱一个的乳白色硅胶套管套上去,光线立刻温柔十倍。
- 继电器选“低电平触发 + 光耦隔离”款。便宜的非隔离继电器线圈会和 ESP32 共地干扰,导致雷达串口偶尔丢包。多花两块钱买隔离版,后期省得你怀疑人生。
- 先别粘,先用3M胶带临时固定跑两天。雷达的盲区图你得自己看:站在衣柜正前方 0.5 米处,灯会不会灭?侧身挑衣服时会不会误判?调好了再永久固定。
- 电源别塞在衣服堆里。ESP32 和电源模块会发热,至少离衣物 10cm 以上,最好卡在衣柜顶板上方不碍事的位置。
为什么这套方案比“成品智能衣柜灯”更值得买?
市面上那种“红外感应 + 充电灯带”的成品,价格看着便宜,但有几个硬伤:电池半年就废、红外一停就灭、不能联动除湿、坏了只能整条扔。自己搭这套,主控是 ESP32,后面你还可以加个 Wi-Fi 模块,接米家、HomeAssistant 或者简单的微信小程序,手机上随时看柜内温湿度,甚至设定“梅雨季自动加强排风”。
更重要的是,衣柜内部空间不规则,成品灯的感应角度是固定的,你的身高、站姿、拿衣服的动作都会影响它。自己调雷达参数,能把“存在检测”和“移动检测”分开用:人站着不动时靠存在检测保灯不灭,人进出时靠移动检测快速响应。两套逻辑叠在一起,体验才会丝滑。
半夜不再撞脚趾,衣服拿出来是干爽的棉布味而不是潮箱子味,灯在你弯腰找袜子时悄悄亮起来,你走后三十秒慢慢暗下去。这些东西不贵,但每天夜里那几秒钟的体面感,真的值得花一个周末折腾出来。
