基于物联网技术设计的设计室内宠物监护系统

举报
DS小龙哥 发表于 2025/01/08 23:56:15 2025/01/08
【摘要】 本项目通过物联网技术,实时监测宠物生活环境中的温湿度、光照、通风情况、烟雾检测等参数,并且能够实时监控宠物的活动情况,同时上传数据至云端,便于主人通过手机APP查看宠物的状态,方便在宠物出现异常时及时发现并采取相应措施。

 

目录

  1. 1. 项目开发背景
  2. 2. 设计实现的功能
  3. 3. 项目硬件模块组成
  4. 4. 设计思路
  5. 5. 系统功能总结
  6. 6. 技术方案
  7. 7. 使用的模块的技术详情介绍
  8. 8. 预期成果
  9. 9. 总结

1. 项目开发背景

随着科技的不断进步,物联网(IoT)技术逐渐渗透到生活中的各个方面,尤其在智能家居领域,物联网技术不仅提高了家居设备的智能化程度,还提高了生活质量。宠物是许多人家庭中的重要成员,尤其在现代快节奏的生活中,宠物主人通常无法全天候陪伴宠物,容易忽略宠物的日常活动、健康状况及生活环境的变化。为了帮助宠物主人随时监控宠物的生活状态,保证宠物的健康和安全,我们设计了一款基于物联网技术的室内宠物监护系统。

本项目旨在通过物联网技术,实时监测宠物生活环境中的温湿度、光照、通风情况、烟雾检测等参数,并且能够实时监控宠物的活动情况,同时上传数据至云端,便于主人通过手机APP查看宠物的状态,方便在宠物出现异常时及时发现并采取相应措施。

image-20250108223157203

2. 设计实现的功能

本项目主要包括以下功能模块:

  1. 1. 环境监控
    • • 温湿度监测:通过传感器实时监测室内温湿度,确保宠物生活环境舒适。
    • • 光照控制:根据实时光照情况调节室内光照,提供合适的环境光线。
    • • 通风控制:监测空气质量,当室内空气不流通时自动开启通风系统。
    • • 烟雾检测:实时监测室内烟雾浓度,避免火灾发生,确保宠物安全。
  2. 2. 宠物活动监控
    • • 宠物活动检测:通过传感器检测宠物的活动情况,包括运动、静止等状态。
    • • 实时视频监控:通过摄像头实时监控宠物的活动,并上传至云端,供主人查看。
    • • 数据存储:保存宠物每天的活动数据,帮助主人了解宠物的日常行为。
  3. 3. 数据上传与云端管理
    • • 数据上传:将实时监测的数据(如温湿度、光照、烟雾、宠物活动数据等)通过Wi-Fi上传至OneNet物联网平台。
    • • 数据查看:宠物主人可以通过OneNet平台查看宠物的生活环境数据以及活动数据。
  4. 4. 手机APP查看宠物状态
    • • 通过手机APP,宠物主人可以随时查看宠物的状态、环境数据、宠物活动信息等。
    • • 可以设置阈值,接收环境数据异常或宠物异常的警报通知。

3. 项目硬件模块组成

本项目的硬件部分基于STM32F103RCT6作为主控芯片,采用ESP8266模块提供Wi-Fi功能,其他外设包括温湿度传感器、光照传感器、烟雾传感器、运动传感器、摄像头等。

  1. 1. STM32F103RCT6:作为系统的主控芯片,负责系统的控制与数据采集,处理传感器输入并控制设备输出。
  2. 2. ESP8266 Wi-Fi模块:提供系统的无线通信能力,通过Wi-Fi将数据上传至OneNet云平台。
  3. 3. DHT22温湿度传感器:用于检测室内的温湿度,确保环境适宜宠物生活。
  4. 4. BH1750光照传感器:用于检测室内的光照强度,调节光照设备提供合适的光照。
  5. 5. MQ-2烟雾传感器:用于检测烟雾浓度,实时监测室内是否有火情发生。
  6. 6. PIR传感器:用于检测宠物的活动状态,通过检测宠物的运动情况来判断其行为。
  7. 7. 摄像头模块:用于实时监控宠物活动,提供视频画面上传至云端。
  8. 8. 蜂鸣器:用于报警,提醒主人宠物或环境状态异常。
  9. 9. 电动风扇:用于室内通风,当空气质量差时自动开启。

4. 设计思路

本项目的设计思路基于物联网技术,将各种传感器与控制模块通过STM32F103RCT6单片机进行集成,通过ESP8266模块实现数据上传到云端,通过手机APP让宠物主人能够远程监控宠物及其生活环境。

系统总体设计流程:

  1. 1. 环境监测与控制
    • • 使用DHT22温湿度传感器、BH1750光照传感器、MQ-2烟雾传感器实时监测环境的温湿度、光照强度和烟雾浓度。
    • • 当温度过高或湿度过低时,系统通过STM32控制风扇和其他设备进行调节,保证宠物的舒适生活环境。
  2. 2. 宠物活动监控
    • • 使用PIR传感器检测宠物活动,当检测到宠物活动时,摄像头开始工作,实时拍摄宠物的活动情况。
    • • 通过视频监控,主人可以随时查看宠物的活动情况。
  3. 3. 数据上传与云端监控
    • • 所有采集到的环境数据和宠物活动数据通过ESP8266模块上传至OneNet云平台,保证宠物主人随时可以通过APP查看数据。
  4. 4. 异常报警与通知
    • • 当环境中的温湿度、光照、烟雾等数据超过设定阈值时,系统会自动报警,并通过蜂鸣器发出声音警报,同时将警报信息发送到宠物主人的手机。

