0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32设计的仓库环境监测与预警系统

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2025-03-05 13:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目录

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

1. 项目开发背景

随着工业化和现代化的进程,尤其是在制造业、食品业、医药业等行业,仓库环境的监控和管理成为了至关重要的一环。尤其是在存储易腐品、药品、电子产品等货物时,温度、湿度、气体浓度等环境参数的异常变化可能导致物品的质量和安全性问题。为了保证仓库内物品的安全存储,及时发现环境参数异常并采取必要措施,仓库环境监测系统应运而生。

传统的环境监测方式往往依赖人工检查或简单的环境检测设备,但这些方式往往难以实现实时监控与自动预警。物联网技术的发展为仓库环境监控系统提供了更加智能、高效、实时的数据采集、传输和处理手段。本项目基于STM32微控制器设计一个环境监测与预警系统,具备温湿度监测、气体检测、墙壁水汽检测、蜂鸣器报警、通风控制等功能,支持数据上传至华为云物联网平台并通过网页实现数据可视化与控制。

本项目不仅满足了传统环境监测的需求,还通过物联网和大数据分析提升了仓库管理的效率和智能化水平,具有重要的实际应用价值。

image-20241225143902890


2. 设计实现的功能

本项目设计的仓库环境监测与预警系统的主要功能如下:

  1. 环境温度和湿度检测
    使用SHT30温湿度传感器实时监测仓库内的环境温度和湿度,并通过显示屏和云平台实时展示。
  2. 二氧化碳浓度检测
    使用SGP30传感器检测仓库内的二氧化碳浓度,提供空气质量监测功能。
  3. 墙壁水汽检测
    安装雨滴传感器以检测墙壁或角落的水汽情况,当水汽超标时,通过蜂鸣器进行报警。
  4. 可燃气体检测
    使用MQ9气体传感器检测仓库内的一氧化碳、甲烷等可燃气体浓度,当检测到气体浓度超标时,触发蜂鸣器报警。
  5. 通风风扇控制
    使用继电器控制通风风扇的启停,用户可以手动按键开启或关闭风扇,确保仓库通风良好。
  6. 报警功能
    当环境参数不符合设定要求时,系统通过蜂鸣器报警并在可视化大屏上显示报警信息,通知工作人员及时处理。
  7. 可视化大屏显示
    使用1.44寸LCD显示屏显示温湿度、二氧化碳浓度、气体浓度、墙壁水汽等环境数据。
  8. 数据上传与云平台显示
    系统通过ESP8266模块连接Wi-Fi,将数据通过MQTT协议上传到华为云物联网平台,实时显示数据,并支持历史数据查询和分析。
  9. Web端数据可视化与控制
    使用Python编写后端服务器,接收从华为云物联网平台转发的数据,并通过HTML前端页面展示实时数据与报警状态,用户可通过Web页面进行控制操作。
  10. 数据存储与分析
    服务器支持本地存储数据,并通过云平台的数据存储与分析功能,提供环境参数历史数据的查看与分析,辅助决策与管理。

3. 项目硬件模块组成

本项目所使用的硬件模块如下:

  1. 主控芯片:STM32F103RCT6
    • 主要负责系统的控制与数据处理,协调各个模块的工作。
    • 具有丰富的IO口、USART接口、PWM输出等功能,适合本项目的多传感器数据采集和控制需求。
  2. 温湿度传感器:SHT30
    • 用于检测仓库内的环境温度和湿度。
    • 具有高精度和稳定性,通过I2C接口与STM32通信
  3. 二氧化碳浓度传感器:SGP30
    • 用于检测仓库内的二氧化碳浓度,具有较高的检测精度。
    • 同样采用I2C接口进行数据通信。
  4. 可燃气体传感器:MQ9
    • 用于检测仓库内一氧化碳、甲烷等气体的浓度。
    • 通过模拟输出与STM32进行通信。
  5. 雨滴传感器
    • 用于检测墙壁或角落的水汽情况。
    • 安装在墙壁或角落,如果检测到水汽,则通过蜂鸣器进行报警。
  6. 蜂鸣器
    • 用于报警,当环境参数不符合要求时,蜂鸣器发出声音提醒。
  7. 通风风扇:继电器控制
    • 用于控制通风风扇的开关,通过继电器与STM32连接。
  8. Wi-Fi模块:ESP8266
    • 用于与本地网络连接,将采集到的环境数据上传到华为云物联网平台。
    • 支持MQTT协议,用于数据上传。
  9. 显示屏:1.44寸LCD
    • 显示当前仓库的环境数据,包括温湿度、二氧化碳浓度、气体浓度等。
  10. 电源模块:5V 2A外部稳压模块
  • 为系统提供稳定的电源

