a.k.a “Smart Interconnected Devices Hackathon”
This session over the weekend, organised by @novodakm, was a very unusual #londroid event but none the worse for it. Kevin explained that this was going to be very unstructured and apologised for lack of sponsorship/ prizes. No apology was needed; this was a very interesting event that identified people interested in hardware issues.
I heartily agree with the sentiment of both Kevin and Dan that there can be a lot more to mobile devices than (increasingly similar) rectangular screens.
I decided that 24 hours was not enough to hack anything useful, especially given the temperature (hottest day of 2012 so far) and the stuff I had already done @ota2011 and ota2012. This left plenty of time to meet people and find out what their interests were.
One of the items I was able to mention was the upcoming OSHCamp in Hebden Bridge on 15-16 September when I’ll be talking about Android Accessory Development Kit (ADK). Here are some notes that are part of my prep for that.
I realised that I have been focused on the use of the ADK Arduino Mega board while the IOIO (pron. yoyo) provides an interesting alternative. I should look into that and maybe include it in my talk. I have since investigated IOIO and it certainly does look like a great alternative for many types of project, though not all.
Summarising the differences with a little help from IOIO developer @ytai, writings:
- ADK and its clones only work on specific Android devices, while IOIO would work on almost any Android device since Android 1.5. That said, software is available to overcome this limitation.
- With ADK you have to write both the Android-side (Java) and the Arduino-side (C++) software, and establish a communication protocol between them. You have to know both languages and two different IDEs and unless you’re doing something very trivial, it will take a significant amount of time to do this. With IOIO, you just write the Android side. You include a library called IOIOLib in your application, which provides an API that lets you control the IOIO pins and functions as if they were physically connected to your Android. You don’t need to care about the fact that there’s a separate processor here, communication protocols, etc.
- With ADK you can control peripheral devices with strict timing requirements. For example, if you want to generate or decode a specific waveform you would need ADK. I use this to drive BBSB/ Homeasy sockets. IOIO cannot give you fine grain control of timing.
- ADK boards are compatible with Arduino shields. If you want to use one in your application, IOIO will not be a good choice.
- If you plug a Bluetooth dongle into IOIO instead of a USB cable to the Android, it will communicate wirelessly with the Android. The nice thing is that your application doesn’t need to care about it, and you can even switch back and forth while your app is running. This may well be possible with ADK but I don’t know who, if anyone, has tried this. Anyone?
- If you want more info on IOIO, see @ytai’s github or Google “IOIO over OpenAcessory” (without quotes).
I plan to get my hands on a IOIO board and have a play. A different set of libraries is required but at first glance it seems to live up to the description of being significantly easier to implement than ADK.
As Kevin pointed out it gets expensive to have all the kit you need for this king of hacking. So be it
Watch this space.