1. 项目概述
作为一名嵌入式开发工程师,最近完成了一个特别有意义的项目——为视障人士设计的智能水杯系统。这个项目源于我的一位视障朋友在使用普通水杯时遇到的诸多不便:无法判断水温、不知道杯中水量、经常找不到水杯位置。基于STM32单片机开发的这套系统,通过多传感器融合和语音交互,完美解决了这些痛点。
系统核心功能包括:
- 实时监测并语音播报水温(通过DS18B20温度传感器)
- 精确测量水量并分级提醒(HX711称重模块)
- 语音控制水杯定位(SU-02T声控模块)
- 定时服药提醒功能
- 自动温控系统(加热/制冷继电器)
特别说明:水位阈值100/200的单位是克(g),对应约半杯和满杯状态。这个设计考虑了水杯倾倒时的误报问题,实际测试中当倾斜角度超过45度时会自动暂停检测。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件系统设计
2.1 核心控制器选型
经过对比STM32F103C6T6和STC89C52两款单片机,最终选择了前者,主要基于三点考量:
-
性能需求:
- 需要同时处理语音识别、温度采集、重量测量等多个任务
- STM32的72MHz主频远超STC89C52的12MHz
- 内置DMA控制器可减轻CPU负担
-
外设资源:
c复制// STM32F103C6T6资源概览 - 32KB Flash / 10KB SRAM - 2个SPI接口(驱动OLED和HX711) - 3个USART(语音模块通信) - 11个定时器(用于PWM温控和倒计时) -
开发便利性:
- 标准库和HAL库生态完善
- 支持在线调试(SWD接口)
- 更丰富的中断优先级配置
2.2 传感器模块详解
2.2.1 温度检测方案
采用DS18B20数字温度传感器,相比模拟传感器有以下优势:
- 单总线协议节省IO口
- ±0.5℃的测量精度
- 防水封装可直接浸入液体
典型读取代码示例:
c复制float Read_DS18B20(void) {
DS18B20_Start();
DS18B20_WriteByte(0xCC); // 跳过ROM
DS18B20_WriteByte(0xBE)