4. 设计思路

4.1 系统架构

本系统由硬件和软件两部分组成,硬件部分主要包括温湿度传感器、二氧化碳传感器、可燃气体传感器、雨滴传感器、蜂鸣器、Wi-Fi模块等。系统使用STM32F103RCT6作为主控芯片,通过I2C、GPIO、PWM等接口与传感器和执行器连接。

系统通过ESP8266 Wi-Fi模块实现数据无线传输,数据通过MQTT协议上传至华为云物联网平台。云端平台负责数据存储和历史数据分析,同时提供API接口供本地服务器拉取数据。通过Web页面,用户可以查看实时环境数据并进行控制操作。

4.2 数据采集与处理

  • 温湿度检测 :使用SHT30传感器实时采集仓库内的环境温度和湿度,STM32通过I2C接口与SHT30通信,获取数据并进行处理。
  • 气体检测 :通过MQ9传感器获取一氧化碳等气体的浓度,当浓度超标时触发报警。
  • 墙壁水汽检测 :雨滴传感器监测墙壁或角落的水汽,当水汽超标时,蜂鸣器报警。
  • 二氧化碳浓度检测 :SGP30传感器监测二氧化碳浓度。

4.3 报警与控制

  • 蜂鸣器报警 :当检测到温湿度、气体浓度、墙壁水汽等不符合要求时,蜂鸣器发出报警声音。
  • 风扇控制 :通过继电器控制通风风扇的启停,确保仓库内空气流通。
  • 按键控制 :用户可以通过按键手动启动或关闭风扇。

4.4 数据上传与可视化

  • 云数据上传 :数据通过ESP8266模块通过Wi-Fi上传到华为云物联网平台,使用MQTT协议实现数据传输。
  • Web端可视化 :后端服务器使用Python开发,前端使用HTML5展示实时数据、报警信息和控制界面。

5. 系统功能总结

功能模块描述
环境温湿度检测通过SHT30传感器检测温湿度数据
二氧化碳浓度检测通过SGP30传感器检测二氧化碳浓度
可燃气体检测通过MQ9传感器检测一氧化碳、甲烷等气体浓度
墙壁水汽检测通过雨滴传感器检测水汽情况
报警功能超过设定阈值时蜂鸣器报警
风扇控制通过继电器控制风扇启停
数据上传通过Wi-Fi模块和MQTT协议上传数据至

云平台 | | Web端可视化 | 通过Web前端展示数据、报警信息及控制操作 |


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

6.1 SHT30 温湿度传感器

  • 工作原理 :SHT30是一款数字输出型温湿度传感器,采用I2C协议与STM32通信。具有高精度、低功耗的特点,适合长期稳定监测环境条件。

6.2 SGP30 二氧化碳传感器

  • 工作原理 :SGP30是一款基于金属氧化物传感器的二氧化碳传感器,采用I2C通信协议,能精确检测空气中的二氧化碳浓度。

6.3 MQ9 可燃气体传感器

  • 工作原理 :MQ9是常见的气体传感器,可检测一氧化碳、甲烷等可燃气体。输出模拟信号,STM32通过ADC读取数据,进行气体浓度判断。

6.4 雨滴传感器

  • 工作原理 :雨滴传感器检测环境中的水汽,当水汽浓度超标时,通过触发高电平输出控制蜂鸣器报警。

6.5 ESP8266 Wi-Fi模块

  • 工作原理 :ESP8266模块提供Wi-Fi无线网络连接,支持通过MQTT协议与云平台进行通信,传输环境数据。

