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

目录

需求分析

设备选择

设计方案

工作原理

程序如下:

服务端程序:

数据库程序:

传入微信程序:

工作流程

六、验证方案


  • 需求分析

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

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

  • 设备选择

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

  • 设计方案

2b20740c370b423c8d291c139b1b0eb9.png

图 1  总体设计

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

  1. 工作原理

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

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

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

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

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

相应的串口通信代码如下

import serialimport serial.tools.list_ports as serialsimport sysimport glob#这个函数用于检测串口def serial_ports():if sys.platform.startswith('win'):ports = ['COM%s' % (i + 1) for i in range(256)]elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):# this excludes your current terminal "/dev/tty"ports = glob.glob('/dev/tty[A-Za-z]*')elif sys.platform.startswith('darwin'):ports = glob.glob('/dev/tty.*')else:raise EnvironmentError('Unsupported platform')result = []for port in ports:try:s = serial.Serial(port)s.close()result.append(port)except (OSError, serial.SerialException):passreturn resultdef connect(*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'if temp == b'':temp="0000000000000000000000000000"return temp  # 可以接收中文ser.close()

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

程序如下:

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

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

相应的代码如下:

服务端程序:

from socket import *from time import ctime# 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)while True:print("Waiting for connection...")tcpCliSock,addr = tcpSvrSock.accept()print("...connected from", addr)while True:data = tcpCliSock.recv(BUFSIZ)if not data:breakdata = data.decode('utf-8')print(data)respMsg = "[%s] %s"% (ctime(), data)tcpCliSock.send(bytes(respMsg,'utf-8'))tcpCliSock.close()tcpSvrSock.close()

数据库程序:

import mysql.connectordef mysql_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)# 提交数据cnx.commit()# 关闭游标和连接cursor.close()cnx.close()

传入微信程序:

import requestsdef sent_to_sever():keyurl = "https://sctapi.ftqq.com/SCT180092TVjQLw3FfQa3MTs4lEyNl2wfE.send"payload  = {'text':"发生火灾","desp":"","channel":9}print(requests.post(keyurl,params=payload))
  1. 工作流程

d022fc087769404681180938e3d12fac.png

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

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

六、验证方案

0fd35450f4f74c4ab9b914b2120425a6.png

图 2 验证方案

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

模拟串口通信识别读取

将温度设为正常值

经由客户端发送

服务端接收成功

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

成功插入

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

模拟串口通信识别读取

将温度设为异常值

发送数据

接收数据

使用步进电机模拟

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

发送微信通知


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部