基于单片机中药存放环境监测系统的实现

news2025/1/7 14:44:29

基于单片机中药存放环境监测系统的实现

项目开发背景

随着现代中药的广泛应用,中药材的存储环境对其质量有着至关重要的影响。温湿度、烟雾、火灾等环境因素,若不加以控制,将会导致中药材失效或变质。因此,设计一个基于单片机的中药存放环境监测系统显得尤为重要。该系统通过实时监测温湿度、烟雾浓度、火灾情况等环境参数,确保中药存放环境处于适宜的状态,从而保证中药材的品质,减少因环境问题引发的损失。

本项目基于STM32F103C8T6单片机作为核心控制单元,通过多种传感器对环境进行实时采集,并通过液晶显示屏和Wi-Fi无线通讯将监测数据展示给用户,达到环境预警和安全保障的目的。

image-20241225142247774

设计实现的功能

  1. 温湿度采集与监控:使用DHT11温湿度传感器实时监控中药存放房间的温度和湿度,确保温湿度符合要求。
  2. 烟雾监测:通过烟雾传感器检测存放环境中的烟雾浓度,及时发现火灾隐患。
  3. 火灾监测:利用火灾传感器检测中药存放环境中是否有火灾发生,保证环境安全。
  4. 环境预警:设置温湿度、烟雾、火灾等阈值,当超过设定值时,系统自动触发警报(蜂鸣器),提示用户注意。
  5. 紧急处理机制:当温度、湿度、烟雾或火灾参数超标时,系统自动启动排气通道进行换气或散热处理。
  6. 数据展示与实时监控:通过液晶显示屏显示当前环境数据,提供温度、湿度、烟雾浓度、火灾监测结果等信息。
  7. 手机端监控与管理:通过Wi-Fi模块实现手机APP与设备之间的通信,使用户可以在手机端查看实时数据并进行远程监控。
  8. 数据存储与历史记录:监测数据可存储并备份,便于后期查阅和分析,确保数据的长期有效性。

项目硬件模块组成

  1. 主控芯片 STM32F103C8T6
    作为本系统的核心控制单元,STM32F103C8T6具有丰富的I/O口,支持多种外设接口(如SPI、I2C、USART等),能够满足传感器的数据采集、处理和通信要求。
  2. DHT11 温湿度传感器
    用于实时采集存储环境的温度和湿度数据,输出数字信号,通过单片机读取数据进行处理。
  3. 烟雾传感器
    该传感器能够检测空气中的烟雾浓度,通过模拟输出提供实时的烟雾浓度数据。
  4. 火灾传感器
    用于检测火灾发生的初期征兆,如温度剧增、火焰感应等。输出信号通过单片机读取,用于判断是否有火灾发生。
  5. 蜂鸣器
    当环境参数超过设定阈值时,蜂鸣器发出警报声音,提醒用户注意。
  6. 排气通道控制模块
    该模块用于控制中药存储房的排气系统,系统可根据传感器数据自动开启排气口进行散热或通风。
  7. LCD液晶显示屏(1602或类似)
    用于显示当前监测到的温度、湿度、烟雾浓度、火灾报警等数据,提供直观的实时反馈。
  8. Wi-Fi模块(如ESP8266)
    通过Wi-Fi模块与手机APP连接,实现远程数据监控和管理。
  9. 电源管理模块
    提供系统稳定的电源,支持单片机及各个模块的工作。

设计思路

总体架构

本系统的设计包括硬件和软件两大部分,硬件部分由STM32F103C8T6单片机作为控制中心,外围集成了多种传感器用于环境数据采集,包括温湿度传感器、烟雾传感器、火灾传感器等,同时利用LCD液晶屏实时显示数据,并通过Wi-Fi模块实现手机端的数据访问。

在软件部分,首先要实现对各个传感器的数据读取和处理,并对数据进行实时监控。其次,设置阈值,当环境数据超过设定的阈值时,触发报警机制(蜂鸣器和排气通道)。最后,通过Wi-Fi将监测数据传输到手机APP,用户可以远程查看和管理数据。

