首页 > 分享 > 基于STM32单片机设计的宠物喂食监控系统设计

基于STM32单片机设计的宠物喂食监控系统设计

1. 项目开发背景

随着宠物数量的增加,尤其是人们对宠物的养护需求日益增多,传统的人工喂养和管理方式难以满足现代养宠生活的需求。人们越来越希望通过智能化手段提高宠物养护的质量和效率,特别是对于宠物喂食、饮水、温湿度控制等方面的智能化管理。

基于这一需求,设计并实现了一种基于STM32单片机的宠物喂食监控系统。该系统通过集成多种传感器,结合蓝牙无线通信和云物联网技术,实现了对宠物环境、饮水、喂食等多项功能的智能监控和管理。这不仅能提高宠物生活质量,还能为主人提供更便捷的管理方式。

image-20241225151156565

2. 设计实现的功能

本项目的目标是设计一款智能宠物喂食监控系统,具体功能包括:

1. 温湿度环境监控 采用温湿度传感器,实时采集当前环境的温湿度数据。当温度超过设定阈值时,自动开启风扇进行散热;当湿度超过设定阈值时,自动开启风扇进行空气除湿。 2. 水位检测与自动加水 采用水位传感器,检测宠物水盆的水位情况。当水位低于设定阈值时,自动开启水泵进行加水,保障宠物水量充足。 3. 食物检测与自动投喂 采用红外传感器,实时检测宠物食物盆中的食物量。当食物不足时,自动开启继电器控制投喂装置进行喂食。 4. 手动模式与智能模式切换 提供7个按键进行手动模式与智能模式的切换,允许用户手动控制喂食、喂水、散热、除湿等功能,同时可以设置温湿度阈值。 5. OLED液晶显示 系统通过OLED显示屏实时显示采集到的环境数据,包括当前的温湿度、设定的温湿度阈值、水位、食物量、控制模式等信息。 6. 蓝牙无线控制 采用HC-05蓝牙模块实现与手机APP的无线通信,通过手机APP显示当前环境状态并支持远程控制,如模式切换、温湿度阈值设置、喂食、喂水、散热、除湿等操作。 7. 数据上云与可视化管理 系统支持将数据通过WIFI模块上传至华为云物联网平台,采用MQTT协议进行数据传输。用户可以通过可视化网页查看历史数据、实时监控宠物的状态,并远程控制系统。 8. 服务器与前端展示 采用Python作为后端服务器,接收华为云物联网平台的数据,并通过HTML前端页面展示。支持局域网或公网访问,用户可以在任何地方查看宠物状态并进行操作。

3. 项目硬件模块组成

本系统的硬件部分基于STM32单片机进行设计,主要包含以下模块:

3.1. 核心控制单元:STM32单片机

• 型号:STM32F103RCT6 • 功能:作为整个系统的核心控制单元,负责接收传感器数据、控制设备、进行数据传输与无线通信。

3.2. 温湿度传感器(SHT30)

• 功能:用于实时监测环境的温度和湿度,当温湿度超过设定阈值时,控制风扇启停以调整环境。

3.3. 水位传感器

• 功能:检测宠物水盆中的水位情况,当水位低于设定阈值时,自动开启水泵进行加水。

3.4. 红外传感器

• 功能:用于检测宠物食物盆中的食物量,当食物不足时,自动启动继电器进行食物投喂。

3.5. 风扇与水泵控制模块

• 功能:风扇和水泵的控制电路,通过继电器控制风扇、泵和喂食装置的启停。

3.6. 蓝牙模块(HC-05)

• 功能:实现与手机APP的无线通信,允许用户通过蓝牙进行远程控制和数据查看。

3.7. OLED显示模块

• 功能:用于实时显示环境数据,包括温湿度、设定阈值、水位、食物量等信息。

3.8. 继电器模块

• 功能:控制喂食装置、电动水泵和风扇的启停。

3.9. 无线网络模块(ESP8266)

• 功能:用于将数据上传至华为云物联网平台,实现数据存储和历史数据分析。

3.10. 电源模块

• 功能:为系统提供稳定的电源供应,保证各模块正常运行。

4. 设计思路

本项目的设计思路可以概括为以下几个步骤:

1. 传感器数据采集 使用温湿度传感器、红外传感器和水位传感器采集环境数据、食物量和水量。 2. 数据处理与控制决策 STM32单片机根据采集到的实时数据,进行处理和判断,是否满足自动控制的条件(如温湿度过高、水位不足、食物不足等),然后通过继电器控制设备的启停。 3. 用户交互与模式切换 通过按键电路提供用户手动模式的操作,允许用户设置阈值和直接控制设备。用户也可以通过手机APP与系统进行无线通信,控制和查看宠物状态。 4. 显示与反馈 使用OLED显示模块实时反馈当前环境的温湿度、水位、食物量等信息,让用户能够直观地了解宠物的状态。 5. 数据上云与远程监控 系统通过ESP8266模块连接WIFI,并将数据上传至华为云物联网平台。用户可以通过PC端或手机端的网页实时查看宠物的状态、历史数据,并进行远程控制。 6. 网页展示与控制 后端Python服务器通过API接口拉取华为云物联网平台的数据,将其展示在前端网页上,支持用户通过网页进行远程监控与控制。

5. 系统功能总结

功能模块 功能描述 实现方式 温湿度环境监控 实时采集环境温湿度,当温湿度超过阈值时自动启动风扇和除湿 SHT30传感器、继电器模块控制风扇 水位检测与自动加水 检测水盆水位,低于设定值时自动启动水泵加水 水位传感器、继电器模块控制水泵 食物检测与自动投喂 检测食物盆中食物量,低于设定值时自动投喂食物 红外传感器、继电器模块控制投喂装置 手动模式与智能模式切换 用户可手动设置阈值或切换模式,系统根据数据自动控制设备 7个按键电路、STM32控制逻辑 OLED显示功能 显示环境数据、设备状态、控制模式等信息 OLED显示模块 蓝牙无线控制 通过手机APP无线控制温湿度阈值、喂食、喂水等操作 HC-05蓝牙模块、手机APP 数据上云与可视化管理 将实时数据上传至华为云,支持历史数据查看和远程控制 ESP8266、华为云物联网平台、MQTT协议 前端网页展示与控制 通过网页展示宠物状态,并允许用户远程控制 Python后端、HTML前端、API接口

6. 使用的模块技术详情介绍

6.1. STM32F103RCT6

STM32F103RCT6是STM32系列中一款基于ARM Cortex-M3核心的32位单片机,具有较强的处理能力和丰富的外设接口,适合嵌入式应用。该单片机具有高达72MHz的主频,支持多种通信接口(如USART、SPI、I2C等),广泛应用于物联网、自动化控制等领域。

6.2 SHT30温湿度传感器

SHT30是一款高精度的温湿度传感器,具有较高的测量精度和稳定性,适用于对温湿度要求较高的应用场景。通过I2C接口与STM32单片机进行通信,能够实时获取环境温湿度数据。

6.3. HC-05蓝牙模块

HC-05是一款常用的蓝牙串口模块,通过串口通信与STM32单片机连接,提供无线通信能力。用户通过手机APP与系统进行蓝牙连接,能够实现远程控制和数据查看。

6.4. ESP8266 WiFi模块

ESP8266是一款低成本、低功耗的WiFi模块,支持与STM32单片机进行串口通信,能够将采集到的数据通过WIFI上传至云端。该模块支持MQTT协议,用于物联网设备之间的数据传输。

6.5. OLED显示屏

OLED显示屏是一种广泛应用的显示模块,具有高对比度、广视角和低功耗的特点。在本系统中,OLED显示屏用于实时显示温湿度、水位、食物量等信息。

7. 总结

基于STM32单片机设计的宠物喂食监控系统通过集成多种传感器、无线通信技术和云物联网平台,实现了对宠物生活环境的全面监控和管理。系统具有智能自动模式和手动模式两种操作方式,用户通过手机APP可以随时远程控制系统,并且能够实时查看宠物状态。通过将数据上传至华为云物联网平台,本系统还支持历史数据的查看和分析,进一步提升了宠物管理的智能化程度。

在今后的工作中,系统可以进一步优化传感器的精度和控制策略,增加更多的智能功能,如智能预警、自动喂食计划等,进一步提高系统的智能化水平和实用性。

