• 方案介紹
    • 1. 項目開發(fā)背景
    • 2. 設計實現(xiàn)的功能
    • 3. 項目硬件模塊組成
    • 4. 設計思路
    • 5. 系統(tǒng)功能總結
    • 6. 使用的模塊技術詳情介紹
    • 7. 總結
    • 8. STM32代碼設計
    • 代碼解釋
  • 附件下載
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

基于STM32單片機設計的寵物喂食監(jiān)控系統(tǒng)

01/25 08:24
7405
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

更多詳細資料請聯(lián)系.docx

共1個文件

1. 項目開發(fā)背景

隨著寵物數(shù)量的增加,尤其是人們對寵物的養(yǎng)護需求日益增多,傳統(tǒng)的人工喂養(yǎng)和管理方式難以滿足現(xiàn)代養(yǎng)寵生活的需求。人們越來越希望通過智能化手段提高寵物養(yǎng)護的質量和效率,特別是對于寵物喂食、飲水、溫濕度控制等方面的智能化管理。

基于這一需求,設計并實現(xiàn)了一種基于STM32單片機的寵物喂食監(jiān)控系統(tǒng)。該系統(tǒng)通過集成多種傳感器,結合藍牙無線通信和云物聯(lián)網(wǎng)技術,實現(xiàn)了對寵物環(huán)境、飲水、喂食等多項功能的智能監(jiān)控和管理。這不僅能提高寵物生活質量,還能為主人提供更便捷的管理方式。

2. 設計實現(xiàn)的功能

本項目的目標是設計一款智能寵物喂食監(jiān)控系統(tǒng),具體功能包括:

  1. 溫濕度環(huán)境監(jiān)控
    采用溫濕度傳感器,實時采集當前環(huán)境的溫濕度數(shù)據(jù)。當溫度超過設定閾值時,自動開啟風扇進行散熱;當濕度超過設定閾值時,自動開啟風扇進行空氣除濕。
  2. 水位檢測與自動加水
    采用水位傳感器,檢測寵物水盆的水位情況。當水位低于設定閾值時,自動開啟水泵進行加水,保障寵物水量充足。
  3. 食物檢測與自動投喂
    采用紅外傳感器,實時檢測寵物食物盆中的食物量。當食物不足時,自動開啟繼電器控制投喂裝置進行喂食。
  4. 手動模式與智能模式切換
    提供7個按鍵進行手動模式與智能模式的切換,允許用戶手動控制喂食、喂水、散熱、除濕等功能,同時可以設置溫濕度閾值。
  5. OLED液晶顯示
    系統(tǒng)通過OLED顯示屏實時顯示采集到的環(huán)境數(shù)據(jù),包括當前的溫濕度、設定的溫濕度閾值、水位、食物量、控制模式等信息。
  6. 藍牙無線控制
    采用HC-05藍牙模塊實現(xiàn)與手機APP的無線通信,通過手機APP顯示當前環(huán)境狀態(tài)并支持遠程控制,如模式切換、溫濕度閾值設置、喂食、喂水、散熱、除濕等操作。
  7. 數(shù)據(jù)上云與可視化管理
    系統(tǒng)支持將數(shù)據(jù)通過WIFI模塊上傳至華為云物聯(lián)網(wǎng)平臺,采用MQTT協(xié)議進行數(shù)據(jù)傳輸。用戶可以通過可視化網(wǎng)頁查看歷史數(shù)據(jù)、實時監(jiān)控寵物的狀態(tài),并遠程控制系統(tǒng)。
  8. 服務器與前端展示
    采用Python作為后端服務器,接收華為云物聯(lián)網(wǎng)平臺的數(shù)據(jù),并通過HTML前端頁面展示。支持局域網(wǎng)或公網(wǎng)訪問,用戶可以在任何地方查看寵物狀態(tài)并進行操作。

3. 項目硬件模塊組成

