
暂无个人介绍
无形万象作品由艺术家冯嘉城创作,我们作为硬件与方案落地进行构思与落地,整个作品整体以风车矩阵为载体,填充空间的灯光装置,整个装置项目效果图如下: 整个装置占地面积很大,以独立的个体展示整体的动态效果,又要呈现整体的视觉灯光效果,需要具备复杂的控制设计 整个项目,我们采用自动运行为主,以检测风车转动控制灯光明暗变化的基本逻辑的前提,采用信号线随电源线串联的方式,将整个风车组,分为十几组独立的灯光组件,以灯光组模块得方式接入互联网,通过阿里云IOT平台统一管理,以便在装置业主在大型节庆或活动时可以动态远程的启用灯光效果,我们相对应得开发了一些灯光效果。 项目展开根据作品创作者要求,我们隐去具体硬件细节 通过嵌入式硬件,我们在其中实现风车灯光,测速,电源转换,单总线与地址控制,实现风车功能,在有限得空间内实现功能设计制作硬件并量产 组装成品 现场布置 通过IOT技术,本项目主要解决业主对大型景观作品的新要求,通过简单硬件的大量复制,通过组件与组件之间的互联互通,来实现灯光效果。
产品推荐:阿里云物联网开发者工具(IoT Studio),立刻免费体验吧! 基本情况 洗车机设置在加油站中,使用的是德国知名品牌洗车机,咨询洗车机厂商,厂商方面暂时没有提供可用的设备上云接口,无法达到客户的设备使用要求。 洗车机本身自动化程度非常高,所以操作非常简单,只需要将车停入,指示灯亮红灯,熄火停车后,工作人员按启动按钮,选择洗车模式就能自动完成全部洗车动作。这给自助化改造提供了极大便利。 改造方案 现场概况 设备间概况 控制系统概况 操控设备概况 现场情况:我们观察发现,总控制器是这款标识为A10的EC1000控制器,控制器同时支持CAN总线,RS232,和工业以太网总线,当前只有CAN总线为接驳状态,上面的裸露PCB板为输入输出控制板,负责产生控制IO信号与接收反馈IO信号。由此判断,用户控制箱中的按钮也应该是CAN总线数字按钮控制系统。 分析 配电柜情况 采用CAN总线为通讯总线 输入输出有专用控制器 控制终端为CAN总线按钮消息终端 分析设备控制方案 原则上我们可以通过设备模拟按钮控制盒的消息达到控制设备的目的 通过监听总线消息,测试逆向通讯协议 模拟测试逻辑进行设备控制 现场测试 根据分析情况 我们将CAN接口硬件并入控制器,进行监听消息 编写程序实现消息监听,并且进行测试,进行完整的设备运行,监听CAN消息日志大概有600Kb资料。 至此我们已经能简单驱动洗车机进行洗车了 定制开发硬件 开发第一版本的测试硬件,进行开发调试,支持以太网接入,CAN总线消息 开发 开发嵌入式硬件 开发嵌入式软件 阿里云IOT接驳程序(与阿里云建立MQTT链接,及ALink通讯协议实现) 以太网支持 业务服务,CAN总线模拟,网络状态查询,洗车状态查询 洗车模式功能选择 API接驳接口开发 提供小程序调用的硬件http接口 设备可用状态查询 测试完毕后继续完善硬件,根据实际调试情况修改硬件设计 实施改造 改造完成 这样,设备会通过4G路由器连接网络,自动登录阿里云IOT实现设备的通讯,然后通过HTTP接口提供给小程序调用。 整个改造没有侵入性,完全没有破坏原有系统,只是通过外挂CAN控制器实现,与原有系统只有2根can总线植入。并且不影响原有控制逻辑,可以任意拆除。 (实施过程中多次往返现场,其中困难就不细说了) 后端及小程序开发 界面设计与功能展示 实现用户自助停车,扫码,支付洗车全流程自助服务. 视频展示 欢迎大家扫码进群领取物联网最新资料以及获取一手直播资讯
产品推荐:阿里云物联网开发者工具(IoT Studio),立刻免费体验吧! 构建web可视化的控制平台 上篇我们已经能够完全通过云端控制设备了,但是必须要一条一条指令的发,并不是很方便,也并不方便交付给客户使用,所以我们需要可视化的用户界面(UI) 阿里云iot studio 提供了一套基于拖拽式构建的快速web开发工具,能够很方便的构建我们的用户界面应用 首先 点击开发服务-IOT studio 然后点击新建项目 点击创建一个空白项目 给项目起个名字然后就点确定 然后进入项目 我们点击web可视化开发 创建一个新的web应用 再来编个名字,然后确定 这样我们就进入了开发界面了。。左边有很多的网页元素,中间是主界面,大家可以尝试着拖动一些元素过来 然后,我们需要按照下图方式构建一个应用框架 主要用到了 2个按钮分别调整颜色和内容, 一个滑条 0-5000 10步进,还有两个文本框 我们来调整各个项目的参数 依次点击交互-事件【点击】 - 动作【调用服务】 - 产品与物的管理 - 物的管理服务 -设置物的属性 然后在参数中填入产品ID 设备ID 和我们的开关指令(开指令) { "productKey": "a15mLG9bUxt", "deviceName": "uJCypeOEunEP4R5MJEar", "properties": {"onoff":1} } 这样,我们单击这个按钮就能够给设备发送开的指令了。。 同样的,我们还要设定一个关闭的按钮 其他都不变只是最后的指令参数变为0 { "productKey": "a15mLG9bUxt", "deviceName": "uJCypeOEunEP4R5MJEar", "properties": {"onoff":0} } 随后我们要处理下滑条,让滑条的数据与设备数据同步,这样我们就能通过滑条看到设备的设置频率,也能够通过改变滑条调整设备的频率了 一次设置数据绑定到固定设备【因为我们是测试,所以直接绑定到设备,实际使用的时候应该使用动态来源】 这样我们的控制界面就可以使用了 点击保存可预览,我们就可以通过网页直接通过阿里云IOT物联网直接控制我们的变频器了。 发布后的效果。我们可以直接将网页嵌入其他软件中或者直接绑定域名发布给用户 至此,本系列完整的利用了阿里云的IOT工具,完整的构建了一套能够运行的案例系统。 如果有任何想法欢迎和我交流
产品推荐:阿里云物联网开发者工具(IoT Studio),立刻免费体验吧! 06 通过IOT控制变频器 之前,我们已经能够顺利的驱动变频器,并且能够与阿里云平台进行连接交互了 现在我们需要将两部分功能进行融合,使之能够通过阿里云的操作指令来执行变频器的对应动作 看代码: #include <aliIotLink.h> #include <ESP8266WiFi.h> #include <ArduinoJson.h> //变频器库部分 #include "deltaVDF.h" deltaVDF VDF(1); //实例化一个变频器 MODBUS总线地址为1 const char* ssid = "OCROBOT"; const char* password = "jikegongfang"; static const char ProductKey[] PROGMEM = "a15mLG9bUxt"; static const char DeviceName[] PROGMEM = "uJCypeOEunEP4R5MJEar"; static const char DeviceSecret[] PROGMEM = "YXlW9wW2EYtXweZfwCZcUFbYhnDgnVr7"; static const char postTopic[] PROGMEM = "/sys/a15mLG9bUxt/uJCypeOEunEP4R5MJEar/thing/event/property/post"; //上报消息topic static const char setTopic[] PROGMEM = "/sys/a15mLG9bUxt/uJCypeOEunEP4R5MJEar/thing/service/property/set"; //服务器消息topic WiFiClient espClient; //实例化 wifi网络 PubSubClient client(espClient); //将网络传入MQTT AliIotLink aliLink(client); //将mqtt传入服务 void working(uint16_t delayTime, float temps); //回调函数 void Callbacks(char* topic, byte* payload, unsigned int length) { //消息解析 StaticJsonBuffer<256> jsonBuffer; JsonObject& JsonData = jsonBuffer.parseObject(payload); if (!JsonData.success()) //判断对象是否符合标准 { return; } //JsonData["params"]["Frequency"] JsonVariant frequency = JsonData["params"]["Frequency"]; //取出key中的消息; JsonVariant direction = JsonData["params"]["direction"]; //取出key中的消息; JsonVariant onoff = JsonData["params"]["onoff"]; //取出key中的消息; bool directionData ; if (frequency.success()) //如果频率消息存在 { VDF.SetF(frequency.as<uint16_t>()); //将频率数据发送到变频器 } if (direction.success()) //如果方向数据存在 { directionData = direction.as<bool>(); //将方向数据缓存 } if (onoff.success()) //启停数据存在 { if (onoff.as<bool>() == 0) { VDF.stop(); //停止电机 } else { VDF.run(directionData); //启动电机 } } } void setup() { Serial.begin(9600, SERIAL_8E1); //初始化串口,参数为变频器配置参数 VDF.begin(Serial); //将串口对象传入变频器库 //初始化WIFI WiFi.mode(WIFI_STA); // 接入端模式 WiFi.begin(ssid, password); //初始化并且链接wifi while (WiFi.status() != WL_CONNECTED) { delay(500); } //初始化阿里云 aliLink.subTopic(FPSTR(setTopic)); //订阅服务器下行消息 aliLink.setCallback(Callbacks); //注册下发消息回调函数 aliLink.begin(FPSTR(DeviceName), FPSTR(ProductKey), FPSTR(DeviceSecret)); //完成初始化配置 三元素(DeviceName,ProductKey,DeviceSecret) } void loop() { //阿里云链接维持 aliLink.loop(); if (aliLink.state() != 0) //错误消息打印 { Serial.println(aliLink.state()); //返回平台链接消息代码 } } 代码有一定的变动,因为我们不需要上报消息了。所以去掉了上报消息的部分,然后因为我们需要接受平台的反馈消息,所以我们启用了回调函数,并且将控制逻辑写在了回调函数中 下载完代码后,记得插回485模块 设备上线后,我们首先查看下设备的频率情况 设备上当前默认值是30HZ 我们使用阿里云IOT的设备在线调试功能 首先进入在线调试页面 选择频率,方法是设置,然后设置一个值,我们设定为5000(就是修改图上2500这个数,截图截错了。。囧)点击发送指令 发送指令后右侧会有日志记录 我们再来看设备端 当前设备频率已经被正确设定了 其他指令,包括启动停止均可进行在线调试,可以自己动手测试 演示视频 如此,我们就完整的实现了通过阿里云IOT的在线调试功能,通过协议指令来控制我们的工业设备,下一篇,我们来构建一个web可视化页面,通过鼠标交互的方式实现控制
产品推荐:阿里云物联网开发者工具(IoT Studio),立刻免费体验吧! 变频器的驱动与modbus协议介绍 Modbus RTU简介 modbus RTU是一种标准的 开发免费的通讯协议,对其协议支持的厂家超过400家,工业场景应用十分普遍. 我们使用的变频器就完整支持MODBUS 通讯协议。 首先要对变频器进行 设置【就是按照说明书,在变频器的面板上按按按】 设定控制指令输入方式 设定通讯方式 设定通讯地址 设定传输速率 错误处理 数据格式 台达变频器连接器采用的是RJ11接头,也就是我们常说的电话线具体线序如下 按照要求将SG- 链接道485模块的B接口,SG+链接到485模块的A接口 设定好后,我们将使用deltaVFD库来驱动delta变频器库下载地址:https://github.com/MINI-Qiang/deltaVFD然后代码如下 #include "deltaVFD.h" deltaVFD VFD(1); void setup() { delay(1000); Serial.begin(9600, SERIAL_8E1); VFD.begin(Serial); } void loop() { VFD.SetF(3000); //设定变频器频率30.00HZ VFD.run(1); //启动变频器,方向1(正,视变频器面板设定,具体请查阅用户手册) delay(10000); VFD.stop(); //变频器停止 delay(10000); VFD.SetF(4000); //改变频率为40.00hz VFD.run(0); //方向0(反)运行 delay(10000); VFD.stop(); //变频器停止 delay(10000); } 效果应该如下视频演示: <视频...暂时好像不支持,日后补上>
将设备接入阿里云并且能显示数据 协议 首先我们需要理解阿里云IOT的 ALINK JSON协议,其实这个协议很简单 { "id":1, "version":"1.0", "params": { "Frequency":5000, "direction":0, "onoff":1 }, "method":"thing.event.property.post" } 以上就是标准的Alink Json协议的范本,params的标签下面就是我们之前构建的设备模型的参数,只要将数据匹配进去云端就可以正确解析我们设备构建的数据了 我们来构建硬件程序(标准的arduino ESP8266 C++源码)用到如下库:https://github.com/MINI-Qiang/aliIotLink 【阿里云IOT链接】https://github.com/bblanchon/ArduinoJson/tree/5.x 【arduinoJSON第5版,如果使用6版本注意自行修改】 #include <aliIotLink.h> #include <ESP8266WiFi.h> #include <ArduinoJson.h> const char* ssid = "OCROBOT"; const char* password = "12345678"; static const char ProductKey[] PROGMEM = "a15mLG9bUxt"; static const char DeviceName[] PROGMEM = "uJCypeOEunEP4R5MJEar"; static const char DeviceSecret[] PROGMEM = "YXlW9wW2EYtXweZfwCZcUFbYhnDgnVr7"; static const char postTopic[] PROGMEM = "/sys/a15mLG9bUxt/uJCypeOEunEP4R5MJEar/thing/event/property/post"; //上报消息topic static const char setTopic[] PROGMEM = "/sys/a15mLG9bUxt/uJCypeOEunEP4R5MJEar/thing/service/property/set"; //服务器消息topic WiFiClient espClient; //实例化 wifi网络 PubSubClient client(espClient); //将网络传入MQTT AliIotLink aliLink(client); //将mqtt传入服务 void working(uint16_t delayTime, float temps); //回调函数(本项不用) //void Callbacks(char* topic, byte* payload, unsigned int length) //{ //} void setup() { Serial.begin(115200); //初始化WIFI WiFi.mode(WIFI_STA); // 接入端模式 WiFi.begin(ssid, password); //初始化并且链接wifi while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } //初始化阿里云 aliLink.subTopic(FPSTR(setTopic)); //订阅服务器下行消息 //aliLink.setCallback(Callbacks); //注册下发消息回调函数(本项目不使用) aliLink.begin(FPSTR(DeviceName), FPSTR(ProductKey), FPSTR(DeviceSecret)); //完成初始化配置 三元素(DeviceName,ProductKey,DeviceSecret) } void loop() { //阿里云链接维持 aliLink.loop(); if (aliLink.state() != 0) //错误消息打印 { Serial.println(aliLink.state()); //返回平台链接消息代码 } working(10000); //上报业务,每10秒(10000ms)上报一次 } // 构建Alink协议 String updateAlinkJson(uint16_t _id, JsonObject &_AliIotJson) { StaticJsonBuffer<256> jsonBuffer; JsonObject& AlinkJson = jsonBuffer.createObject(); AlinkJson["id"] = _id; AlinkJson["version"] = "1.0"; AlinkJson["params"] = _AliIotJson; AlinkJson["method"] = "thing.event.property.post"; String JsonStr; AlinkJson.printTo(JsonStr); return JsonStr; } //定时上报数据与状态 void working(uint16_t delayTime) { uint32_t thisTime = millis(); if ((thisTime % delayTime) == 0) { StaticJsonBuffer<130> jsonBuffer; //定义json缓冲区 JsonObject& paramsJson = jsonBuffer.createObject(); //初始化对象 paramsJson["Frequency"] = 4999; //将频率数据填为5000 //paramsJson["direction"] = false; // //paramsJson["onoff"] = true; // String data = updateAlinkJson(random(1, 100), paramsJson); //提供一个随机ID,并且将负载消息加入 aliLink.publish(postTopic, data.c_str()); Serial.println(data); //串口同步输出消息 } } 代码结构非常简单,填写自己的wifi帐号密码,然后按照之前我们创建设备的时候提供的链接参数进行修改 然后使用ArduinoJSON支持库构建一个阿里云ALINKJSON的标准框架提交数据即可完成数据数据上行 我们确认下,新设备是没有任何数据的 程序上传 打开IDE 上传我们的程序到控制器,注意,上传的时候不能堆叠485模块,因为上传程序也会使用串口,如果堆叠会造成信道冲突致使失败 注意确认选择板卡 速率和端口 然后点击上传,上传完成后,硬件会自动连接WIFI,然后开始向阿里云发送数据 从云端的设备运行状态就可以看出来,设备上报的数据已经在了。而且设备本身的状态也变成了在线,至此,我们的硬件与阿里云IOT的链接就完成了 内容总结:本章内容需仔细阅读源码,理解如何通过json和阿里云进行上报数据的 系列链接 【实践】工业用变频器上云 【1】 硬件介绍 与阿里云IOT设备创建
硬件及开发环境介绍 使用的硬件 ALPHA 电池扩展底板 OCROBOT ALPHA系列辅助底板,帮助ALPHA系列独立使用,无需持续外接USB线供电。 ALPHA ESP8285 WIFI主控制器 ALPHA ESP8285 是基于 ESP8266EX 芯片设计开发的物联网无线模组。它集成了 TCP/IP 网络协议栈,32 位低功耗 MCU,10 比特精度 ADC,并带有 HSPI、UART、PWM、I2C 和 I2S 等接口。另带usb串口,可以供用户直接下载程序使用。 ALPHA 485总线接口板 ALPHA RS485模块使用MAX13487方案,带自动方向控制,收发过程中无需控制收发状态,使用简便。 IDE介绍 本案例使用的是OCROBOT IDE集成开发环境,完全兼容ARDUINO IDE,你也可以使用arduinoIDE来玩完成本实训下载地址:http://www.ocrobot.com/doku.php?id=downloads 首选我们需要安装开发版环境 点击工具 - 开发版 - 开发版管理器 在开发版管理器里面选择 OCROBOT ESP8266 点击安装 等待安装完毕 随后我们就可以选择到需要的板卡了 这时硬件开发环境的准备工作就完成了 阿里云IOT介绍与使用 首先进行开通服务: 进入 https://iot.aliyun.com 点击设备接入 开通服务 登录自己的帐号 点击产品 创建新产品 定义产品模型 创建变频器操作的参数 然后去创建设备(此处一般会填写设备的唯一ID或者MAC,如果不填,平台会自动分配一个,因为我们是实验,所以这里不填) 这样我们就获得了设备连接云端的令牌,至此,阿里云IOT 云端准备工作就完成了 系列链接 【实践】工业用变频器上云 【2】 将硬件设备接入阿里云,并且能正常通讯
2020年11月
2019年08月