|
|
Line 1: |
Line 1: |
− | {{InfoBoxTop}}
| + | [[File:TBD.png|thumb|center|600px|caption]] |
− | {{AppliesToSBCSPG}}
| |
− | {{AppliesTo SBC Lynx TN}}
| |
− | {{AppliesToIoT}}
| |
− | {{AppliesTo IoT TN}}
| |
− | {{InfoBoxBottom}}
| |
− | {{WarningMessage|text=This technical note was validated against specific versions of hardware and software. It may not work with other versions.}}
| |
− | [[Category:MISC-AN-TN]]
| |
− | [[Category:MISC-TN]]
| |
− | | |
− | __FORCETOC__
| |
− | == History ==
| |
− | {| class="wikitable" border="1"
| |
− | !Version
| |
− | !Date
| |
− | !Notes
| |
− | |-
| |
− | |1.0.0
| |
− | |February 2023
| |
− | |First public release
| |
− | |-
| |
− | |}
| |
− | | |
− | ==Introduction==
| |
− | ORCA-TN-001_—_Running_Armbian_Bullseye_(Debian_11)
| |
− | | |
− | https://mirrors.dotsrc.org/armbian-dl/tritium-h3/archive/Armbian_22.11.1_Tritium-h3_bullseye_current_5.15.80_minimal.img.xz
| |
− | | |
− | LAN .30
| |
− | | |
− | armbian@sbcspg:~$ pip install modbus_cli
| |
− | | |
− | armbian@sbcspg:~$ ./.local/bin/modbus 192.168.30.42:502 300
| |
− | Parsed 0 registers definitions from 1 files
| |
− | 300: 33 0x21
| |
− | | |
− | https://github.com/fledge-iot/fledge-south-modbustcp/pull/26/files
| |
− | | |
− | Riavviare south plugin disable/enable per via grafica.
| |
− | | |
− | | |
− | You can think about this This Technical Note (TN) as an evolution of the article "[[MISC-TN-021: SBCSPG and ThingsBoard IoT]]". The use case described here is a real-world application based on the same elements:
| |
− | * [[MISC-TN-004: Running Debian (armbian) on SBCSPG#The hardware platform|The ''SBCSPG'' industrial gateway]]
| |
− | * [https://thingsboard.io/docs/ ''ThingsBoard IoT platform'']
| |
− | * [https://thingsboard.io/docs/iot-gateway/what-is-iot-gateway/ ''ThingsBoard IoT gateway''].
| |
− | The application is to monitor robotized DAVE Embedded Systems' ATEs like the one shown [https://youtu.be/OoNiKgJXq00?t=409 here].
| |
− | | |
− | == Implementation ==
| |
− | The implementation is suitable for a production environment. Unlike what we did for [[MISC-TN-021: SBCSPG and ThingsBoard IoT|this TN]], in this case the ThingsBoard IoT platform was installed on the cloud, specifically on an AWS EC2 instance running Ubuntu Linux. The following diagram shows the complete solution.
| |
− | | |
− | [[File:ATE monitoring SBCSPG ThingsBoard.png|center|thumb|1000x1000px]] | |
− | | |
− | Technically, the gateway can communicate with the ATE using different physical links and protocols. In the example under discussion, the physical link is Ethernet and the protocol is Modbus/TCP. The gateway retrieves periodically some data regarding the robotic arm used to move the device under test (DUT). These data are [https://www.universal-robots.com/articles/ur/interface-communication/modbus-server/ exposed by the PLC governing the arm] and are documented in detail [https://s3-eu-west-1.amazonaws.com/ur-support-site/16377/ModBus%20server%20data.pdf here].
| |
− | | |
− | === ThingsBoard IoT configuration ===
| |
− | To install ThingsBoard IoT platform on an EC2 instance, [https://thingsboard.io/docs/user-guide/install/cluster/aws-self-hosted-setup/ these instructions] were followed.
| |
− | | |
− | === ThingsBoard IoT gateway configuration ===
| |
− | To run this esample, the most important module to configure was the [https://thingsboard.io/docs/iot-gateway/config/modbus/ Modbus connector]. The following box shows the resulting configuration file needed to poll some variables of the arm's joints (namely temperatures and currents).<syntaxhighlight lang="json">
| |
− | armbian@sbcspg:~$ cat /etc/thingsboard-gateway/config/modbus.json
| |
− | {
| |
− | "master": {
| |
− | "slaves": [
| |
− | {
| |
− | "host": "192.168.30.42",
| |
− | "port": 502,
| |
− | "type": "tcp",
| |
− | "method": "socket",
| |
− | "timeout": 35,
| |
− | "byteOrder": "BIG",
| |
− | "retries": true,
| |
− | "retryOnEmpty": true,
| |
− | "retryOnInvalid": true,
| |
− | "pollPeriod": 5000,
| |
− | "unitId": 1,
| |
− | "deviceName": "UR5",
| |
− | "sendDataOnlyOnChange": true,
| |
− | "connectAttemptTimeMs": 5000,
| |
− | "connectAttemptCount": 5,
| |
− | "waitAfterFailedAttemptsMs": 300000,
| |
− | "timeseries": [
| |
− | {
| |
− | "tag": "base_joint_temperature_deg_C",
| |
− | "type": "16int",
| |
− | "functionCode": 3,
| |
− | "objectsCount": 1,
| |
− | "address": 300
| |
− | },
| |
− | {
| |
− | "tag": "shoulder_joint_temperature_deg_C",
| |
− | "type": "16int",
| |
− | "functionCode": 3,
| |
− | "objectsCount": 1,
| |
− | "address": 301
| |
− | },
| |
− | {
| |
− | "tag": "base_joint_current_mA",
| |
− | "type": "16int",
| |
− | "functionCode": 3,
| |
− | "objectsCount": 1,
| |
− | "address": 290
| |
− | },
| |
− | {
| |
− | "tag": "shoulder_joint_current_mA",
| |
− | "type": "16int",
| |
− | "functionCode": 3,
| |
− | "objectsCount": 1,
| |
− | "address": 291
| |
− | },
| |
− | {
| |
− | "tag": "elbow_joint_current_mA",
| |
− | "type": "16int",
| |
− | "functionCode": 3,
| |
− | "objectsCount": 1,
| |
− | "address": 292
| |
− | },
| |
− | {
| |
− | "tag": "wrist1_joint_current_mA",
| |
− | "type": "16int",
| |
− | "functionCode": 3,
| |
− | "objectsCount": 1,
| |
− | "address": 293
| |
− | },
| |
− | {
| |
− | "tag": "wrist2_joint_current_mA",
| |
− | "type": "16int",
| |
− | "functionCode": 3,
| |
− | "objectsCount": 1,
| |
− | "address": 294
| |
− | },
| |
− | {
| |
− | "tag": "wrist3_joint_current_mA",
| |
− | "type": "16int",
| |
− | "functionCode": 3,
| |
− | "objectsCount": 1,
| |
− | "address": 295
| |
− | }
| |
− | ]
| |
− | }
| |
− | ]
| |
− | }
| |
− | }
| |
− | </syntaxhighlight>
| |
− | | |
− | == Dashboards ==
| |
− | ThingsBoard IoT allows to create easily custom dashboards to visualize data. At [http://ec2-15-160-47-190.eu-south-1.compute.amazonaws.com:8080/dashboard/1178fb20-e56d-11ec-8592-e3cb29424137?publicId=28967df0-e56d-11ec-8592-e3cb29424137 this link] such a dashboard is available showing some temperatures and currents of the arm's joints.
| |
− | [[File:ATE monitoring SBCSPG ThingsBoard dashboard1.png|center|thumb|600x600px]]
| |