本次设计的快递仓库的火灾报警系统通过主控单元将各个传感器的参数值采集回来,包括与消防安全相关的温度、湿度、烟雾等,主控制器。
数据采集回来之后通过无线的方式将数据上传到远端的上位机上,由于这些参数都是有一个安全阈值的,当达到这个阈值的时候很可能就已经发生危险或者是已经发生危险。
该快递仓库的火灾报警系统设置了远程设置安全阈值的功能,管理人员可以在上位机端对各个参数的阈值进行设置,当数据采集端检测到实时采集到的数据已经超过阈值的时候,就会控制继电器开关,以便模拟相应的调节装置。
当温度超过阈值的时候,通过控制小灯报警。另外该报警系统设置了GPS定位功能,当超过阈值的时候,会将其GPS位置信息上传到上位机端。
// [主函数代码]
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "hmi.h"
#include "adc.h"
#include "stdio.h"
#include "string.h"
#include "dht11.h"
#include "stdlib.h"
u8 table1[20];
u8 table2[20];
u8 table3[20];
u8 table4[20];
u8 table5[20];
u8 table6[20];
DHT11_Data_TypeDef DHT11_Data;
int main(void)
{
u16 adcx;
float temp;
float value=2.5;
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为9600
LED_Init(); //初始化与LED连接的硬件接口
Adc_Init(); //ADC初始化
DHT11_GPIO_Config();
HMISendstart();
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
sprintf((char*)table1,"%d",adcx);
HMISends("t3.txt=\""); //向串口屏发送电压值
HMISends(table1);
HMISends("\"");
HMISendb(0xff);
temp=(float)adcx*(3.3/4096);
sprintf((char*)table2,"%f",temp);
HMISends("t4.txt=\""); //向串口屏发送电压值
HMISends(table2);
HMISends("\"");
HMISendb(0xff);
if( Read_DHT11(&DHT11_Data)==SUCCESS)
{
LED0=!LED0;
sprintf((char*)table3,"%d",DHT11_Data.humi_int);
HMISends("t6.txt=\"");
HMISends(table3);
HMISends("\"");
HMISendb(0xff);
sprintf((char*)table4,"%d",DHT11_Data.temp_int);
HMISends("t8.txt=\"");
HMISends(table4);
HMISends("\"");
HMISendb(0xff);
}
if(USART_RX_STA&0x8000)
{
if(strcmp((char*)USART_RX_BUF,"moist")==0)
{
JDQ=0;
delay_ms(1000);
}
else
{
value=atof((char*)USART_RX_BUF);
}
memset(USART_RX_BUF,0,sizeof(USART_RX_BUF));
USART_RX_STA=0;
}
if((temp>value)||(temp>2.5))
{
JDQ=0;
BEEP=0;
}
else
{
JDQ=1;
BEEP=1;
}
delay_ms(250);
}
}
源码:
https://blog.csdn.net/m0_71369066/article/details/126415022