IOIO Bootloader Update

Well, I made some progress this weekend with respect to hardware, firmware, and bootloaders. My bluetooth IOIO implementation is still giving Eclipse shit-fits. I am seeing an error with the bluetooth library…it fails on compilation. Unfortunitely, I am running out of weekend, so will cut this one short and make a statement about the backend.

In order to replace that pesky USB cord with a sleek virtual cord, aka a bluetooth connection, one must update not only the IOIO application, but also the IOIO bootloader. The application is easy enough to flash, but he bootloader requires a programmer for updating. Luckily, Ytai was kind enough to design a ‘programmer by second board’ option, and incorporate that into the same UI as he utilized for flashing apps to the board. The first step was off to SparkFun for a second IOIO.

ioio android bootloader

clamptastic

I kept the second bare bones, except for the pins I would need to do the actual programming.

soldering stuff

ugly but functional

The key was to have both boards up to date enough to function as programmer and target, so I first loaded the newest application versions to each board. The rest was a matter of utilizing the IOIO Manager app on the Android, and letting the programmer do its thing.

two ioios

ginger ale? no.

For reference, the setup was power to power, ground to ground, pins 37|38 to pins 37|38, and pin 36 to mclr…with mclr being on the target board. USB connected to the programmer board…that is that.

Unfortunately, my IOIOSeek app ended up stroking out when I attempted to load the bluetooth library. It works fine with the newest general library version, so I know that my bootloader indeed was a success. Back to the Java drawing board before I can demonstrate the new feature.

Upgrade to CyanogenMod

My relationship with Motorola’s firmware has ended. It was a good run…well, no. That is a lie. It was certainly better after rooting my Droid 2 and wiping out Verizon’s boatware, but the Moto* junk had to go too. I finally decided to gut everything and install Cyanogenmod yesterday.

It is plus one awesome.

Although the process of flashing Cyanogenmod’s firmare involves a little work, it is no more difficult than rooting the phone in the first place. Since I did that a while ago, I really wasn’t concerned with blowing up my warranty…I figured bricking the thing would either result in some sweet haxxing or a new phone. Win / win.

I would suggest an upgrade to anyone. My phone finally screams, as it should have from day one. My battery life is better | everything imaginable is configurable | my apps and Google accounts all work | and, wait for it, I don’t have to kill processes all day. In fact, I don’t have a stand-alone task killer going…that is pretty surreal still.

Well, as with any exercise of this nature, backing up is imperative. Astro File Manager is great…Titanium Backup is great. The other players are the same too…ClockworkMod Recovery makes snagging the MODs easy. I am actually running a daily build, since there is not an official stable build for the Droid 2 yet. No memory leaks though, and everything so far has been functional.

Anyhow, on to the actual firmware stuff. I downloaded the zip file, and booted into recovery mode…

cyanogenmod 7.1 install android

lousy picture is lousy


…during game one of the World Series. Not sure if that is Pujols or Furcal in the reflection. Either way.

Great picture, huh? This is the first time I have used my webcam since upgrading to Ubuntu 9.11. Whoops…screwed up the camera, fellas.

On the screen is a ClockworkMod selection for Google’s bits. I imagine that this was done for legal reasons. Anyhow, I had to go back and install this from recovery, as I missed it at first.

CG7.1 android installation droid 2

Katie's guest cameo


Hi Katie. ^

I also managed to get stuck in a boot loop of sorts during my first attempt. It turns out that I cleared the data but not the cache from the recovery menu. No good. A pulled battery and some troubleshooting and we were good to go.

cyanogenmod boot loop

post boot loop

I spun up the Android market, and did fresh installs of my apps. For the important stuff (the Angry Birds Trilogy, 9 Innings Pro Baseball, et. al.) I pulled the backup data back over top of things. No issues.

I had been wanting a landscaped workspace since I got my phone. .. now I know why…

landscape mode on cm7

at long last