数据采集与处理

  1. 温湿度采集:通过DHT11传感器读取温湿度数据,并将数据传输给单片机进行处理。
  2. 烟雾采集:通过烟雾传感器读取烟雾浓度数据,并在程序中进行转换和阈值判断。
  3. 火灾采集:通过火灾传感器获取火灾报警信号,判断是否发生火灾。

环境监测与预警

当温湿度、烟雾浓度或火灾传感器的读数超过预设阈值时,系统会触发警报并启动相应的紧急处理机制,例如开启蜂鸣器警告和自动启动排气系统。

数据存储与历史记录

通过STM32F103C8T6的内存或外接存储器(如SD卡)保存历史数据,方便后期查询和分析。

无线通讯

通过Wi-Fi模块实现系统与手机端的通信,手机APP将实时显示温湿度、烟雾、火灾等监测数据,确保用户可以远程掌握存储环境状况。

系统功能总结

功能模块描述
温湿度监测实时监测中药存储房的温湿度,确保环境适宜
烟雾监测检测存储房内的烟雾浓度,及时发现潜在的火灾隐患
火灾监测检测火灾初期征兆,预防火灾事故发生
环境预警设置温湿度、烟雾、火灾阈值,超标时触发报警机制
紧急处理机制超标时启动排气通道进行通风或散热,降低环境风险
数据展示与实时监控LCD显示屏展示环境数据,便于现场查看和管理
手机APP监控与管理通过Wi-Fi模块连接手机,远程查看实时监测数据
数据存储与历史记录保存环境监测数据,便于查询和分析

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

1. DHT11 温湿度传感器

  • 工作原理:DHT11通过内置的温湿度感应元件来测量环境的温度和湿度。它通过单总线协议与单片机进行数据通信。

  • 技术参数

    • 温度测量范围:0℃到50℃
    • 湿度测量范围:20%到90%
    • 精度:温度±2℃,湿度±5%

2. 烟雾传感器

  • 工作原理:烟雾传感器通过对空气中气体的吸收与反射变化,检测烟雾浓度。输出模拟信号,可通过ADC接口输入单片机。
  • 技术参数:
    • 输出信号:模拟电压信号
    • 检测浓度:300-1000ppm烟雾

3. 火灾传感器

  • 工作原理:火灾传感器通过检测环境温度变化或火焰的存在来判断是否发生火灾,常用红外线火焰传感器或热敏电阻。
  • 技术参数:
    • 检测温度范围:30℃-50℃
    • 检测方式:红外或热敏电阻

4. Wi-Fi模块 (ESP8266)

  • 工作原理:ESP8266通过UART接口与单片机通信,实现Wi-Fi功能,能够将环境数据发送至云平台或手机APP。
  • 技术参数:
    • 支持802.11b/g/n Wi-Fi标准
    • 支持TCP/IP协议

STM32代码设计

以下是基于STM32F103C8T6的中药存放环境监测系统的 main.c 代码。其他子模块(如温湿度传感器、烟雾传感器、火灾传感器、蜂鸣器、LCD显示、Wi-Fi等)的代码已经编写好。代码实现了主要功能:环境数据的采集、报警机制、LCD显示和Wi-Fi通讯。

#include "stm32f10x.h"
#include "DHT11.h"        // 包含DHT11传感器的代码
#include "SmokeSensor.h"   // 包含烟雾传感器的代码
#include "FireSensor.h"    // 包含火灾传感器的代码
#include "Buzzer.h"        // 包含蜂鸣器控制代码
#include "LCD1602.h"       // 包含LCD显示控制代码
#include "WiFi.h"          // 包含Wi-Fi通讯控制代码

// 定义环境监测阈值
#define TEMP_THRESHOLD_HIGH 30  // 温度高于30度时报警
#define TEMP_THRESHOLD_LOW 10   // 温度低于10度时报警
#define HUMIDITY_THRESHOLD_HIGH 80  // 湿度高于80%时报警
#define HUMIDITY_THRESHOLD_LOW 30  // 湿度低于30%时报警
#define SMOKE_THRESHOLD 500    // 烟雾浓度超过500时报警

// 环境参数存储
float current_temp = 0;
float current_humidity = 0;
int smoke_level = 0;
int fire_alarm = 0;

// 函数声明
void System_Init(void);
void Environment_Monitoring(void);
void Alert_System(void);
void Display_Data(void);
void WiFi_Transmit_Data(void);

