1. 项目概述
作为一个长期伏案工作的程序员,我经常一整天都想不起来喝水,直到嘴唇干裂才意识到问题。为了解决这个困扰,我决定开发一套基于STM32的智能饮水提醒系统。这个项目不仅解决了我的个人需求,也让我深入研究了物联网技术在健康领域的应用。
整套系统采用模块化设计,核心是一块STM32F103C8T6最小系统板,搭配DHT11温湿度传感器、HX711压力传感器和0.96寸OLED显示屏。系统最大的特点是实现了环境感知的智能提醒——不是简单定时报警,而是结合环境温湿度数据动态调整提醒策略。当检测到环境干燥(湿度低于40%)或高温(超过28℃)时,系统会缩短提醒间隔;而在舒适环境下则采用常规提醒周期。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统设计与硬件选型
2.1 整体架构设计
系统采用典型的三层架构:
- 感知层:DHT11传感器+HX711压力传感器
- 控制层:STM32F103C8T6最小系统
- 交互层:OLED显示屏+蜂鸣器+ESP8266 WiFi模块
特别要说明的是压力传感器的创新应用。传统方案只检测水杯存在与否,而本系统通过HX711的24位ADC采集重量变化,能判断用户是否真的喝了水。如果检测到水量未减少,下次提醒会提前30%。
2.2 关键硬件选型解析
2.2.1 主控芯片选择
为什么选择STM32F103C8T6?
- 72MHz主频足够处理传感器数据
- 64KB Flash满足复杂逻辑存储
- 丰富的外设接口(I2C/SPI/USART)
- 超低功耗模式(停止模式仅20μA)
实测发现,使用硬件I2C驱动OLED比软件模拟节省30%CPU资源,这对需要长期运行的设备至关重要。
2.2.2 传感器对比测试
在DHT11和DHT22之间我做了详细对比:
| 参数 | DHT11 | DHT22 |
|---|---|---|
| 温度精度 | ±2℃ | ±0.5℃ |
| 湿度精度 | ±5% | ±2% |
| 响应时间 | 2s | 1s |
| 价格 | 8元 | 25元 |
最终选择DHT11的原因是:
- 饮水提醒不需要极高精度
- 成本优势明显
- 更简单的单总线协
