随着现代中药的广泛应用,中药材的存储环境对其质量有着至关重要的影响。温湿度、烟雾、火灾等环境因素,若不加以控制,将会导致中药材失效或变质。因此,设计一个基于单片机的中药存放环境监测系统显得尤为重要。该系统通过实时监测温湿度、烟雾浓度、火灾情况等环境参数,确保中药存放环境处于适宜的状态,从而保证中药材的品质,减少因环境问题引发的损失。
本项目基于STM32F103C8T6单片机作为核心控制单元,通过多种传感器对环境进行实时采集,并通过液晶显示屏和Wi-Fi无线通讯将监测数据展示给用户,达到环境预警和安全保障的目的。
本系统的设计包括硬件和软件两大部分,硬件部分由STM32F103C8T6单片机作为控制中心,外围集成了多种传感器用于环境数据采集,包括温湿度传感器、烟雾传感器、火灾传感器等,同时利用LCD液晶屏实时显示数据,并通过Wi-Fi模块实现手机端的数据访问。
在软件部分,首先要实现对各个传感器的数据读取和处理,并对数据进行实时监控。其次,设置阈值,当环境数据超过设定的阈值时,触发报警机制(蜂鸣器和排气通道)。最后,通过Wi-Fi将监测数据传输到手机APP,用户可以远程查看和管理数据。
当温湿度、烟雾浓度或火灾传感器的读数超过预设阈值时,系统会触发警报并启动相应的紧急处理机制,例如开启蜂鸣器警告和自动启动排气系统。
通过STM32F103C8T6的内存或外接存储器(如SD卡)保存历史数据,方便后期查询和分析。
通过Wi-Fi模块实现系统与手机端的通信,手机APP将实时显示温湿度、烟雾、火灾等监测数据,确保用户可以远程掌握存储环境状况。
功能模块 | 描述 |
---|---|
温湿度监测 | 实时监测中药存储房的温湿度,确保环境适宜 |
烟雾监测 | 检测存储房内的烟雾浓度,及时发现潜在的火灾隐患 |
火灾监测 | 检测火灾初期征兆,预防火灾事故发生 |
环境预警 | 设置温湿度、烟雾、火灾阈值,超标时触发报警机制 |
紧急处理机制 | 超标时启动排气通道进行通风或散热,降低环境风险 |
数据展示与实时监控 | LCD显示屏展示环境数据,便于现场查看和管理 |
手机APP监控与管理 | 通过Wi-Fi模块连接手机,远程查看实时监测数据 |
数据存储与历史记录 | 保存环境监测数据,便于查询和分析 |
以下是基于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(); // 空操作,等待时间
}
}
}
System_Init()
函数进行所有外设(如LCD、蜂鸣器、传感器、Wi-Fi)的初始化。Environment_Monitoring()
函数从各个传感器(DHT11、烟雾传感器、火灾传感器)中获取实时数据。Alert_System()
函数根据各个传感器的数据判断是否超出设定的阈值,如果超标则启动蜂鸣器报警,并根据需要启动排气通道。Display_Data()
函数使用LCD显示屏展示实时环境数据,包括温度、湿度、烟雾浓度和火灾报警状态。WiFi_Transmit_Data()
函数将环境数据通过Wi-Fi模块发送至手机APP或云端服务器,方便远程监控。审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !