室内外环境监测报警系统设计报告Word文件下载.docx
《室内外环境监测报警系统设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《室内外环境监测报警系统设计报告Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
![室内外环境监测报警系统设计报告Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/3/852ab999-ab81-40de-8999-c55f9dc1b3d7/852ab999-ab81-40de-8999-c55f9dc1b3d71.gif)
测量室内温度和湿度、火灾监测报警、烟雾(或有害气体)监测报警;
室外模块的主要功能是:
测量室外温湿度。
两个模块可以通过无线(采用ZigBee)连接,单片机将收集的数据进行处理,将温度、湿度及室内外温差显示在LCD显示器上;
当出现火情、有害气体泄漏时,蜂鸣器用不同频率的响声分别对各种情况进行预警。
二、项目主要创新
1.设计的室内外环境监测报警系统灵巧、简便。
2.将日常生活中需要的几种监测报警系统进行统一的整合。
最主要的是设计了温湿检测、火灾监测、烟雾及有害气体监测报警。
3.可以用我们设计的系统作为控制系统,外接风扇、水雾喷洒或换气系统。
根据温度变化调节风扇、根据湿度喷洒水雾或根据空气质量开关换气系统。
4.使用了ZigBee近距离无线组网通讯技术。
三、硬件电路设计
硬件电路包括室内模块和室外模块。
室内模块相当于协调器,使用了STM32和CC2530两款芯片,主要用于检测室内温湿度并显示、监测火灾、有毒气体以及报警装置、接收室外温湿信息并显示、控制继电器等。
室外模块相当与终端设备,使用CC2530芯片,主要用于检测室外或其他地方温湿参数,并把这些参数无线发射到室内模块进行显示。
下面是主要的硬件设计。
1.STM32核心板电路图
2.CC2530核心板电路图
3.电源电路设计
ASM117-3.3是5V转3.3V芯片
4.DS18B20电路设计
5.DHT11电路设计
6.火灾、烟雾监测电路设计
烟雾、有害气体监测使用MQ_2,利用红外接受二极管监测是否有火灾发生。
LM393是一种低功率失调电压双比较器,它类似于增益不可调的运算放大器。
每个比较器有两个输入端和一个输出端,两个输入端一个称为同向输入端,一个称为反相输入端。
在比较两个电压时,任意一个输入端加一个固定电压作参考电压,另一端加一个待比较信号电压。
7.LCD显示电路设计
8.继电器电路设计
9.按键电路
10.CC2530串口通信电路设计
四、部分软件设计
由于程序较长,这里提供部分程序。
1.STM32主程序部分
#include"
stm32f10x.h"
delay.h"
sys.h"
USART.h"
LCD.h"
DHT11.h"
DS18B20.h"
MQ_2.h"
IR.h"
LED.h"
BUZZER.h"
KEY.h"
RELAY.h"
Display.h"
voidDeal_With(u8,u8);
voidDeal_Temp(u8,u8);
externunsignedcharTH,TL,RH,RL;
externunsignedchartemp[7];
externu8RES;
intmain(void)
{
u8ts=0;
u8fs=1;
u8mq=0;
u8ir=0;
u8h_norm=H_TEMP;
u8l_norm=L_TEMP;
delay_init();
LED_Init();
Buzzer();
RELAY_Init();
IR_Init();
MQ_Init();
USART1_Configuration();
USARTx_NVIC_Configuration();
LCD_Init(0x38,0x0c,0x06,0x01);
DS18B20_WriteEEPROM();
Scan_Key_Configuration();
while
(1)
{
DHT11_ReadData();
DS18B20_ReadTemperature();
Temp_Conversion();
Slect_Model();
mq=MQ_Scan();
ir=IR_Scan();
ts=Key_Scan();
switch(ts)
{
caseKVALUE1:
fs=Set_LCD(ts);
break;
caseKVALUE2:
h_norm=Set_H_Param(ts,fs);
caseKVALUE3:
l_norm=Set_L_Param(ts,fs);
caseKVALUE4:
Reset_Instrument(ts);
default:
}
switch(fs)
case0:
case1:
Display_Indoor();
case2:
Display_Outdoor_1();
case3:
Display_Outdoor_2();
case4:
Display_Set_Temp_Param(h_norm,l_norm);
Deal_With(mq,ir);
Deal_Temp(h_norm,l_norm);
}
}
2.CC2530监测温度程序
#ifndef__DS18B20_H__
#define__DS18B20_H__
externunsignedcharDs18b20Initial(void);
externvoidTemp_test(void);
externvoidTemp_Conversion(void);
externunsignedchartflag;
#endif
iocc2530.h"
OnBoard.h"
#defineuintunsignedint
#defineucharunsignedchar
#defineDs18b20DataP0_6//温度传感器引脚
#defineON0x01//读取成功返回0x00,失败返回0x01
#defineOFF0x00
uchartemperature[2];
//存放温度数据
uchartemp[7];
//存放分解的7个ASCII码温度数据
uchartflag;
voidDs18b20Delay(uintk);
voidDs18b20InputInitial(void);
//设置端口为输入
voidDs18b20OutputInitial(void);
//设置端口为输出
ucharDs18b20Initial(void);
voidDs18b20Write(ucharinfor);
ucharDs18b20Read(void);
voidTemp_test(void);
//温度读取函数
voidTemp_Conversion(void);
//时钟频率为32M
voidDs18b20Delay(uintk)
/*uinti,j;
for(i=0;
i<
k;
i++)
for(j=0;
j<
2;
j++);
*/
MicroWait(k);
voidDs18b20InputInitial(void)//设置端口为输入
P0DIR&
=0xbf;
voidDs18b20OutputInitial(void)//设置端口为输出
P0DIR|=0x40;
//ds18b20初始化
//初始化成功返回0x00,失败返回0x01
ucharDs18b20Initial(void)
ucharStatus=0x00;
uintCONT_1=0;
ucharFlag_1=ON;
//读取是否成功的标志位
Ds18b20OutputInitial();
//P0_6设置为输出模式
Ds18b20Data=1;
//拉高总线
Ds18b20Delay(260);
Ds18b20Data=0;
//拉低总线
Ds18b20Delay(750);
Ds18b20InputInitial();
//P0_6设置为输入模式
while((Ds18b20Data!
=0)&
&
(Flag_1==ON))//等待ds18b20响应,具有防止超时功能
{//等待约60ms左右
CONT_1++;
Ds18b20Delay(10);
if(CONT_1>
8000)Flag_1=OFF;
Status=Ds18b20Data;
Ds18b20Delay(100);
returnStatus;
//主机往Ds18b20写数据
voidDs18b20Write(ucharinfor)
uinti;
//发送一个字节
8;
//发送一位
if((infor&
0x01))
{
Ds18b20Data=0;
Ds18b20Delay(6);
Ds18b20Da