1. 项目概述:当STM32遇上宠物喂养
去年帮邻居调试他DIY的宠物喂食器时,发现市面上的智能喂食方案要么价格虚高,要么功能单一。作为嵌入式开发者,我决定用STM32打造一款高性价比的智能喂食系统。这个方案核心在于STM32F103C8T6主控板(蓝色药丸板)与多种传感器的协同工作,通过HAL库开发实现定时投喂、余粮监测、远程控制三大核心功能。
整套系统物料成本控制在150元以内,比商用产品便宜60%以上。特别适合有STM32基础想实战练手的开发者,或是需要定制化喂养方案的宠物主人。下面分享从硬件选型到软件实现的完整过程,包含我踩过的坑和优化技巧。
2. 硬件架构设计
2.1 核心控制器选型
选择STM32F103C8T6主要基于三点考量:
- 72MHz主频足够处理传感器数据并控制外围设备
- 内置3个USART接口(WiFi模块、调试接口、备用)
- 丰富的定时器资源(4个通用定时器)适合PWM控制
注意:C8T6的64KB Flash可能紧张,建议使用CubeMX进行外设配置时关闭不用的功能
2.2 关键外设模块
| 模块类型 | 具体型号 | 功能说明 | 接口方式 |
|---|---|---|---|
| 投食机构 | SG90舵机 | 控制储粮仓闸门 | TIM4_CH1(PB6) |
| 重量检测 | HX711+5kg称重传感器 | 余粮监测 | PA0~PA1 |
| 环境监测 | DHT11 | 温湿度采集 | PB7 |
| 通信模块 | ESP-01S | WiFi远程控制 | USART2(PA2/PA3) |
| 显示模块 | 0.96寸OLED | 状态显示 | I2C1(PB8/PB9) |
实测中发现SG90舵机扭矩不足,改进方案:
- 增加杠杆机构(3D打印件)
- 改用MG996R舵机(需外接电源)
- 闸门开合角度优化为60°(原设计90°)
3. 软件实现关键点
3.1 定时喂食功能实现
使用TIM2定时器产生基准时钟,配合RTC实现精准定时:
c复制// 定时器配置示例
htim2.Instance = TIM2;
htim2.Init.Prescaler = 7199; // 72MH