6.6 蜂鸣器

  • 工作原理 :蜂鸣器通过接收到高电平信号时发出响声,用于报警通知。

7. 总结

本项目成功设计并实现了基于STM32的仓库环境监测与预警系统。通过结合多种传感器、Wi-Fi模块以及云平台,能够实时监测仓库内的温湿度、气体浓度、水汽等环境参数,并在出现异常时通过蜂鸣器报警提醒工作人员。同时,系统支持数据上传至云平台,提供实时数据展示和历史数据分析,帮助管理人员更好地了解仓库环境状况,做出决策。

该系统具备高效性、智能化、实时性强等特点,具有广泛的应用前景,可以为各类仓储、生产线等环境提供有效的监测和预警保障。

8. STM32代码设计

当前项目使用的相关软件工具、模块源码已经上传到网盘:https://ccnr8sukk85n.feishu.cn/wiki/QjY8weDYHibqRYkFP2qcA9aGnvb?from=from_copylink

以下是基于STM32的仓库环境监测与预警系统的 main.c 文件代码。主程序负责初始化各个模块,进行数据采集,并通过蜂鸣器进行报警,最后通过Wi-Fi上传数据到华为云物联网平台。

#include "stm32f1xx_hal.h"
#include "stdio.h"
#include "string.h"

// 引入各传感器模块的头文件
#include "sht30.h"          // 温湿度传感器
#include "sgp30.h"          // 二氧化碳传感器
#include "mq9.h"            // 可燃气体传感器
#include "rain_sensor.h"    // 水汽传感器
#include "esp8266.h"        // WiFi模块
#include "lcd.h"            // LCD显示
#include "relay.h"          // 继电器控制风扇
#include "buzzer.h"         // 蜂鸣器

// 定义环境监测阈值
#define TEMP_THRESHOLD_HIGH   30  // 高温阈值(单位:℃)
#define TEMP_THRESHOLD_LOW    10  // 低温阈值(单位:℃)
#define HUMIDITY_THRESHOLD_LOW 30  // 低湿度阈值(单位:%)
#define CO_THRESHOLD          10  // 一氧化碳浓度阈值(单位:ppm)
#define CO2_THRESHOLD         1000 // 二氧化碳浓度阈值(单位:ppm)
#define WATER_VAPOR_THRESHOLD 50  // 水汽浓度阈值(单位:%)

UART_HandleTypeDef huart1;  // 串口1,用于调试
I2C_HandleTypeDef hi2c1;    // I2C1,用于温湿度传感器、SGP30
SPI_HandleTypeDef hspi1;    // SPI1,用于LCD显示
WiFi_Module wifi;           // Wi-Fi模块

// 函数声明
void SystemClock_Config(void);
void MX_GPIO_Init(void);
void MX_USART1_UART_Init(void);
void MX_I2C1_Init(void);
void MX_SPI1_Init(void);
void read_environment_data(void);
void display_data_on_lcd(float temperature, float humidity, float co2, float co);
void send_data_to_cloud(float temperature, float humidity, float co2, float co);
void check_alerts(float temperature, float humidity, float co2, float co, int water_vapor);
void control_relay(int status);
void control_buzzer(int status);

int main(void)
{
    // 系统初始化
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();
    MX_I2C1_Init();
    MX_SPI1_Init();

    // 初始化传感器
    SHT30_Init(&hi2c1);  // 初始化温湿度传感器
    SGP30_Init(&hi2c1);  // 初始化二氧化碳传感器
    MQ9_Init();          // 初始化可燃气体传感器
    Rain_Sensor_Init();  // 初始化水汽传感器
    ESP8266_Init(&huart1); // 初始化Wi-Fi模块
    LCD_Init(&hspi1);     // 初始化LCD显示
    Buzzer_Init();        // 初始化蜂鸣器
    Relay_Init();         // 初始化继电器(风扇控制)

    // 系统主循环
    while (1)
    {
        // 读取环境数据
        float temperature, humidity, co2, co;
        int water_vapor;
        read_environment_data(&temperature, &humidity, &co2, &co, &water_vapor);

        // 显示数据到LCD
        display_data_on_lcd(temperature, humidity, co2, co);

        // 上传数据到云平台
        send_data_to_cloud(temperature, humidity, co2, co);

        // 检查是否需要报警或执行控制
        check_alerts(temperature, humidity, co2, co, water_vapor);

    }
}