本系統(tǒng)的硬件部分基于STM32單片機進行設計,主要包含以下模塊:

3.1. 核心控制單元:STM32單片機

  • 型號STM32F103RCT6
  • 功能:作為整個系統(tǒng)的核心控制單元,負責接收傳感器數(shù)據(jù)、控制設備、進行數(shù)據(jù)傳輸與無線通信。

3.2. 溫濕度傳感器(SHT30)

  • 功能:用于實時監(jiān)測環(huán)境的溫度和濕度,當溫濕度超過設定閾值時,控制風扇啟停以調整環(huán)境。

3.3. 水位傳感器

  • 功能:檢測寵物水盆中的水位情況,當水位低于設定閾值時,自動開啟水泵進行加水。

3.4. 紅外傳感器

  • 功能:用于檢測寵物食物盆中的食物量,當食物不足時,自動啟動繼電器進行食物投喂。

3.5. 風扇與水泵控制模塊

  • 功能:風扇和水泵的控制電路,通過繼電器控制風扇、泵和喂食裝置的啟停。

3.6. 藍牙模塊(HC-05)

  • 功能:實現(xiàn)與手機APP的無線通信,允許用戶通過藍牙進行遠程控制和數(shù)據(jù)查看。

3.7. OLED顯示模塊

  • 功能:用于實時顯示環(huán)境數(shù)據(jù),包括溫濕度、設定閾值、水位、食物量等信息。

3.8. 繼電器模塊

  • 功能:控制喂食裝置、電動水泵和風扇的啟停。

3.9. 無線網(wǎng)絡模塊(ESP8266)

  • 功能:用于將數(shù)據(jù)上傳至華為云物聯(lián)網(wǎng)平臺,實現(xiàn)數(shù)據(jù)存儲和歷史數(shù)據(jù)分析。

3.10. 電源模塊

  • 功能:為系統(tǒng)提供穩(wěn)定的電源供應,保證各模塊正常運行。

4. 設計思路

本項目的設計思路可以概括為以下幾個步驟:

  1. 傳感器數(shù)據(jù)采集
    使用溫濕度傳感器、紅外傳感器和水位傳感器采集環(huán)境數(shù)據(jù)、食物量和水量。
  2. 數(shù)據(jù)處理與控制決策
    STM32單片機根據(jù)采集到的實時數(shù)據(jù),進行處理和判斷,是否滿足自動控制的條件(如溫濕度過高、水位不足、食物不足等),然后通過繼電器控制設備的啟停。
  3. 用戶交互與模式切換
    通過按鍵電路提供用戶手動模式的操作,允許用戶設置閾值和直接控制設備。用戶也可以通過手機APP與系統(tǒng)進行無線通信,控制和查看寵物狀態(tài)。
  4. 顯示與反饋
    使用OLED顯示模塊實時反饋當前環(huán)境的溫濕度、水位、食物量等信息,讓用戶能夠直觀地了解寵物的狀態(tài)。
  5. 數(shù)據(jù)上云與遠程監(jiān)控
    系統(tǒng)通過ESP8266模塊連接WIFI,并將數(shù)據(jù)上傳至華為云物聯(lián)網(wǎng)平臺。用戶可以通過PC端或手機端的網(wǎng)頁實時查看寵物的狀態(tài)、歷史數(shù)據(jù),并進行遠程控制。
  6. 網(wǎng)頁展示與控制
    后端Python服務器通過API接口拉取華為云物聯(lián)網(wǎng)平臺的數(shù)據(jù),將其展示在前端網(wǎng)頁上,支持用戶通過網(wǎng)頁進行遠程監(jiān)控與控制。

5. 系統(tǒng)功能總結

