RoombaCtrl: Drive your Roomba with your cell phone

Ever since Bluetooth adapters for Roombas appeared, I’ve wanted to control my Roomba with a cell phone. All my recent phones have had Bluetooth. But getting a devkit for a phone was expensive and phone-specific. Trying to develop J2ME (aka “JavaME”) applications for cell phones has been a mess, especially for non-Windows users. Thankfully, Mobile Processing wraps up the ugly details, like Processing does for normal Java. It makes writing little programs for your phone pretty easy, and makes whipping up a program to control a Roomba possible.

So here’s “RoombaCtrl”, a small Java program for your Bluetooth- and J2ME-compatible phone that works with the build-your-own Bluetooth adapter shown in the book “Hacking Roomba” or the pre-built RooTooth.

RoombaCtrl Demo

Now you can drive your Roomba with your cellphone like so:

Continue reading “RoombaCtrl: Drive your Roomba with your cell phone”

Roombongle! A Roomba USB dongle

The RooStick by RoombaDevTools.com is pretty cool. It’s tiny and it’s USB, which is about all you need for me to bring you home.

But if you want to hack together something similar and you don’t want to build a huge honking Roomba serial tether, you could build the Roombongle!

The Roombongle is a USB adapter that allows you to control your Roomba from your computer, via the Roomba’s SCI protocol. Don’t have a Roomba? Get one!


Continue reading “Roombongle! A Roomba USB dongle”

Arduino breadboard shield: $10 & 10 mins

Do you love Arduino?
Do you think the concept of Arduino shields is just the coolest?
Do you wish you could get some of those neat Arduino Prototyping Shields that Tom Igoe made?
Too bad no one sells them yet, because building your own versions of those boards is a bit out there for us ADD’ers.

Don’t despair, there is a solution to the lack of breadboarduinos. You can build your own Arduino shield with a solderless breadboard in about 10 minutes and 10 bucks. It’s not nearly as full-featured as Tom’s prototyping shields, but it’s great way to quickly add a solderless breadboard to Arduino.

Continue reading “Arduino breadboard shield: $10 & 10 mins”

Sketching in Hardware: USB on Rails

I gave a talk at the Sketching in Hardware 1 conference. It was a great conference, full of amazing people and hosted at an astounding location. I’ll write more on the conference later.

My talk was “USB on Rails”. The USB HID standard enables the sending and receiving of arbitrary data-structures (“objects”) between a host PC and a device. All without any additional device drivers, since the HID driver is built in to all OSs. Many sketching tools or demos use USB, but introducing them to the unintiated means lots of reboots for driver installs. The title is a silly, but half-serious, take of applying the philosophy of Rails to hardware-to-computer interfacing: solve the common case simply, but allow deviations. More on this later, for now, here’s my talk’s slides:


usbonrails-intro-small.jpg

SpiroExplorer, a Spirograph toy

So I’ve written a tool that can turn any parametric equation into a series of Roomba movement commands. Mostly, anyway. The parametric equations I’m predominately focusing on are the hypotrochoid series of equations used in a Spirograph.

To explore the space of hypotrochoid curves I created SpiroExplorer, a simple Processing applet that lets you to adjust the equation parameters in real-time. You can do the following things while it’s drawing:

– left/right arrows change “r”, the radius of the inner moving circle
– up/down arrows change “d”, the pen’s distance from center of the moving circle
– ,/. changes “R”, the radius of the big fixed outer circle
– +/- changes scale
– [/] changes “dtheta”, the increment size (resolution, essentially)
– space bar randomizes parameters
– return key clears the screen

Click the below to play with SpiroExplorer:

spiroexplorer

RoombaComm library, release 0.95

RoombaComm is Java library for communicating and controlling the Roomba. It works on any operating system that RXTX supports. This includes Mac OS X, Linux, and Windows. It also works with Processing. It will soon work with Flash and Max/MSP.

It’s been a work in progress for several months and has gotten a little better as I work through improving it for the book.

Several bugs have been fixed, particularly with respect to Bluetooth on Windows. See the README for some info on that.

Tested systems:
– Mac OS X 10.4 (Tiger) : usb serial & bluetooth
– Mac OS X 10.3 (Panther) : usb serial & bluetooth
– Windows 2000 : usb serial & bluetooth
– Gumstix Linux : built-in serial

Tested adapters:
Homemade RS-232 adapter
Homemade Bluetooth adapter
RooStick USB adapter

Demo command-line programs include:
– DriveRealTime — Drive your Roomba with cursor keys
– RTTTLPlay — Play monophonic ringtones on your Roomba
– Spiral — Roomba drives in ever expanding spiral
– Waggle — Roomba wags like a dog
– BumpTurn — Roomba drives around by itself, avoiding things
– Spy — Read your Roomba’s mind while it works
– Tribble — Roomba purrs and sometimes barks
– RoombaCommTest — Roomba GUI remote control panel (not command-line)

Processing demos include:
– RoombaTune — Play your Roomba like a musical instrument
– RoombaRing — Play RTTTL ringtones on a Roomba
– RoombaView — Full instrument panel and remote control

This is what RoombaView looks like:

roombaview

Download:
– full package: roombacomm-0.95.zip
– Processing library: roombacomm-processing-0.95.zip

Docs:
javadoc
README-0.95
the source tree

Epicyclic Processing Triptych

I’ve been playing around with Processing in order to visualize complex Roomba movements but instead have been having making little graphics programs that amuse me.

Thus the below. Click on each on to start it going.

drunk spiro

gummigiger

gibspiral

I guess this is generative art, but mostly it feels like wanking to me. Lots of fun, but still.