1. 項目開發(fā)背景
隨著科技的不斷進步,物聯網(IoT)技術逐漸滲透到生活中的各個方面,尤其在智能家居領域,物聯網技術不僅提高了家居設備的智能化程度,還提高了生活質量。寵物是許多人家庭中的重要成員,尤其在現代快節(jié)奏的生活中,寵物主人通常無法全天候陪伴寵物,容易忽略寵物的日?;顒印⒔】禒顩r及生活環(huán)境的變化。為了幫助寵物主人隨時監(jiān)控寵物的生活狀態(tài),保證寵物的健康和安全,我們設計了一款基于物聯網技術的室內寵物監(jiān)護系統。
本項目旨在通過物聯網技術,實時監(jiān)測寵物生活環(huán)境中的溫濕度、光照、通風情況、煙霧檢測等參數,并且能夠實時監(jiān)控寵物的活動情況,同時上傳數據至云端,便于主人通過手機APP查看寵物的狀態(tài),方便在寵物出現異常時及時發(fā)現并采取相應措施。
2. 設計實現的功能
本項目主要包括以下功能模塊:
- 環(huán)境監(jiān)控:
- 溫濕度監(jiān)測:通過傳感器實時監(jiān)測室內溫濕度,確保寵物生活環(huán)境舒適。
- 光照控制:根據實時光照情況調節(jié)室內光照,提供合適的環(huán)境光線。
- 通風控制:監(jiān)測空氣質量,當室內空氣不流通時自動開啟通風系統。
- 煙霧檢測:實時監(jiān)測室內煙霧濃度,避免火災發(fā)生,確保寵物安全。
- 寵物活動監(jiān)控:
- 數據上傳與云端管理:
- 數據上傳:將實時監(jiān)測的數據(如溫濕度、光照、煙霧、寵物活動數據等)通過Wi-Fi上傳至OneNet物聯網平臺。
- 數據查看:寵物主人可以通過OneNet平臺查看寵物的生活環(huán)境數據以及活動數據。
- 手機APP查看寵物狀態(tài):
- 通過手機APP,寵物主人可以隨時查看寵物的狀態(tài)、環(huán)境數據、寵物活動信息等。
- 可以設置閾值,接收環(huán)境數據異常或寵物異常的警報通知。
3. 項目硬件模塊組成
本項目的硬件部分基于STM32F103RCT6作為主控芯片,采用ESP8266模塊提供Wi-Fi功能,其他外設包括溫濕度傳感器、光照傳感器、煙霧傳感器、運動傳感器、攝像頭等。
- STM32F103RCT6:作為系統的主控芯片,負責系統的控制與數據采集,處理傳感器輸入并控制設備輸出。
- ESP8266 Wi-Fi模塊:提供系統的無線通信能力,通過Wi-Fi將數據上傳至OneNet云平臺。
- DHT22溫濕度傳感器:用于檢測室內的溫濕度,確保環(huán)境適宜寵物生活。
- BH1750光照傳感器:用于檢測室內的光照強度,調節(jié)光照設備提供合適的光照。
- MQ-2煙霧傳感器:用于檢測煙霧濃度,實時監(jiān)測室內是否有火情發(fā)生。
- PIR傳感器:用于檢測寵物的活動狀態(tài),通過檢測寵物的運動情況來判斷其行為。
- 攝像頭模塊:用于實時監(jiān)控寵物活動,提供視頻畫面上傳至云端。
- 蜂鳴器:用于報警,提醒主人寵物或環(huán)境狀態(tài)異常。
- 電動風扇:用于室內通風,當空氣質量差時自動開啟。
4. 設計思路
本項目的設計思路基于物聯網技術,將各種傳感器與控制模塊通過STM32F103RCT6單片機進行集成,通過ESP8266模塊實現數據上傳到云端,通過手機APP讓寵物主人能夠遠程監(jiān)控寵物及其生活環(huán)境。
系統總體設計流程:
- 環(huán)境監(jiān)測與控制:
- 使用DHT22溫濕度傳感器、BH1750光照傳感器、MQ-2煙霧傳感器實時監(jiān)測環(huán)境的溫濕度、光照強度和煙霧濃度。
- 當溫度過高或濕度過低時,系統通過STM32控制風扇和其他設備進行調節(jié),保證寵物的舒適生活環(huán)境。
- 寵物活動監(jiān)控:
- 使用PIR傳感器檢測寵物活動,當檢測到寵物活動時,攝像頭開始工作,實時拍攝寵物的活動情況。
- 通過視頻監(jiān)控,主人可以隨時查看寵物的活動情況。
- 數據上傳與云端監(jiān)控:
- 所有采集到的環(huán)境數據和寵物活動數據通過ESP8266模塊上傳至OneNet云平臺,保證寵物主人隨時可以通過APP查看數據。
- 異常報警與通知:
- 當環(huán)境中的溫濕度、光照、煙霧等數據超過設定閾值時,系統會自動報警,并通過蜂鳴器發(fā)出聲音警報,同時將警報信息發(fā)送到寵物主人的手機。
5. 系統功能總結
功能模塊 | 描述 |
---|---|
溫濕度監(jiān)控 | 實時監(jiān)測寵物生活環(huán)境的溫濕度,保證環(huán)境適宜寵物生活。 |
光照控制 | 根據室內光照強度自動調節(jié)室內燈光,保持合適的光照強度。 |
煙霧監(jiān)控 | 檢測煙霧濃度,及時發(fā)現火情并進行報警,確保寵物的安全。 |
寵物活動監(jiān)控 | 通過PIR傳感器檢測寵物活動,攝像頭進行實時監(jiān)控,方便主人查看寵物狀態(tài)。 |
數據上傳 | 實時上傳環(huán)境數據與寵物活動數據至OneNet云平臺。 |
云端查看 | 寵物主人可通過OneNet平臺查看寵物的活動數據、環(huán)境數據和折線圖。 |
手機APP監(jiān)控 | 寵物主人可以通過APP查看數據、設置閾值并接收警報通知。 |
6. 技術方案
- 硬件平臺:
- 主控芯片:STM32F103RCT6
- 無線通信模塊:ESP8266
- 溫濕度傳感器:DHT22
- 光照傳感器:BH1750
- 煙霧傳感器:MQ-2
- 寵物活動傳感器:PIR
- 攝像頭模塊:OV7670等
- 環(huán)境控制:電動風扇、蜂鳴器等
- 軟件平臺:
- 主控軟件:基于STM32CubeMX和HAL庫開發(fā)的嵌入式程序
- 云平臺:OneNet物聯網平臺
- 手機APP:基于React Native或Flutter開發(fā)的跨平臺APP
- 數據處理與上傳:
- 通過ESP8266模塊將實時數據通過HTTP或MQTT協議上傳至OneNet云平臺。
- 云平臺提供數據可視化功能,用戶可以查看實時數據和歷史數據。
7. 使用的模塊的技術詳情介紹
- STM32F103RCT6:
- ESP8266 Wi-Fi模塊:
- DHT22溫濕度傳感器:
- DHT22是一款高精度的溫濕度傳感器,具有較大的量程和較高的測量精度,適用于家庭環(huán)境監(jiān)測。
- BH1750光照傳感器:
- BH1750是一款數字式的光照傳感器,可以提供精確的光照強度數據,適用于室內光照監(jiān)測。
- MQ-2煙霧傳感器:
- MQ-2煙霧傳感器具有較高的靈敏度,可以檢測到空氣中的煙霧、甲烷等氣體,適用于火災預警。
- PIR傳感器:
- PIR傳感器用于檢測紅外輻射,能夠判斷寵物的活動情況,適用于寵物活動監(jiān)測。
8. 預期成果
- 成功實現環(huán)境監(jiān)控與控制系統,包括溫濕度、光照和煙霧監(jiān)測功能。
- 實現寵物活動的實時監(jiān)控和數據上傳功能。
- 通過OneNet平臺成功上傳數據,并能夠在手機APP中查看寵物及環(huán)境數據。
- 系統能夠實時報警,確保寵物的安全和環(huán)境的舒適性。
9. 總結
本項目設計了一個基于物聯網技術的室內寵物監(jiān)護系統,通過實時監(jiān)測環(huán)境數據和寵物活動,保證寵物生活環(huán)境的舒適性與安全性。通過使用STM32F103RCT6作為主控芯片,ESP8266模塊提供Wi-Fi功能,系統能夠實時采集數據并上傳至OneNet云平臺。寵物主人可以通過手機APP隨時查看寵物的生活狀態(tài)和環(huán)境變化,實現遠程監(jiān)控,確保寵物的健康與安全。
10. STM32代碼設計
本代碼包括:
- 初始化外部硬件(傳感器、Wi-Fi模塊等)。
- 通過 STM32F103RCT6 主控芯片采集傳感器數據。
- 使用 ESP8266 Wi-Fi 模塊將數據發(fā)送到 OneNet 云平臺。
- 實現環(huán)境監(jiān)控和寵物活動檢測。
以下是 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);
// 初始化 ESP8266
ESP8266_Init(&hESP8266, &huart1);
// 初始化 PWM 控制風扇
PWM_Init(&htim2);
}
// 獲取傳感器數據
void Get_Sensor_Data(void) {
// 獲取溫濕度
if (DHT22_Read(&hDHT22, &temperature, &humidity) != HAL_OK) {
printf("DHT22 Read Errorrn");
}
// 獲取光照強度
if (BH1750_Read(&hBH1750, &light_level) != HAL_OK) {
printf("BH1750 Read Errorrn");
}
// 獲取煙霧濃度
if (MQ2_Read(&hMQ2, &smoke_level) != HAL_OK) {
printf("MQ2 Read Errorrn");
}
// 獲取寵物活動檢測
pet_activity_detected = PIR_Read(&hPIR);
}
// 環(huán)境監(jiān)控及控制
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 dehumidifierrn");
}
// 如果煙霧濃度過高,報警
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); // 發(fā)送數據到 OneNet
}
// 主函數
int main(void) {
// 系統初始化
System_Init();
// 無限循環(huán)進行傳感器數據采集與上傳
while (1) {
// 獲取傳感器數據
Get_Sensor_Data();
// 環(huán)境控制(風扇、濕度、煙霧控制等)
Environment_Control();
// 上傳數據到 OneNet
Upload_Data_To_OneNet();
}
}
代碼說明:
- 系統初始化:通過
System_Init()
函數初始化 STM32 的外設(GPIO, UART, I2C, SPI, 定時器等),并初始化各個傳感器和 ESP8266 模塊。 - 傳感器數據采集:
Get_Sensor_Data()
函數負責從 DHT22、BH1750、MQ2 和 PIR 傳感器獲取環(huán)境數據和寵物活動狀態(tài)。 - 環(huán)境控制:
Environment_Control()
函數根據溫度、濕度、煙霧等傳感器數據控制風扇(PWM)、除濕設備和蜂鳴器。 - 數據上傳:
Upload_Data_To_OneNet()
函數將采集到的環(huán)境數據和寵物活動信息通過 ESP8266 模塊上傳至 OneNet 云平臺。 - 主循環(huán):
main()
函數是程序的主入口,不斷獲取傳感器數據,進行環(huán)境控制,并上傳數據。
總結:
這段代碼展示了如何在 STM32F103RCT6 上進行多傳感器數據采集、環(huán)境控制和物聯網數據上傳的基本實現。