// 读取环境数据(温湿度,CO2浓度,CO浓度,水汽浓度)
void read_environment_data(float *temperature, float *humidity, float *co2, float *co, int *water_vapor)
{
    // 获取温湿度数据
    *temperature = SHT30_ReadTemperature();
    *humidity = SHT30_ReadHumidity();

    // 获取CO2浓度数据
    *co2 = SGP30_ReadCO2();

    // 获取CO浓度数据
    *co = MQ9_ReadCO();

    // 获取水汽浓度数据
    *water_vapor = Rain_Sensor_Read();
}

// 将数据显示在LCD屏上
void display_data_on_lcd(float temperature, float humidity, float co2, float co)
{
    char display_buffer[50];
    
    // 显示温湿度数据
    sprintf(display_buffer, "Temp: %.2fC Hum: %.2f%%", temperature, humidity);
    LCD_DisplayStringLine(0, (uint8_t*)display_buffer);

    // 显示CO2和CO数据
    sprintf(display_buffer, "CO2: %.2fppm CO: %.2fppm", co2, co);
    LCD_DisplayStringLine(1, (uint8_t*)display_buffer);
}

// 将数据上传到云平台
void send_data_to_cloud(float temperature, float humidity, float co2, float co)
{
    // 将数据通过MQTT协议上传到华为云物联网平台
    char payload[200];
    sprintf(payload, "{"temperature": %.2f, "humidity": %.2f, "co2": %.2f, "co": %.2f}",
            temperature, humidity, co2, co);
    ESP8266_MQTT_Publish("warehouse/environment", payload);  // 假设该主题用于上传环境数据
}

// 检查环境参数,判断是否需要报警或控制
void check_alerts(float temperature, float humidity, float co2, float co, int water_vapor)
{
    // 检查温度
    if (temperature > TEMP_THRESHOLD_HIGH || temperature < TEMP_THRESHOLD_LOW)
    {
        control_buzzer(1);  // 超出温度范围,启动蜂鸣器报警
    }
    // 检查湿度
    if (humidity < HUMIDITY_THRESHOLD_LOW)
    {
        control_buzzer(1);  // 湿度过低,启动蜂鸣器报警
    }
    // 检查二氧化碳浓度
    if (co2 > CO2_THRESHOLD)
    {
        control_buzzer(1);  // 二氧化碳浓度过高,启动蜂鸣器报警
    }
    // 检查可燃气体浓度
    if (co > CO_THRESHOLD)
    {
        control_buzzer(1);  // 可燃气体浓度过高,启动蜂鸣器报警
    }
    // 检查水汽浓度
    if (water_vapor > WATER_VAPOR_THRESHOLD)
    {
        control_buzzer(1);  // 水汽浓度过高,启动蜂鸣器报警
    }

    // 控制风扇(继电器控制)
    if (temperature > TEMP_THRESHOLD_HIGH)
    {
        control_relay(1);  // 启动风扇
    }
    else if (temperature < TEMP_THRESHOLD_LOW)
    {
        control_relay(0);  // 关闭风扇
    }
}

// 控制继电器(风扇)
void control_relay(int status)
{
    if (status)
    {
        Relay_On();  // 打开风扇
    }
    else
    {
        Relay_Off();  // 关闭风扇
    }
}

