IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)

概述及项目背景 现有的工业互联网平台,主要由物资需求计划(MRP)、制造执行系统(MES)、仓库管理系统(WMS)、ERP系统等等组成,以数字化的方式将企业的购、存、产、销、人、财、物资源统一管理起来。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片

在工厂的制造过程中,最重要的就是生产设备,如何实现对生产设备数据的监控和分析,是工业互联网重要的研究课题。
中国目前大部分工厂还处于自动化、智能化较低的工业2.0阶段,生产设备只有简单的控制逻辑,少数设备有本地数据接口,如何将这部分庞大的数据采集到互联网,是本文的讨论重点。
产品架构及工作流程 目标:使用低成本方案,将传统制造设备数据采集上云,实现数据展示和分析。
考虑到现实情况,本方案需满足以下需求:

  • 由于很多制造业的利润微薄,本方案成本需要足够低,百元级别
  • 由于大多数设备没有数据接口,本方案应采用非侵入式的、加装设备实现数据采集
  • 实现数据的上下行,即支持数据上报,同时支持远程控制设备
  • 实现简单的数据大屏、APP监控,开放数据接口供进一步进行数据分析
  • 标准化,安装简单,做到通用方案无需技术人员上门安装,进一步降低成本
经过以多种方案的选型,我们选用了nodeMCU+阿里云的方案。nodeMCU是一款带有ESP8266 WiFi模块的开源的物联网平台,可以使用我熟悉的arduino IDE进行开发,成本约13元。
阿里云是一个成熟的物联网平台,可以通过MQTT协议连接设备,基于阿里云的各种SaaS应用,能够方便的开发数据大屏、APP等应用,按消息数收费,消息数量不多小项目几乎免费。
整体的工作流程如下。
  1. 在阿里云平台创建产品和设备,定义设备功能参数
  2. 进行设备端嵌入式开发调试
  3. 在阿里云平台创建应用(数据大屏)
  4. 大屏和设备联调
nodeMCU介绍 IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片

NodeMCU,是一个开源的物联网平台。 它使用Lua脚本语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。由于我不熟悉Lua语言,可以使用arduino IDE和C语言进行开发,配置方法可以参见这篇文章。
nodeMCU的引脚图和技术参数如下图,一共有11个数字I/O口,我们可以通过这些I/O口外接传感器或执行器,来实现数据采集和远程控制。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片

第一步·创建设备 【IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)】在开始开发之前,我们需要明确设备的功能,在这个样例中,我们将要实现一个制袋机器的监控设备,实现制袋数量的实时上传。
打开阿里云物联网平台,新建一个产品,输入名称,选择“自定义品类”,“直连设备”,其他默认,点击保存,完成创建。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


此时我们就在云端创建了一个虚拟的“机器”,下一步需要定义这个“机器”的功能。打开刚刚创建的产品详情,点击“功能定义”tab,可以看到此产品的所有功能。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


点击添加自定义功能,添加一个属性“制袋数量”,表示机器当前的总产量。关于物模型的详细定义可以参考之前的文章。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


至此,我们创建了一个产品,这个产品有个属性“制袋数量”。下一步我们要基于这个产品创建一个设备,“设备”是“产品”的实例,是一个个的实体,我们需要创建一个设备,拿到设备的“三元组”,就可以将平台上这个虚拟的“设备”和我们实际的设备对应起来。

IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片

创建好设备后,获取到“三元组”(ProductKey,DeviceSecret,DeviceName)备用,至此云端的虚拟设备已创建好,可以看到设备是“离线状态”,因为平台还没有检测到此设备联网,下一步我们将要进行设备端的开发,让设备联网后,带着上面的“三元组”上报消息,即可让设备在线。
第二步·nodeMCU嵌入式开发 设备端的接入本质上是让设备连接WiFi后,通过MQTT协议和阿里云进行数据交换,有大神已经写好了相关的库,我们就无需造轮子了,点此查看SDK。
在SDK的示例代码中,我们只需要关注以下几个参数,设备三元组:
  • #define PRODUCT_KEY “xxx“
  • #define DEVICE_NAME “Device_D“
  • #define DEVICE_SECRET “xxxxxxxxxxxxxx“
