物联网智能疏散指示系统:集成Bootstrap、MQTT、树莓派和 Flask 框架(代码示例)

项目概述

随着城市建筑的不断增多,火灾等突发事件的发生频率也在逐渐上升。传统的疏散指示系统往往无法实时响应火灾现场的变化,导致人员疏散不畅,甚至造成严重后果。为了提高人员疏散效率,我们设计了一种智能疏散指示系统。该系统基于嵌入式设备和传感器网络,能够实时监控建筑物内的火灾情况,并根据火灾位置和人员分布情况,动态调整疏散指示灯和紧急出口的指示方向。系统采用MQTT协议进行数据传输,并结合信息可视化平台提供实时疏散指示,确保在紧急情况下人员能够快速、安全地疏散。

系统设计

硬件设计

本系统的硬件主要包括以下部分:

  1. 传感器模块

    • 温度传感器:用于监测建筑内的温度变化,以判断是否发生火灾。
    • 烟雾传感器:实时检测空气中的烟雾浓度,进一步确认火灾的发生。
    • 人员分布传感器:使用红外传感器或超声波传感器,实时监测建筑内人员的分布情况。
  2. 嵌入式控制器

    • 采用树莓派或Arduino作为主控单元,负责数据采集与处理,控制疏散指示灯的状态。
  3. 疏散指示灯

    • LED灯组,根据指示灯的颜色和闪烁方式,向人员提供疏散方向指示。
  4. 通信模块

    • 采用Wi-Fi或Zigbee模块,确保各个设备之间的实时数据传输。

软件设计

系统的软件架构分为以下几个模块:

  1. 数据采集模块

    • 从各个传感器获取实时数据,并进行初步处理。
  2. 数据传输模块

    • 使用MQTT协议将传感器数据上传至云服务器,保证数据传输的可靠性和实时性。
  3. 决策模块

    • 根据当前火灾位置、人员分布情况,动态调整疏散指示灯的状态与方向。
  4. 可视化平台

    • 提供一个用户界面,实时显示火灾位置、人员分布以及疏散指示信息。

代码实现

以下是实现智能疏散指示系统的部分关键代码示例:

1. 数据采集模块

python 复制代码
import Adafruit_DHT
import paho.mqtt.client as mqtt
import time

# 温湿度传感器配置
DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4

# MQTT配置
MQTT_BROKER = "your_mqtt_broker"
MQTT_TOPIC = "building/fire_alert"

def read_sensor():
    humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
    return temperature, humidity

def on_connect(client, userdata, flags, rc):
    print("Connected with result code " + str(rc))

# 初始化MQTT客户端
client = mqtt.Client()
client.on_connect = on_connect
client.connect(MQTT_BROKER, 1883, 60)

while True:
    temperature, humidity = read_sensor()
    if temperature is not None:
        alert_message = f"Temperature: {temperature}, Humidity: {humidity}"
        client.publish(MQTT_TOPIC, alert_message)
    time.sleep(5)

代码讲解

  • 使用Adafruit_DHT库读取温湿度传感器数据。
  • 利用MQTT将数据发送到指定的主题。
  • read_sensor函数定期读取传感器数据,并通过MQTT发布。

2. 疏散指示灯控制模块

python 复制代码
import RPi.GPIO as GPIO
import paho.mqtt.client as mqtt

# GPIO配置
LED_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)

# MQTT配置
MQTT_BROKER = "your_mqtt_broker"
MQTT_TOPIC = "building/evacuation"

def on_connect(client, userdata, flags, rc):
    client.subscribe(MQTT_TOPIC)

def on_message(client, userdata, msg):
    control_lights(msg.payload.decode())

def control_lights(message):
    if message == "fire":
        # 火灾发生,红灯闪烁
        for _ in range(5):
            GPIO.output(LED_PIN, GPIO.HIGH)  # 打开红灯
            time.sleep(0.5)                   # 保持0.5秒
            GPIO.output(LED_PIN, GPIO.LOW)   # 关闭红灯
            time.sleep(0.5)                   # 保持0.5秒
    else:
        GPIO.output(LED_PIN, GPIO.LOW)  # 默认情况下关闭灯

# 初始化MQTT客户端
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(MQTT_BROKER, 1883, 60)