int main(void)
{
    // 系统初始化
    System_Init();
    
    while (1)
    {
        // 环境监测
        Environment_Monitoring();
        
        // 判断是否超出报警阈值
        Alert_System();
        
        // 显示环境数据
        Display_Data();
        
        // 通过Wi-Fi上传数据
        WiFi_Transmit_Data();
        
    }
}

// 系统初始化函数
void System_Init(void)
{
    // 1. 初始化硬件
    LCD_Init();        // 初始化LCD
    Buzzer_Init();     // 初始化蜂鸣器
    DHT11_Init();      // 初始化DHT11传感器
    SmokeSensor_Init(); // 初始化烟雾传感器
    FireSensor_Init();  // 初始化火灾传感器
    WiFi_Init();        // 初始化Wi-Fi模块
    // 2. 其他硬件初始化
    GPIO_Init();        // 初始化GPIO
}

// 环境监测函数
void Environment_Monitoring(void)
{
    // 读取DHT11传感器数据
    current_temp = DHT11_Read_Temperature();
    current_humidity = DHT11_Read_Humidity();
    
    // 读取烟雾传感器数据
    smoke_level = SmokeSensor_Read();
    
    // 读取火灾传感器数据
    fire_alarm = FireSensor_Read();
}

// 报警系统函数
void Alert_System(void)
{
    // 检查是否超出温度阈值
    if (current_temp > TEMP_THRESHOLD_HIGH || current_temp < TEMP_THRESHOLD_LOW)
    {
        Buzzer_On();  // 开启蜂鸣器报警
        // 可以增加排气通道控制的代码
    }
    else
    {
        Buzzer_Off(); // 关闭蜂鸣器
    }

    // 检查湿度是否超出阈值
    if (current_humidity > HUMIDITY_THRESHOLD_HIGH || current_humidity < HUMIDITY_THRESHOLD_LOW)
    {
        Buzzer_On();  // 开启蜂鸣器报警
        // 可以增加排气通道控制的代码
    }
    else
    {
        Buzzer_Off(); // 关闭蜂鸣器
    }

    // 检查烟雾浓度是否超标
    if (smoke_level > SMOKE_THRESHOLD)
    {
        Buzzer_On();  // 开启蜂鸣器报警
        // 可以增加排气通道控制的代码
    }
    else
    {
        Buzzer_Off(); // 关闭蜂鸣器
    }

    // 检查火灾传感器
    if (fire_alarm == 1)
    {
        Buzzer_On();  // 开启蜂鸣器报警
        // 可以增加排气通道控制的代码
    }
    else
    {
        Buzzer_Off(); // 关闭蜂鸣器
    }
}

// 数据显示函数
void Display_Data(void)
{
    // 在LCD上显示环境数据
    LCD_Clear();
    LCD_SetCursor(0, 0);
    LCD_Printf("Temp: %.2f C", current_temp);
    LCD_SetCursor(1, 0);
    LCD_Printf("Humidity: %.2f %%", current_humidity);
    LCD_SetCursor(2, 0);
    LCD_Printf("Smoke: %d", smoke_level);
    LCD_SetCursor(3, 0);
    LCD_Printf("Fire: %s", fire_alarm ? "Detected" : "Safe");
}

// Wi-Fi数据传输函数
void WiFi_Transmit_Data(void)
{
    // 将环境数据通过Wi-Fi发送到手机APP或服务器
    WiFi_Send_Data("Temperature", current_temp);
    WiFi_Send_Data("Humidity", current_humidity);
    WiFi_Send_Data("Smoke", smoke_level);
    WiFi_Send_Data("Fire", fire_alarm ? 1 : 0);
}

// 延时函数
void delay_ms(uint32_t ms)
{
    uint32_t i, j;
    for (i = 0; i < ms; i++)
    {
        for (j = 0; j < 8000; j++)
        {
            __NOP();  // 空操作,等待时间
        }
    }
}