8. STM32代码设计

以下是一个基本的 main.c 文件。此文件包括了系统初始化、各个模块的调用,以及手动模式和智能模式的切换。代码中已经使用了 STM32 HAL 库。

main.c 完整代码

#include "main.h" #include "stm32f1xx_hal.h" #include "sht30.h" // 温湿度传感器库 #include "oled.h" // OLED显示库 #include "water_level.h" // 水位传感器库 #include "food_level.h" // 食物红外传感器库 #include "relay_control.h"// 继电器控制库 #include "bluetooth.h" // 蓝牙控制库 #include "wifi.h" // WiFi上传库 // 定义阈值 #define TEMP_THRESHOLD_HIGH 30 // 温度上限 (30°C) #define TEMP_THRESHOLD_LOW 20 // 温度下限 (20°C) #define HUM_THRESHOLD_HIGH 70 // 湿度上限 (70%) #define HUM_THRESHOLD_LOW 40 // 湿度下限 (40%) #define WATER_LEVEL_THRESHOLD 30 // 水位下限(单位:%) #define FOOD_LEVEL_THRESHOLD 10 // 食物下限(单位:%) // 定义系统模式 #define MODE_MANUAL 0 #define MODE_AUTO 1 // 全局变量 uint8_t system_mode = MODE_AUTO; // 初始为自动模式 float current_temp, current_hum; // 当前温湿度 int water_level, food_level; // 当前水位和食物量 uint8_t temp_threshold_high = TEMP_THRESHOLD_HIGH; uint8_t temp_threshold_low = TEMP_THRESHOLD_LOW; uint8_t hum_threshold_high = HUM_THRESHOLD_HIGH; uint8_t hum_threshold_low = HUM_THRESHOLD_LOW; // 函数声明 void System_Init(void); void Read_Sensors(void); void Handle_Auto_Mode(void); void Handle_Manual_Mode(void); void Update_Display(void); void Control_Fans(void); void Control_Water_Pump(void); void Control_Food_Dispenser(void); int main(void) { // 系统初始化 HAL_Init(); System_Init(); // 主循环 while (1) { // 读取传感器数据 Read_Sensors(); // 根据当前模式执行相应的操作 if (system_mode == MODE_AUTO) { Handle_Auto_Mode(); } else if (system_mode == MODE_MANUAL) { Handle_Manual_Mode(); } // 更新OLED显示 Update_Display(); } } void System_Init(void) { // 初始化硬件外设 HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); // 初始化GPIO OLED_Init(); // 初始化OLED显示 SHT30_Init(); // 初始化温湿度传感器 Water_Level_Init(); // 初始化水位传感器 Food_Level_Init(); // 初始化食物传感器 Relay_Init(); // 初始化继电器控制 Bluetooth_Init(); // 初始化蓝牙模块 Wifi_Init(); // 初始化WiFi模块 } void Read_Sensors(void) { // 读取温湿度传感器 SHT30_Read_Temperature_Humidity(&current_temp, &current_hum); // 读取水位传感器 water_level = Water_Level_Read(); // 读取食物量传感器 food_level = Food_Level_Read(); } void Handle_Auto_Mode(void) { // 根据温湿度自动控制风扇和除湿 Control_Fans(); // 根据水位自动控制加水 if (water_level < WATER_LEVEL_THRESHOLD) { Control_Water_Pump(); } // 根据食物量自动控制投喂 if (food_level < FOOD_LEVEL_THRESHOLD) { Control_Food_Dispenser(); } } void Handle_Manual_Mode(void) { // 手动控制模式下,蓝牙控制命令判断 Bluetooth_Control(); // 用户通过按键手动调整温湿度阈值 if (Button_Pressed(UP_TEMP_BTN)) { temp_threshold_high += 1; // 增加温度阈值 } if (Button_Pressed(DOWN_TEMP_BTN)) { temp_threshold_high -= 1; // 减少温度阈值 } if (Button_Pressed(UP_HUM_BTN)) { hum_threshold_high += 5; // 增加湿度阈值 } if (Button_Pressed(DOWN_HUM_BTN)) { hum_threshold_high -= 5; // 减少湿度阈值 } // 手动控制加水和喂食 if (Button_Pressed(WATER_BTN)) { Control_Water_Pump(); } if (Button_Pressed(FEED_BTN)) { Control_Food_Dispenser(); } } void Control_Fans(void) { // 控制温湿度风扇 if (current_temp > temp_threshold_high || current_hum > hum_threshold_high) { Relay_On(FAN_RELAY); } else if (current_temp < temp_threshold_low && current_hum < hum_threshold_low) { Relay_Off(FAN_RELAY); } } void Control_Water_Pump(void) { // 控制水泵 Relay_On(WATER_PUMP_RELAY); HAL_Delay(3000); // 延时3秒钟加水 Relay_Off(WATER_PUMP_RELAY); } void Control_Food_Dispenser(void) { // 控制食物投喂 Relay_On(FEED_RELAY); HAL_Delay(2000); // 延时2秒钟投喂 Relay_Off(FEED_RELAY); } void Update_Display(void) { // 更新OLED显示屏,显示传感器数据和系统状态 OLED_Clear(); OLED_Display_String(0, 0, "Temp: %.1f C", current_temp); OLED_Display_String(0, 1, "Humidity: %.1f %%", current_hum); OLED_Display_String(0, 2, "Water: %d %%", water_level); OLED_Display_String(0, 3, "Food: %d %%", food_level); if (system_mode == MODE_AUTO) { OLED_Display_String(0, 4, "Mode: Auto"); } else { OLED_Display_String(0, 4, "Mode: Manual"); } } void Bluetooth_Control(void) { // 读取蓝牙指令并处理 uint8_t command = Bluetooth_Read_Command(); if (command == 'M') { system_mode = MODE_MANUAL; // 切换到手动模式 } else if (command == 'A') { system_mode = MODE_AUTO; // 切换到自动模式 } else if (command == 'W') { Control_Water_Pump(); // 手动加水 } else if (command == 'F') { Control_Food_Dispenser(); // 手动投喂 } }