# 循环等待消息
client.loop_forever()

代码讲解

  • control_lights函数根据接收到的消息控制LED灯的状态。如果消息是"fire",则红灯开始闪烁,模拟火灾警报的效果。
  • 使用GPIO库控制树莓派的GPIO口,点亮或熄灭LED灯。
  • 使用client.loop_forever()保持MQTT客户端持续监听消息。

3. 数据可视化模块

为了实现信息的可视化,我们可以使用 Flask 框架搭建一个简单的Web服务器,实时显示火灾位置、人员分布和疏散指示信息。

python 复制代码
from flask import Flask, render_template
import paho.mqtt.client as mqtt
import json

app = Flask(__name__)

# 存储实时数据
fire_data = {}
evacuation_data = {}

# MQTT回调函数
def on_message(client, userdata, msg):
    global fire_data, evacuation_data
    if msg.topic == "building/fire_alert":
        fire_data = json.loads(msg.payload.decode())
    elif msg.topic == "building/evacuation":
        evacuation_data = json.loads(msg.payload.decode())

client = mqtt.Client()
client.on_connect = lambda client, userdata, flags, rc: client.subscribe([("building/fire_alert", 0), ("building/evacuation", 0)])
client.on_message = on_message
client.connect(MQTT_BROKER, 1883, 60)
client.loop_start()

@app.route('/')
def index():
    return render_template('index.html', fire_data=fire_data, evacuation_data=evacuation_data)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

代码讲解

  • 使用Flask框架创建一个Web应用,设置一个根路由/来显示实时数据。
  • 在MQTT的回调函数on_message中,我们根据接收到的消息更新fire_dataevacuation_data字典。
  • client.loop_start()用于在后台运行MQTT客户端,使其能够接收消息而不阻塞Flask主线程。

4. HTML模板(index.html)

以下是一个简单的HTML模板,用于展示实时的火灾数据和疏散指示信息。

html 复制代码
<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>智能疏散指示系统</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/4.5.2/css/bootstrap.min.css">
</head>

<body>
    <div class="container">
        <h1 class="mt-5">智能疏散指示系统</h1>
        <h2 class="mt-4">火灾数据</h2>
        <div class="alert alert-danger">
            <p>温度: {{ fire_data.temperature }} °C</p>
            <p>湿度: {{ fire_data.humidity }} %</p>
        </div>

        <h2 class="mt-4">疏散指示</h2>
        <div class="alert alert-info">
            <p>当前疏散状态: {{ evacuation_data.status }}</p>
            <p>疏散方向: {{ evacuation_data.direction }}</p>
        </div>
    </div>
</body>

</html>

代码讲解

  • 使用Bootstrap框架美化页面。
  • 显示实时的火灾数据(温度和湿度)以及当前的疏散状态和方向。

项目总结

本项目的智能疏散指示系统通过嵌入式设备和传感器网络,实现了对建筑内火灾情况的实时监控和动态疏散指示。以下是项目的主要成果和经验总结:

主要成果

  1. 实时监测:系统能够实时监测建筑内的温度、湿度和烟雾浓度,及时发现火灾隐患,并通过MQTT协议将数据传输到云端,确保信息的快速响应。

  2. 动态指示:根据火灾位置和人员分布情况,系统能够动态调整疏散指示灯的状态,优化人员疏散路线,大幅提高人员在紧急情况下的疏散效率。

  3. 可视化展示:通过搭建Flask Web应用,系统实现了数据的可视化展示,用户可以实时查看火灾数据和疏散状态,提高了指挥调度的效率。

  4. 异常情况报警:系统设计了异常情况报警功能,例如在疏散通道堵塞时,系统能够及时发出警报,指引疏散人员选择其他安全出口。

相关推荐
bryant_meng30 分钟前
【python】OpenCV—Image Moments
开发语言·python·opencv·moments·图片矩
KevinRay_1 小时前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
Captain823Jack1 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
资源补给站2 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
Captain823Jack2 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
刘大辉在路上2 小时前
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
git·后端·gitlab·版本管理·源代码管理
PieroPc3 小时前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
Aileen_0v03 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
VinciYan3 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
码农君莫笑3 小时前
使用blazor开发信息管理系统的应用场景
数据库·信息可视化·c#·.net·visual studio