编写程序让智能酒店房间,有人时自动开灯,无人延时关灯,节能省电。

编写程序让智能酒店房间,有人时自动开灯,无人延时关灯,节能省电。 项目实战基于PIR与双鉴传感技术的智能客房照明系统一、实际应用场景描述 (Scenario)在酒店、民宿或智能家居中客人常因疲惫进门倒头就睡忘记关灯或者客人暂时进入卫生间客厅灯光因无动作而熄灭造成不便。目标通过高灵敏度传感器检测房间内是否有人实现“人来灯亮人走灯灭延时”在保证舒适度的前提下最大化节能。二、引入痛点 (Pain Points)1. 能源浪费客人离开后灯光常开数小时增加酒店运营成本。2. 体验割裂传统声控灯在电视噪音下误触发或人在静坐阅读时因无大幅动作而熄灭。3. 误判率高单一红外传感器PIR无法检测静止人体如睡觉的人。4. 隐私顾虑视频流摄像头方案侵犯住客隐私不符合酒店场景。三、核心逻辑讲解 (Core Logic)本系统采用“多传感器融合Multi-Sensor Fusion→ 状态机 → 延时去抖”的高级控制架构1. 信号采集层* PIR (被动红外)检测人体移动动态。* 微波雷达 (Doppler Radar)检测人体微动呼吸、心跳解决“静坐”问题。* 光敏电阻检测环境亮度白天无需开灯。2. 融合算法 (Fusion Logic)有人 (PIR OR Radar) AND暗光。3. 状态机与延时* ON 状态检测到人立即开灯。* TIMEOUT 状态人消失后启动倒计时如 30 秒倒计时结束才关灯避免短暂遮挡导致灯光闪烁。四、代码模块化实现 (Code Implementation)项目结构如下smart_hotel_room/├── main.py # 主程序入口├── config.py # 配置文件├── sensors/│ ├── pir_sensor.py # PIR人体红外传感器│ ├── radar_sensor.py # 微波雷达传感器│ └── light_sensor.py # 环境光传感器├── core/│ └── lighting_controller.py # 核心控制逻辑├── actuators/│ └── light_driver.py # 灯光驱动模块└── README.md1. config.py (配置文件)# config.py# 智能酒店客房照明系统配置# --- 传感器阈值 ---LUX_THRESHOLD 100 # 环境光照阈值 (lux)低于此值才开灯MOTION_TIMEOUT_SEC 30 # 无人后延时关灯时间 (秒)# --- 防抖参数 ---STABILITY_SAMPLES 3 # 连续采样确认次数SAMPLING_INTERVAL 0.5 # 采样间隔 (秒)2. sensors/pir_sensor.py (PIR传感器模拟)# sensors/pir_sensor.pyimport randomclass PIRSensor:模拟被动红外 (PIR) 传感器原理: 检测人体辐射的 8-14um 红外热释电信号def __init__(self, motion_probability0.1):self.motion_probability motion_probabilityself._is_moving Falsedef simulate_motion(self, duration_sec: int):模拟一段运动self._is_moving True# 运动结束后会有一段静止期yield Trueself._is_moving Falsedef read_motion(self) - bool:读取是否有移动# 模拟随机噪声和运动if self._is_moving:return Truereturn random.random() self.motion_probability3. sensors/radar_sensor.py (微波雷达模拟)# sensors/radar_sensor.pyimport randomclass MicrowaveRadarSensor:模拟多普勒微波雷达 (如 RCWL-0516)原理: 发射电磁波检测人体微动引起的频率偏移 (Doppler Effect)def __init__(self):self._presence_detected Falsedef set_presence(self, presence: bool):self._presence_detected presencedef read_presence(self) - bool:读取是否存在人体 (即使是静止的)模拟逻辑比PIR更灵敏但可能有虚警if self._presence_detected:return True# 模拟对呼吸/心跳的微弱检测return random.random() 0.054. core/lighting_controller.py (核心控制逻辑 - 状态机)# core/lighting_controller.pyfrom enum import Enum, autofrom config import MOTION_TIMEOUT_SEC, STABILITY_SAMPLESclass LightState(Enum):OFF auto()ON auto()TIMEOUT auto()class LightingController:照明控制器实现多传感器融合与延时关灯逻辑def __init__(self):self.state LightState.OFFself.timeout_counter 0self.stable_counter 0def update(self, has_motion: bool, is_dark: bool) - LightState:更新灯光状态:param has_motion: PIR或雷达检测到人:param is_dark: 环境光是否昏暗# 核心逻辑只有在暗光环境下才响应人体human_present has_motion and is_darkif self.state LightState.OFF:if human_present:self.stable_counter 1if self.stable_counter STABILITY_SAMPLES:self.state LightState.ONprint(\n [ACTION] 检测到有人且环境昏暗开灯)else:self.stable_counter 0elif self.state LightState.ON:if not human_present:self.state LightState.TIMEOUTself.timeout_counter MOTION_TIMEOUT_SECprint(\n⏳ [INFO] 未检测到人进入延时关灯倒计时...)elif self.state LightState.TIMEOUT:if human_present:self.state LightState.ONprint(\n✅ [INFO] 重新检测到人取消关灯。)else:self.timeout_counter - 1if self.timeout_counter 0:self.state LightState.OFFprint(\n [ACTION] 延时结束关灯节能)return self.state5. main.py (主程序)# main.pyimport timefrom sensors.pir_sensor import PIRSensorfrom sensors.radar_sensor import MicrowaveRadarSensorfrom sensors.light_sensor import LightSensorfrom core.lighting_controller import LightingControllerfrom actuators.light_driver import LightDriverdef main():print( 智能酒店客房系统启动...)pir PIRSensor()radar MicrowaveRadarSensor()light_sensor LightSensor(initial_lux50) # 模拟傍晚室内光线controller LightingController()light LightDriver()# 模拟客人活动序列guest_actions [(enter_room, 5), # 进入房间(sit_still, 10), # 静坐看书 (无大幅动作)(leave_room, 5), # 离开房间]action_index 0try:while True:# 解析当前动作action, duration guest_actions[action_index % len(guest_actions)]if action enter_room:pir.simulate_motion(duration)radar.set_presence(True)elif action sit_still:radar.set_presence(True) # 雷达仍能检测到呼吸elif action leave_room:radar.set_presence(False)# 读取传感器motion_detected pir.read_motion() or radar.read_presence()is_dark light_sensor.is_dark()print(f[SENSOR] Motion: {motion_detected} | Dark: {is_dark}, end\r)# 更新控制器state controller.update(motion_detected, is_dark)# 驱动执行器if state controller.state.ON:light.turn_on()elif state controller.state.OFF:light.turn_off()time.sleep(SAMPLING_INTERVAL)except KeyboardInterrupt:print(\n系统关闭。)if __name__ __main__:main()五、README.md 文件# Smart Hotel Room - 智能酒店客房照明系统## 项目简介这是一个基于 Python 的智能建筑模拟项目。系统通过融合 PIR 和微波雷达传感器实现高可靠性的人体存在检测与节能照明控制。## 功能特性* 多传感器融合 (PIR 雷达)* 环境光自适应 (黄昏不开灯)* 延时关灯逻辑 (防止误关)* 有限状态机 (FSM) 管理## ️ 运行指南bashpython main.py## 运行逻辑1. 程序启动模拟傍晚昏暗环境。2. 客人进入房间 (PIR触发)灯光开启。3. 客人静坐看书 (PIR无触发雷达维持)灯光保持。4. 客人离开延时 30 秒后灯光自动关闭。六、核心知识点卡片 (Knowledge Cards)领域 知识点 说明智能仪器 被动红外 (PIR) 检测人体热辐射的菲涅尔透镜聚焦信号。微波传感 多普勒效应 发射微波接收回波频率变化检测微动。系统设计 传感器融合 结合 PIR (省电) 和 Radar (精准) 的优点。控制理论 延时去抖 (Timeout) 避免因短暂遮挡或信号丢失导致的设备频繁启停。七、总结 (Summary)在这个项目中我们构建了一个远比“声控灯”聪明的系统。作为全栈工程师我特别想强调“场景化设计”的重要性。如果只使用 PIR 传感器客人在床上睡觉或静坐时系统会误判房间为空并关灯这是致命的 UX用户体验缺陷。通过引入微波雷达检测微动我们解决了“静止人体”的识别难题。此外“延时关灯”机制体现了工程上的鲁棒性Robustness——它容忍了传感器的短暂噪声或人的短暂离开如去拿个水杯避免了频繁的开关冲击延长了灯具寿命。这套架构可直接部署在 ESP32 或树莓派上配合继电器模块即可改造你的宿舍或公寓。如果你对硬件感兴趣下一步我们可以探讨如何使用 ESP-NOW 协议实现多房间联动利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