I’m preparing to publish a project utilizing the new bluetooth library for the IOIO. I started horsing around with my IOIO Servo Controller application, and finally got frustrated with the lag that was existing between my slider bar and the servo. I never pulled my improved function from my IOIOSeek work over…it was overdo.
Anyhow, I sort of cleaned house and put together an improved interface, and pushed it to github.
Here is a quick vid of the new app in action:
I pushed a new apk to the Android Market as well. If you have it installed, it should update in the morning. Here is a sneak peek of the updates:
*Optimized code to alleviate lag between slider bar and servo positions.
*Increased minimum version requirements, for future bluetooth connectivity
*Added function to keep slider in an inactive state until IOIO connection made
*Cleaned up code to remedy force close situations
*Remapped PWM pin from 5 to 10 for consistency with my other apps
*Removed text field of slider position / on board LED
*Simplified layout for smaller screens
I pulled some function, but am more than willing to reintroduce the relative readout and/or on-board LED display. I am trying to go simple with this one, and ramp it up once I can figure out the lag that the bluetooth connection will introduce.
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.
I kept the second bare bones, except for the pins I would need to do the actual programming.
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.
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.
In preparation for my next project, I have beefed up my app to support four simultaneous servos, three real-time analog readings, and two binary digital outputs. I cleaned up the UI, and added some README details. You can snag the app or update on the Android Market (search for IOIO)
Pop over to the Android Market and give a review if you have it going v
As the commits hint, I have pushed my code out to my GitHub page. Fork that thing. Stay tuned for the next project…I just need to find some time to smash together the hardware and we’ll be good to go.
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.
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.
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.
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…
Bad: Ytai, the creator of IOIO itself, let me know that my code is in need of an overhaul. Big time.
I am experiencing too much lag…losing a ton of time in the writing phase of my app. Expect an overhaul of said code, in preparation for my next project.
I have seen some activity on both of my apps on the Android Market. I feel some moral obligation to fix both apps, cite some versions, etc. This one could take some time, but should result in a pretty sweet project. On a strange note, Ytai has a sample app that handles the analog input that I need for my next effort. I should be able to stand up a project before too long…pretty pumped.
Anyhow, check that code if you are bored. Really bored. I will update when I get some decent code committed…until then…
I just doubled my Android Market presence with one fell swoop. IOIO project number two is in the books: IOIO Servo Controller.
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.
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…
I put together a simple proof of concept using a slider to control a PWM pin out…simple is an understatement.
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.