For Lazlo's brain, I went with a VIA EPIA PX10000G. It's a full 1Ghz PC in the incredible Pico-ITX form factor (10cm x 7.2cm). It has built in VGA & DVI/LVDS, audio, 100Mb ethernet, IDE & SATA, 4 x USB, Serial & PS2 ports, and 1GB of RAM. A little spendy, but worth it for the size.

This little computer runs Windows XP great and provides enough power to easily manage all the I/O, runtime logic, networking, and multimedia (sound effects, video, LED displays, etc). All at a very reasonable amount of current draw.

For storage, I currently have a 60GB 2.5" IDE hard drive from an old laptop. I experimented with CF drives, but the speed and size wasn't there (at least not for a reasonable price). Power consumption was the main bonus, but not so significant to justify the cost. I'm sure solutions will get cheaper and cheaper and with this being a PC, it will be easy enough to swap out.

ATX Power Supply

To power the motherboard, I chose the M3-ATX automative power supply. A 125w ATX power supply that is extremly effcient and designed for the harsh electrical environment of a car's electrical system (such as spikes, noise, low and high voltage, etc). As an automative based suply, it also has features for turning the motherboard on and off from a remote low current switch and low power automatic shut downs (first by telling the PC to shut down properly, if it doesn't, it ends up yanking the power all together).


I decided to use Phidgets as much as possible for all auxiliary boards. Mostly for ease of programming to a single API and driver. Phidgets make interfacing dead easy via a USB port and very well written API (with support for just about every language). Input I/O raise events, don't have to poll. Working with 1 Phidget is just as easy as working with 100 of them. I've used them in the past with great success. So, you will see reference to them in many places on this page. :)

Motor Controller

To control the two main drive motors of Lazlo's differential drive system, I chose a Phidget 1064 for controlling them. It sports a number of very cool features I plan to use. Such as keeping all the motor control stuff isolated from the USB port (no frying of the motherboard if hooking up something wrong or a short develops), control of velocity and acceleration, and very nice is the API notification of over voltage/temperature/current so that the robot can react and take appropriate actions (like shutting drive system down, sending an email with readings, etc.

Main I/O

The primary I/O system is a Phidget 1018 which gives me 8 DIN, 8 DOUT, and 8 ADC. I'm considering getting a second one, although if so, I'll probably go with the 1203 which combines it with a 2 line LCD screen (to replace the Matrix Orbital one I currently have).

Servo Controller

I currently have an old Phidget 4 port servo controller which I can't even find on their site anymore. 4 servos is not enough for some of my plans, so I need to get another one and will go with the 8 port 1061 which in addition to supporting 4 more servos, it also provides current draw feedback and better control of velocity, acceleration and, position.

LCD Display

I currently have a Matrix Orbital LK202-24-USB (rev 1.00) two line LCD display for textual feedback. It's red backlit screen is controllable from software. It connects and is powered by a USB cable. Although I plan to replace it eventually with a Phidget 1203 (which also includes a lot of I/O), for now the Matrix Orbital works well with a C# wrapper object I wrote for it).

Mounting The Boards


Tech Notes/Info

Various bits of info I want to keep track of…


Mainboard Power Supply


LED Text Display



Front Panel Connector

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License