室内外环境监测报警系统设计报告.docx
- 文档编号:27051263
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:16
- 大小:331.83KB
室内外环境监测报警系统设计报告.docx
《室内外环境监测报警系统设计报告.docx》由会员分享,可在线阅读,更多相关《室内外环境监测报警系统设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
室内外环境监测报警系统设计报告
工业学院大学生科技创新
室外环境监测报警系统
设计报告
系部名称:
电子工程系
工程名称:
室外环境监测报警系统
指导教师:
陆锋
申请者:
国栋
年级专业:
11级电子信息工程
申请日期:
2021年11月24日
联系:
一、工程主要容
本工程将利用单片机与传感器等电子器件,设计一款实用方便的室外环境监测报警系统。
设计分为两个模块,室模块和室外模块。
室模块主要功能是:
测量室温度和湿度、火灾监测报警、烟雾〔或有害气体〕监测报警;室外模块的主要功能是:
测量室外温湿度。
两个模块可以通过无线〔采用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"
#include"delay.h"
#include"sys.h"
#include"USART.h"
#include"LCD.h"
#include"DHT11.h"
#include"DS18B20.h"
#include"MQ_2.h"
#include"IR.h"
#include"LED.h"
#include"BUZZER.h"
#include"KEY.h"
#include"RELAY.h"
#include"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);break;
caseKVALUE3:
l_norm=Set_L_Param(ts,fs);break;
caseKVALUE4:
Reset_Instrument(ts);break;
default:
break;
}
switch(fs)
{
case0:
break;
case1:
Display_Indoor();break;
case2:
Display_Outdoor_1();break;
case3:
Display_Outdoor_2();break;
case4:
Display_Set_Temp_Param(h_norm,l_norm);break;
default:
break;
}
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);
externunsignedchartemp[7];
externunsignedchartflag;
#endif
#include"iocc2530.h"
#include"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 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); Ds18b20Data=1;//拉高总线 Ds18b20InputInitial();//P0_6设置为输入模式 while((Ds18b20Data! =0)&&(Flag_1==ON))//等待ds18b20响应,具有防止超时功能 {//等待约60ms左右 CONT_1++; Ds18b20Delay(10); if(CONT_1>8000)Flag_1=OFF; Status=Ds18b20Data; } Ds18b20OutputInitial();//P0_6设置为输出模式 Ds18b20Data=1;//拉高总线 Ds18b20Delay(100); returnStatus; } //主机往Ds18b20写数据 voidDs18b20Write(ucharinfor) { uinti; Ds18b20OutputInitial();//P0_6设置为输出模式 //发送一个字节 for(i=0;i<8;i++) { //发送一位 if((infor&0x01)) { Ds18b20Data=0; Ds18b20Delay(6); Ds18b20Data=1; Ds18b20Delay(50); } else { Ds18b20Data=0; Ds18b20Delay(50); Ds18b20Data=1; Ds18b20Delay(6); } infor>>=1;//移位 } } //主机从Ds18b20读数据 ucharDs18b20Read(void) { ucharValue=0x00; uinti; Ds18b20OutputInitial();//P0_6设置为输出模式 Ds18b20Data=1;//总线拉高,准备读数据 Ds18b20Delay(10); for(i=0;i<8;i++) { Value>>=1; Ds18b20OutputInitial();//P0_6设置为输出模式 Ds18b20Data=0;//拉低总线产生读信号 Ds18b20Delay(3); Ds18b20Data=1;//释放总线准备读数据 Ds18b20Delay(3); Ds18b20InputInitial();//P0_6设置为输入模式 //等待读取数据 if(Ds18b20Data==1)Value|=0x80; Ds18b20Delay(15); } returnValue; } voidTemp_test(void)//温度读取函数 { ucharV; Ds18b20Initial();//初始化 Ds18b20Write(0xcc);//逃过ROM Ds18b20Write(0x44);//温度转换命令 Ds18b20Initial(); Ds18b20Write(0xcc);//逃过ROM Ds18b20Write(0xbe);//读DS1820温度暂存器命令 temperature[0]=Ds18b20Read(); temperature[1]=Ds18b20Read(); V=temperature[1]; V<<=8; V=V|temperature[0]; if(V<0x0fff) { tflag=0; }else { tflag=1; } Ds18b20Initial(); } voidTemp_Conversion(void) { uchartemp_data_1,temp_data_2; uintTempDec; temp_data_1=temperature[1]; temp_data_1&=0xf0;//取高4位 if(temp_data_1==0xf0)//判断是正温度还是负温度读数 { //负温度读数求补,取反加1,判断低8位是否有进位 if(temperature[0]==0) { //有进位,高8位取反加1 temperature[0]=~temperature[0]+1; temperature[1]=~temperature[1]+1; } else { //没进位,高8位不加1 temperature[0]=~temperature[0]+1; temperature[1]=~temperature[1]; } } //取高字节低4位(温度读数高4位),注意此时是12位精度 temp_data_1=temperature[1]<<4; //取低字节高4位(温度读数低4位),注意此时是12位精度 temp_data_2=temperature[0]>>4; //组合成完整数据 temp_data_1=temp_data_1|temp_data_2; temp[0]=temp_data_1/100+0x30;//取百位转换为ASCII码 temp[1]=(temp_data_1%100)/10+0x30;//取十位转换为ASCII码 temp[2]=(temp_data_1%100)%10+0x30;//取个位转换为ASCII码 temperature[0]&=0x0f;//取小数位转换为ASCII码 //625=0.0625*10000,表示小数局部,扩大1万倍,方便显示 TempDec=temperature[0]*625; temp[3]=TempDec/1000+0x30;//取小数十分位转换为ASCII码 temp[4]=(TempDec%1000)/100+0x30;//取小数百分位转换为ASCII码 temp[5]=((TempDec%1000)%100)/10+0x30;//取小数千分位转换为ASCII码 temp[6]=((TempDec%1000)%100)%10+0x30;//取小数万分位转换为ASCII码 } 五、工程总结 1.使用AltiumDesier软件,完成了基于STM32F103VBT6最小系统的核心电路板的设计、基于CC2530的核心板电路设计、室监测模块电路设计、室外监测模块电路设计,并制作了电路板、完成了电路板焊接,通过了硬件测试。 2.完成了软件编程。 分别使用了Keil和IAR软件完成了对STM32和CC2530的软件设计,并完成了软件测试。 3.使用了Zigbee低功耗个域网协议,实现了无线数据联网、传递。 4.结合软件和硬件进展系统测试,分别进展了火灾监测报警、烟雾监测报警、有害气体报警监测、联网收集室外温湿度测试,根本到达了设计要求。 通过本次创新设计,我掌握了很多知识,动手实践能力有了很大的提高,为我以后的学习、工作打下了良好的根底。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 内外 环境监测 报警 系统 设计 报告