编写程序实现智能书店灯光根据人流量自动调节亮度,人多亮人少暗。

张开发
2026/4/20 3:06:16 15 分钟阅读

分享文章

编写程序实现智能书店灯光根据人流量自动调节亮度,人多亮人少暗。
项目名称BookGlow (智能书店自适应照明系统)一、 实际应用场景描述场景设定为一家 24 小时营业的连锁书店。书店安装了多个区域入口区、阅读区、书架走廊每个区域上方装有 LED 调光灯具 和一个 红外热释电传感器 (PIR) 或 毫米波雷达。系统通过统计各区域的实时人数或检测活动热释电信号动态调整该区域的灯光亮度PWM 调光和色温在保证阅读体验的同时最大化节能。二、 引入痛点传统书店照明存在以下能耗与体验痛点1. 长明灯浪费无人区域灯光常亮造成大量电能浪费尤其是深夜时段。2. 体验割裂顾客进入时一片漆黑需要摸索找开关离开后灯光常亮。3. 一刀切控制无论是一个人看书还是十个人讨论灯光亮度都一样不够智能。4. 维护成本高传统感应灯频繁开关缩短灯泡寿命。三、 核心逻辑讲解本系统的核心逻辑基于分级调光策略 (Step Dimming Strategy) 与 淡入淡出 (Fade In/Out) 控制1. 客流检测 (Occupancy Sensing)* 使用 PIR 传感器模拟输出有人/无人或简易计数器。* 这里我们模拟一个people_count人数变量。2. 非线性亮度映射 (Non-linear Mapping)* 0 人保持基础亮度 15%安防与指引。* 1-2 人调至舒适亮度 40%。* 3-5 人调至阅读亮度 70%。* 5 人全亮 100%。3. 缓变控制 (Ramping)* 为防止电流冲击和视觉不适亮度变化不是瞬间完成的而是线性渐变例如每秒变化 5% PWM。四、 代码模块化实现我们将代码分为三个模块config.py (照明标准)、sensors.py (客流模拟)、lighting.py (调光控制器)、main.py (主循环)。1. 配置文件config.py配置文件照明控制参数参考建筑照明设计标准# 亮度分级映射表 (PWM占空比 0.0~1.0)LIGHTING_LEVELS [{min_people: 0, max_people: 0, brightness: 0.15, label: 待机/安防},{min_people: 1, max_people: 2, brightness: 0.40, label: 舒适模式},{min_people: 3, max_people: 5, brightness: 0.70, label: 阅读模式},{min_people: 6, max_people: 100, brightness: 1.00, label: 全亮模式}]# 调光参数FADE_STEP 0.05 # 每次调整的步长UPDATE_INTERVAL_S 1 # 更新间隔2. 传感器模拟模块sensors.py智能仪器课程相关客流检测模拟模拟 PIR 传感器或红外计数器import randomclass PeopleCounterSensor:虚拟客流传感器模拟书店内人数的自然流动def __init__(self, initial_count0):self.people_count initial_countdef update_count(self):模拟人数变化书店内人数会有进有出change random.choice([-2, -1, 0, 1, 2])self.people_count max(0, self.people_count change)return self.people_count3. 照明控制器lighting.py智能仪器核心LED 调光控制器实现分级调光与缓变控制from config import LIGHTING_LEVELS, FADE_STEPclass LightingController:LED 照明控制器输入: 人数输出: PWM 亮度指令def __init__(self):self.current_brightness 0.0self.target_brightness 0.0def get_target_brightness(self, people_count):根据人数计算目标亮度for level in LIGHTING_LEVELS:if level[min_people] people_count level[max_people]:print(f [决策] 人数: {people_count}, 匹配模式: {level[label]})return level[brightness]return 0.0def update_lights(self, people_count):更新灯光状态 (带缓变效果)self.target_brightness self.get_target_brightness(people_count)# 缓变逻辑逐步接近目标亮度if self.current_brightness self.target_brightness:self.current_brightness min(self.current_brightness FADE_STEP, self.target_brightness)elif self.current_brightness self.target_brightness:self.current_brightness max(self.current_brightness - FADE_STEP, self.target_brightness)return round(self.current_brightness, 2)4. 主程序逻辑main.pyBookGlow - 主执行文件import timeimport datetimefrom sensors import PeopleCounterSensorfrom lighting import LightingControllerclass SmartBookstore:def __init__(self):self.sensor PeopleCounterSensor(initial_count1)self.lighting LightingController()def display_status(self, people, brightness):显示当前状态brightness_pct int(brightness * 100)print(f\r[{datetime.datetime.now().strftime(%H:%M:%S)}] f人数: {people:3} | f亮度: {brightness_pct:3}% , end)def run(self):主运行循环print( 智能书店照明系统启动 )print(模拟场景深夜书店顾客陆续进出)print(- * 60)try:while True:# 1. 检测客流people_count self.sensor.update_count()# 2. 控制灯光brightness self.lighting.update_lights(people_count)# 3. 显示状态self.display_status(people_count, brightness)time.sleep(UPDATE_INTERVAL_S)except KeyboardInterrupt:print(\n\n系统已关闭。)if __name__ __main__:bookstore SmartBookstore()bookstore.run()五、 README 文件# BookGlow - 智能书店自适应照明系统## 项目简介这是一个基于 Python 的商业空间智能照明模拟项目。项目模拟了书店根据实时客流量自动调节 LED 灯光亮度的逻辑实现节能与舒适体验的平衡。## 核心功能* **分级调光**: 根据人数区间0人、1-2人、3-5人、5人以上自动切换不同的亮度等级。* **缓变控制 (Ramping)**: 灯光亮度平滑过渡避免瞬间开关对人眼和电网的冲击。* **客流模拟**: 模拟真实书店内顾客进出的动态变化。## 环境依赖* Python 3.8## 使用说明1. 确保 config.py, sensors.py, lighting.py, main.py 在同一目录。2. 运行主程序bashpython main.py3. 观察控制台输出。系统会模拟人数变化灯光亮度会随之平滑调整。## 扩展建议* 接入真实的 PIR (HC-SR501) 传感器或毫米波雷达 (LD2410)。* 增加 DALI 或 0-10V 调光协议输出控制真实灯具。* 结合时间段如晚上10点后自动降低基础亮度阈值。* 增加照度传感器根据自然光强弱辅助调节室内灯光。六、 核心知识点卡片 (Key Takeaways)类别 知识点 说明智能仪器 分级控制 (Step Control) 将连续的模拟量人数离散化为有限的控制状态。电力电子 PWM 调光 通过调节脉冲宽度来控制 LED 的平均电流从而改变亮度。控制理论 缓变 (Ramping) 一种平滑处理技术防止执行器因阶跃信号受损提升用户体验。系统设计 非侵入式传感 使用 PIR 或雷达检测人体无需摄像头保护隐私。建筑节能 按需照明 根据需求动态调整输出是实现绿色建筑的重要手段。七、 总结在这个智能书店灯光项目中我们探讨了商业空间自动化的核心逻辑。1. 工程思维的落地不同于之前的“点对点控制”如体温→风速这次我们引入了分级映射。这在工程上非常实用因为它降低了控制的复杂度同时满足了大部分场景需求。2. 以人为本的设计lighting.py 中的缓变控制 (Ramping) 是关键。想象一下如果书店灯光突然从 15% 跳到 100%顾客会感到刺眼甚至恐慌。通过FADE_STEP 逐步逼近目标值体现了工程师对“人”的感受的关注。3. 模块化复用sensors.py 中的客流模型可以轻易替换为真实数据。无论是通过摄像头 AI 计数还是红外对射管只要输出people_countlighting.py 的逻辑完全不用改。利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛

更多文章