设备将要连接的wifi名称和密码:
  • #define WIFI_SSID “xxxxx“
  • #define WIFI_PASSWD “xxxxx“
另外我们用一个参数pack_num来表示“制袋数量”,和我们在产品中创建的参数对应。
// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同 #include static WiFiClient espClient; // 引入阿里云 IoT SDK #include // 设置产品和设备的信息,从阿里云设备信息里查看 #define PRODUCT_KEY "xxx" #define DEVICE_NAME "Device_D" #define DEVICE_SECRET "xxxxxxxxxxxxxx" #define REGION_ID "cn-shanghai"// 设置 wifi 信息 #define WIFI_SSID "xxxxx" #define WIFI_PASSWD "xxxxx"//需要上报的制袋数量pack_num参数 int pack_num = 0; void setup() { Serial.begin(115200); // 初始化 wifi wifiInit(WIFI_SSID, WIFI_PASSWD); // 初始化 iot,需传入 wifi 的 client,和设备产品信息 AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID); // 发送一个数据到云平台,修改属性,pack_num是在设备产品中定义的参数 AliyunIoTSDK::send("pack_num", pack_num); }void loop() { AliyunIoTSDK::loop(); }// 初始化 wifi 连接 void wifiInit(const char *ssid, const char *passphrase) { WiFi.mode(WIFI_STA); WiFi.begin(ssid, passphrase); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("WiFi not Connect"); } Serial.println("Connected to AP"); }

我们用一个红外反射传感器来获取数量,每当有物体接近时,传感器的输出电压会变为高电平,我们将传感器放置在产品出口处,每当有一个产品经过即输出一个高电平,通过nodeMCU的I/O口获取高电平数量即可统计“制袋数量”。
传感器的VCC、GND端口分别连接nodeMCU的3V、G端口用于供电,D0接入nodeMCU的D8端口,用于检测电平并统计。数量的统计需要用到中断函数,并经过去抖处理,此处需要一定的C语言和arduino经验,就不再赘述,可以直接参考项目源码。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


连接并将代码上传到nodeMCU开发板,打开串口监视器,可以看到设备已经连接到WiFi,同时阿里云平台上的设备状态应该也变成了“在线”。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


至此,设备已成功连接到云端,能够实时上报数据。有了数据,下一步我们将做一个数据大屏,将数据以展示出来。
第三步·云端应用开发-数据大屏 阿里云有成熟的在线编辑工具,无须代码,就可以在线以拖拽的方式生成一个页面。打开IoT studio,创建一个web应用
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


创建完成后,打开编辑页面,添加一个大屏组件,点击编辑大屏,即可拖入组件,绘制页面。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


每个组件可以和上面我们创建的设备参数绑定,例如nodeMCU上报的“制袋数量”更新后,可以同步更新大屏上的数字翻牌器,做到显示实时数据。
选择一个组件,点击“设置数据源”,选择产品、设备和属性,即可完成配置。
IoT学习指南|20元搭建工业互联网,包含采集设备和数据大屏(nodeMCU+阿里云应用实践)
文章图片


完成编辑后,发布页面,可以配置独立域名,例如iot.zfpack.com,访问域名即可打开制作的页面。
总结 我们用20元的不到的成本搭建了一个物联网应用,从数据采集、设备管理、数据展示都可以在平台上简单完成,采集的数据后期可以进行处理分析,为业务决策、流程优化提供参考。当然,本方案采用的nodeMCU和相关传感器能否在工业环境长期稳定运行还需要进一步测试。
技术和成本已经不是限制工业互联网发展的障碍,如何通过数据发掘更大的价值才是我们需要思考的。
欢迎访问我的网站:process-z.com

    推荐阅读