代码分析

  1. 硬件初始化:
    • System_Init() 函数进行所有外设(如LCD、蜂鸣器、传感器、Wi-Fi)的初始化。
  2. 环境监测:
    • Environment_Monitoring() 函数从各个传感器(DHT11、烟雾传感器、火灾传感器)中获取实时数据。
  3. 报警机制:
    • Alert_System() 函数根据各个传感器的数据判断是否超出设定的阈值,如果超标则启动蜂鸣器报警,并根据需要启动排气通道。
  4. 数据展示:
    • Display_Data() 函数使用LCD显示屏展示实时环境数据,包括温度、湿度、烟雾浓度和火灾报警状态。
  5. Wi-Fi通信:
    • WiFi_Transmit_Data() 函数将环境数据通过Wi-Fi模块发送至手机APP或云端服务器,方便远程监控。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2271734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

casaos安装最新版homeassistant-arm

进入cosOS界面点自定义安装 Docker镜像:homeassistant/armv7-homeassistant Tag:2024.12.2 标题&#xff1a;Home Assistant 图片路径&#xff1a;https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStoremain/Apps/HomeAssistant/icon.png Web UI&#xff1a;http&…

Fabric环境部署-安装Go

安装go语言环境 国内镜像&#xff1a;Go下载 - Go语言中文网 - Golang中文社区 1.选择版本下载后解压&#xff1a;注意go1.11.linux-amd64.tar.gz换成你下的 sudo tar zxvf go1.21.linux-amd64.tar.gz -C /usr/local 2.. 创建Go目录 mkdir $HOME/go 3. 用vi打开~./bashrc&…

慧集通(DataLinkX)iPaaS集成平台-主数据映射管理(多系统间基础档案的映射)

主数据管理 主数据管理主要是解决不同业务系统之间历史数据不统一的问题&#xff0c;在该功能下主要分为三个模块分别为数据对象、应用系统、数据映射&#xff1b; 其中数据对象指的是我们的不同的对象&#xff0c;如&#xff1a;部门、人员、职级、科目、供应商等等&#xff…

Hoverfly 任意文件读取漏洞(CVE-2024-45388)

漏洞简介 Hoverfly 是一个为开发人员和测试人员提供的轻量级服务虚拟化/API模拟/API模拟工具。其 /api/v2/simulation​ 的 POST 处理程序允许用户从用户指定的文件内容中创建新的模拟视图。然而&#xff0c;这一功能可能被攻击者利用来读取 Hoverfly 服务器上的任意文件。尽管…

基于单片机的公交车报站系统设计

引言&#xff1a;单片机应用实践是电类相关专业一门必修的专业技术基础课&#xff0c;其教学目的就是为了使学生能深入了解模拟电路、数字电路、EDA 技术、传感器、单片机原理及其相关接口的综合应用技术&#xff0c;为此我们选了一个典型的实践题目- 公交车报站系统设计&#…

基于Java的超级玛丽游戏的设计与实现【源码+文档+部署讲解】

目 录 1、绪论 1.1背景以及现状 1.2 Java语言的特点 1.3 系统运行环境及开发软件&#xff1a; 1.4 可行性的分析 1.4.1 技术可行性 1.4.2 经济可行性 1.4.3 操作可行性 2、 需求分析 2.1 用户需求分析 2.2功能需求分析 2.3界面设计需求分析…

关于数组的一些应用--------数组作函数的返回值(斐波那契数列数列的实现)

数组在作为函数的返回值&#xff0c;一个很经典的例子就是获取斐波那契数列的前N项 代码思路&#xff1a; 设计思路 输入&#xff1a; 输入一个整数 n&#xff0c;表示要生成斐波那契数列的长度。 输出&#xff1a; 输出一个长度为 n 的整数数组&#xff0c;其中每个元素为斐…

灰度图的Stride和RGB的Stride有什么区别呢?

灰度图&#xff08;Grayscale&#xff09;和RGB图像的步长&#xff08;Stride&#xff09;计算确实有所不同&#xff0c;主要是因为它们每个像素占用的字节数不同。以下是两者的区别及对齐要求&#xff1a; 灰度图&#xff08;Grayscale&#xff09; 每个像素占用的字节数&…

使用WebSocket 获取实时数据

回车发送数据&#xff0c;模拟服务器发送数据 效果图&#xff1a; 源码&#xff1a; <template><div><h1>WebSocket 实时数据</h1><input type"text" v-model"ipt" keyup.enter"sendMessage(ipt)"><div v-if…

