综合案例2.0-火焰检测系统

  • 简介
    • 火焰传感器
  • 准备
  • 硬件连接图
  • 代码流程
  • 功能实现
    • 1、物联网平台开发
    • 2、设备端开发
      • 调试
    • 3、物联网应用开发
      • 4.1新建‘普通项目’
      • 4.2创建‘Web应用’
      • 4.3页面设计
      • 4.4关联产品
      • 4.5关联数据源
      • 4.6业务逻辑开发
      • 4.7预览与发布上线
      • 4.8在线调试

简介

火力发电系统会持续对炉膛中煤的燃烧情况进行监控,防止出现煤熄灭的情况,本案例针对火力发电中防止煤熄灭的场景进行实时监控,如果煤熄灭就报警。
当然也可以反向操作,作为对失火场景的监控。

火焰传感器

1、原理
火焰传感器通过检测火焰中产生的红外线来监测是否着火。远红外火焰传感器能够探测到波长在700纳米~1000纳米范围内的红外光,探测角度为60,其中红外光波长在880纳米附近时,其灵敏度达到最大。远红外火焰探头将外界红外光的强弱变化转化为电流的变化,通过A/D转换器后可以监测。
2、器件说明
市面上买到的有3根引脚的也有4根引脚的。案例适用4个引脚的。以下有几点需要说明:

  • 电源指示LED–显示是否通电
  • 模拟信号输出–输出模拟电压值
  • 红外线越强模拟信号输出越小,反之越大。
  • 灵敏度调节电位器–用来调节判断阈值。
    模拟信号输出大于该阈值(红外线弱,没火),开关信号输出为1(高电平),开关指示LED灯灭;
    模拟信号输出小于该阈值(红外线强,着火),开关信号输出为0(低电平),开关指示LED灯亮。

准备

本案例需要的硬件

器材 数量
HaaS506开发板 1
火焰传感器 1
SIM卡 1
杜邦线 若干

硬件连接图

代码流程

1、连接阿里云平台。
2、重复读取火焰传感器电压,将数据上传阿里云。
3、使用Web应用功能,显示设备位置、火焰传感器电压变化、设备报警。
4、将报警信号发送至开发板,控制报警开关。

功能实现

1、物联网平台开发

第一次使用物联网平台的读者,需要开通实例后使用物联网平台功能。也可以使用免费的公共实例进行开发,在阿里云物联网平台中,左上角选择‘华东2-上海’,点击‘公共实例’,即可开通。

1、平台产品创建可参考haas506 2.0开发教程-aliyunIoT
2、创建产品属性(添加物模型)

  • 选择产品功能定义编辑草稿
  • 添加自定义功能
  • 添加标识符数据类型(标识符要与代码一致)
  • 点击发布上线
  • 点击确定

2、设备端开发

  • 第一次使用开发板的读者可以按照haas5062.0开发教程-导学篇搭建开发环境。

  • 搭建完后复制以下代码到Visual Studio Code,复制产品证书到代码相应位置。

  • 2.2版本获取IMEI号接口有更新,需要更改以下内容(Ctrl+F 查找modem)

# 获取设备的IMEI 作为deviceName 进行动态注册
deviceName = modem.info.getDevImei()
...
  • main.py
