Let's Make Robots!

Arduinoid Mk I

An Arduino-based robot that uses an Android phone as brain

This is an autonomous robot that can traverse the house detecting obstacles and reacting accordingly. The fun part is that it uses an Android phone as "brain", leaving the sensor and motor management to an Arduino UNO. Both are connected using serial communication and a simple request/response protocol.

The robot itself is pretty simple. Two DC motors are used for movement and an ultrasonic sensor is employed for obstacle detection. The sensor is attached to a servo motor in order to sample distances in several directions (left, right and center). Motors are powered by 6x1.2V rechargeable batteries.

On the other hand, the Android app sends commands like "scan", "forward", "left", etc, to the Arduino core. Once the action has been completed, the Arduino responds with the results (if it was a scan) or an ACK for movement actions. After receiving the response, the Android app decides what to do next based on simple rules. For example, if a "scan" command results in nothing being detected at front, the "forward" command is sent. Otherwise, the app may choose to turn left, right and drive backwards.

Additionally, the Android app includes an alternative interface resembling a remote control for manual operation. I use this mostly for testing that all commands are executed correctly.

Future versions will make use of the phone's capabilities like GPS, cameras, accelerometer and wifi/bluetooth connectivity. I will add more sensors and actuators to the robot as well.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

I like it. I like the multi-processor affair. Leave teh hard sums to the high-level processor.

Where do I find the idiot's guide to Android programming? I've got ADT installed and I'm completely comfortable with Java (and many other languages) but the Android API is just a complete mess of wriggly worms for me!


@BaseOverApex you're absolutely right about Android APIs. It took me quite some time to become productive and I still feel like a noob most of the time. Fortunately, there exist lots of tutorials and examples beyond the official documentations. In particular, I'm using this library to implement the serial communication. I tried several approaches and that is by far the simplest and most stable one.

I'm actually busting for a Bluetooth library. Have you SEEN the developer's page for Bluetooth? Last time I used Bluetooth was on a PalmPilot, and it just appeared as an extra serial port. All this stuff to set the damn thing up is a real puzzle.