200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 基于ZigBee技术的智能防火检测与门禁一体预警系统-物联网大作业 大项目 互联网+ 大创

基于ZigBee技术的智能防火检测与门禁一体预警系统-物联网大作业 大项目 互联网+ 大创

时间:2021-03-11 05:15:59

相关推荐

基于ZigBee技术的智能防火检测与门禁一体预警系统-物联网大作业 大项目 互联网+ 大创

目录

需求分析

设备选择

设计方案

工作原理

程序如下:

服务端程序:

数据库程序:

传入微信程序:

工作流程

六、验证方案

需求分析

在不发生火灾时对室内湿度进行记录,与RFID读写记录等一同存入云端。

在发生火灾时进行相应灭火、阻止火势传播的操作,解除门控方便救火,并通过微信通知用户。

设备选择

光照传感器,温湿度传感,烟雾传感器,RFID读写器,电机,zigbee模块,网关设备。

设计方案

图 1总体设计

该系统主要分为3大部分,分别是火情/温度检测,喷水控制部分、门禁控制部分、通风控制部分、数据处理部分。

工作原理

(1)、火情/温度检测部分:喷水控制部分由相应电机控制,温湿度传感器,光照传感器和烟雾传感器组成,同时这几台设备的将配备有相应的zigbee模块,并且都作为终端(Zigbee

Enddevice)来进行信息传输。信息将通过zigbee网络传输

(2)、门禁控制部分:由门禁控制装置(电机控制)、RFID接收器组成两者都将使用相应的zigbee模块,并且都作为终端(ZigbeeEnddevice)来进行信息传输。信息同样将通过zigbee网络传输

(3)、通风控制部分:由多个控制通风的电机模块组成,相应的设备同样配备zigbee模块,并且都作为终端(ZigbeeEnddevice)来进行信息传输。信息将通过zigbee网络传输

(4)、Zigbee网络部分:以上的部分的模块都有相应的zigbee终端模块,为了保证相关信息传输的安全性,和可行性,在zigbee网络中各部分向协调器(Zigbee Coordinator)发送信息的路径上可添加路由器Zigbee Router(可选)以保证信号可传达至后端。最终,所有的zigbee终端都将连入协调器并组成一个网络。协调器将通过串口通信连入PC/网关设备。

相应的串口通信代码如下

importserialimportserial.tools.list_portsasserialsimportsysimportglob#这个函数用于检测串口defserial_ports():ifsys.platform.startswith('win'):ports= ['COM%s'% (i+ 1) foriinrange(256)]elifsys.platform.startswith('linux') orsys.platform.startswith('cygwin'):# this excludes your current terminal "/dev/tty"ports= glob.glob('/dev/tty[A-Za-z]*')elifsys.platform.startswith('darwin'):ports= glob.glob('/dev/tty.*')else:raiseEnvironmentError('Unsupported platform')result= []forportinports:try:s= serial.Serial(port)s.close()result.append(port)except(OSError, serial.SerialException):passreturnresultdefconnect(*args): print(serial_ports())# 打开串口#serialPort="COM"+input("请输入串口号")serialPort= "COM6"# 串口号baudRate= 9600# 波特率ser= serial.Serial(serialPort, baudRate, timeout=0.5)print("参数设置:串口=%s,波特率=%d"% (serialPort, baudRate)) # 输出串口号和波特率# 收发数据if(len(args)==1):ser.write((args[0] + '\n').encode())return#temp = ser.read(8)#temp = 'EECC0A0101000002A57D00000FFEE'iftemp== b'':temp="0000000000000000000000000000"returntemp# 可以接收中文ser.close()

PC/网关设备通过程序相应的connect函数接收到串口信息后再由相应的客户端程序发送至服务器

程序如下:

fromsocketimport*from串口通信importconnectimporttimeHOST= '127.0.0.1'PORT= 21567BUFSIZ= 1024ADDR=(HOST,PORT)tcpCliSock= socket(AF_INET,SOCK_STREAM)tcpCliSock.connect(ADDR)whileTrue:time.sleep(1)data= connect()tcpCliSock.send(bytes(data,'utf-8'))data= tcpCliSock.recv(BUFSIZ)print(data.decode('utf-8'))#tcpCliSock.close()

、服务器端部分。服务器端接收客户端发送的串口通信信息,经由相应的判断程序处理之后选择是否触发火灾异常,如有异常,通过第三方发送信息至微信通知用户紧急情况。如无异常存入数据库。

相应的代码如下:

服务端程序:

fromsocketimport*fromtimeimportctime# PORT can be changed as you need, but it should be notified to clientHOST='127.0.0.1'PORT= 21567BUFSIZ= 1024ADDR= (HOST,PORT)tcpSvrSock= socket(AF_INET,SOCK_STREAM)tcpSvrSock.bind(ADDR)tcpSvrSock.listen(5)whileTrue:print("Waiting for connection...")tcpCliSock,addr= tcpSvrSock.accept()print("...connected from", addr)whileTrue:data= tcpCliSock.recv(BUFSIZ)ifnotdata:breakdata= data.decode('utf-8')print(data)respMsg= "[%s] %s"% (ctime(), data)tcpCliSock.send(bytes(respMsg,'utf-8'))tcpCliSock.close()tcpSvrSock.close()

数据库程序:

importmysql.connectordefmysql_insert(temper):# 建立连接cnx= mysql.connector.connect(user='root',password='11248',database= "IOT")# 创建游标cursor= cnx.cursor()# 执行插入query= f'insert temper(temper)value({temper})'cursor.execute(query)# 提交数据mit()# 关闭游标和连接cursor.close()cnx.close()

传入微信程序:

importrequestsdefsent_to_sever():keyurl= "/SCT180092TVjQLw3FfQa3MTs4lEyNl2wfE.send"payload= {'text':"发生火灾","desp":"","channel":9}print(requests.post(keyurl,params=payload))

工作流程

I、火情/温度检测部分无异常现象,相应的通风系统正常工作,门禁系统正常工作。温度检测数据通过zigbee网络传入网关再进入服务器进行记录,相应的RFID正常工作信息记录同样通过网络进行备份和处理。无通行权限的人无法进出。

II、火情/温度检测部分异常。经由判断程序判断相应的通风系统停止工作,门禁系统转变工作模式。温度检测数据通过zigbee网络传入网关再进入服务器进行记录,相应的RFID信息继续通过网络进行备份和处理。但是通行权限开放,方便他人逃生及进入火场救火。服务器端发送报警微信信息向用户警告。

六、验证方案

图 2验证方案

情况I、火情/温度检测部分无异常现象

模拟串口通信识别读取

将温度设为正常值

经由客户端发送

服务端接收成功

模拟服务器端将数据插入数据库中

成功插入

II、火情/温度检测部分异常。

模拟串口通信识别读取

将温度设为异常值

发送数据

接收数据

使用步进电机模拟

通过串口发送指令给相应的设备

发送微信通知

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。