5. 系统功能总结

功能模块 描述
温湿度监控 实时监测宠物生活环境的温湿度,保证环境适宜宠物生活。
光照控制 根据室内光照强度自动调节室内灯光,保持合适的光照强度。
烟雾监控 检测烟雾浓度,及时发现火情并进行报警,确保宠物的安全。
宠物活动监控 通过PIR传感器检测宠物活动,摄像头进行实时监控,方便主人查看宠物状态。
数据上传 实时上传环境数据与宠物活动数据至OneNet云平台。
云端查看 宠物主人可通过OneNet平台查看宠物的活动数据、环境数据和折线图。
手机APP监控 宠物主人可以通过APP查看数据、设置阈值并接收警报通知。

6. 技术方案

  1. 1. 硬件平台
    • • 主控芯片:STM32F103RCT6
    • • 无线通信模块:ESP8266
    • • 温湿度传感器:DHT22
    • • 光照传感器:BH1750
    • • 烟雾传感器:MQ-2
    • • 宠物活动传感器:PIR
    • • 摄像头模块:OV7670等
    • • 环境控制:电动风扇、蜂鸣器等
  2. 2. 软件平台
    • • 主控软件:基于STM32CubeMX和HAL库开发的嵌入式程序
    • • 云平台:OneNet物联网平台
    • • 手机APP:基于React Native或Flutter开发的跨平台APP
  3. 3. 数据处理与上传
    • • 通过ESP8266模块将实时数据通过HTTP或MQTT协议上传至OneNet云平台。
    • • 云平台提供数据可视化功能,用户可以查看实时数据和历史数据。

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

  1. 1. STM32F103RCT6
    • • STM32F103RCT6是一个高性能的32位ARM Cortex-M3内核微控制器,具有丰富的外设接口,如GPIO、USART、I2C、SPI等,适合本项目的各种控制和数据采集任务。
  2. 2. ESP8266 Wi-Fi模块
    • • ESP8266是一个低功耗、低成本的Wi-Fi模块,支持Wi-Fi功能,能够将设备连接到云端,实现数据的上传和远程控制。
  3. 3. DHT22温湿度传感器
    • • DHT22是一款高精度的温湿度传感器,具有较大的量程和较高的测量精度,适用于家庭环境监测。
  4. 4. BH1750光照传感器
  • • BH1750是一款数字式的光照传感器,可以提供精确的光照强度数据,适用于室内光照监测。
  1. 1. MQ-2烟雾传感器
    • • MQ-2烟雾传感器具有较高的灵敏度,可以检测到空气中的烟雾、甲烷等气体,适用于火灾预警。
  2. 2. PIR传感器
    • • PIR传感器用于检测红外辐射,能够判断宠物的活动情况,适用于宠物活动监测。

8. 预期成果

  1. 1. 成功实现环境监控与控制系统,包括温湿度、光照和烟雾监测功能。
  2. 2. 实现宠物活动的实时监控和数据上传功能。
  3. 3. 通过OneNet平台成功上传数据,并能够在手机APP中查看宠物及环境数据。
  4. 4. 系统能够实时报警,确保宠物的安全和环境的舒适性。

9. 总结

本项目设计了一个基于物联网技术的室内宠物监护系统,通过实时监测环境数据和宠物活动,保证宠物生活环境的舒适性与安全性。通过使用STM32F103RCT6作为主控芯片,ESP8266模块提供Wi-Fi功能,系统能够实时采集数据并上传至OneNet云平台。宠物主人可以通过手机APP随时查看宠物的生活状态和环境变化,实现远程监控,确保宠物的健康与安全。

10. STM32代码设计

本代码包括:

  1. 1. 初始化外部硬件(传感器、Wi-Fi模块等)。
  2. 2. 通过 STM32F103RCT6 主控芯片采集传感器数据。
  3. 3. 使用 ESP8266 Wi-Fi 模块将数据发送到 OneNet 云平台。
  4. 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. 1. 系统初始化:通过 System_Init() 函数初始化 STM32 的外设(GPIO, UART, I2C, SPI, 定时器等),并初始化各个传感器和 ESP8266 模块。
  2. 2. 传感器数据采集Get_Sensor_Data() 函数负责从 DHT22、BH1750、MQ2 和 PIR 传感器获取环境数据和宠物活动状态。
  3. 3. 环境控制Environment_Control() 函数根据温度、湿度、烟雾等传感器数据控制风扇(PWM)、除湿设备和蜂鸣器。
  4. 4. 数据上传Upload_Data_To_OneNet() 函数将采集到的环境数据和宠物活动信息通过 ESP8266 模块上传至 OneNet 云平台。
  5. 5. 主循环main() 函数是程序的主入口,不断获取传感器数据,进行环境控制,并上传数据。

总结:

这段代码展示了如何在 STM32F103RCT6 上进行多传感器数据采集、环境控制和物联网数据上传的基本实现。

 

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

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。