当前位置: 首页 > news >正文

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

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

项目开发背景

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

本项目基于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();        // 初始化LCDBuzzer_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或云端服务器,方便远程监控。

相关文章:

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

基于单片机中药存放环境监测系统的实现 项目开发背景 随着现代中药的广泛应用&#xff0c;中药材的存储环境对其质量有着至关重要的影响。温湿度、烟雾、火灾等环境因素&#xff0c;若不加以控制&#xff0c;将会导致中药材失效或变质。因此&#xff0c;设计一个基于单片机的…...

九垠赢+商业管理系统 Common.ashx 文件上传致RCE漏洞复现

0x01 产品简介 九垠赢+商业管理系统是基于互联网技术的进销存管理软件,适用于新零售背景下各种业态的线上线下一体化的商超经营管理。赢+ERP以商业管理系统为底座,融合了多种软、硬件解决方案,实现了从企业、供应商、三方平台到顾客等日常管理的全线数字化、智能化和移动化…...

速盾:服务器CDN加速解析的好处有哪些呢?

随着互联网应用的普及&#xff0c;越来越多的企业开始关注如何提升网站的访问速度和用户体验。为了实现这一目标&#xff0c;许多企业选择使用CDN&#xff08;内容分发网络&#xff09;来加速网站的内容分发。CDN通过在全球范围内分布多个节点&#xff0c;将内容缓存到离用户最…...

