基于STM32的智能宠物小屋设计

若该文为原创文章,转载请注明原文出处。

一、引言

现代生活中,宠物已成为许多家庭的重要成员。然而,主人外出时,宠物的饮食、饮水和生活环境成为担忧的问题。传统宠物喂养方式无法实现精准管理和远程照看。本项目设计一款以STM32为核心的智能宠物小屋系统。该系统能够自动监测并调节小屋内环境温湿度,智能管理宠物粮食和饮水的补给,并通过远程监控功能让主人随时了解爱宠状态并进行干预,极大提升了宠物饲养的便捷性、科学性和趣味性。

二、系统总体设计

(一)系统架构

本系统以STM32为控制核心,集成了环境感知、粮水管理、人机交互和远程通信功能。

  1. 感知层:负责采集小屋内温湿度、粮仓重量、水盆水位等数据。

  2. 控制层:STM32核心,处理所有数据,执行判断逻辑,发出控制指令。

  3. 执行层:包括风扇、舵机(投食)、水泵(加水),负责具体动作的执行。

  4. 交互层:OLED显示屏和按键,提供本地状态显示和设置功能。

  5. 通信层:Wi-Fi模块,连接互联网,实现手机APP的远程数据监控和设备控制。

(二)功能模块划分
  1. 环境调控模块:温湿度监测与自动降温。

  2. 智能投喂模块:余粮检测与自动补粮。

  3. 自动供水模块:水位检测与自动补水。

  4. 状态显示模块:所有参数与状态的本地可视化。

  5. 远程监控模块:与手机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的数据双向传输。

四、软件设计与实现

(一)开发环境搭建
  1. IDE:Keil uVision 5。

  2. 配置工具:使用STM32CubeMX进行硬件初始化配置(启用I2C、UART、ADC、定时器PWM等),生成HAL库代码工程。

  3. 库移植:移植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秒检测一次, 无需过于频繁
  }
}

五、系统测试与优化

(一)测试方案
  1. 功能测试

    • 温控测试:用手握住DHT11或用电吹风轻微加热,观察温度超过阈值后风扇是否启动。

    • 投食测试:从粮仓中取走部分粮食,使重量低于阈值,观察舵机是否动作模拟投食。

    • 补水测试:将水位传感器从水中取出擦干,模拟缺水,观察水泵是否启动;放入水中后是否停止。

    • 远程测试:通过APP查看数据,并点击"手动喂食"按钮,观察舵机是否响应。

  2. 可靠性测试

    • 防误触发测试:模拟宠物触碰小屋导致的震动,检查重量读数是否稳定,是否会误触发投食。

    • 长时间运行测试:让系统连续运行24小时,检查是否有内存泄漏、死机或网络断开重连问题。

六、结论与展望

(一)未来展望

本系统是智能宠物小屋的基础模型,未来可扩展性极强:

  1. 视频监控集成 :集成ESP32-CAM模块,在APP中不仅能看到数据,更能看到宠物的实时画面,互动性更强。

  2. AI智能识别 :通过摄像头和边缘计算,实现宠物身份识别自动份量控制 (根据宠物体型)甚至行为分析(如判断宠物是否焦虑)。

  3. 语音与交互 :增加语音模块,主人可以通过APP发送语音到小屋播放,安抚宠物;或录制声音呼唤宠物进食。

  4. 太阳能供电 :加入太阳能电池板和管理电路,实现户外小屋的绿色能源自给自足,摆放更灵活。

如有侵权,或需要完整代码,请及时联系博主。

相关推荐
java1234_小锋13 小时前
分享一套不错的基于Python的Django宠物信息管理系统
开发语言·python·宠物
昨夜见军贴06161 天前
IACheck AI审核技术赋能消费认证:为智能宠物喂食器TELEC报告构筑智能合规防线
人工智能·宠物
GIS数据转换器1 天前
基于AI的低空数联无人机智慧巡查平台
大数据·人工智能·机器学习·无人机·宠物
qq_12498707536 天前
基于SpringBoot前后端分离的宠物服务平台(源码+论文+部署+安装)
java·数据库·spring boot·后端·毕业设计·宠物·计算机毕业设计
CHU7290357 天前
宠物寄养小程序前端功能版块详解
小程序·宠物
兆龙电子单片机设计8 天前
【STM32项目开源】STM32单片机智能宠物管家
stm32·单片机·物联网·开源·毕业设计·宠物
wfeqhfxz25887828 天前
YOLOv26多类别目标检测——宠物、婴儿与危险物品识别模型训练与评估
yolo·目标检测·宠物
GIS数据转换器9 天前
基于GIS的宠物救助服务平台
大数据·人工智能·科技·机器学习·无人机·智慧城市·宠物
zilikew10 天前
Flutter框架跨平台鸿蒙开发——桌面宠物APP的开发流程
学习·flutter·harmonyos·鸿蒙·宠物
毕设源码-郭学长11 天前
【开题答辩全过程】以 基于SpringBoot的流浪宠物管理系统设计与实现为例,包含答辩的问题和答案
宠物