功能模塊 功能描述 實現(xiàn)方式
溫濕度環(huán)境監(jiān)控 實時采集環(huán)境溫濕度,當溫濕度超過閾值時自動啟動風扇和除濕 SHT30傳感器、繼電器模塊控制風扇
水位檢測與自動加水 檢測水盆水位,低于設定值時自動啟動水泵加水 水位傳感器、繼電器模塊控制水泵
食物檢測與自動投喂 檢測食物盆中食物量,低于設定值時自動投喂食物 紅外傳感器、繼電器模塊控制投喂裝置
手動模式與智能模式切換 用戶可手動設置閾值或切換模式,系統(tǒng)根據(jù)數(shù)據(jù)自動控制設備 7個按鍵電路、STM32控制邏輯
OLED顯示功能 顯示環(huán)境數(shù)據(jù)、設備狀態(tài)、控制模式等信息 OLED顯示模塊
藍牙無線控制 通過手機APP無線控制溫濕度閾值、喂食、喂水等操作 HC-05藍牙模塊、手機APP
數(shù)據(jù)上云與可視化管理 將實時數(shù)據(jù)上傳至華為云,支持歷史數(shù)據(jù)查看和遠程控制 ESP8266、華為云物聯(lián)網(wǎng)平臺、MQTT協(xié)議
前端網(wǎng)頁展示與控制 通過網(wǎng)頁展示寵物狀態(tài),并允許用戶遠程控制 Python后端、HTML前端、API接口

6. 使用的模塊技術詳情介紹

6.1. STM32F103RCT6

STM32F103RCT6是STM32系列中一款基于ARM Cortex-M3核心的32位單片機,具有較強的處理能力和豐富的外設接口,適合嵌入式應用。該單片機具有高達72MHz的主頻,支持多種通信接口(如USART、SPI、I2C等),廣泛應用于物聯(lián)網(wǎng)、自動化控制等領域。

6.2 SHT30溫濕度傳感器

SHT30是一款高精度的溫濕度傳感器,具有較高的測量精度和穩(wěn)定性,適用于對溫濕度要求較高的應用場景。通過I2C接口與STM32單片機進行通信,能夠實時獲取環(huán)境溫濕度數(shù)據(jù)。

6.3. HC-05藍牙模塊

HC-05是一款常用的藍牙串口模塊,通過串口通信與STM32單片機連接,提供無線通信能力。用戶通過手機APP與系統(tǒng)進行藍牙連接,能夠實現(xiàn)遠程控制和數(shù)據(jù)查看。

6.4. ESP8266 WiFi模塊

ESP8266是一款低成本、低功耗的WiFi模塊,支持與STM32單片機進行串口通信,能夠將采集到的數(shù)據(jù)通過WIFI上傳至云端。該模塊支持MQTT協(xié)議,用于物聯(lián)網(wǎng)設備之間的數(shù)據(jù)傳輸。

6.5. OLED顯示屏

OLED顯示屏是一種廣泛應用的顯示模塊,具有高對比度、廣視角和低功耗的特點。在本系統(tǒng)中,OLED顯示屏用于實時顯示溫濕度、水位、食物量等信息。

7. 總結

基于STM32單片機設計的寵物喂食監(jiān)控系統(tǒng)通過集成多種傳感器、無線通信技術和云物聯(lián)網(wǎng)平臺,實現(xiàn)了對寵物生活環(huán)境的全面監(jiān)控和管理。系統(tǒng)具有智能自動模式和手動模式兩種操作方式,用戶通過手機APP可以隨時遠程控制系統(tǒng),并且能夠實時查看寵物狀態(tài)。通過將數(shù)據(jù)上傳至華為云物聯(lián)網(wǎng)平臺,本系統(tǒng)還支持歷史數(shù)據(jù)的查看和分析,進一步提升了寵物管理的智能化程度。

在今后的工作中,系統(tǒng)可以進一步優(yōu)化傳感器的精度和控制策略,增加更多的智能功能,如智能預警、自動喂食計劃等,進一步提高系統(tǒng)的智能化水平和實用性。

8. STM32代碼設計

