基于物联网平台的工业现场火焰监测系统

  • 收获赞:
  • 擅长领域:

本文以“工业现场炉膛的火焰监测”为例进行讲解。

概述

方案介绍

自从第一次工业革命开始到现代,化石燃料一直是很重要的能源之一,而煤在化石燃料中占比较高。煤转化成能量需要燃烧,不管是第一次工业革命的内燃机还是现在仍然占比很高的火力发电,都需要大量的烧煤。现代的火力发电系统会持续对炉膛中煤的燃烧情况进行监控,防止出现燃煤熄灭的情况。 本场景就是针对这个场景对火焰进行实时的监控,如果出现火焰熄灭的情况,则进行声音报警。

目标读者

物联网开发者、智慧工业领域的从业者。

适用场景

任何需要对火焰进行实时的监控的场景,比如家庭中的明火监测,工厂的明火监测,工业现场炉膛的火焰监测等。

背景知识

火力发电系统中所用的火焰监控的核心在于如何精准的检测炉膛中的火焰强度,目前市场上已经有很多的传感器可以对火焰强度进行测量。 目前市面上用的最多的火焰传感器,即红外接收二极管,对火焰特别敏感。它对火焰产生的红外线非常敏感,当火焰亮度越大时,发出的红外线越多,火焰传感器管脚间的阻抗变小;当火焰变小时,发出的红外线变少,火焰传感器管脚间的阻抗变大。 本文选用的火焰传感器外观如下:

image.png

方案架构

方案架构图

本方案的整体架构图如下图所示,分为云端和设备端两部分,其中:

设备端主要负责以下功能:

  • 通过火焰传感器对环境中的火焰状态进行检测。

  • 将传感器检测火焰状态输出的电压值上报到阿里云物联网平台。

  • 接收来自阿里云物联网平台的控制指令,并控制报警灯的开关。

云端主要负责如下功能:

  • 接收从设备端上报的火焰状态对应的电压值。

  • 根据用户设定的控制逻辑下发报警指令给设备端。

  • IoT Studio负责UI界面的状态显示及UI控制功能入口。

image.png

方案优势

  • 设备端开发采用HaaS Python开发框架,入门门槛低,没有物联网开发经验的人也可以很快掌握开发的过程,开发效率高。

  • 控制功能的逻辑在物联网平台端进行设定,随时随地可以根据需求在远端进行调整,易用性高。

  • UI界面开发采用拖拽式开发模式,开发门槛低,开发效率高。

  • 整个系统采用云端一体的开发模式,简化了设备端的逻辑功能需求,灵活性高。

  • 在硬件连线完成之后进行云端和设备端开发前可以先使用“一分钟上云体验”功能预先体验本案例的实际运行效果。

火焰传感器介绍

火焰传感器属于HaaS Python硬件积木之一,它可以检测火焰或者波长在760纳米~1100纳米范围内的光源。其产品介绍、参数及HaaS Python API说明文档请参考链接

阿里云物联网平台介绍

常见物联网平台主要功能包括:设备接入、设备数据存储、设备信息管理、设备状态监控、设备数据的分析与展示以及对设备的控制、运维和管理,从而满足应用层不同业务场景的需求。阿里云物联网平台的请参考链接。

本方案中会使用到物联网平台的“设备接入”和“规则引擎”(监控设备状态并执行预设逻辑)的功能。

IoT Studio介绍

物联网应用开发(IoT Studio)是阿里云针对物联网场景提供的生产力工具,属于阿里云物联网平台的一部分,提供了Web可视化开发、移动可视化开发、业务逻辑开发与物联网数据分析等一系列便捷的物联网开发工具。主要解决的是物联网开发领域开发链路长、定制化程度高、投入产出比低、技术栈复杂、协同成本高以及方案移植困难等问题,目的是帮助物联网企业完成设备上云的最后一公里。

IoT Studio详细介绍请参考链接

方案实施

前提条件

请读者先开通阿里云账号之后再进行如下的操作。开通阿里云账号分为两步:

  1. 打开阿里云官网。

  2. 点击右上角的立即注册按钮,按提示一步步操作。

