Microcontrollers and Single-Board Computers
The number and type of microprocessing systems available to ATS members has grown by leaps and bounds in the last few years. Below we will try to cover a few of the more popular ones.

Go to the top...

Arduino
The Arduino is, by many accounts the "defacto" single board embedded controller system favored by many in the robotics community. This system, with it's good mix of analog to digital (A/D) and digital input output (DIO) pins, along with it's easy programming have made it a veritble cottage industry all by itself.

Go to the top...

Arduino Resources
  • Arduino Homepage - From here, you can download the integrated development environment (IDE) that will allow you to write/compile programs for the board. This is done using a version of the GNU gcc+ compiler.
  • Freeduino Knowledge Base - This site has a number of end-user contributed modules for the Arduino. Some of these are code designed around a particular device. Some include the circuit diagram necessary to use the device.
  • Lady Ada is a company/person that has developed a number of Arduino based kits. Of interest among these are the Boarduino, an Arduino built in such a way that you can plug the entire thing into a solder-less breadboard.
  • One Chip Arduino takes the concept of the Arduino to a whole different end, in that it "piggy-backs" all of the board components and glues/solders them onto the chip itself, cutting down on the amount of board space necessary to have Arduino functionality.

Go to the top...

PIC Processors
PIC processors, produced by MicroChip, are very popular among the robotics community. These chips offer many desirable features that make them well suited to this task. Among the more interesting are:

  • FLASH memory for the program (no cumbersome Ultraviolet eraser)
  • EEPROM programmable from the CPU
  • Analog to Digital converters
  • Pulse Width Modulation generators
  • Timers for internal and external events

Additionally, they are small and require few external components to either run or program. They run from a fairly wide voltage range (many can be connected directly to batteries thus eliminating the need for voltage regulators).

There are a number of languages, assemblers, and tools available for PIC processors. This caused me quite a bit of confusion early on in my dealings with this processor. Some of the players in my confusion were Parallax and Ubicom (formerly Scenix) who manufacture different versions of the same chips. Both of these companies use what I can only call a 'macro' version of the Microchip assembler. These macros make using the Microchip instruction set somewhat easier, but at the cost of a bit of obfuscation of what is actually going on on the chip. You see, each of the Parallax format instructions actually may be several Microchip instructions.

The Parallax version of the assembler language has a few advantages. Number one is that it is the native assembler format for the Scenix chips. These chips are basically a souped up Microchip without many of the on-chip peripherals (no A/D converters for instance), but they run four times faster than the PIC processors. Thus, if your robot code exceeds the operating parameters of the PIC processor you started on, you can "move up" to a Scenix processor, and if you were using the Scenix format assembler code, most of what you had labored to create would port to the new Scenix chips without modification.

Parallax pre loads Microchip processors with what amounts to a BASIC interpreter on the chip. Their tool set differs in that it is targeted at doing BASIC in a GUI based tool. These chips have gained wide acceptance as the "best" portal into the micro-controller world of robots. However, as one might expect, they process your code quite slowly. Thus, doing intricate coding, relying on the CPU clock cycles of various code segments to get a specified timing value for a given robot function is nigh to impossible.

Go to the top...

PIC Resources
Below, you will find links to various tools that I like for PIC programming. These work for me quite well.

  • JDM PIC Programmer is a wonderful PIC programmer. It is small, cheap, and operates off of a generic serial cable. A friend of mine loaned me one of his that was basically a merger of the base circuit plus the "in circuit programmer" header. The whole thing is smaller than a bar of soap.
  • CVASM is an assembler for the PIC and Scenix chips. It understands both mnemonics. It is from Tech Tools and they also have a web site just brimming with other PIC information.
  • IC Prog is a serial down loader for dumping compiled programs onto PICs. It will also program serial EEPROMs and a few other things.
  • Microchip has various links off to their assembler, the instruction sets, etc.
  • Nuts and Volts Magazine is a wonderful magazine for the budding PIC programmer. There are often articles on constructing various PIC projects within its pages.

Go to the top...

Zilog Z80 - Hitachi 64180
My own robot experiments started with the Hitachi 64180 chip, a 1M version of a Zilog Z-80. The 64180 also had two serial ports (with on-chip UARTS), several timers, and numerous other improvements on the basic Z-80.

My then room mate and good friend was working on his ECEN senior project, a computer console multiplexor. For this project he used the Hitachi 64180. In the process of developing this project, he wrote a monitor system, affectionately called "MONROM", that allowed for single stepping of the processor, setting interrupt vectors, etc. He later allowed me to make use of this in developing my own stand alone 64180 CPU card.

Once my card was working, I then undertook finding an operating system (of some sort) to make use of this card for a robot. At the time, most all operating systems were both disk based, and proprietary (thus pricy). While looking around USENET, I came across several versions of FORTH for the Z-80 platform. Once I had a keyword in my hand, I hit the OSU Libraryand found Threaded Interpretive Languages : Their Design and Implementation by R. G. Loeliger. This book was a gold mine of information about FORTH, and presented an abbreviated version of it already ported to the Z-80 architecture. I took this source code, along with various code snippet from "MONROM" and came up with what I dubbed "Card Forth".


Using Card Forth, I was now able to write programs interactively to control a robot. Using this and basically all of the books listed on my books page, along with then about five years of robot building experience, I went about fashioning "BasketBot". Hidden beneath it's upturned laundry basket, the 64180/Card Forth combination proved to be quite entertaining. It could wander about a bit, it had bumper sensors to tell when it was hitting on things. It had a Texas Instruments speech synthesis chip (sold by Radio Shack at the time), so it could talk. It had the prerequisite beepers, tilt sensors, and the like, but overall wasn't too great.

BasketBot was simply too large for the apartment that I was living in at the time. Heck, it's still too large, even though I've got a house now. In any case, I took the lessons learned in that experience and went a different approach for my second 64180 project, a micro mouse.

My micro mouse never reached completion. It was designed around the same 64180 core, and I still have the computer. It shared much of the same circuit diagram as BasketBot (hey, why jinx a good thing), but never saw movement.