(tl;dr: A library to interface Arduino with a 3D data visualisation and monitoring tool on a PC - download - brief examples - L3DGEWorld overview )
Hey all,
I'm currently a student doing a work placement at one of my university's research departments, the Centre for Advanced Internet Architectures. As part of my placement, I developed a library for Arduino to interface with another of our (FOSS) projects, L3DGEWorld.
L3DGEWorld was designed to monitor networks and networked computer systems using a realtime 3D interface. Different statistics are represented through different visual attributes. For example, one of the super computing clusters at Swinburne University uses L3DGEWorld to provide a visual overview of the state of every node. Each node is a floating entity, and the CPU utilisation is represented by rotation speed, the memory utilisation by size and the network utilisation by bounce height. (See example here. )
Additionally, the user may also interact with the entities. Using the different "tools" (weapons) available, a user may trigger a l3dgecomm enabled device to perform certain actions.
l3dgecomm is the protocol for communicating between L3DGEWorld and an input or output daemon. Arduino-l3dgecomm provides an interface to allow an Arduino to provide input and take output from L3DGEWorld and other l3dgecomm compatible programs.*
We put together two proof of concept videos to demonstrate the main functionality of arduino-l3dgecomm.
In the first video, the arduino acts only as an input daemon. We read an analog input and set the spin rate of an entity on-screen accordingly. Input from any source can be used, as long as you can express it as an integer.
In the second video, we demonstrate the output functionality of L3DGEWorld, with the Arduino acting as an output daemon. We interact with entities in-game, which controls the actions of the Arduino. When an action is sent, the Arduino is provided with the tool ID, entity ID and a string containing the states of the various attributes of the entity. In this case, we use the entity ID to determine which angle the servo actuates to.
Both of these are very simplistic examples of the functionality - L3DGEWorld can be expanded far beyond these examples with minimal effort. For example, monitoring temperatures around a datacenter, while allowing a user to turn additional localised cooling devices on and off .
Both L3DGEWorld and arduino-l3dgecomm are free, opensource software. Download it from here, see the examples page here, and read the L3DGEWorld overview here
- W3bworld is our other l3dgecomm compatible program, which is a HTML5 and NodeJS implementation of L3DGEWorld.