基于STM32的智能宠物小屋设计
若该文为原创文章,转载请注明原文出处。
一、引言
现代生活中,宠物已成为许多家庭的重要成员。然而,主人外出时,宠物的饮食、饮水和生活环境成为担忧的问题。传统宠物喂养方式无法实现精准管理和远程照看。本项目设计一款以STM32为核心的智能宠物小屋系统。该系统能够自动监测并调节小屋内环境温湿度,智能管理宠物粮食和饮水的补给,并通过远程监控功能让主人随时了解爱宠状态并进行干预,极大提升了宠物饲养的便捷性、科学性和趣味性。
二、系统总体设计
(一)系统架构
本系统以STM32为控制核心,集成了环境感知、粮水管理、人机交互和远程通信功能。
感知层:负责采集小屋内温湿度、粮仓重量、水盆水位等数据。
控制层:STM32核心,处理所有数据,执行判断逻辑,发出控制指令。
执行层:包括风扇、舵机(投食)、水泵(加水),负责具体动作的执行。
交互层:OLED显示屏和按键,提供本地状态显示和设置功能。
通信层:Wi-Fi模块,连接互联网,实现手机APP的远程数据监控和设备控制。
(二)功能模块划分
环境调控模块:温湿度监测与自动降温。
智能投喂模块:余粮检测与自动补粮。
自动供水模块:水位检测与自动补水。
状态显示模块:所有参数与状态的本地可视化。
远程监控模块:与手机APP的数据交互。
三、硬件设计与实现
(一)系统硬件框架图
(二)主控模块选型及介绍
核心控制器采用STM32F103C8T6。该芯片资源丰富,提供PWM输出驱动舵机,ADC接口读取水位传感器,I2C驱动OLED,UART连接Wi-Fi模块,GPIO控制继电器和读取数字信号,完美契合本项目所有外设需求,是性价比极高的选择。
(三)传感器模块选型及电路设计
DHT11:数字温湿度传感器,单总线协议,连接普通GPIO,用于监测小屋环境。
HX711 + 称重传感器:用于粮仓重量检测。
称重传感器:通常为电阻应变式,组成惠斯通电桥。其输出微弱信号需专用芯片处理。
HX711模块:24位高精度A/D转换芯片,专为称重设计。其DT和SCK引脚分别连接STM32的两个GPIO。STM32通过特定的时序读取HX711转换后的重量数据,精度远高于普通ADC。
水位传感器:采用模拟输出型传感器,输出模拟电压信号,连接STM32的ADC引脚(如PA0)。水位越高,输出电压越高。(也可使用数字开关型,但模拟型能提供更精确的水量信息)。
(四)执行模块选型及驱动电路
舵机(投食):采用SG90等常见小型舵机。控制信号为PWM波,连接STM32的定时器PWM输出通道(如TIM3_CH1)。通过调节PWM的占空比来控制舵机的旋转角度,从而控制出粮口的开闭和开合大小。
直流风扇:可采用5V直流风扇,通过一个MOS管(如IRF520模块)或继电器模块由STM32的GPIO控制通断。MOS管方案更安静,适合低速持续通风。
小型水泵:通常为5V或12V直流电机驱动。必须使用继电器模块或MOS管驱动,绝不能直接连接STM32的GPIO。控制方式与风扇类似。
(五)通信模块选型
采用ESP-01S ESP8266模块。通过UART(如USART2)与STM32连接。STM32通过AT指令控制其连接家庭Wi-Fi并接入云平台(如MQTT服务器),实现与手机APP的数据双向传输。
四、软件设计与实现
(一)开发环境搭建
IDE:Keil uVision 5。
配置工具:使用STM32CubeMX进行硬件初始化配置(启用I2C、UART、ADC、定时器PWM等),生成HAL库代码工程。
库移植:移植OLED、DHT11、HX711、ESP8266的驱动程序库。
(二)系统软件流程图
(三)核心代码逻辑
// 定义全局变量与阈值
float temp_threshold_high = 30.0;
int food_weight_threshold = 100; // 单位: 克
int water_level_threshold = 200; // ADC值, 需实验测定void main() {// 初始化HX711, 并去皮(清零)HX711_Tare();// 初始化...while(1) {// 1. 读取传感器temperature = DHT11_GetTemperature();current_food_weight = HX711_GetWeight(); // 获取当前重量water_level = ADC_Read(WATER_SENSOR_CH);// 2. OLED显示OLED_ShowString(0, 0, "Temp:");OLED_ShowNumber(60, 0, temperature);OLED_ShowString(0, 2, "Food:");OLED_ShowNumber(60, 2, current_food_weight);OLED_ShowString(0, 4, "Water:");OLED_ShowNumber(60, 4, water_level);// ... 显示状态信息// 3. 自动控制逻辑// 3.1 温度控制if (temperature > temp_threshold_high) {FAN_ON();} else {FAN_OFF();}// 3.2 投食控制if (current_food_weight < food_weight_threshold) {Servo_Feed(180); // 舵机旋转180度, 投食一次HAL_Delay(1000);Servo_Feed(0); // 舵机归位, 关闭食口current_food_weight += 10; // 模拟投食后重量增加(实际应由HX711重新读取)}// 3.3 补水控制if (water_level < water_level_threshold) {PUMP_ON();} else {PUMP_OFF();}// 4. 处理通信if (time_to_send_data()) {sprintf(json_data, "{\"temp\":%.1f,\"food\":%d,\"water\":%d}",temperature, current_food_weight, water_level);ESP8266_SendToCloud(json_data);}// (在中断中) 如果收到APP指令如 "feed", 则执行一次 Servo_Feed动作HAL_Delay(5000); // 每5秒检测一次, 无需过于频繁}
}
五、系统测试与优化
(一)测试方案
功能测试:
温控测试:用手握住DHT11或用电吹风轻微加热,观察温度超过阈值后风扇是否启动。
投食测试:从粮仓中取走部分粮食,使重量低于阈值,观察舵机是否动作模拟投食。
补水测试:将水位传感器从水中取出擦干,模拟缺水,观察水泵是否启动;放入水中后是否停止。
远程测试:通过APP查看数据,并点击“手动喂食”按钮,观察舵机是否响应。
可靠性测试:
防误触发测试:模拟宠物触碰小屋导致的震动,检查重量读数是否稳定,是否会误触发投食。
长时间运行测试:让系统连续运行24小时,检查是否有内存泄漏、死机或网络断开重连问题。
六、结论与展望
(一)未来展望
本系统是智能宠物小屋的基础模型,未来可扩展性极强:
视频监控集成:集成ESP32-CAM模块,在APP中不仅能看到数据,更能看到宠物的实时画面,互动性更强。
AI智能识别:通过摄像头和边缘计算,实现宠物身份识别、自动份量控制(根据宠物体型)甚至行为分析(如判断宠物是否焦虑)。
语音与交互:增加语音模块,主人可以通过APP发送语音到小屋播放,安抚宠物;或录制声音呼唤宠物进食。
太阳能供电:加入太阳能电池板和管理电路,实现户外小屋的绿色能源自给自足,摆放更灵活。
如有侵权,或需要完整代码,请及时联系博主。