What do you get when you hang up a bunch of outdated cell phones, and hook them up to the Internet? Well, you are in luck! James Theophane writes in to share his group’s latest project, the Mobile Mobile. Using 50 company phones that had recently been replaced, they created an installation that plays the song “Carol of the Bells”. The project is installed at their headquarters, however they also have an interactive streaming interface.
Wondering how one hooks up a bunch of old cell phones to do this kind of project? So were we, and they graciously agreed to fill us in on the details:
The plan was to make 50 mobiles to each play a different note of a Christmas carol, and flash in time. We set up a test mobile phone – an HTC Touch – to connect to a wifi access point whilst being powered by a charger.
We ‘ping’ed the IP address of the phone for two days to verify that it would remain contactable. The phone did get a tiny bit warm, but it worked. We noticed that the ping time changed significantly between different power modes on the wifi of the mobile – from 100ms down to about 2ms on ‘performance’.
The plan was to write a small program that ran on the phone that understood a small set on instructions and have a controller running on a PC sending the commands. The basic list of commands was: light on/off, change colour ‘wash’ and beep.
The first challenge was turning the backlight off – WinMobile is a multitasking OS running WindowsCE as the kernel. The power management subsystem allows you to suggest power settings, but the OS takes into account all the running programs needs.
Turning the backlight fully off proved problematic in the project timescales (a matter of days). Next was beeping. The PC has always had a speaker that could beep – it was connected to the chip that controlled the keyboard – so has had a corresponding function e.g. in windows the MessageBeep function.
WindowsCE was designed for a range of platforms and embedded controllers and it looks like beep was not a core function. Luckily the Microsoft developers included some sample code on how to implement a MIDI sound system expecting hardware manufacturers to license third party full musical instrument libraries. It looks like the manufacturers kept with the simple sine wave sample code implementation. This was good enough for our mobile phone beeping musical rendition.
The program on the phone was written in Microsoft .Net C# and consisted of two parts: one registering with a web service – logging the fact that it was still alive and its current IP address, and two a UDP listener – listening for commands from the controller over the network.
The controller was written to read the midi file of the Carol and send the individual notes to individual phones at the right time. Using UDP instead of TCP and the ‘performance’ setting on the phone meant that the commands arrived promptly on the phones.