目錄
- 項目開發背景
- 設計實現的功能
- 項目硬件模塊組成
- 設計思路
- 系統功能總結
- 技術方案
- 使用的模塊的技術詳情介紹
- 預期成果
- 總結
1. 項目開發背景
隨著科技的不斷進步,物聯網(IoT)技術逐漸滲透到生活中的各個方面,尤其在智能家居領域,物聯網技術不僅提高了家居設備的智能化程度,還提高了生活質量。寵物是許多人家庭中的重要成員,尤其在現代快節奏的生活中,寵物主人通常無法全天候陪伴寵物,容易忽略寵物的日常活動、健康狀況及生活環境的變化。為了幫助寵物主人隨時監控寵物的生活狀態,保證寵物的健康和安全,我們設計了一款基于物聯網技術的室內寵物監護系統。
本項目旨在通過物聯網技術,實時監測寵物生活環境中的溫濕度、光照、通風情況、煙霧檢測等參數,并且能夠實時監控寵物的活動情況,同時上傳數據至云端,便于主人通過手機APP查看寵物的狀態,方便在寵物出現異常時及時發現并采取相應措施。
2. 設計實現的功能
本項目主要包括以下功能模塊:
- 環境監控:
- 溫濕度監測:通過傳感器實時監測室內溫濕度,確保寵物生活環境舒適。
- 光照控制:根據實時光照情況調節室內光照,提供合適的環境光線。
- 通風控制:監測空氣質量,當室內空氣不流通時自動開啟通風系統。
- 煙霧檢測:實時監測室內煙霧濃度,避免火災發生,確保寵物安全。
- 寵物活動監控:
- 寵物活動檢測:通過傳感器檢測寵物的活動情況,包括運動、靜止等狀態。
- 實時視頻監控:通過攝像頭實時監控寵物的活動,并上傳至云端,供主人查看。
- 數據存儲:保存寵物每天的活動數據,幫助主人了解寵物的日常行為。
- 數據上傳與云端管理:
- 數據上傳:將實時監測的數據(如溫濕度、光照、煙霧、寵物活動數據等)通過Wi-Fi上傳至OneNet物聯網平臺。
- 數據查看:寵物主人可以通過OneNet平臺查看寵物的生活環境數據以及活動數據。
- 手機APP查看寵物狀態:
- 通過手機APP,寵物主人可以隨時查看寵物的狀態、環境數據、寵物活動信息等。
- 可以設置閾值,接收環境數據異常或寵物異常的警報通知。
3. 項目硬件模塊組成
本項目的硬件部分基于STM32F103RCT6作為主控芯片,采用ESP8266模塊提供Wi-Fi功能,其他外設包括溫濕度傳感器、光照傳感器、煙霧傳感器、運動傳感器、攝像頭等。
- STM32F103RCT6:作為系統的主控芯片,負責系統的控制與數據采集,處理傳感器輸入并控制設備輸出。
- ESP8266 Wi-Fi模塊:提供系統的無線通信能力,通過Wi-Fi將數據上傳至OneNet云平臺。
- DHT22溫濕度傳感器:用于檢測室內的溫濕度,確保環境適宜寵物生活。
- BH1750光照傳感器:用于檢測室內的光照強度,調節光照設備提供合適的光照。
- MQ-2煙霧傳感器:用于檢測煙霧濃度,實時監測室內是否有火情發生。
- PIR傳感器:用于檢測寵物的活動狀態,通過檢測寵物的運動情況來判斷其行為。
- 攝像頭模塊:用于實時監控寵物活動,提供視頻畫面上傳至云端。
- 蜂鳴器:用于報警,提醒主人寵物或環境狀態異常。
- 電動風扇:用于室內通風,當空氣質量差時自動開啟。
4. 設計思路
本項目的設計思路基于物聯網技術,將各種傳感器與控制模塊通過STM32F103RCT6單片機進行集成,通過ESP8266模塊實現數據上傳到云端,通過手機APP讓寵物主人能夠遠程監控寵物及其生活環境。
系統總體設計流程:
- 環境監測與控制:
- 使用DHT22溫濕度傳感器、BH1750光照傳感器、MQ-2煙霧傳感器實時監測環境的溫濕度、光照強度和煙霧濃度。
- 當溫度過高或濕度過低時,系統通過STM32控制風扇和其他設備進行調節,保證寵物的舒適生活環境。
- 寵物活動監控:
- 使用PIR傳感器檢測寵物活動,當檢測到寵物活動時,攝像頭開始工作,實時拍攝寵物的活動情況。
- 通過視頻監控,主人可以隨時查看寵物的活動情況。
- 數據上傳與云端監控:
- 所有采集到的環境數據和寵物活動數據通過ESP8266模塊上傳至OneNet云平臺,保證寵物主人隨時可以通過APP查看數據。
- 異常報警與通知:
- 當環境中的溫濕度、光照、煙霧等數據超過設定閾值時,系統會自動報警,并通過蜂鳴器發出聲音警報,同時將警報信息發送到寵物主人的手機。
5. 系統功能總結
功能模塊 | 描述 |
---|---|
溫濕度監控 | 實時監測寵物生活環境的溫濕度,保證環境適宜寵物生活。 |
光照控制 | 根據室內光照強度自動調節室內燈光,保持合適的光照強度。 |
煙霧監控 | 檢測煙霧濃度,及時發現火情并進行報警,確保寵物的安全。 |
寵物活動監控 | 通過PIR傳感器檢測寵物活動,攝像頭進行實時監控,方便主人查看寵物狀態。 |
數據上傳 | 實時上傳環境數據與寵物活動數據至OneNet云平臺。 |
云端查看 | 寵物主人可通過OneNet平臺查看寵物的活動數據、環境數據和折線圖。 |
手機APP監控 | 寵物主人可以通過APP查看數據、設置閾值并接收警報通知。 |
6. 技術方案
- 硬件平臺:
- 主控芯片:STM32F103RCT6
- 無線通信模塊:ESP8266
- 溫濕度傳感器:DHT22
- 光照傳感器:BH1750
- 煙霧傳感器:MQ-2
- 寵物活動傳感器:PIR
- 攝像頭模塊:OV7670等
- 環境控制:電動風扇、蜂鳴器等
- 軟件平臺:
- 主控軟件:基于STM32CubeMX和HAL庫開發的嵌入式程序
- 云平臺:OneNet物聯網平臺
- 手機APP:基于React Native或Flutter開發的跨平臺APP
- 數據處理與上傳:
- 通過ESP8266模塊將實時數據通過HTTP或MQTT協議上傳至OneNet云平臺。
- 云平臺提供數據可視化功能,用戶可以查看實時數據和歷史數據。
7. 使用的模塊的技術詳情介紹
- STM32F103RCT6:
- STM32F103RCT6是一個高性能的32位ARM Cortex-M3內核微控制器,具有豐富的外設接口,如GPIO、USART、I2C、SPI等,適合本項目的各種控制和數據采集任務。
- ESP8266 Wi-Fi模塊:
- ESP8266是一個低功耗、低成本的Wi-Fi模塊,支持Wi-Fi功能,能夠將設備連接到云端,實現數據的上傳和遠程控制。
- DHT22溫濕度傳感器:
- DHT22是一款高精度的溫濕度傳感器,具有較大的量程和較高的測量精度,適用于家庭環境監測。
- BH1750光照傳感器:
- BH1750是一款數字式的光照傳感器,可以提供精確的光照強度數據,適用于室內光照監測。
- MQ-2煙霧傳感器:
- MQ-2煙霧傳感器具有較高的靈敏度,可以檢測到空氣中的煙霧、甲烷等氣體,適用于火災預警。
- PIR傳感器:
- PIR傳感器用于檢測紅外輻射,能夠判斷寵物的活動情況,適用于寵物活動監測。
8. 預期成果
- 成功實現環境監控與控制系統,包括溫濕度、光照和煙霧監測功能。
- 實現寵物活動的實時監控和數據上傳功能。
- 通過OneNet平臺成功上傳數據,并能夠在手機APP中查看寵物及環境數據。
- 系統能夠實時報警,確保寵物的安全和環境的舒適性。
9. 總結
本項目設計了一個基于物聯網技術的室內寵物監護系統,通過實時監測環境數據和寵物活動,保證寵物生活環境的舒適性與安全性。通過使用STM32F103RCT6作為主控芯片,ESP8266模塊提供Wi-Fi功能,系統能夠實時采集數據并上傳至OneNet云平臺。寵物主人可以通過手機APP隨時查看寵物的生活狀態和環境變化,實現遠程監控,確保寵物的健康與安全。
10. STM32代碼設計
本代碼包括:
- 初始化外部硬件(傳感器、Wi-Fi模塊等)。
- 通過 STM32F103RCT6 主控芯片采集傳感器數據。
- 使用 ESP8266 Wi-Fi 模塊將數據發送到 OneNet 云平臺。
- 實現環境監控和寵物活動檢測。
以下是 main.c
的代碼:
#include "stm32f1xx_hal.h"
#include "string.h"
#include "stdio.h"
#include "dht22.h" // 有一個 DHT22 傳感器的驅動
#include "bh1750.h" // 有一個 BH1750 傳感器的驅動
#include "mq2.h" // 有一個 MQ2 煙霧傳感器的驅動
#include "esp8266.h" // 有 ESP8266 模塊的驅動
#include "pwm.h" // 有控制風扇的 PWM 驅動#define TEMP_THRESHOLD 30.0f // 溫度閾值
#define HUMID_THRESHOLD 60.0f // 濕度閾值UART_HandleTypeDef huart1;
I2C_HandleTypeDef hi2c1;
SPI_HandleTypeDef hspi1;
TIM_HandleTypeDef htim2;// 外部傳感器接口
DHT22_HandleTypeDef hDHT22;
BH1750_HandleTypeDef hBH1750;
MQ2_HandleTypeDef hMQ2;
PIR_HandleTypeDef hPIR;
ESP8266_HandleTypeDef hESP8266;float temperature, humidity, light_level, smoke_level;
uint8_t pet_activity_detected = 0;// 初始化外設
void System_Init(void) {HAL_Init();// 初始化 GPIO, UART, I2C, SPI, 定時器等外設MX_GPIO_Init();MX_USART1_UART_Init();MX_I2C1_Init();MX_SPI1_Init();MX_TIM2_Init();// 初始化傳感器DHT22_Init(&hDHT22);BH1750_Init(&hBH1750);MQ2_Init(&hMQ2);PIR_Init(&hPIR);// 初始化 ESP8266ESP8266_Init(&hESP8266, &huart1);// 初始化 PWM 控制風扇PWM_Init(&htim2);
}// 獲取傳感器數據
void Get_Sensor_Data(void) {// 獲取溫濕度if (DHT22_Read(&hDHT22, &temperature, &humidity) != HAL_OK) {printf("DHT22 Read Error\r\n");}// 獲取光照強度if (BH1750_Read(&hBH1750, &light_level) != HAL_OK) {printf("BH1750 Read Error\r\n");}// 獲取煙霧濃度if (MQ2_Read(&hMQ2, &smoke_level) != HAL_OK) {printf("MQ2 Read Error\r\n");}// 獲取寵物活動檢測pet_activity_detected = PIR_Read(&hPIR);
}// 環境監控及控制
void Environment_Control(void) {// 如果溫度過高,啟動風扇if (temperature > TEMP_THRESHOLD) {PWM_SetDutyCycle(&htim2, 100); // 設置最大風扇轉速} else {PWM_SetDutyCycle(&htim2, 0); // 關閉風扇}// 如果濕度過高,可以啟動除濕設備(此處省略除濕設備控制代碼)if (humidity > HUMID_THRESHOLD) {printf("Humidity is too high, turn on dehumidifier\r\n");}// 如果煙霧濃度過高,報警if (smoke_level > 200) { // 200 為煙霧報警閾值HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 啟動蜂鳴器} else {HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 關閉蜂鳴器}
}// 數據上傳到 OneNet
void Upload_Data_To_OneNet(void) {// 格式化數據并上傳char data[256];snprintf(data, sizeof(data), "{\"temperature\": %.2f, \"humidity\": %.2f, \"light_level\": %.2f, \"smoke_level\": %.2f, \"pet_activity\": %d}",temperature, humidity, light_level, smoke_level, pet_activity_detected);ESP8266_SendData(&hESP8266, data); // 發送數據到 OneNet
}// 主函數
int main(void) {// 系統初始化System_Init();// 無限循環進行傳感器數據采集與上傳while (1) {// 獲取傳感器數據Get_Sensor_Data();// 環境控制(風扇、濕度、煙霧控制等)Environment_Control();// 上傳數據到 OneNetUpload_Data_To_OneNet();}
}
代碼說明:
- 系統初始化:通過
System_Init()
函數初始化 STM32 的外設(GPIO, UART, I2C, SPI, 定時器等),并初始化各個傳感器和 ESP8266 模塊。 - 傳感器數據采集:
Get_Sensor_Data()
函數負責從 DHT22、BH1750、MQ2 和 PIR 傳感器獲取環境數據和寵物活動狀態。 - 環境控制:
Environment_Control()
函數根據溫度、濕度、煙霧等傳感器數據控制風扇(PWM)、除濕設備和蜂鳴器。 - 數據上傳:
Upload_Data_To_OneNet()
函數將采集到的環境數據和寵物活動信息通過 ESP8266 模塊上傳至 OneNet 云平臺。 - 主循環:
main()
函數是程序的主入口,不斷獲取傳感器數據,進行環境控制,并上傳數據。
總結:
這段代碼展示了如何在 STM32F103RCT6 上進行多傳感器數據采集、環境控制和物聯網數據上傳的基本實現。