# coding=utf-8
from driver import ADC
from driver import GPIO
import network
import ujson
import utime as time
import modem
from  aliyunIoT import Device
import kv#当iot设备连接到物联网平台的时候触发'connect' 事件
def on_connect(data):global module_name,default_ver,productKey,deviceName,deviceSecret,on_trigger,on_download,on_verify,on_upgradeprint('***** connect lp succeed****')data_handle = {}data_handle['device_handle'] = device.getDeviceHandle()#当连接断开时,触发'disconnect'事件
def on_disconnect():print('linkkit is disconnected')#当iot云端下发属性设置时,触发'props'事件
def on_props(request):params=request['params']params=eval(params)warn = params["warning"]onoff_data["warning"]= warnonoff_data_str=ujson.dumps(onoff_data)data1={'params':onoff_data_str}      device.postProps(data1)#当iot云端调用设备service时,触发'service'事件
def on_service(id,request):print('clound req id  is {} , req is {}'.format(id,request))
#当设备跟iot平台通信过程中遇到错误时,触发'error'事件
def on_error(err):print('err msg is {} '.format(err))#网络连接的回调函数
def on_4g_cb(args):global g_connect_statuspdp = args[0]netwk_sta = args[1]if netwk_sta == 1:g_connect_status = Trueelse:g_connect_status = False#网络连接
def connect_network():global net,on_4g_cb,g_connect_status#NetWorkClient该类是一个单例类,实现网络管理相关的功能,包括初始化,联网,状态信息等.net = network.NetWorkClient()g_register_network = Falseif net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:g_register_network = Trueelse:g_register_network = Falseif g_register_network:#注册网络连接的回调函数on(self,id,func);  1代表连接,func 回调函数  ;return 0 成功net.on(1,on_4g_cb)    net.connect(None)else:print('网络注册失败')while True:if g_connect_status:print('网络连接成功')breaktime.sleep_ms(20)#动态注册回调函数
def on_dynreg_cb(data):global deviceSecret,device_dyn_resigter_succeddeviceSecret = datadevice_dyn_resigter_succed = True# 连接物联网平台
def dyn_register_device(productKey,productSecret,deviceName):global on_dynreg_cb,device,deviceSecret,device_dyn_resigter_succedkey = '_amp_customer_devicesecret'deviceSecretdict = kv.get(key)print("deviceSecretdict:",deviceSecretdict)if isinstance(deviceSecretdict,str):    deviceSecret = deviceSecretdict if deviceSecretdict is None or deviceSecret is None:key_info = {'productKey': productKey  ,'productSecret': productSecret ,'deviceName': deviceName}# 动态注册一个设备,获取设备的deviceSecret#下面的if防止多次注册,当前若是注册过一次了,重启设备再次注册就会卡住,if not device_dyn_resigter_succed:device.register(key_info,on_dynreg_cb)   def upload_value(n):global value_datavalue_data["flame"]= nvalue_data_str=ujson.dumps(value_data)data={'params':value_data_str}      device.postProps(data)if __name__ == '__main__':ICCID=Noneg_connect_status = Falsenet = Nonedevice = NonedeviceSecret = NonedeviceName = None#替换以下产品信息##################################productKey = "a1JuD7ay6Pj"productSecret = "yV68ScGy5DgEczVx"##################################device_dyn_resigter_succed = False# 连接网络connect_network()# 获取设备的IMEI 作为deviceName 进行动态注册#2.2版本改为#deviceName = modem.info.getDevImei()deviceName = modem.getDevImei()#获取设备的ICCIDICCID=modem.sim.getIccid()#初始化物联网平台Device类,获取device实例device = Device()if deviceName is not None and len(deviceName) > 0 :#动态注册一个设备dyn_register_device(productKey,productSecret,deviceName)else:print("获取设备IMEI失败,无法进行动态注册")while deviceSecret is None:time.sleep(0.2)print('动态注册成功:' + deviceSecret)key_info = {'region' : 'cn-shanghai' ,'productKey': productKey ,'deviceName': deviceName ,'deviceSecret': deviceSecret ,'keepaliveSec': 60,}#打印设备信息print(key_info)#device.ON_CONNECT 是事件,on_connect是事件处理函数/回调函数device.on(device.ON_CONNECT,on_connect)device.on(device.ON_DISCONNECT,on_disconnect)device.on(device.ON_PROPS,on_props)device.on(device.ON_SERVICE,on_service)device.on(device.ON_ERROR,on_error)device.connect(key_info)#主程序,onoff_data = {}onoff_data["warning"]= 0onoff_data_str=ujson.dumps(onoff_data)data1={'params':onoff_data_str}      device.postProps(data1)#火焰传感器adc=ADC()adc.open("ADC1")value_data = {}while True:value=adc.readVoltage()print('v:',value,)print('--------------------------------------------')upload_value(value)time.sleep(1)adc.close()
  • board.json
{"version": "2.0.0","io": {"ADC0": {"type": "ADC","port": 0,"sampling": 12000000},"ADC1": {"type": "ADC","port": 1,"sampling": 12000000},"serial1":{"type":"UART","port":0,"dataWidth":8,"baudRate":115200,"stopBits":1,"flowControl":"disable","parity":"none"},"serial2":{"type":"UART","port":1,"dataWidth":8,"baudRate":115200,"stopBits":1,"flowControl":"disable","parity":"none"},"serial3":{"type":"UART","port":2,"dataWidth":8,"baudRate":115200,"stopBits":1,"flowControl":"disable","parity":"none"}},"debugLevel": "ERROR","repl": "enable","replPort": 0}