It just makes sense. CM7 allows this to be configured. Like basically everything else. Want your menu on the bottom? Put it there. There are options all over the map…like the camera exposure, for instance.

camera function CM7.1

choice laden

Sweet. It is tough to beat the performance gains in general, but it is wholly possible. Check this out:

Cyanogen Warning Dragons Ahead

here be dragons

One stop overclocking. Disregard that popup and go nuts.

One part of me wishes that mobile carriers would take note of Cyanogenmod’s presence and push Android updates to customers. The other part of me likes to void warranties and do things that the clowns from Verizon frown upon. Either way, my phone is now awesome…that is all that matters.

Android IOIO Project | IOIOSeek

I hope you don’t mind, but I went ahead and stepped it up a few notches.

My newest project brings my end-goal a few steps closer. I now have the pieces in place to put together an actual robotic implementation with the IOIO…since things have officially reached the cool stage, I decided to drop this as a stand-alone project. Complete with pics, a vid, and an app.

IOIOSeek:

IOIO android servo seek

dig the lighting

What I have here are two slider bar controlled servos, an analog input-read solar panel, and some LEDs toggled via a button. The control is via the IOIO / Android.

servos and solar panels on ioio android

dig the wires

The pictures, however nice, don’t really tell the story. Take a look at the video to see this thing in action:

As the video alludes to, I am going to run with this concept. The automation (robotics) lies in the analog reading with respect to the servo positions. I plan to ‘scan’ the panel…that is the piece that is missing. Once I can implement that mess, I will have a tracking system. Implementations will fall out of that.

analog input ioio

+1 tape

As with the last few projects, I have dumped the app on the Android Market for general perusal. The app’s description provides the details of the pin configuration, which is straight forward. I have two PWM outputs, a pure 3.3V digital toggle, and a pin configured for analog input. That is that.

I will push my code to GitHub as well eventually, and provide a link therein. I still need to polish my generic servo code, since my latency was borderline awful in retrospect. Look for that in the near future as well.

As always, drop any questions to joe[at]swantron[dot]com. Feel free to share your IOIO projects with me…

IOIO Servo Controller

I just doubled my Android Market presence with one fell swoop. IOIO project number two is in the books: IOIO Servo Controller.

IOIO Servo Controller

servo in altoids can smells like altoids

This project is a one-off of the PowerSwitch Tail relay project I have out in the wild. I took the button out of the mix and implemented a slider bar…removed the relay and am now driving a hobby servo.

IOIO Android app

brand placement

Displayed is the relative level (zero to one) of the slider, the slider itself, and a shameless plug. The onboard LED also fires with a brightness relative to the slider position…which I implemented in the coding and sort of left in there.

The basic concept was to get the PWM output configured correctly, in order to control the servo positioning…the slider function is pretty much just the stock slider from the Android Development docs, widened a bit for the sake of video capture. The rest was just mashing around the code I had out there…not too bad.

Check the thing in action:

This project is available for download in app form on the Android Market. Right next to my other guy…search for IOIO. I will toss the code on my GitHub account as well. Fun project…I may branch and see If I can do anything cool with a few servos. We’ll see.

Shoot any comments to joe(at)swantron(dot)com. I can help with any setup issues, if they may arise. Good luck…

IOIO App Redux Time

I put together a simple proof of concept using a slider to control a PWM pin out…simple is an understatement.

pwm app ioio

booooooooring

Nice, right?

In doing this, I did a fresh download of the IOIO example apps, as I had gutted the Blink example for my 120V relay app. It turns out that there is a fresh firmware version…I grabbed the new IOIO library that is associated with that. So, my proof of concept doesn’t function…I tested it with an LED to no avail.