C++ 设计模式:备忘录模式(Memento Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 状态模式 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不破坏封装性的前提下捕获和恢复对象的内部状态。这个模式在需要保存和恢复对象状态的场景中非常有用&#xff…...

Android 系统 Activity 系统层深度定制的方法、常见问题以及解决办法

Android 系统 Activity 系统层深度定制的方法、常见问题以及解决办法 目录 引言Activity 系统层概述Activity 系统架构图Activity 系统层深度定制的方法 4.1 自定义 Activity 生命周期4.2 自定义 Activity 启动流程4.3 自定义 Activity 转场动画4.4 自定义 Activity 窗口管理4…...

PDF怎么压缩得又小又清晰?5种PDF压缩方法

PDF 文件在日常办公与学习中使用极为频繁&#xff0c;可想要把它压缩得又小又清晰却困难重重。一方面&#xff0c;PDF 格式本身具有高度兼容性&#xff0c;集成了文字、图像、矢量图等多样元素&#xff0c;压缩时难以兼顾不同元素特性&#xff0c;稍不注意&#xff0c;文字就会…...

YK人工智能(三)——万字长文学会torch深度学习

2.1 张量 本节主要内容&#xff1a; 张量的简介PyTorch如何创建张量PyTorch中张量的操作PyTorch中张量的广播机制 2.1.1 简介 几何代数中定义的张量是基于向量和矩阵的推广&#xff0c;比如我们可以将标量视为零阶张量&#xff0c;矢量可以视为一阶张量&#xff0c;矩阵就是…...

关于CISP报名费用详情

CISP即“注册信息安全专业人员”&#xff0c;是中国信息安全测评中心实施的国家认证项目&#xff0c;旨在培养信息安全领域的专业人才。对于有意报考CISP的考生而言&#xff0c;了解报名考试费用是备考过程中不可或缺的一环。 CISP的报名考试费用主要包括培训费用、考试费用、…...

vim 按下esc后取消高亮

配置 ideavimrc文件 " 按下 Esc 键时自动取消高亮 " 在普通模式下按下 Esc 键取消高亮 nnoremap <Esc> :nohlsearch<CR> " 在插入模式下按下 Esc 键取消高亮 inoremap <Esc> <Esc>:nohlsearch<CR>" 额外&#xff1a;当退出…...

SwiftUI:多语言实现富文本插值

实现的UI需求&#xff1a; 要求&#xff1a; 英文显示&#xff1a;3068 people have joined this plan today! 中文显示&#xff1a;今日有 3068 人已加入此计划&#xff01; 实现代码&#xff1a; Text(AttributedString(localized:"**\(payPeoples)** people have joi…...

操作系统基础

概念 控制和管理操作系统软件和硬件 用户观点&#xff1a;用户和计算机之间的接口 基本概念 特征 并发&#xff0c;共享&#xff0c;虚拟&#xff0c;异步 功能 处理机管理&#xff0c;存储器管理&#xff0c;文件管理&#xff0c;设备管理 作为用户和硬件接口 命令接口&am…...

函数调用流程可用工具

方法 1、gdb&#xff0c;这个网上很多找找就有 2、tcmalloc&#xff0c;直接在调用的地方调一个malloc就可以看到调用的流程&#xff0c;具体见tcmalloc 3、backtrace&#xff0c;个人感觉这么最方便&#xff0c;具体见backtrace...

UniApp 页面布局基础

一、UniApp 页面布局简介 在当今的移动应用开发领域&#xff0c;跨平台开发已成为一种主流趋势。UniApp作为一款极具影响力的跨平台开发框架&#xff0c;凭借其“一套代码&#xff0c;多端运行”的特性&#xff0c;为开发者们提供了极大的便利&#xff0c;显著提升了开发效率。…...

2D图像测量到3D点云之物体三维尺寸测量!!!!

0&#xff0c;引言 本文将从双目采集的2D图像到3D点云进行转化&#xff0c;并进行物体尺寸测量&#xff0c;旨在为读者展示2D图像如何关联3D点云&#xff0c;并进行相关工业应用。 将2D图像转化为3D点云&#xff0c;并进行物体尺寸测量的技术&#xff0c;在工业领域有着广泛的…...

[TOTP]android kotlin实现 totp身份验证器 类似Google身份验证器

背景&#xff1a;自己或者公司用一些谷歌身份验证器或者microsoft身份验证器&#xff0c;下载来源不明&#xff0c;或者有广告&#xff0c;使用不安全。于是自己写一个&#xff0c;安全放心使用。 代码已开源&#xff1a;shixiaotian/sxt-android-totp: android totp authenti…...

2025决战智驾:从中阶卷到L3,车企需要抓好一个数据闭环

作者 |王博 编辑 |德新 全国都能开之后&#xff0c;智驾继续走向哪里&#xff1f; 2024年末&#xff0c;大部分主流车企已经实现了无&#xff08;高精度&#xff09;图全国都能开。而第一梯队的玩家&#xff0c;从以规则为主的算法框架&#xff0c;向神经网络模型为主的新架构…...

电子电气架构 --- 汽车电子电器设计概述

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...

SpringAI从入门到熟练

学习SpringAI的记录情况 文章目录 前言 因公司需要故而学习SpringAI文档&#xff0c;故将自己所见所想写成文章&#xff0c;供大佬们参考 主要是为什么这么写呢&#xff0c;为何不抽出来呢&#xff0c;还是希望可以用的时候更加方便一点&#xff0c;如果大家有需求可以自行去…...

[算法] [leetcode-20] 有效的括号

20 有效的括号 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合…...

R语言入门笔记:第一节,快速了解R语言——文件与基础操作

关于 R 语言的简单介绍 上一期 R 语言入门笔记里面我简单介绍了 R 语言的安装和使用方法&#xff0c;以及各项避免踩坑的注意事项。我想把这个系列的笔记持续写下去。 这份笔记只是我的 R 语言入门学习笔记&#xff0c;而不是一套 R 语言教程。换句话说&#xff1a;这份笔记不…...

【亚马逊云】基于Amazon EC2实例部署 NextCloud 云网盘并使用 Docker-compose 搭建 ONLYOFFICE 企业在线办公应用软件

文章目录 1. 部署EC2实例2. 安装 Docker 服务3. 安装docker-compose4. 创建Docker-compose文件5. 创建nginx.conf文件6. 运行docker-compose命令开始部署7. 访问ONLYOFFICE插件8. 访问NextCloud云盘9. 下载并启用ONLYOFFICE插件10. 上传文件测试11. 所遇问题12. 参考链接 1. 部…...

java Redisson 实现限流每秒/分钟/小时限制N个

1.引入maven包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.redisson</groupId><artifactId>red…...

【漫话机器学习系列】029.累积分布函数(Cumulative Distribution Function)

累积分布函数&#xff08;Cumulative Distribution Function, CDF&#xff09; 累积分布函数&#xff08;CDF&#xff09;是概率论和统计学中的一个基本概念&#xff0c;用于描述随机变量取值的累积概率分布情况。它在理论研究和实际应用中广泛使用。 定义 给定随机变量 X&am…...

设计模式之访问者模式:一楼千面 各有玄机

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 一、访问者模式概述 \quad 江湖中有一个传说&#xff1a;在遥远的东方&#xff0c;有一座神秘的玉楼。每当武林中人来访&#xff0c;楼中的各个房…...

AI 编程的世界:用Cursor编写评分项目

AI 编程的世界&#xff1a;用Cursor编写评分项目 今天是2024年的最后一天&#xff0c;祝大家在新的一年&#xff0c;健康开心快乐&#xff01; 岁末之际&#xff0c;星辰为伴&#xff0c;灯火长明&#xff0c;我终于在 2024 年的最后一天成功上线了 AI 编程项目。回首这一年&am…...

Cesium教程(二十三):Cesium实现下雨场景

文章目录 实现效果代码引入js文件创建容器创建视图定义下雨场景完整代码下载实现效果 代码 在 Cesium 中利用PostProcessStageLibrary实现下雪场景,你可以按照以下步骤进行: 创建一个 PostProcessStage:首先,你需要创建一个PostProcessStage对象,它将用于定义下雪效果的渲…...

SpringCloudAlibaba技术栈-Higress

1、什么是Higress? 云原生网关&#xff0c;干啥的&#xff1f;用通俗易懂的话来说&#xff0c;微服务架构下Higress 就像是一个智能的“交通警察”&#xff0c;它站在你的网络世界里&#xff0c;负责指挥和调度所有进出的“车辆”&#xff08;也就是数据流量&#xff09;。它的…...

uniapp 微信小程序开发使用高德地图、腾讯地图

一、高德地图 1.注册高德地图开放平台账号 &#xff08;1&#xff09;创建应用 这个key 第3步骤&#xff0c;配置到项目中locationGps.js 2.下载高德地图微信小程序插件 &#xff08;1&#xff09;下载地址 高德地图API | 微信小程序插件 &#xff08;2&#xff09;引入项目…...

Springboot:后端接收数组形式参数

1、接收端写法 PermissionAnnotation(permissionName "",isCheckToken true)PostMapping("/batchDeleteByIds")public ReturnBean webPageSelf( NotNull(message "请选择要删除的单据&#xff01;") Long[] ids) {for (Long string : ids) {l…...

Postman[2] 入门——界面介绍

可参考官方 文档 Postman 导航 | Postman 官方帮助文档中文版Postman 拥有各种工具、视图和控件&#xff0c;帮助你管理 API 项目。本指南是对 Postman 主要界面区域的高级概述&#xff1a;https://postman.xiniushu.com/docs/getting-started/navigating-postman 1. Header&a…...