Tuesday, November 8, 2011

The connections

In the end, I controlled three aspects of the slide projector from the Arduino board:

  1. Moving forward / back slides
  2. Turning the lamp on and off
  3. Rotating the lazy Susan
To move the slides forward / back, I replaced the wired remote control connector with connections to relays (it was a standard 6 pin DIN connector) - I left it on for 0.5 sec, then waited 1.5 seconds before pressing it again.

To turn the lamp on and off, there is a special connector on the side. I have never seen something like it, and couldn't find a replacement plug. So I drilled a hole in the side to pull out the two wires that were soldered together inside. Apparently when people did presentations with multiple slide projectors, this connector was used to fade between projectors, etc. Ah, those were the days. I then connected these two wires to a relay. The first one started to smoke - I got a more powerful one (240V, 3A), but after using it for a few minutes it started to smell also so I took it out. I guess the current that is passing through the globe is passing through this connection, so maybe I need one with a higher current rating.

The last two connections out were connected to the motor controller (see previous post). If one is high and the other low, the motor will rotate clockwise, and vice versa for anticlockwise. If I set both to low, then the motor does not move.

For these last three connectors, I used the servo connectors on the demo board, and modified the arduino code to just send digital on or off (as opposed to PWM (pulse-width modulation) which is required for the servos).

The motor

I wanted the motor to be able to rotate the slide projector (which was sitting on a lazy Susan from Ikea) either clockwise or counter-clockwise. The advice I constantly got was to use an H-bridge, however, no-one could tell me where to get one. There were numerous Arduino shields available, but the form factor of the Android demo-kit (it has more pins than the standard ones) meant that it wouldn't fit. Eventually I found a place in Australia (in Perth) that had something appropriate, and I ended up using this one which arrived in two days.
It was tiny! Eventually I managed to solder on the legs and understand how to get it working. 

Unfortunately, I eventually turned off the motor feature for the demo at the GDD. I had planned to use the compass as feedback in order to turn the slide projector to face in the direction where the rainbow would be seen (directly opposite the sun). However, I think the magnetic field caused by the slide projector (probably a transformer) caused the compass to be inaccurate. I guess I will need to use another feedback method to know what the orientation of the lazy Susan is (suggestions welcome).

Google Developer Day

Google developer day has arrived (quickly!) There are a lot of people here!

Most of the desired features were implemented, the only main problem was setting the orientation - I could not get an accurate orientation from the compass, so I disabled this feature. I'm not sure if the slide projector was generating a magnetic field and interfering, or because the tablet was not exactly horizontal.

I'm demonstrating the device in the "Google cafe" area during the breaks. In the last session, I'll also be presenting a talk on "How to see a rainbow" in the Ignite session (5 minute talks).

I'll add the rest of the details of the implementation shortly.

Monday, October 31, 2011