代码解释

1. 初始化函数(System_Init) 初始化所有硬件模块,包括OLED显示、温湿度传感器、水位传感器、食物传感器、继电器模块、蓝牙和WiFi模块。 2. 传感器数据读取(Read_Sensors) 通过调用各自的函数获取传感器数据。温湿度数据通过 SHT30_Read_Temperature_Humidity 获取,水位和食物数据分别通过 Water_Level_Read 和 Food_Level_Read 获取。 3. 自动模式处理(Handle_Auto_Mode) 根据当前的传感器数据,自动判断是否需要开启风扇(散热或去湿),是否需要加水和投食。 4. 手动模式处理(Handle_Manual_Mode) 在手动模式下,允许用户通过按键设置温湿度阈值,并通过蓝牙控制手动加水、喂食等操作。 5. 风扇控制(Control_Fans) 如果温度超过设定阈值或湿度超过阈值,开启风扇;否则,关闭风扇。 6. 水泵控制(Control_Water_Pump) 如果水位低于设定阈值,开启水泵加水。 7. 食物投喂控制(Control_Food_Dispenser) 如果食物量不足,启动继电器进行食物投喂。 8. OLED显示更新(Update_Display) 将温湿度、水位、食物量和当前模式等信息显示在OLED屏上。 9. 蓝牙控制(Bluetooth_Control) 从蓝牙接收控制命令,切换模式或执行操作(如加水、投喂)。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com

相关知识

基于STM32单片机设计的宠物喂食监控系统
基于stm32单片机的wifi手机app宠物喂食系统设计
基于STM32单片机的宠物智能项圈设计
基于单片机的宠物喂食系统设计
基于单片机的智能宠物喂食系统设计
基于STM32单片机的智能宠物屋的设计与实现
基于STM32单片机的智能鱼缸设计
基于STM32单片机的智能宠物系统的未来发展
基于STM32单片机的宠物监测系统设计
基于stm32智能图像宠物投喂喂养物联网单片机软硬件设计毕业生系统

网址: 基于STM32单片机设计的宠物喂食监控系统设计 https://m.mcbbbk.com/newsview1204206.html

所属分类:萌宠日常
上一篇: 【管理必学】鱼缸理论:发现客户最
下一篇: 什么样的人适合养鱼,十二生肖鱼缸