调试

1、串口调试工具log,网络连接成功动态注册成功每秒打印火焰传感器电压

2、云端有数据传入,打开实时刷新,显示数据会自动更新。

3、物联网应用开发

以下是物联网应用开发流程,接下来按以下流程介绍Web端应用的开发。

4.1新建‘普通项目’

  • 使用阿里云IoTStudio创建项目。
  • 在项目管理新建空白项目

4.2创建‘Web应用’

  • 在新项目的首页新建一个Web应用
  • Web应用创建成功后自动跳转到应用界面设计页面。点击左侧栏‘组件’按钮图标,就可以看到可用的组件列表。各组件的说明请参考IoT Studio组件说明

4.3页面设计

添加三个组件:

实时曲线 显示火焰传感器电压数据变化
指示灯 提示报警状态
设备地图 显示设备位置
  • 可以搜索组件,然后拖到画布区

4.4关联产品

  • 在项目控制台,点击左侧‘产品’点击‘关联物联网平台产品’。并勾选‘关联产品同时关联其下所有设备’,以便该项目可以访问到所有设备的定位信息。

4.5关联数据源

关联数据源3个步骤:

关联产品
关联设备
关联属性
  • 接下来对每个组件进行设置
    1、‘指示灯’,点击配置数据源。



  • 修改‘指示灯’展示样式,‘报警’/‘停止报警’用不同图片显示。(发电系统正常工作着火,熄火报警用灰色图标显示)

  • 火焰图片如下:


2、同样方法设置‘实时曲线’显示当前的火焰传感器电压。

3、‘设备地图’设置属性

给设备进行点位

保存设备的位置信息,查看每个位置的设备信息。

配置设备显示信息,再保存一次

4.6业务逻辑开发

业务逻辑的主要目的是让用户设定物联网设备端的行为逻辑,常规的物联网系统都是在设备端固化行为逻辑,出厂后修改设备行为需要OTA升级,需要与开发者沟通。云端的业务逻辑用户可以自行更改。

  • 新建一条业务逻辑
  • 创建完成后,系统会自动进入到业务逻辑界面。点击节点开始逻辑设计。

逻辑需求,对上报的火焰传感器电压进行判断,高于设定数值报警,否则关闭报警。
需要设定一下四个节点:

 设备触发节点条件判断节点开启报警节点关闭报警节点

①从左侧拖出相应节点

②建立节点间的关联关系,拖动鼠标将节点连接

③业务逻辑编辑

设备触发设置

条件判断设置用户可以在这个位置设定判断阈值

设备行为设定


  • 依次点击保存与部署

4.7预览与发布上线

  • 返回到火焰监控报警界面,点击保存,点击预览后可以看到界面效果。
  • 可以看到设备位置,当前传感器状态,报警状态,传感器电压的变化曲线信息

4.8在线调试

通过阿里云平台在线调试也可以远程控制报警开关。

