编写程序让智能保温杯定时提醒喝水,每两小时提示一次,养成健康习惯。

张开发
2026/4/17 8:20:46 15 分钟阅读

分享文章

编写程序让智能保温杯定时提醒喝水,每两小时提示一次,养成健康习惯。
结合智能仪器传感器与执行器的思维用 Python 打造一个智能保温杯提醒助手桌面版原型。项目实战基于 Python 的智能饮水提醒系统一、 实际应用场景描述目标用户是典型的久坐办公族/程序员。用户使用一个带有电子屏幕和蜂鸣器的智能保温杯或仅运行配套软件。系统启动后后台静默计时。每当到达预设的时间间隔例如 2 小时保温杯上的 LED 屏会闪烁并显示“请喝水”同时发出轻柔的提示音强制打断用户的工作流提醒补充水分。二、 引入痛点 (Pain Points)1. 注意力残留 (Attention Residue)深度工作时大脑会抑制口渴感导致长时间不饮水。2. 被动健康损耗缺水会导致血液粘稠、皮肤干燥、肾结石风险增加。3. 缺乏规律性即使想喝水也是想起才喝一口没有形成稳定的生物钟习惯。4. 现有方案不足手机闹钟容易被忽略因为看手机本身也是分心而物理水瓶无法主动“说话”。三、 核心逻辑讲解本系统遵循“定时-触发-反馈” (Timer-Trigger-Feedback) 模型这是嵌入式系统中的常见范式1. 定时器模块 (Timer Module)使用time 或threading 创建非阻塞计时。2. 阈值判断 (Threshold Check)检查当前时间与上次饮水时间的差值是否 ≥ 设定间隔2h。3. 执行器模拟 (Actuator Simulation)* 视觉反馈控制台打印醒目的 ASCII 字符或日志。* 听觉反馈调用系统蜂鸣声winsound/os.system。4. 状态记录 (State Logging)记录每次喝水的时间戳用于习惯分析。四、 代码模块化实现我们将代码拆分为三个模块config.py配置、reminder.py核心提醒逻辑、main.py主入口。1. 配置文件config.py# config.py# 存放系统全局配置参数REMINDER_INTERVAL_SECONDS 7200 # 提醒间隔2小时 7200秒# 为了演示方便你可以暂时改为 20 秒# REMINDER_INTERVAL_SECONDS 20LOG_FILE hydration_log.txt2. 核心逻辑与执行器reminder.py# reminder.pyimport timeimport osimport platformfrom datetime import datetimefrom config import LOG_FILEclass HydrationReminder:def __init__(self, interval):self.interval intervalself.last_drink_time time.time() # 初始化为当前时间def log_event(self, message):记录喝水事件到日志文件timestamp datetime.now().strftime(%Y-%m-%d %H:%M:%S)with open(LOG_FILE, a, encodingutf-8) as f:f.write(f[{timestamp}] {message}\n)def trigger_alert(self):触发提醒视觉听觉# 视觉提醒print(\n *40)print( 该喝水啦Hydration Time! )print(请放下手头工作起身喝一杯水。)print(*40 \n)# 听觉提醒跨平台兼容system_name platform.system()try:if system_name Windows:import winsound# 频率 1000Hz, 持续 500mswinsound.Beep(1000, 500)elif system_name in [Darwin, Linux]: # macOS 或 Linux# 使用系统自带的响铃os.system(echo -e \a)else:print( (无法播放声音))except Exception as e:print(f声音播放失败: {e})def check_and_remind(self):核心检查逻辑current_time time.time()elapsed_time current_time - self.last_drink_timeif elapsed_time self.interval:self.trigger_alert()self.log_event(触发喝水提醒)# 重置计时器也可以让用户手动确认后重置self.last_drink_time current_timedef user_drank(self):用户确认已喝水模拟保温杯按钮按下self.last_drink_time time.time()self.log_event(用户已喝水)print(f✅ 记录成功下次提醒将在 {self.interval/3600} 小时后。)3. 主程序main.py# main.pyimport timefrom config import REMINDER_INTERVAL_SECONDSfrom reminder import HydrationReminderdef main():print( 智能饮水提醒系统已启动 )print(f设置提醒间隔: {REMINDER_INTERVAL_SECONDS / 3600} 小时)print(按 CtrlC 退出程序。)reminder HydrationReminder(intervalREMINDER_INTERVAL_SECONDS)try:while True:# 后台循环检查reminder.check_and_remind()# 休眠 1 秒避免 CPU 空转time.sleep(1)except KeyboardInterrupt:print(\n 程序已退出保持良好的饮水习惯)if __name__ __main__:main()五、 README 文件与使用说明README.md# 智能饮水提醒助手 (Smart Hydration Reminder)## 项目简介这是一个基于 Python 的桌面端健康习惯养成工具模拟智能保温杯的定时提醒功能。## 环境准备- Python 3.6- 操作系统Windows / macOS / Linux## 运行方式1. 确保三个文件 (main.py, reminder.py, config.py) 在同一目录。2. 打开终端运行bashpython main.py3. 程序将在后台运行每 2 小时弹出提醒。## 自定义配置编辑 config.py 文件python修改提醒间隔秒REMINDER_INTERVAL_SECONDS 7200 # 2小时六、 核心知识点卡片 (Knowledge Cards)领域 知识点 说明智能仪器 执行器 (Actuator) 蜂鸣器和显示屏是系统的“执行器”负责输出指令。嵌入式思维 轮询机制 (Polling) 主循环中周期性检查条件是否满足。Python编程 跨平台兼容性 使用platform.system() 区分 OS调用不同 API。并发基础 非阻塞延时 使用sleep(1) 而非忙等降低 CPU 占用。UX设计 微中断 (Micro-interruption) 强制打断用户流建立条件反射。七、 总结通过这个项目我们不仅写了代码更是设计了一套行为干预系统。1. 技术映射现实我们用简单的time.sleep() 模拟了单片机里的定时器中断用print 模拟了 LCD 屏幕。2. 以人为本程序的核心不是复杂的算法而是对“人体生理节奏”的理解。3. 扩展性在真实硬件中只需将trigger_alert 替换为点亮 LED 矩阵或驱动蓝牙模块即可。进阶挑战你可以尝试加入keyboard 库监听快捷键如 F12来标记“已喝水”或者接入 GUI 界面Tkinter做成可视化小工具。代码在手水不离口利用AI解决实际问题如果你觉得这个工具好用欢迎关注长安牧笛

更多文章