// 控制蜂鸣器
void control_buzzer(int status)
{
    if (status)
    {
        Buzzer_On();  // 启动蜂鸣器报警
    }
    else
    {
        Buzzer_Off();  // 关闭蜂鸣器
    }
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371046
  • 环境监测
    +关注

    关注

    3

    文章

    387

    浏览量

    19494
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    求一个毕业设计:基于单片机的室内环境监测预警系统设计。

    基于单片机的室内环境监测预警系统设计。电路图要用protues仿真
    发表于 04-08 15:42

    求助:基于单片机的室内环境监测预警系统的设计,protues仿真图

    求助:基于单片机的室内环境监测预警系统的设计,protues仿真图
    发表于 04-15 00:16

    14个环境监测系统设计案例

    工作的前提。随着现代科学技术的发展,环境监测越来越趋于智能化,无线传感网络、微波辐射技术、ZigBee等技术都被运用到环境检测中来。本文就将为大家介绍一些基于现代技术的环境监测系统的设
    发表于 04-26 09:16

    环境监测+环保数采仪+平台

    监测等,采集完数据后发送到中心监控站,中心端可对VOC监测设备进行联动控制;  2、VOC环境预警系统  根据环境监测
    发表于 09-06 10:39

    STM32应用案例 实现地下停车场安全预警系统设计

    设计了一套基于STM32的地下停车场安全预警系统。该系统由供电模块、STM32主处理器模块、无线通信模块、车辆监测模块、安全
    发表于 01-06 18:22

    请问怎样去设计一种车距监测预警系统

    RFID和卫星导航技术是什么?基于RFID和卫星导航技术的车距监测预警系统怎样去设计?
    发表于 05-12 06:01

    智能输电线路山火监测预警系统,山火隐患监测预警装置

    研制了一款智能输电线路山火监测预警系统,可对架空输电线路周边的山火隐患进行实时监测预警,并可通过无线通信技术将火源位置、火情发展趋势等数据信息发送给后端监控分析中心,为及时扼住损坏电
    发表于 11-04 11:54

    基于Basic-RF的家居环境监测预警系统设计

    针对实际应用需求,结合Basic-RF无线通信技术、网络通信技术和GSM通信技术设计了一种基于Basic-RF的家居环境监测预警系统
    发表于 12-29 10:12 3710次阅读
    基于Basic-RF的家居<b class='flag-5'>环境监测</b><b class='flag-5'>预警系统</b>设计

    基于WSNs的军用机场仓库环境监测系统设计_唐希浪

    基于WSNs的军用机场仓库环境监测系统设计_唐希浪
    发表于 03-19 19:12 0次下载

    电力微气象监测预警系统

    电力微气象监测预警系统
    的头像 发表于 01-11 16:33 1548次阅读

    物联网仓储环境监测系统

    以万物互联为口号的物联网技术,其应用之广泛超出想象,不仅能对农业温室大棚、水肥灌溉等进行远程管理,也能对仓库、粮库、机房等进行环境监测、控制。 仓储环境监测系统解决方案,针对不同类型的
    的头像 发表于 02-08 16:16 1502次阅读

    如何快速搭建一个LoRa®无线环境监测系统?WisBlock + RUI3 一键实现!

    基于瑞科慧联(RAK)的模块化产品 WisBlock 以及软件平台 RUI 3 搭建出来的 LoRaWAN® 无线环境监测预警系统,恰好符合这一点。WisBlock + RUI3 的环境监测
    的头像 发表于 09-19 14:21 4515次阅读
    如何快速搭建一个LoRa®无线<b class='flag-5'>环境监测</b><b class='flag-5'>系统</b>?WisBlock + RUI3 一键实现!

    小型仓库环境监测系统方案

    严格要求的物品。正因如此,经营者为了能提升品质,保障客户物品不受损害。 小型仓库环境监测系统,对温湿度、烟感、浸水、微环境环境参数,及门禁
    的头像 发表于 07-24 16:19 1038次阅读

    仓库环境温湿度监测系统功能

    仓库环境温湿度监测系统在现代物流管理中扮演着至关重要的角色。以其实时监测、精准分析、预警提醒和节
    的头像 发表于 05-17 17:07 1161次阅读

    恒温仓库环境监测解决方案

    在当今日益发展的物流仓储行业中,恒温仓库环境监测与管理已成为确保产品质量和存储安全的关键环节。随着物联网、大数据等技术的不断发展,恒温仓库环境监测解决方案也日趋完善,为仓储行业带来了
    的头像 发表于 07-23 16:33 781次阅读