Internet of Things Thing

In the run up to year-end, we have decided to get creative in the Development department and engage with some ideas that are literally 'out of the box'.

The term 'Internet of Things' has been bandied around since forever and in many ways this has been part of the internet's natural evolution -- a convergence of the digital and the physical no matter how abstracted. Products connected to money, hyped through opinions and pimped with an adorning QR code. Despite this, there does seem to be a very real disconnect between 'things' and our almost vicarious relationship with them -- an instantaneous link that can often seem cold and impersonal.

With this in mind, we have been playing around with the 'Internet of Things' idea in the hope of bringing it back to a base level. An attempt to inject a playful element that is more relatable to the average human being. Imagine that warm feeling that comes with the bounce of a needle over some vinyl.

In the new year we have a few projects waiting in the wings that will experiment with this idea and we thought it would be nice to share some of our first steps.

The initial task on this journey was to get our hands dirty with a bout of physical programming and dust down the hobbyist inventor workhorse, the Arduino Uno. This open-source electronics prototyping chip board is great as a canvas for painting LEDS, spinning motors and NFC excitement.

Previously we have played around with creating stand alone units and blinking light experiments; we now want to develop this further and connect the Arduino machines with human hands over the internet.

To accomplish this, we required a service with the ability to communicate serial data with an Arduino board and have this hooked up to the internet waiting for human instructions. This was an initial challenge as the Arduino is natively divorced from web access and requires some creative thinking to enable remote browser communication. In order to experiment with a few ideas we turned to node.js.

Node.js is a great tool for constructing rapid prototypes and enabled us to get a local web server running in a matter of minutes. We could also benefit from the forward thinking node.js community that contributes to a vast collection of packages via npm and helps provide a great kick start for a proof of concept.

Two highly recommended tools for abstracting Arduino controls into Node are Duino and Noduino. These allow much of the logic to be written in JavaScript on the Node server. It's worth noting that the Arduino unit must be physically connected to the server in order to communicate low-level signals over serial port. With this setup we were able to initialise interaction between Arduino and a browser running on the same machine as the node.js server.

This enabled some initial local experiments around blinking LEDs -- the 'hello world' of physical programming -- by hooking them up to keyboard events to create some nifty interactions, controlling speed and intensity via the browser, albeit on the same machine. The next step is making this all human controllable over the internet.

In the coming weeks we'll give a further overview of the technologies and tools employed on this inspirational and rewarding voyage into the world of physical programming.

Code's hosting offer