以下是一個基本的 main.c 文件。此文件包括了系統(tǒng)初始化、各個模塊的調用,以及手動模式和智能模式的切換。代碼中已經(jīng)使用了 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"http:// 繼電器控制庫
#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   // 食物下限(單位:%)

// 定義系統(tǒng)模式
#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;

// 函數(shù)聲明
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)
{
    // 系統(tǒng)初始化
    HAL_Init();
    System_Init();

    // 主循環(huán)
    while (1)
    {
        // 讀取傳感器數(shù)據(jù)
        Read_Sensors();

        // 根據(jù)當前模式執(zhí)行相應的操作
        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)
{
    // 根據(jù)溫濕度自動控制風扇和除濕
    Control_Fans();

    // 根據(jù)水位自動控制加水
    if (water_level < WATER_LEVEL_THRESHOLD) {
        Control_Water_Pump();
    }

    // 根據(jù)食物量自動控制投喂
    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顯示屏,顯示傳感器數(shù)據(jù)和系統(tǒng)狀態(tài)
    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. 初始化函數(shù)(System_Init
    初始化所有硬件模塊,包括OLED顯示、溫濕度傳感器、水位傳感器、食物傳感器、繼電器模塊、藍牙和WiFi模塊。
  2. 傳感器數(shù)據(jù)讀?。?code>Read_Sensors)
    通過調用各自的函數(shù)獲取傳感器數(shù)據(jù)。溫濕度數(shù)據(jù)通過 SHT30_Read_Temperature_Humidity 獲取,水位和食物數(shù)據(jù)分別通過 Water_Level_ReadFood_Level_Read 獲取。
  3. 自動模式處理(Handle_Auto_Mode
    根據(jù)當前的傳感器數(shù)據(jù),自動判斷是否需要開啟風扇(散熱或去濕),是否需要加水和投食。
  4. 手動模式處理(Handle_Manual_Mode
    在手動模式下,允許用戶通過按鍵設置溫濕度閾值,并通過藍牙控制手動加水、喂食等操作。
  5. 風扇控制(Control_Fans
    如果溫度超過設定閾值或濕度超過閾值,開啟風扇;否則,關閉風扇。
  6. 水泵控制(Control_Water_Pump
    如果水位低于設定閾值,開啟水泵加水。
  7. 食物投喂控制(Control_Food_Dispenser
    如果食物量不足,啟動繼電器進行食物投喂。
  8. OLED顯示更新(Update_Display
    將溫濕度、水位、食物量和當前模式等信息顯示在OLED屏上。
  9. 藍牙控制(Bluetooth_Control
    從藍牙接收控制命令,切換模式或執(zhí)行操作(如加水、投喂)。
  • 更多詳細資料請聯(lián)系.docx
    下載
意法半導體

意法半導體

意法半導體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導體有限公司。意法半導體是世界最大的半導體公司之一,公司銷售收入在半導體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(17%),計算機(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計數(shù)據(jù),意法半導體是全球第五大半導體廠商,在很多市場居世界領先水平。例如,意法半導體是世界第一大專用模擬芯片和電源轉換芯片制造商,世界第一大工業(yè)半導體和機頂盒芯片供應商,而且在分立器件、手機相機模塊和車用集成電路領域居世界前列.

意法半導體(ST)集團于1987年6月成立,是由意大利的SGS微電子公司和法國Thomson半導體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導體有限公司。意法半導體是世界最大的半導體公司之一,公司銷售收入在半導體工業(yè)五大高速增長市場之間分布均衡(五大市場占2007年銷售收入的百分比):通信(35%),消費(17%),計算機(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計數(shù)據(jù),意法半導體是全球第五大半導體廠商,在很多市場居世界領先水平。例如,意法半導體是世界第一大專用模擬芯片和電源轉換芯片制造商,世界第一大工業(yè)半導體和機頂盒芯片供應商,而且在分立器件、手機相機模塊和車用集成電路領域居世界前列.收起

查看更多

相關推薦