FYI - a stream processing and data visualisation experiment

To ground the discussion on streams for the Web of Things, I am working on a demo based around the GY-521 board. This is based on the InvenSense MPU-6050 sensor which includes a 3 axis accelerometer, gyro, temperature sensor, and digital signal processor, along with a 1 Kbyte FIFO buffer and I2C bus. Not bad for just £2.89!

Looking to get started with it, I came across the arduino introduction [1] and Janaka's matching data visualiser [2] based upon Processing [3].  Processing is a mature project for a graphics visualisation scripting language, that originated in the MIT Media Lab.  Janaka has provided a Processing sketch that reads the MPU-6050 data from the Arduino via the serial port and displays it.  The MPU-6050 data sheet is at [4]. You can set the chip to provide 250 to 2000 samples per second.

I am planning on combining the GY-521 board with an Arduino Uno and Ethernet Shield, and using TCP/IP to send the data. Processing also comes with a Network library, so it will be trivial to adapt [2] to read the data via a TCP client connection to the Arduino.  The next step will be to use my C++ web of things gateway project along with HTTP and WebSockets for a web browser based human machine interface. This will involve mapping the Processing sketch to JavaScript for the HTML5 Canvas2D.

The Thing description will describe:

a stream for the raw accelerometer data for x, y and z axes
the IoT server in terms of its IP address and port
the protocol as a raw TCP/IP stream

TCP just happens to be really easy with the Arduino Ethernet Shield via the SPI bus.  In principle, it would be relatively easy to use a UDP based protocol, in which case, the thing description also needs to declare how many samples are transferred in each packet. As far as I can see there would be little benefit from using CoAP, but I may be mistaken.

When you look at the MPU-6050 data sheet, there is lots of information that could be expressed as a semantic model. The on chip digital signal processor can even be programmed for gesture recognition. However, I will leave that to future experiments.

It is clear to me that thing descriptions can be used to describe a very wide range of platforms and use cases,  and this includes devices that do not natively support the Web of Things. 

[1] http://playground.arduino.cc/Main/MPU-6050 <http://playground.arduino.cc/Main/MPU-6050>
[2] https://github.com/janaka/Gy521-Dev-Kit <https://github.com/janaka/Gy521-Dev-Kit>
[3] https://processing.org/overview/ <https://processing.org/overview/>
[4] http://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/ <http://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/>

—
   Dave Raggett <dsr@w3.org <mailto:dsr@w3.org>>

Received on Thursday, 2 June 2016 09:36:52 UTC