When I had the idea to use a slide projector for this project, I assumed that getting slides made was a similar process to getting digital prints made. I wanted to get digital photos made into standard 35mm slides. I soon realised that this is not a trivial thing to do. After going through many google searches and sending out a few emails, I could not find any shops in Australia that offer this service. Most of my searches ended up with places that will convert slides to digital, in my emails although (I think) I clearly stated what I wanted, most of them often me the reverse service (slides -> digital). There are still places in Australia that will take special slide film and develop it into slides. So one option would have been to buy some of this film, borrow / buy a film camera (I don't have one!), take photos of a printout or the screen and get them developed. It didn't sound like a great idea.

Eventually, I found some online services in the USA that will do this and ship to Australia for a reasonable price. After comparing many options on this web site, I went with Gammatech. They arrive quickly and they look great! Below is one of the slides (using the computer monitor while writing this article as the back-light).

Thursday, October 13, 2011

The slide projector

A key feature of my proposal was to project a rainbow on the wall when there is a high probability of seeing a rainbow. I chose to do this using a slide projector for two reasons - it seemed like a cool idea, and slide projectors can be found second-hand cheaply (as opposed to data projectors).

In my proposal, I estimated $20 for a slide projector after a quick look on ebay. After I was accepted, I started in earnest watching and bidding on slide projectors. I was surprised that many of them were going for much more than $20 (some up to $80-$150). The main requirement that I had was that it had some sort of remote control that I could replace with relays controlled by the arduino  / ADK.

Perseverance is usually necessary in these things, and I eventually did win one auction for $20 for a Kodak Carousel S-AU 28 slide projector, which I picked up from Gladesville (from a street with a beautiful view over the river!) The auction included the slide projector, several carousels, and a spare globe. The generous seller also gave me a projection screen to go along with it.

It was made in Germany, weighs a tonne but seems very solid (and works fine). I could not find a date of manufacture, however the Kodak slide projector history website says it was "supplied" from 1971-1974 and the list price was 240 pounds in 1971! Kodak still have a manual for it up on their web site. The same site announces also that Kodak stopped making slide projectors in 2004.

There is a 6 pin round DIN plug for the remote, as well as a weird 12 pin (2 parallel lines of 6 pins, never seen something like it) on the side which according to the manual allows "projector change-over and other control units to be linked to the projector". I'm guessing this could be a good way of switching the projector on and off (rather than using a relay on the 240V power in), whereas the 6 pin DIN will do the forward / back (this is what the supplied remote plugged in there does).

Tuesday, October 11, 2011

Getting an Android device to work with the ADK

One of the neat features of the ADK (Android Open Accessory) is that it doesn't require the phone to act as a USB host. When you connect a USB device, one device is the host (generally the computer) to which multiple devices can be connected. While some newer Android devices can act as a host (so you can plug in external hard disks, etc) , many older ones cannot.

With the Open Accessory protocol, the device you plug in (i.e. the arduino device) acts as the host so your phone does not need to be. Despite this, the phone can still act as the "master" and give commands to the device.

For the GDD open call, they stated that you need to have access to either the Nexus S, Nexus 1, or Xoom. Now I don't have any of these phones, but I searched a bit and saw that the latest Cyanogen mod ROMs with Android version 2.3.4 mod support Open Accesory devices. I had already rooted my phone (an LG GT540) and was running a port of Cyanogen mod.

Needless to say, once I received my Open Accessory development kit in the mail, I tried connecting it to my phone. Nothing happened. After performing many google searches and coming up with very little, I posted a question on some forums and on Stack Overflow. The answer I got there was that having the 2.3.4 Android is not enough, you also need a later kernel version (at least 2.6.35). I hadn't really realised until this point that the linux kernel version and the Android version were not necessarily related, in that while particular "official" Android releases were designed for a particular kernel, the ROMs that people produced were often made to run on earlier kernel versions.

So at this point, I needed to wait until someone ported 2.6.35 to my phone. I toyed with the idea of downloading some half-finished ports and trying to get one to compile, but realised I don't have that sort of time / energy available now. So I decided instead to get a device that is known to work.

The phones (Nexus S or Nexus One) were not that cheap and even second hand ones were at least a few hundred dollars on ebay. Eventually I saw that the Acer Iconia A500 tablet was on sale at Harvey Norman and Officeworks for $386 so I eventually bought one. I didn't really need another phone, I liked the idea of trying out a tablet, and hoped (still hope) that after the GDD, I should be able to sell the tablet second hand for only a small loss.

Anyway, to finish the story - the Iconia A500 is a great tablet, very fast and a beautiful screen. I can't really say that I need a tablet, I prefer taking my old netbook on the bus to work for emailing for the keyboard. The kids love it though, it is a good size for angry birds and good for taking photos. The tablet came with Android 3.1, and didn't work out of the box with the ADK. However, after rooting the device and installing a 3.2 ROM (a few days later the official upgrade came anyway), the device worked!

Monday, October 10, 2011


As part of an Open call for the Google developer day, I was selected to create a demonstration using the new Android ADK.

I have been working on an Android app to calculate the probability of seeing a rainbow (using your current location and weather). In this project, rather than displaying the chance of seeing a rainbow on the screen of the phone, it will instead be projected onto a wall. To keep the cost of this project reasonable, a slide projector will be used to project the image. The particular slide to present (e.g. a rainbow graphic, a sun graphic, etc) will be selected by advancing the slide projector appropriately, using the ADK - I will replace the advance switch on the projector remote with a relay controlled by one of the digital out connections on the ADK. The entire device (phone connected to an ADK connected to a slide projector) will also sit on a circular plastic disc. The orientation of the disc will be controlled by a stepper motor, with the stepper motor (and hence the orientation of the disc and the projector) also controlled by the ADK. This will allow the rainbow to be projected in the appropriate direction where one should look to see it (a rainbow is always observed in the opposite direction to the sun), feedback on the orientation will be provided using the compass in the phone.

You can read the proposal I submitted here

In this blog, I will detail my efforts at building the device. The GDD is in 28 days, let's hope it gets finished in time!!!