5.13 综合案例2.0-火焰检测系统(2.2版本接口有更新)相关推荐

  1. 5.23 综合案例2.0-番茄时钟(2.2版本接口有更新)

    综合案例2.0-番茄时钟 简介 准备 硬件连接图 代码流程 功能实现 1.物联网平台开发 2.设备端开发 3.调试 简介 番茄工作法是一种可以有效管理时间的工具,在平时的工作学习中经常会被各种所谓的& ...

  2. 5.15 综合案例2.0-燃气检测系统(仅支持2.02以上版本)

    综合案例2.0-燃气检测系统 简介 MQ2气体传感器 准备 硬件连接图 代码流程 功能实现 1.物联网平台开发 2.设备端开发 调试 3.物联网应用开发 3.1新建'普通项目' 3.2关联产品和设备 ...

  3. 5.31 综合案例2.0 - 在线音乐盒

    综合案例2.0 - 在线音乐盒 一.案例说明 二.准备器件 三.案例连线 四.代码 代码说明 复制 五.测试 一.案例说明 用python写一个在线音乐播放器,MP3云喇叭 本案例制作一个联网下载声音 ...

  4. 5.39 综合案例2.0 - STM32蓝牙遥控小车2(语音控制)

    综合案例2.0 - 蓝牙遥控小车1- 语音控制 成品展示 案例说明 器件说明 小车连线 小车源码 语音模块遥控 语音遥控连线 模块使用说明 1.MLT-BT05 4.0 蓝牙模块 2.ASRPRO-2 ...

  5. 5.38 综合案例2.0 -语音助手(短信,蓝牙,M2M设备间通信)

    综合案例2.0 - 语音助手 效果展示 案例说明 原理 器件 语音助手功能实现 1,ASRPRO-2m模块 下载代码连线 模块编程说明 2,模块与开发板接线 3,语音助手代码 功能1:语音发短信说明 ...

  6. 5.16 综合案例2.0-久坐提醒系统(2.2版本接口有更新)

    综合案例2.0-久坐提醒系统 简介 准备 人体红外传感器 硬件连接图 代码流程 功能实现 1.物联网平台开发 2.设备端开发 3.调试 4.钉钉消息提醒 4.1添加钉钉机器人 4.2.IoT Stud ...

  7. 基于深度学习的火焰检测系统(YOLOv5清新界面版,Python代码)

    摘要:火焰检测系统用于检测日常是否出现火情,支持图片.视频.摄像头等多方式检测火焰.实现火灾警报功能,提供了登录注册界面.在介绍系统实现原理的同时,给出部分Python的实现代码以及PyQt的UI界面 ...

  8. 基于matab GUI的图形处理火焰检测系统

    编辑 换一个视频得到数据结果 网络和多媒体技术的普及,红外图像中的火焰检测 识别技术的科研价值在各领域得到充分展现.防灾救灾方面,红外图像中的火焰检测 识别技术能够迅速确定和锁定被灰尘遮盖的地震.矿难 ...

  9. Android8.0及以上系统 WiFi热点 版本适配

    代码地址如下: http://www.demodashi.com/demo/13907.html ###一.准备工作 开发环境:  jdk1.8  AS(3.0.1) 运行环境:  华为V10(And ...

  10. 5.20 综合案例2.0-甲醛浓度检测系统(2.2版本接口有更新)

    综合案例2.0-甲醛浓度检测系统 简介 电化学甲醛模组 准备 硬件连接图 代码流程 1.物联网平台开发 2.设备端开发 调试 3.物联网应用开发 3.1新建'普通项目' 3.2关联设备 3.3创建we ...

最新文章

  1. java6特性_Java6的新特性
  2. python面试总结 博客园_python面试题总结
  3. Java学习笔记11
  4. 2020-12-14(全局/静态对象的构造函数和析构函数调用的时机以及地址)
  5. java tcp发消息给硬件_java – TCP客户端/服务器通信只发送第一条消息?
  6. 简述本地组策略中用户和计算机配置的差异,组策略编辑器中的计算机配置和用户配置有什么区别吗?...
  7. 前端学习(2179):vue-router-router的由来和vue-router
  8. 如何在Global.asax中判断是否是ajax请求
  9. c study_13
  10. UG/Open API基础知识-语法1
  11. 多亏它,让大家做好“山竹”来袭的准备【Make It Real故事汇】
  12. Elasticsearch 节点磁盘使用率过高,导致ES集群索引无副本
  13. C#并行和多线程编程
  14. 司守奎《数学建模算法与应用》 第二版
  15. 【Git可视化工具】Sourcetree的初始化与使用
  16. CSS表格及表单美化
  17. iframe是什么?iframe用法详解
  18. vue router 嵌套、父子、多个路由跳转传值获取不到参数undefined
  19. 数字中国城市巡礼之枣庄:大数据时代的微缩盛宴!
  20. SQLServer The datediff function resulted in an overflow

热门文章

  1. 使用STM8S003F3P6的硬件I2C读写AT24C16的EEPROM的经验心得
  2. 支付宝当面付扫码支付支付后不回调_新开支付宝不满90天当面付收款第二天到账怎么办?如何实现秒到而不是冻结的来看看吧!...
  3. DotNetSkin 完美破解
  4. movielens数据集简述
  5. 【数据产品案例】阿里生意参谋-用户分析
  6. php获取客户端和服务器ip,PHP获取客户端和服务器IP地址
  7. Android万能布局检查器UI Automator Viewer使用教程、环境配置和Mac无法打开问题解决(uiautomatorviewer,android studio,layer,查看,错误)
  8. GIS与CAD在村庄规划中的图框位置一致处理
  9. 海信电视 LED55K370 升级固件总结【含固件下载地址】
  10. matlab删掉txt文件中的数据,matlab中读取txt数据文件(txt文本文档)