操作步骤

下图是本案例的4步导学,每个步骤中实现的功能请参考图中的说明。在硬件连线完成之后我们建议您先使用“一分钟上云体验”功能预先体验本案例的实际运行效果。

image.png

步骤一:硬件连线

  1. 硬件准备。

本实验只需要如下硬件:

  • ESP32开发一套。

  • 火焰传感器一个。

  • 连接线若干。

说明

报警灯采用开发板内置的LED。

下表三种可选的ESP32开发板和火焰传感器硬件接线说明。

硬件

火焰传感器

乐鑫

ESP32开发板

安信可

NODEMCU-32S开发板

01Studio

pyWiFi-ESP32开发板

端口标识

GND

GND

GND

GND

VCC

3V3

3V3

3V3

AO

VP

SVP

36

硬件说明

硬件积木说明

快速开始

详细端口定义

快速开始

详细端口定义

快速开始

详细端口定义

下图是以NODEMCU-32S开发板为例的接线图。

4_ESP32_火焰传感器连线图.jpg
  1. 一分钟上云体验。

在硬件连线之后,读者可以打开“支付宝”扫描下图二维码。

案例QR-火焰检测系统.png

点击体验案例按钮,即可立即体验本案例实际运行效果。

image.png

步骤二:云端设备创建(创建云端设备及其属性、多设备联动规则设定)

对于第一次使用物联网平台的读者,需要开通实例以使用物联网平台的功能。这里可以使用免费的公共实例进行开发。

在物联网平台中,左上角选择华东2-上海,点击公共实例,即可开通。

5_3_开通公共实例.png

开通物联网平台功能之后,就可以开始云端产品和设备的创建以及场景联动规则的设定了。

  1. 创建云端产品。

访问阿里云物联网控制台

点击创建产品按钮,如下图所示。

1_创建产品.png

在新建产品设定页面按照下图所示,设定产品名称,选择所属的自定义品类(自定义品类的物模型为空,需要自己创建,也可以通过导入外部物模型的方式导入),节点类型选择直连设备,联网方式选择Wi-Fi,数据格式选择ICA标准数据格式,检验类型和认证方式选择默认设定即可。还可以根据开发者自己的需求在产品描述页面添加针对此产品的描述。

4_新建火焰检测设备.png

选择之后,点击确认按钮,即可完成产品创建。返回“产品”页面之后可以看到产品类表中会出现刚刚创建的“火焰检测系统”的产品,如下图所示。

4_火焰检测系统_产品列表页.png

  1. 创建产品属性(物模型)。

点击上图中的查看按钮,即可看到产品信息,Topic列表,功能定义,数据解析等跟产品相关功能的设定。点开功能定义标签页,可以看到设备物模型定义。

4_火焰检测系统_产品详情页面.png

标识符是设备端上报设备属性状态的消息中需要使用的标识符,并且只有在设备上报的属性内容符合数据定义中的数据取值范围的时候才会被物联网平台记录,否则会被物联网平台认定为非法属性而过滤掉。

本节我们选择导入物模型的方式来创建此系统需要的物模型信息,点击上图中的编辑草稿按钮。然后按照下图的步骤,下载火焰检测系统物模型压缩包后,在点击的点击上传按钮后上传此压缩包将预定义的物模型进行导入。

4_火焰检测系统_发布物模型.png

物模型导入成功后可以看到网页出现了我们刚刚导入的物模型属性。其中alarmState代表的是火焰的报警状态,1处于报警状态,0代表没有报警;fireVoltage代表火焰传感器检测到的电压值。

4_火焰检测系统_物模型.png

产品及其物模型创建完成后,就可以创建这个产品的设备了。

  1. 创建云端设备(获取三元组)

在产品列表页面中,点击火焰检测系统后的管理设备,就会进到设备管理页面。

4_火焰检测系统_产品页_管理设备.png

设备页面点击添加设备按钮,如下图所示。

4_火焰传感器_添加设备入口.png

添加设备页面中设定deviceName,这里开发者可以自己填入自己想设定的设备名称,也可以不填任何内容让系统自动生成设备名称,如下图所示。

