Getting the hands dirty with Arduino

I’m investigating a number of technologies for the PhD. In the previous 3 posts, I covered the initial development of an Android app that scans an RFID tag for object id information and also connects to an Omeka collections management systems repository using its REST API to retrieve object metadata.

While much development is still required before I can begin to demo the Android app, I thought it would be appropriate to begin looking at other technology related to the Internet of Things that would allow me to build an interactive exhibit (or the technological components to make an existing exhibit more interactive). The interactive exhibit will connect to the Internet (or via another device that does), to upload some data generated by the interaction with one or more museum or gallery visitors.

I have yet to have that Eureka moment with regard to how this interaction will work. It could be that the creative spark comes from a museum professional who wants something built for their museum. I will also explore the possibility that what I build will actually be a piece of interactive art, with the art finding its way to the web or deriving something from the web.

There are a number of potential platforms. Gone are the days when it would have been necessary to have a fully-fledged PC on-site. Nowadays, small micro-controllers, such as the Arduino, allow for single purpose interactive components to be built. Even fully-fledged computers, such as the Raspberry Pi, allow for even more fascinating possibilities in a tiny form factor.

I have both a Raspberry Pi (Rpi) and an Arduino. I bought the Rpi last year to investigate its possible use for teaching programming. I haven’t used it very much, to be honest, but I intend to up the ante by integrating it into an interactive exhibit. There are many peripherals that can be added on, such as a camera.

The Arduino was purchased in the past week or so with funds from CIT’s Computing Department. For about €150 I got the Arduino Uno in the ARDX (Arduino Experimentation) kit, a wire cutter, soldering iron, small 16×2 LCD display, and an RFID/NFC shield. The advantage of the Arduino over the Rpi is the number of shields, sensors, actuators, and so on, that can be connected to the device – many of them without the need for the soldering iron. The ARDX kit came with a bundle of wires, resistors, motor, servo, 9V battery cable, a bunch of red and green LEDs, some push buttons, a light sensor, a temperature sensor, and one or two other bits and bobs. It’s worth looking at the web-page for the full contents.

For now, my Arduino lacks connectivity. There are wireless and ethernet shields available, but for now, I can hold off on purchasing them. I plan to output messages to the 16×2 LCD display and / or use LEDs for status display.

The ARDX starter kit comes with a set of open-source lessons and circuit diagrams. See for more details. I just got the kit in the post yesterday and had time to complete the first two experiments. The second one can be seen in the image below, where an array of 8 green LEDs blink in sequence from top to bottom. I go from blinking lights to motors, servos and sensors over the next 9 experiments. My hope is that I will have an appreciation of the possibilities of the Arduino by the time I reach the end. That will help my discussions with museum professionals, whom I can demo to – the 9V battery allows me to demo anywhere.


The Arduino is programmed using a simple IDE on Windows, Mac or Linux. I had no problem installing the Linux version following the Linux Mint instructions. I would guess that within about 10 minutes I had the IDE installed, the wiring done and the code uploaded to the Arduino. The LED blinked as it was supposed to first time.

Coding is done in good old-fashioned C. I’m quite happy with that. I was a professional C programmer in 1999 / 2000, when I was programming on the VMS operating system for a warehouse management system. There is something raw and exciting about getting closer to the hardware with C.

What I am seeing so far is that C coding for the Arduino doesn’t require a huge amount of C coding experience. Any experience of derived languages, such as Java, PHP and C#, should allow instant access to hacking the code.

So far so good. A bit of a buzz when you see something as rudimentary as an LED blinking just because you wrote the piece of code that did it. Now I need to get the creative juices flowing to come up with something artistic and interactive.