So, I have a few items to address before I push out another project

  • Update firmware | flash V3 to my IOIO
  • Update my IOIOPowerSwitch App to contain IOIOLib V3
  • Update READMEs / Github / Android Market to cite firmware version
  • Update proof of concept to same specifications
  • _
    It should go smoothly, after the first bullet-point is in the books. Stay toooned.

    Adding Headers to an IOIO

    Q. Am I dragging my feet with the whole IOIO code cleanup deal?
    A. Take a look at this little pictorial dealio regarding soldering headers to my IOIO

    Exhb 1:

    IOIO headers

    clamptastic

    Exhb 2:

    headers in place on IOIO

    clamptabulous

    Exhb 3:

    powered IOIO

    golf clap

    I’ll get on that; you have my word. I am toying around with the idea of tossing the open drain app on both github and the Android Market, in order to throw some chum out to the crew of IOIO owners. We’ll see.

    Android 120V Controller

    It was worth the wait…I now control 120V via my Android.

    ioio android powerswitch tail 120V FTW

    awesome project is awesome

    I had a mostly sleepless night, again. I managed to figure out what I had been botching while trying to provide enough juice to my PowerSwitch Tail. Transistors and alligator clamps are out; extra pins are in.

    Take a look at the (awful quality) video…on the main page, as the picture quality won’t grind loading to a halt.

    I still need to toss some headers on the IOIO, and take some clips out of the picture for a better picture of what I did here. Look for that shortly, along with a snippet. Pretty straight forward, but we’ll have to see where this one ends up.

    Adding Surface Mount Power to IOIO

    Some career-oriented things have kept me largely out of the Bad Lab. I finally decided to dust of the soldering station and get a permanent power connector surface mounted to my IOIO board.

    I tackled this project before I headed to work…I think the pre-coffee pre-jitter scenario worked out well. Anyhow, this is the component from SparkFun:

    surface mount power jack

    tiny surface mount is tiny

    It is a simple two pin surface mount compact connector. Nice current rating, so I am hoping it will give me enough juice to pull 5V in my pull-up project.

    The issue to overcome in the actual soldering was keeping this little sucker in place and stable to get the first joint in place. My solution, once again, ended up involving my adjustable clamps. These things are great, especially compared to the ‘helper hands’ alligator clip stand. Wonky hands would be more apt.

    clampy

    +2 clamps

    For a little connector, it seems to be fairly secure. I also picked up a barrel jack to two pin connector from SparkFun.

    mount surface

    surface mount mounted

    Hooked up to a wall wart…survey says:

    ioio power

    power-ed up

    We have power. I will test it against some loads, and get back on the pull-up project. Here goes nothing…

    Android IOIO Digital Output

    I am one coding session and one EE session away from having a pretty cool project to post. In the meantime, I am making some progress with the IOIO.

    ioio android speaker project

    +1 a bunch of wires

    Eclipse and I are still having our issues, but the ADK is becoming less Greek to me. The next project should shed some light on what sort of possibilities IOIO presents.

    I shot a video of one of my debugging tests. I eventually will be using an ‘open drain’ setup, in order to get 5V output, but am doing some testing at 3.3V. I hooked up an old speaker that I salvaged from a CRT tear-down to my test pins, to verify that my Android App was working.

    Hit the jump to view said vid…
    Continue reading

    I Need a Camera

    I need either a camera, or a backup Android for dev. I’m shooting for the later. For real though…cash for a used Droid X. Anyone know of a good marketplace to pick a used one up? I’ll entertain offers at joe[at]swantron[dot]com. You know you want an iPhone…

    Here is the motivation:

    i need a camera

    messy lab is messy

    I had to swing the laptop around to snap a picture of my Monday-Funday effort for this week. I need to snap (shoot maybe?) a video of my IOIO work, but I find myself in want of a micro SD card. Both of my 2GB cards are at the office, and my IOIO Android app is sitting happily on my Droid 2’s memory card. For the loss. Loss like the Droid X’s battery tendencies. Really, get rid of that phone. It is awful…I will be doing you a favor by taking it off of your hands. The screen is too big…hard to fit in your pocket, etc. Cash.

    I’ll get a vid up tomorrow. Fear not.