基于物联网技术设计的设计室内宠物监护系统
目录
- 1. 项目开发背景
- 2. 设计实现的功能
- 3. 项目硬件模块组成
- 4. 设计思路
- 5. 系统功能总结
- 6. 技术方案
- 7. 使用的模块的技术详情介绍
- 8. 预期成果
- 9. 总结
1. 项目开发背景
随着科技的不断进步,物联网(IoT)技术逐渐渗透到生活中的各个方面,尤其在智能家居领域,物联网技术不仅提高了家居设备的智能化程度,还提高了生活质量。宠物是许多人家庭中的重要成员,尤其在现代快节奏的生活中,宠物主人通常无法全天候陪伴宠物,容易忽略宠物的日常活动、健康状况及生活环境的变化。为了帮助宠物主人随时监控宠物的生活状态,保证宠物的健康和安全,我们设计了一款基于物联网技术的室内宠物监护系统。
本项目旨在通过物联网技术,实时监测宠物生活环境中的温湿度、光照、通风情况、烟雾检测等参数,并且能够实时监控宠物的活动情况,同时上传数据至云端,便于主人通过手机APP查看宠物的状态,方便在宠物出现异常时及时发现并采取相应措施。
2. 设计实现的功能
本项目主要包括以下功能模块:
- 1. 环境监控:
- • 温湿度监测:通过传感器实时监测室内温湿度,确保宠物生活环境舒适。
- • 光照控制:根据实时光照情况调节室内光照,提供合适的环境光线。
- • 通风控制:监测空气质量,当室内空气不流通时自动开启通风系统。
- • 烟雾检测:实时监测室内烟雾浓度,避免火灾发生,确保宠物安全。
- 2. 宠物活动监控:
- • 宠物活动检测:通过传感器检测宠物的活动情况,包括运动、静止等状态。
- • 实时视频监控:通过摄像头实时监控宠物的活动,并上传至云端,供主人查看。
- • 数据存储:保存宠物每天的活动数据,帮助主人了解宠物的日常行为。
- 3. 数据上传与云端管理:
- • 数据上传:将实时监测的数据(如温湿度、光照、烟雾、宠物活动数据等)通过Wi-Fi上传至OneNet物联网平台。
- • 数据查看:宠物主人可以通过OneNet平台查看宠物的生活环境数据以及活动数据。
- 4. 手机APP查看宠物状态:
- • 通过手机APP,宠物主人可以随时查看宠物的状态、环境数据、宠物活动信息等。
- • 可以设置阈值,接收环境数据异常或宠物异常的警报通知。
3. 项目硬件模块组成
本项目的硬件部分基于STM32F103RCT6作为主控芯片,采用ESP8266模块提供Wi-Fi功能,其他外设包括温湿度传感器、光照传感器、烟雾传感器、运动传感器、摄像头等。
- 1. STM32F103RCT6:作为系统的主控芯片,负责系统的控制与数据采集,处理传感器输入并控制设备输出。
- 2. ESP8266 Wi-Fi模块:提供系统的无线通信能力,通过Wi-Fi将数据上传至OneNet云平台。
- 3. DHT22温湿度传感器:用于检测室内的温湿度,确保环境适宜宠物生活。
- 4. BH1750光照传感器:用于检测室内的光照强度,调节光照设备提供合适的光照。
- 5. MQ-2烟雾传感器:用于检测烟雾浓度,实时监测室内是否有火情发生。
- 6. PIR传感器:用于检测宠物的活动状态,通过检测宠物的运动情况来判断其行为。
- 7. 摄像头模块:用于实时监控宠物活动,提供视频画面上传至云端。
- 8. 蜂鸣器:用于报警,提醒主人宠物或环境状态异常。
- 9. 电动风扇:用于室内通风,当空气质量差时自动开启。
4. 设计思路
本项目的设计思路基于物联网技术,将各种传感器与控制模块通过STM32F103RCT6单片机进行集成,通过ESP8266模块实现数据上传到云端,通过手机APP让宠物主人能够远程监控宠物及其生活环境。
系统总体设计流程:
- 1. 环境监测与控制:
- • 使用DHT22温湿度传感器、BH1750光照传感器、MQ-2烟雾传感器实时监测环境的温湿度、光照强度和烟雾浓度。
- • 当温度过高或湿度过低时,系统通过STM32控制风扇和其他设备进行调节,保证宠物的舒适生活环境。
- 2. 宠物活动监控:
- • 使用PIR传感器检测宠物活动,当检测到宠物活动时,摄像头开始工作,实时拍摄宠物的活动情况。
- • 通过视频监控,主人可以随时查看宠物的活动情况。
- 3. 数据上传与云端监控:
- • 所有采集到的环境数据和宠物活动数据通过ESP8266模块上传至OneNet云平台,保证宠物主人随时可以通过APP查看数据。
- 4. 异常报警与通知:
- • 当环境中的温湿度、光照、烟雾等数据超过设定阈值时,系统会自动报警,并通过蜂鸣器发出声音警报,同时将警报信息发送到宠物主人的手机。
5. 系统功能总结
功能模块 | 描述 |
温湿度监控 | 实时监测宠物生活环境的温湿度,保证环境适宜宠物生活。 |
光照控制 | 根据室内光照强度自动调节室内灯光,保持合适的光照强度。 |
烟雾监控 | 检测烟雾浓度,及时发现火情并进行报警,确保宠物的安全。 |
宠物活动监控 | 通过PIR传感器检测宠物活动,摄像头进行实时监控,方便主人查看宠物状态。 |
数据上传 | 实时上传环境数据与宠物活动数据至OneNet云平台。 |
云端查看 | 宠物主人可通过OneNet平台查看宠物的活动数据、环境数据和折线图。 |
手机APP监控 | 宠物主人可以通过APP查看数据、设置阈值并接收警报通知。 |
6. 技术方案
- 1. 硬件平台:
- • 主控芯片:STM32F103RCT6
- • 无线通信模块:ESP8266
- • 温湿度传感器:DHT22
- • 光照传感器:BH1750
- • 烟雾传感器:MQ-2
- • 宠物活动传感器:PIR
- • 摄像头模块:OV7670等
- • 环境控制:电动风扇、蜂鸣器等
- 2. 软件平台:
- • 主控软件:基于STM32CubeMX和HAL库开发的嵌入式程序
- • 云平台:OneNet物联网平台
- • 手机APP:基于React Native或Flutter开发的跨平台APP
- 3. 数据处理与上传:
- • 通过ESP8266模块将实时数据通过HTTP或MQTT协议上传至OneNet云平台。
- • 云平台提供数据可视化功能,用户可以查看实时数据和历史数据。
7. 使用的模块的技术详情介绍
- 1. STM32F103RCT6:
- • STM32F103RCT6是一个高性能的32位ARM Cortex-M3内核微控制器,具有丰富的外设接口,如GPIO、USART、I2C、SPI等,适合本项目的各种控制和数据采集任务。
- 2. ESP8266 Wi-Fi模块:
- • ESP8266是一个低功耗、低成本的Wi-Fi模块,支持Wi-Fi功能,能够将设备连接到云端,实现数据的上传和远程控制。
- 3. DHT22温湿度传感器:
- • DHT22是一款高精度的温湿度传感器,具有较大的量程和较高的测量精度,适用于家庭环境监测。
- 4. BH1750光照传感器:
- • BH1750是一款数字式的光照传感器,可以提供精确的光照强度数据,适用于室内光照监测。
- 1. MQ-2烟雾传感器:
- • MQ-2烟雾传感器具有较高的灵敏度,可以检测到空气中的烟雾、甲烷等气体,适用于火灾预警。
- 2. PIR传感器:
- • PIR传感器用于检测红外辐射,能够判断宠物的活动情况,适用于宠物活动监测。
8. 预期成果
- 1. 成功实现环境监控与控制系统,包括温湿度、光照和烟雾监测功能。
- 2. 实现宠物活动的实时监控和数据上传功能。
- 3. 通过OneNet平台成功上传数据,并能够在手机APP中查看宠物及环境数据。
- 4. 系统能够实时报警,确保宠物的安全和环境的舒适性。
9. 总结
本项目设计了一个基于物联网技术的室内宠物监护系统,通过实时监测环境数据和宠物活动,保证宠物生活环境的舒适性与安全性。通过使用STM32F103RCT6作为主控芯片,ESP8266模块提供Wi-Fi功能,系统能够实时采集数据并上传至OneNet云平台。宠物主人可以通过手机APP随时查看宠物的生活状态和环境变化,实现远程监控,确保宠物的健康与安全。
10. STM32代码设计
本代码包括:
- 1. 初始化外部硬件(传感器、Wi-Fi模块等)。
- 2. 通过 STM32F103RCT6 主控芯片采集传感器数据。
- 3. 使用 ESP8266 Wi-Fi 模块将数据发送到 OneNet 云平台。
- 4. 实现环境监控和宠物活动检测。
以下是 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 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();
// 上传数据到 OneNet
Upload_Data_To_OneNet();
}
}
代码说明:
- 1. 系统初始化:通过
System_Init()
函数初始化 STM32 的外设(GPIO, UART, I2C, SPI, 定时器等),并初始化各个传感器和 ESP8266 模块。 - 2. 传感器数据采集:
Get_Sensor_Data()
函数负责从 DHT22、BH1750、MQ2 和 PIR 传感器获取环境数据和宠物活动状态。 - 3. 环境控制:
Environment_Control()
函数根据温度、湿度、烟雾等传感器数据控制风扇(PWM)、除湿设备和蜂鸣器。 - 4. 数据上传:
Upload_Data_To_OneNet()
函数将采集到的环境数据和宠物活动信息通过 ESP8266 模块上传至 OneNet 云平台。 - 5. 主循环:
main()
函数是程序的主入口,不断获取传感器数据,进行环境控制,并上传数据。
总结:
这段代码展示了如何在 STM32F103RCT6 上进行多传感器数据采集、环境控制和物联网数据上传的基本实现。
- 点赞
- 收藏
- 关注作者
评论(0)