热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于物联网:PM空气质量检测仪

在日常工作中,咱们常常会对接一些奇奇怪怪的小设施,他们既没采纳大型设施厂家的通信协定,也没有通用的统计数值的办法。这时候就得须要用到咱们的自定义逻辑代码去实现这些设施数据的采集以及数值转换,明天咱们将通过济南参谋通信技术有限公司生产的pm2.5pm10激光传感器(USB版本)解说自定义逻辑代码实现数据采集

在日常工作中,咱们常常会对接一些奇奇怪怪的小设施,他们既没采纳大型设施厂家的通信协定,也没有通用的统计数值的办法。这时候就得须要用到咱们的自定义逻辑代码去实现这些设施数据的采集以及数值转换,明天咱们将通过济南参谋通信技术有限公司生产的pm2.5/pm10激光传感器(USB版本)解说自定义逻辑代码实现数据采集

一、产品

明天须要用到的产品有:
海创Box智能采集网关
pm2.5/pm10激光传感器(USB版本)应用说明书

如上图所示将pm2.5/pm10激光传感器(USB版本)的USB插口连贯到海创Box智能采集网关的USB口上

二、通信协定

通过厂家给的说明书里的通信协定咱们可得悉设施默认参数:
串口通信协定:9600 8N1(速率 9600, 数据位 8,校验位无,进行位 1)
串口主动上报通信周期:1+0.5 秒
数据帧(10 字节):报文头+指令号+数据(6 字节)+校验和+报文尾
示例报文为
AA C0 71 01 CA 01 B9 93 89 AB
具体含意:
AA—-报文头
C0—-指令号,客户开发产品时,看到接管到有 CO,即示意是由 PM2.5 传感器输入的信号
71—-PM2.5 低字节
01—-PM2.5 高字节
CA—-PM10 低字
01—-PM10 高字节
B9—-传感器的 ID
93—-传感器的 ID
89—-校验和,即 71+01+CA+01+B9+93=289 即 0x0289 ,这里咱们舍弃了高字节 02,只保留了低字节89
AB—-报文尾
因为输入的是,16 进制数据,请转换成 10 进制数进行计算。
PM2.5 值的计算:71 01
低字节 71: 7*16+1=113
高字节 01: 016+1=1 ((PM2.5 高字节256) + PM2.5 低字节)/10 (1*256+113)/10=36.9ug/m3
PM10 值的计算:CA 01
低字节 CA: C*16+A=202
高字节 01: 016+1=1 ((PM10 高字节256) + PM10 低字节)/10 (1*256+202)/10=45.8ug/m3
校验和:
89 71+01+CA+01+B9+93=289,舍弃高字节 02,留低字节 89。

三、节点流

在桌面关上海创Box智能采集网关可视化开发平台进入可视化编辑器。本次教程须要用到如下节点,在左侧节点栏中拖拽出应用
serial在输出栏目,用于读取串口二进制流

提早在性能栏目,用于提早音讯速率

function在性能栏目,用于配置逻辑代码

调试在输入栏目,用于调试输入

配置界面详情(疾速复用请导航到文章末端)

接下来咱们来配置如上图的节点流,首先将左侧节点栏的serial、提早、function、调试节点别离拖拽到工作区,再点击相应的流节点的端口顺次按配置界面所示连接起来,再双击相应流节点进入配置界面配置相应属性

serial是用于读取串口输入的节点工具。该工具须要配置串口名称(Serial Port)、波特率(Baud Rate)9600、数据位(Data Bits)8、校验位(Parity)Node、进行位(Stop Bits)1。该USB转串口程序在奥迈智能网关中应用不须要下载任何驱动程序,即插即用。在插入智能网关的USB口后,会在零碎的驱动目录下/dev生成一个串口文件ttyUSB0(没有其余USB转串口的工具插入下),咱们须要在配置串口名称(Serial Port)配置/dev/ttyUSB0。Windows下须要装置官网驱动。因为serial in读取串口数据是间断的,所以咱们须要将Split input(拆分输出)配置成after a silence of(在没有新的二进制流输入后),默认工夫填写50ms。详情配置如下图。

提早用于提早serial节点输入的信息速率。因为该设施自定义速率为0.5秒/信息,咱们理论采集的时候用不到这么频繁的数据,所以咱们抉择限度音讯速率,如下配置限度音讯1分钟/条。

function是用于编写自定义代码的节点工具,该控件反对nodejs语法,能够实现您所有的业务逻辑。依据该设施的通信协定,咱们将分为两个逻辑块,别离寄存在两个function外面,用于数据校验以及获得咱们须要的数据。须要留神的是在咱们的框架内定义个别流的数据向下流动时都将数据存入msg.payload这个对象中。对于更多Buffer类的更多应用请参考Buffer。详情配置如下图。

CRC校验代码如下:

var count=0;
    let buf=0;
    //以0开始取第2位字节点到第7字节的数据
    for(var i=2;i

pm2.5/pm10取值代码如下:

let PM25Value= msg.payload.readUInt16LE(2)/10;
    let PM10= msg.payload.readUInt16LE(4)/10;
    msg.payload={PM25Value:PM25Value,PM10:PM10}
    return msg;

调试用于界面调试输入后果。咱们须要将下面的程序输入后果打印在界面右侧的调试窗口,按配置界面图链接即可。

四、部署调试

通过下面所有步骤后,即可部署程序,部署后能够在右侧的调试窗口看到输入,如下图。

五、示例

以上教程能够通过拷贝上面代码实现疾速复用,在新建的流程中点击界面右侧菜单栏-导入-剪贴板,在文本框中粘贴上面代码后点击确定,即可疾速复用。

[
    {
        "id": "e2618b1e.c557f8",
        "type": "delay",
        "z": "7fce5a14.7da9c4",
        "name": "",
        "pauseType": "rate",
        "timeout": "5",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "minute",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "x": 335,
        "y": 260,
        "wires": [
            [
                "be9d7a30.0c43c8"
            ]
        ]
    },
    {
        "id": "47ea0be9.2ffb14",
        "type": "serial in",
        "z": "7fce5a14.7da9c4",
        "name": "",
        "serial": "f8003df1.9aa5c",
        "x": 215,
        "y": 260,
        "wires": [
            [
                "e2618b1e.c557f8"
            ]
        ]
    },
    {
        "id": "be9d7a30.0c43c8",
        "type": "function",
        "z": "7fce5a14.7da9c4",
        "name": "CRC测验",
        "func": "var count=0;\nlet buf=0;\n//以0开始取第2位字节点到第7字节的数据\nfor(var i=2;i

推荐阅读
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • Ansibleplaybook roles安装redis实例(学习笔记二十九)
    1、相关redis参数:2、templatesredis.conf配置相关参数:daemonizeyespidfilevarrunredis_{{red ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
  • 注:根据Qt小神童的视频教程改编概论:利用最新的Qt5.1.1在windows下开发的一个小的时钟程序,有指针与表盘。1.Qtforwindows开发环境最新的Qt已经集 ... [详细]
author-avatar
姬跋征
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有