Now we’re the other side of Dust and safe from dropping any major spoilers, here’s a quick overview of how the Dust Balls were put together.
Dust balls? Here’s an extract from the explanatory text Hannah’s published on her blog:
The Dust Balls are large fragments of the city. They are formed out of open source electronics, clay, hope and optimism. They begin by introducing themselves to the listeners, and instruct them to point the device in different directions in order to ‘pick up’ stories of individuals in the areas surrounding them. Depending on the timing and direction in which you are facing, different stories will be heard.
They are heavy, and designed to be listened to by two people at once – the weight and bulk of the object meaning that two are required to support it. The two people sharing each experience of overhearing the stories should be strangers.
Quite a design brief there, with some technologies I’d never worked with before (audio and direction-sensing). Fortunately I know where I am with clay!
The finished Dust Balls
There’s a whole other post-worth of talk about the whys, wherefores and processes relating to the clay, but this post is about what went inside the Dust Balls.
Short answer: lots of electronics.
Location, location, location
Once we’d decided to site the Dust event on top of the Vyse Street car park, I spent several hours up there over 3 or 4 visits after work. We didn’t have much in the way of lead-in, but this was time well spent getting to know the feel of the location and details such as how loud the ambient noise of the traffic below is, how busy the car park is at that time and generally getting to know the lie of the land.
View from the top deck of the car park towards Snow Hill station and Colmore Square.
From here we were able to locate the 5 story threads that Hannah had written amalgamating objects and memories submitted by different contributors.
Thread 1: a visitor to Birmingham is reminded of being in love; Thread 2: a man feels like a boy as he listens to a recording of the grandfather he never met; Thread 3: an office-worker battling deadlines and spreadsheet puts a hand to the pocket containing one of his son's toys; Thread 4; a victim runs through the city streets at the feet of the tower blocks; Thread 5: a friend bearing a gift walks purposefully towards the hospital.
Working from a tracing from a fold-out A-Z map of Birmingham, I drew out the segments for each thread and used a protractor to get the bearings for the boundaries between threads. This working diagram was then orientated to North and taped to the table-top in preparation for testing the the next stages…
The compass module
After some research into different options, I decided to use this CMPS10 tilt-compensated compass module. The tilt compensation was important (since we couldn’t guarantee the Dust Balls would be held horizontally) but it was also selected because of the range of communication methods (serial, I2C, pwm) and the documentation and example code available. Given the lack of time and my lack of coding chops, this is the sort of bet-hedging that was required!
It was easy enough to get the compass module working with an Arduino using the example code. I initially tried serial communication, but I couldn’t get this working via the NewSoftSerial library when I came to combine it with the mp3 shield.
The switch to I2C communication required the addition of a couple of pull-up resistors, which I made into a stripboard ‘shield’ that I could plug into the Arduino stack.
This made things a bit more robust for placing them inside the Dust Balls, as well as being a nice convenient modular approach.
I also added in a push-to-make switch between the ground and reset pins. This would allow me to place the the electronics at the back of the Dust Ball where they wouldn’t interfere so much with the compass readings, but to still have reasonable easy access to reset the kit between users.
The remaining component of the set-up is the mp3 player shield. I used this one from SparkFun, and it worked, although I may well choose something different next time around…
The main thing to be aware of with this shield is the lack of a line out. There’s a headphone socket and somewhere to connect a speaker, but using an amplifier without also adding in protection against electrostatic discharge runs the risk of frying the audio chip. We’ve been lucky so far using portable speakers in the headphone socket, YMMV and you have been warned.
When using these shields you also need to be careful to install the SDFat library correctly (only the ‘SdFat’ folder from the zip file) and ensure you make the necessary changes to the Sd2PinMap.h file as documented in the mp3 player example.
The comments on the product page are well worth a read through too.
Anyway, I got it working eventually…
… et enfin…
The final stack looked like this:
Arduino Uno, mp3 player shield and homebrew I2C/reset shield, also connected to the compass module and the portable speaker. All powered with a PP3 9 volt battery connected to the Arduino’s power jack.
I added in some hot melt glue to protect the soldered joints that were prone to flexing and breaking and also used black insulation tape to cover over some of the power LEDs (I didn’t want the Dust Balls to look like they were powered by Kryptonite!).
Strips of velcro were used to hold the components in place during use, whilst still leaving them removable when required.
The code takes its main functionality from the compass and mp3 player examples, with some logic to select which audio track to play depending on which direction you’re facing and what’s been played before.
As ever, there’s room for improvement, but hopefully there’s enough here to get you started with your own projects. There’s also a set of photos from the make on Flickr.
We will not be afraid to get our hands dirty.
We will make and share our own tools as appropriate.
We will collaborate.
We will be generous.
We will be porousexcerpt from the Splacist Manifesto 2.0