Python:交互式物质三态知识讲解小工具

学着物理写着Python 以下是一个使用Python的Tkinter库实现的简单示例程序&#xff0c;通过图形界面展示并讲解固态、液态、气态的一些特点&#xff0c;代码中有详细的注释来帮助你理解各部分功能&#xff1a; 完整代码 import tkinter as tk from tkinter import ttk import …

基于64QAM的载波同步和定时同步性能仿真,包括Costas环和gardner环

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下&#xff08;完整代码运行后无水印&#xff09;&#xff1a; 仿真操作步骤可参考程序配套的操作视频。 2.算法涉及理论知识概要 载波同步是…

Arduino 小白的 DIY 空气质量检测仪(5)- OLED显示模块、按钮模块

最终章 这一章把剩下的OLED显示模块、按钮模块分享一下&#xff0c;当前这个离线无存储的版本&#xff0c;基本告一段落。 如果后续能进化成&#x1f236;存储、联网版本&#xff0c;就再开一个小系列分享一下。 逐个分析 display.h #include <Arduino.h> #include &l…

基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 1.程序功能描述 基于机器视觉和Dijkstra算法的平面建筑群地图路线规划matlab仿真&#xff0c;输入一张平面建筑群的地图&#xff0c;然后通过机器视觉识别地图里面的障碍物&#xff0c;然后通…

计算机的错误计算(二百零一)

摘要 用两个大模型计算 &#xff0c;结果保留 10位有效数字。实验表明&#xff0c;两个大模型的输出均只有1位正确数字&#xff1b;并它们几乎相同&#xff1a;仅最后1位数字不同。 例1. 计算 , 结果保留 10位有效数字。 下面是与一个数学解题器的对话。 以上为与一个数学解…

【Motion Builder】配置c++插件开发环境

目录 准备环境构建官方案例另行构建经验分享附录 准备环境 安装Motion Builder 2024并破解安装Qt 5.15.2 截止至2024年12月19日&#xff0c;Qt的在线安装器的默认页面是没有5.15.2版本的。你需要&#xff1a;在“选择组件”界面&#xff0c;选择“Archive”&#xff0c;点击“…

大学生入学审核系统的设计与实现(源码+数据库+文档)

亲测完美运行带论文&#xff1a;文末获取源码 文章目录 项目简介&#xff08;论文摘要&#xff09;运行视频包含的文件列表&#xff08;含论文&#xff09;后台运行截图 项目简介&#xff08;论文摘要&#xff09; 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理…

使用高云小蜜蜂GW1N-2实现MIPI到LVDS(DVP)转换案例分享

作者&#xff1a;Hello&#xff0c;Panda 大家晚上好&#xff0c;熊猫君又来了。 今天要分享的是一个简单的MIPI到LVDS&#xff08;DVP&#xff09;接口转换的案例。目的就是要把低成本FPGA的应用潜力充分利用起来。 一、应用背景 这个案例的应用背景是&#xff1a;现在还在…

单片机-独立按键矩阵按键实验

1、按键介绍 按键管脚两端距离长的表示默认是导通状态&#xff0c;距离短的默认是断开状态&#xff0c; 如果按键按下&#xff0c;初始导通状态变为断开&#xff0c;初始断开状态变为导通 我们开发板是采用软件消抖&#xff0c;一般来说一个简单的按键消抖就是先读取按键的状…

供应链系统设计-供应链中台系统设计(七)- 商品中心设计篇

概述 上篇文章我们大致讲了一些商品中心相关的概念&#xff0c;例如&#xff1a;SPU、SKU、Item等等&#xff0c;在这里我们来简单的回顾一下&#xff1a; 商品概念的分层与定义&#xff1a; SPU&#xff08;Standard Product Unit&#xff09;&#xff1a;代表产品系列或产品…

RAG(Retrieval-Augmented Generation,检索增强生成)流程

目录 一、知识文档的准备二、OCR转换三、分词处理四、创建向量数据库五、初始化语言聊天模型1.prompt2.检索链3.对话 完整代码 知识文档的准备&#xff1a;首先需要准备知识文档&#xff0c;这些文档可以是多种格式&#xff0c;如Word、TXT、PDF等。使用文档加载器或多模态模型…