1_添加设备.png

设备添加完成后,点击前往查看按钮,就可以看到此设备端详细信息了。

1_完成添加设备.png

设备信息中有两个信息需要和设备端开发相匹配:

  • 三元组。

  • 物模型属性信息。

4_火焰检测系统_设备详情.png

  1. 获取设备三元组。

如上图所示,点击查看按钮,就可以看到设备的三元组信息,三元组是物联网设备端和物联网云端设备相关联的唯一标识符,在设备端连接云端的时候会使用三元组信息和云端进行鉴权,鉴权通过之后云端会认为设备已激活并上线。

4_火焰检测系统_设备三元组.png

  1. 查看设备属性信息。

设备详情信息页中的物模型数据标签页中可以看到设备的所有属性信息、设备时间上报情况及设备服务调用情况,如下图所示。待物联网设备按照设备属性对应的标识符上报设备属性的时候,本图片中的火焰检测电压报警状态等属性值就会显示设备最新的属性信息。

4_火焰检测系统_设备物模型数据.png

说明

创建产品和设备的过程是按照面向对象的思想进行设计的,其中创建产品可以看成是新建一个类,其中的物模型则是类的对象,创建设备则是进行类的实例化。

步骤三:设备端开发及数据上云(设备端代码调试)

  1. 开发环境。

在进行下一步之前请确保ESP32开发环境已经搭建完毕。详情请参考ESP32快速开始的说明。

  1. 创建解决方案。

如下图所示,打开VS Code之后在新建一个基于helloworld的python工程,设定好工程名称fire_detector及工作区路径之后,硬件类型选择ESP32,点击立即创建,创建一个Python轻应用的解决方案。

4_创建fire_detector工程_esp32.jpg

火焰检测系统脚本压缩包解压后,复制该文件夹下的所有文件覆盖fire_detector工程根目录下,main.py文件如下图所示:

4_fire_detector工程_esp32.jpg
说明

Python脚本的详细说明请参考脚本内嵌的文字注释。

接下来完成路由器名称及密码设定和设备端三元组设定两个步骤即可完成设备端的开发。

  • 修改路由器名称及密码

修改fire_detector工程里main.py中wifiSsid和wifiPassword的值为读者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在""符号中间)。

# Wi-Fi SSID和Password设置
wifiSsid = "请填写您的路由器名称"
wifiPassword = "请填写您的路由器密码"

修改完成之后get_wifi_status函数中的wlan.connect(wifiSsid, wifiPassword) 语句就会连接读者自己设定的路由器。

  • 修改设备端三元组

修改fire_detector工程里main.py中productKey、deviceName和deviceSecret的值为读者创建的物联网设备的三元组信息,如下图所示:

4_火焰监控系统_修改设备端三元组信息_esp32.jpg
  1. 推送脚本并运行。

Python脚本推送到ESP32之后 ,会自动运行,运行过程中日志如下。其中:

mount fs
 ==== python file check /data/pyamp/main.py ====
 ==== main.py update time = 691102560 ====
 ==== python execute from /data/pyamp/main.py ====
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
wifi_connected: False
('192.168.0.105', '255.255.255.0', '192.168.0.1', '192.168.0.1')
sleep for 1 s
establish tcp connection with server(host='a1vyxFfriEF.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443])
tcp_connect: can only connect from state CLOSED
success to establish tcp, fd=54
物联网平台连接成功
sleep for 2s
The fire status Voltage  1100
The fire status Voltage  1100
The fire status Voltage  1100
The fire status Voltage  1100
The fire status Voltage  1100
The fire status Voltage  1100
The fire status Voltage  1100
The fire status Voltage  1100
The fire status Voltage  1100
The fire status Voltage  1100
警告

打火机打着火后,远离和靠近火焰传感器的二极管,查看设备端日志的量测值是否有变化。 请务必注意安全!!!

步骤四:物联网平台端设备信息查看及报警灯调试(在物联网平台查看设备上报的状态信息)

物联网设备的系统启动成功并连接到物联网平台之后,物联网平台上对应的设备状态会从未激活状态变为上线,在物模型数据标签页上会显示设备上报到物联网平台的属性值。

1_火焰检测系统_设备状态及属性.png

此时如果开发板周围的火焰强度发生变化,物联网平台的物模型数据会更新为设备上报的最新的属性值。

物联网设备上线之后,可以通过监控运维中的在线调试功能进行调试,详细操作步骤见下图:

1_火焰检测系统_物联网平台在线调试功能.png

此产品的物模型属性中,火焰检测电压值设置的是只读,也就是说智能从设备端读取,不支持设置此状态到设备端,所以点开火焰检测电压后面的调试之后,里边只有获取的选项。报警状态设置的是可读可写,所以点开报警状态后面的调试之后,里边有获取设置设置期望值三个选项。 这里可以选择打开报警状态之后点击设置进行报警灯功能的调试。

1_火焰检测系统_云端打开报警灯.png

此时查看设备端LED是否已经打开,打开成功则代表控制报警灯成功。

步骤五:火焰亮度监控Web应用开发(实现中控大屏进行远端状态查看及控制)

下图是一个典型的物联网应用程序开发的流程图,接下来本节就按照这个流程介绍如何完成火焰监控系统Web端应用程序的开发。

1_物理网应用开发的一般流程.png

  1. 新建普通项目。

打开IoT Studio官网,在项目管理中创建一个空白项目,如下图所示,将此项目命名为火焰监控报警系统

4_火焰监控报警系统_创建IoTStudio项目.png
  1. 新建Web应用。

新建普通项目之后,在新项目的首页新建一个Web应用,命名为火焰实时监控

4_火焰监控系统_web应用创建.png

Web应用创建成功后会进入到应用界面设计页面。

4_火焰监控系统_移动应用_页面编辑页.png

点击上图红框中的组件按钮图标,就可以看到可用的组件列表。各组件的说明请参考IoT Studio组件说明

  1. 页面设计。

这里我们用到3个组件:

  • 实时曲线:用于显示火焰亮度的历史变化曲线及实时数据。

  • 指示灯:显示和控制空调和火焰的当前报警状态。

  • 设备地图:用于显示设备所在位置。

将三个组件拖到中间的画布区,适当调整组件布局,如下图所示。

2_火焰监控系统_实时监控页面设计.png

  1. 关联产品和设备

此时回到火焰监控系统项目的主页,对产品和设备进行关联,如下图所示:

4_火焰监控系统_关联产品和设备.png

关联产品和设备的过程如下,选中左下角的关联产品的同时关联其下所有设备之后 ,该产品下创建的所有的产品都会被关联到这个项目中。

4_火焰监控系统_关联产品和设备.png

产品和设备关联完毕之后,就可以将把组件和设备的属性关联起来了。

  1. 关联数据源。

关联数据源具体操作步骤如下:

选中指示灯组件,点击右侧的配置数据源

4_火焰监控系统_指示灯_配置数据源.png

选择目标产品。

4_火焰监控系统_指示灯_选择产品.png

选择目标设备。

4_火焰监控系统_开关_配置数据源_设备.png

选择报警灯属性

4_火焰监控系统_指示灯_配置数据源_报警灯.png

选择好产品、设备和属性之后,需要修改指示灯大小及其展示样式(设置为图片),并且分别为开始报警/停止报警两种状态上传图片,如下图所示。

4_火焰监控系统_指示灯_配置数据源_报警灯图片.png

火焰图片素材如下:

4_火焰燃烧示意图.png4_火焰熄灭示意图.png

同样的方式为实时曲线设置为目标设备的火焰检测电压,并显示最近半小时的数据,如下图所示:

4_火焰监控系统_实时曲线设定.png

选中地图组件,点击编辑设备地图按钮,如下图所示:

4_火焰监控系统_地图_编辑入口.png

点击选择产品按钮 ,选中火焰检测系统,如下图所示。如果此时设备已经上线,则地图会自动跳到设备当前所在位置。

4_火焰监控系统_地图_选择产品.png

  1. 业务逻辑开发。

业务逻辑的主要目的是为了让用户设定物联网设备端的行为逻辑,常规物联网系统都是在设备端固化行为逻辑,出厂之后如果需要修改设备的行为,则需要进行OTA升级。本节课程则向读者介绍如何通过IoT Studio完成业务逻辑的开发。

新建一条名为火焰亮度监控报警设定的规则。

4_火焰检测系统_创建业务逻辑.png

系统会自动进入到业务逻辑编辑页面,如下图所示,点击左侧的节点按钮,则可以看到所有可用的节点选项。右侧红框是如何设计一个业务逻辑的介绍。

4_火焰监控报警.png

a. 选择目标节点

此逻辑需要通过火焰检测系统上报的火焰检测电压当低于高于电压阈值的时候打开报警灯,否则关闭报警灯。所以需要如下4个节点:

  • 设备触发节点。

  • 条件判断节点。

  • 开启报警灯节点。

  • 关闭报警灯节点。

分别从左侧拖动设备触发条件判断和2个火焰检测系统4个节点到右侧的业务逻辑编辑框。

4_火焰监控系统_节点列表.png

b. 建立节点间的关联关系

按照预设的逻辑建立,如下图所示(在节点的一侧按下鼠标拖动到另一节点的一侧即可建立连线关系)。

4_火焰监控系统_节点逻辑关系建立.png

以下是各节点上需要编辑的业务逻辑说明。

  • 设备触发节点。

此设备触发选择火焰检测设备火焰检测电压属性即可,如下图所示(和前面组件设定类似,同样是鼠标选中第节点,在右侧的配置选项中进行配置)。

4_火焰监控系统_设备触发节点配置.png
  • 条件判断节点。

此处我们设定为当传感器测量到的电压值高于1000mV则开始报警。设定步骤如下。

说明

在没有检测到火焰的时候传感器输出高电平,在检测到火焰之后,输出电压会下降。

4_火焰监控系统_比较节点配置.png
  • 设备节点行为设定。

分别为设备节点设定开启报警灯和关闭报警灯的行为,如下图所示:

4_火焰监控系统_设备节点行为设定.png
  • 业务逻辑保存和部署

依此点击右上角的保存部署按钮,即可将此业务逻辑设定完毕。

  1. 预览和发布上线

业务逻辑设定完毕之后,可以在火焰监控报警系统页面编辑页面点击预览按钮进行预览,如下图所示。

4_火焰监控系统_预览.png

在发布之前可以点击上图的预览查看应用的实际运行效果。实际运行效果如下所示,同时可以扫描二维码在手机上面查看实际运行效果。

4_火焰监控报警系统效果.gif

此时查看设备上面的报警灯的状态会同步和Web应用的报警灯状态同步显示。

这样整个火焰检测系统的趣味案例就完成了。如果想要学习整个实验更详细的操作步骤,请参考火焰检测系统详解中的说明。

方案验证

用打火机打着火后,远离和靠近火焰传感器的二极管,可以看到如下現象:

  • 当打火机打开的时候,ESP32开发板上面的报警灯熄灭,此时IoT Studio Web应用程序上的火焰标识是亮的,代表工业炉膛里边的炉火燃烧状态是正常的。

  • 当打火机关闭的时候,ESP32开发板上面的报警灯常亮,此时IoT Studio Web应用程序上的火焰标识是亮的,代表工业炉膛里边的炉火已经熄灭开始报警。

常见问题

在整个案例实做过程中,最常遇到的问题可能有3点:

  1. 设备连接路由器失败。

ESP32开发板只支持2.4G频段,请确保您添加的路由器的SSID是2.4G而非5G路由器。

  1. 设备端日志中没有出现物联网平台连接成功

在排除是路由器连接失败的问题后,请检查设备端三元组信息和物联网平台创建的设备三元组信息一致,如果不一致则会出现连接物联网平台失败的问题。

  1. 测试过程中,打开打火机和关闭打火机报警状态未发生变化。

请使用普通的有火苗的打火机进行测试,防风打火机的火焰波长不在此传感器的检测范围内。