Getting Started with Arduino

If you are new to electronics, but want to start making things with Arduino, I recommend that you begin with an Uno and these great resources.

  1. Make’s Getting Started with Arduino book
  2. Make’s Ultimate Arduino Microcontroller Kit

The book includes a brief introduction to electricity and then dives into working with Arduino.

The kit includes many of the things you will want to play with as you read the book and includes an Uno.

Once you have a handle on the basics, you can add internet connectivity with the Arduino WiFi Shield or step up to the Yun.

The WiFi Shield can be used easily with the Uno, but it will limit the amount of memory and the IO pins available to you. The Yun avoids these limitations, but has some frustrating idiosyncrasies to it. Because of these idiosyncrasies, I don’t recommend the Yun for beginners.

Eggs 2014


Sine waves were a popular choice for this year’s eggs. And the Minecraft pigs were in demand as always.

All the eggs pictures except the pigs were plotted directly from Processing, the pigs were drawn using Inkscape.

I’ll post the files to Github within  a couple weeks.

update: code and svg files are now available on Github.

Air Quality Egg Mod

crop I was not thrilled with the air quality egg enclosure that shipped with the final product and since I planned to use it inside, I decided to mount it on a plank of wood and leave the circuitry exposed. I also wanted some sort of display so I added a meter and modified the code to use pin 3 (pwm) to display the humidity.

Original project date: April, 2013.

Code for multi-switch posted to github

I’ve posted the code for my SmartThings multi-switch project to Github.

There you will find 3 files.

  1. smartthings_controller.ino – the Arduino code which communicated with the SmartThings cloud using the SmartThings Arduino library. I’m using an Uno.
  2. device_handler.groovy – the device handler code. This defines the device for use in the cloud and its UI in the SmartThings app. It is specific to the hardware, but not the use of the hardware.
  3. SmartApp.groovy – the SmartApp code. This defines how the device is used. In my app I tie specific hardware bits to specific device types (e.g. switch, switchLevel or musicPlayer).

For more information on the SmartThings IDE, writing SmartApps and related topic, have a look at these tutorials on the SmartThings developer site.

Multi-switch for SmartThings

Now that the SmartThings lab has released support for both Sonos wireless speakers and Hue lighting, I decided to build a custom switch using the SmartThings Arduino shield to interact with the system. The goal was to provide physical control over the systems without using a phone or tablet.

In my case, I wanted to be able to quickly:

  • Pause/Play all speakers in my house
  • Skip the current song
  • Turn groups of lights on and off
  • Dim the lights (not yet implemented)

The hardware uses a reclaimed project box from the last century with an Arduino UNO and SmartThings shield inside. It includes two pushbuttons, three switches and a knob.


With the hardware put together, the next step was to create a custom Device Handler for the SmartThings cloud and write the SmartApp.

The Device Handler essentially creates a virtual version of the device. It identifies each button and switch in the hardware to provide the basic inputs and outputs used by my SmartApp. The Device Handler also defines the device’s UI that is presented within the SmartThings mobile app.

The SmartApp determines what happens when someone interacts with the hardware. For example, I define which switches will turn things on and off and which ones will call play and pause. The App also defines the UI used to configure the app and map specific switches to specific Sonos and Hue hardware.

Documentation for writing handlers is lacking and this required a good deal of trial and error. In fact, I have not yet been able to hook up the knob within the handler. Once I do, I will post the bits on Github; but, for now if you want to work on something similar, I found this Arduino Code and corresponding Handler Code quite useful.

Another other bit of documentation that came in handy for how to control the Hue and Sonos devices is this list of device types and capabilities.