Dec 15, 2010 - Robot: The Search for a Brainstem

And so, the search for a microcontroller to be the I/O controller for my robot begins. The current architecture uses two micros, an ATMega32 on a Polybot Board 1.0 to monitor and control the steering and speed, and a Parallax Propeller on a Propeller Proto Board to do most of the I/O to control and read the sensors. The Propeller board also communicates with a bluetooth serial module that sends all of the sensor data to an android phone, and which processes the data and sends back control commands. Unfortunately, the android phone was borrowed, for a quarter project, and I had to return it at the end of the quarter. Hence, a new brain and a search for a new brainstem.

I suppose introductions are in order.

The Robot:

The Polybot Board:

The Propeller Board, hidden behind all of the interconnect wiring:

The glue logic, on a breadboard:

Since I'm adding yet another board to the robot, and it's already pretty crowded, I think it's time to consolidate the two microcontroller boards into one. Requirements for my ideal controller board are:

This totals to 27 I/O pins, with at least 3 UARTS (ideally in hardware), an A/D converter, and possibly servo PWM hardware or timers. Finding a microcontroller with 3-4 hardware UARTS is tricky, and it makes the propeller an option.


Advantages: Propeller Disadvantages:


As much as I love the AVR architecture, the Polybot board doesn't have enough UARTs to even talk to the brain and the sonars, so it's out.

Sparkfun XMega

Advantages: Disadvantages:

Arduino Mega 2560

Advantages: Disadvantages:

Xilinx II Board

Advantages: Disadvantages:

And with that analysis, I'm still a little torn. The development environments for the Propeller board and the Xilinx board are both windows-based, which isn't something I want for a long-term project. With the Xilinx board, there's pretty much no chance that I'll be able to work with it from my linux machine. That leaves me with two choices:

A Second Look

Arduino Mega:

The Arduino Mega is incredibly appealing, but it's still more new hardware to buy, which is a big disadvantage on my budget, but as long as I'm buying hardware I'd go for the better of the two.


With the propeller, there are development tools for linux, but they require a significant amount of learning, I'm still stuck with either Spin or assembly, and I'm not a big fan of Spin, and while assembly is fun, it's a bit too low-level for the programming I need to do. A C compiler for the propeller exists, but it requires an external memory to write anything much bigger than Hello World, and if I'm going to purchase something, I'd rather buy a complete board.

The jury's still out.

EDIT: I made my decision and purchased the Arduino Mega 2560.