|
8| 0
|
[ESP8266/ESP32] ESP32C5+C4002 智能红外学习灯控 |
|
本帖最后由 腿毛利小五郎 于 2026-6-14 23:32 编辑 智能红外学习灯控
项目背景 夜晚给孩子换尿布开夜灯总是找不到遥控器,夜灯放在床头,又过于刺眼。 需求产生:夜灯能不能在需要的时候自动点亮呢? 使用传统的热释电红外检测(能检测有没有人)产品定位不符合场景,用摄像头识别算法有些大材小用且可能存在隐私问题,用声控会吓到娃娃,用超声波限制太大...... 恰好在某站看到有一个stm32的万能遥控项目,又恰巧申请到了C4002毫米波人体存在传感器( 可实现10×10米内人体存在/运动/静止与微动的全状态检测,具备底噪采集与抗干扰能力,兼容Arduino/ESP32/树莓派/Home Assistant) 智能红外学习灯控 原本想用比较迷你的esp32C6做主控,但是它已经成了我桌面的台灯的主控,那就用C5吧,同样主频都很高,且都支持硬件RMT,比stm32做主控性能更强,可玩度更高,而且C5的拓展板真的很好用。 功能说明
硬件的细致参数介绍,论坛官方均能找到,不再格外附上 esp32 C5 红外接收管 ![]() 红外发射管 ![]() 红外小夜灯 某音,某宝都有,开关键是分开的最好 ![]() 其他 附图,略 接线说明 接线比较简单直接参考下表即可
按钮操作
雷达状态机 IDLE → 检测变化 → DEBOUNCE(3s) → 确认 → MIN_TIME(开灯30s/关灯5s) → 状态不变 → RETRANSMIT(阶梯重发) → 期间状态翻转 → 防抖→发送→回到MIN_TIME 配置参数 (config.h) STATE_DEBOUNCE_SEC = 3 // 状态防抖确认(秒) MIN_ON_TIME_SEC = 30 // 最少开灯时间(秒) MIN_OFF_TIME_SEC = 5 // 最少关灯时间(秒) RETRANSMIT_INTERVALS_SEC[] // 阶梯重发间隔: 30,60,120,300,600 DEBUG_C4002 // 取消注释打开雷达调试日志 DEBUG_IR // 取消注释打开红外调试日志 目录结构 万能红外-智能灯控/ config.h # 全局配置(引脚/时序/参数/枚举) ir_handler.h / .cpp # RMT红外捕获+38kHz载波发射+NVS存储 radar_handler.h / .cpp # C4002雷达封装+防抖 state_machine.h / .cpp # 按钮事件+状态机 smart_ir_controller.ino # 主程序(setup/loop) 编译
![]() 演示视频 源码附件 万能红外-智能灯控.rar |
萌萌哒新人
沪公网安备31011502402448© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed