Mk. III graphic

User's Guide




Buy Robots!
View Cart


Printable Version

Mark III Robot
User's Guide
Technical Reference


History (Mark I, Mark II)

The Mark III Robot is the successor to the two previous robot kits designed and sold by the Portland Area Robotics Society. PARTS founder Marvin Green organized the first PARTS MiniSumo competition at the Oregon Museum of Science and Industry (OMSI) in 2000. He developed an inexpensive kit, known as the "Mark I" or "Marvin Slyder" to sell to contestants and stimulate interest in the event. This first contest was a success, with x participants, free kits to schools, etc. A description of MiniSumo Mark I can be found at

A second annual contest was held in May of 2001, also at OMSI. Once again, an inexpensive robot kit, the "Mark II", was sold by PARTS to encourage participation. The Mark II was very similar to the previous year's Mark I, with the exception of the infrared proximity sensors used to detect the opponent robot and a small modification in the chassis design. Marvin Green, Pete Skeggs, and Daryl Sandberg collaborated on the design of the Mark II. Details of the MiniSumo Mark II can be found at

The first two kit designs, the Mark I and Mark II, were made specifically to be MiniSumo robots - that is, to compete exclusively in MiniSumo contests. They were both quite capable of that task.

The Mark II was the starting point for the design of the Mark III. Change CPU, improve all aspects of the Mark II, including price and performance. Sold as an entire kit. More complicated, but still accessible for beginners and more importantly general-purpose and expandable. Tim Rohaly is now selling Mark III kits at

Other changes - event renamed PDXBot, with the 2002 event earning the designator PDXBot.02. Relocated to Portland State University's Smith Center Ballroom, larger capacity.

Mark III as general-purpose robot

Everything in one kit, can use kit for more than just MiniSumo. Part of kit, e.g. Controller board, can be used on other robots.

PIC with bootloader is basic architecture

More powerful than Basic Stamp, no special equipment required.

Design Goals

Goals mirror the goals of PARTS as an organization. Namely...


The reason PARTS has spent the time and effort to create an affordable robot kit is to enhance the annual event, PDXBot. More information on PDXBot, including event, rules, instructions for participating, can be found at

License terms

PARTS holds the copyright to the Mark III design. The Mark III hardware design and associated software are available for any non-commercial or non-profit use without restrictions. If you want to use them commercially, you need to contact PARTS at and get permission. Complete details of the license are available at

Legal Disclaimer

Whereas if we could afford a lawyer, this would be a nicely worded legal statement that would be as airtight as a hatchway on the Space Shuttle. But since we can't, we can only warn you in writing to be careful.

If improperly handled, this thing can be dangerous! Please watch for sharp edges and don't put any parts in your or anyone else's mouth. And for gosh sakes, be real careful with the soldering iron! Grab it by the cool end because the other one gets hot enough to melt metal.

If you're under 18, make sure your parents know what you're doing. If you're real young, you should have an adult help or at least supervise.

We are not responsible if you hurt yourself or anyone else while assembling or using this robot. We cannot assume any liability even if you act a fool and break something valuable. If you do, we can say we warned you and it's your fault, OK?

While we're disclaiming, we also need to say that we don't guarantee this product will even work. We just know it worked for us after assembly and are pretty sure it will for you.



  • Create electronics and mechanics that are useful not just for mini-sumo, but for general-purpose robotics
  • Modular and adaptable with great potential for expansion
  • Serial port programmable
  • Supports as wide a range of computing platforms as possible
  • "Open source" hardware, so others can use the design


  • CPU - PIC16F877 20MHz. Circuit is derived from Rick Farmer's PIC EVB and is compatible with the OOPic
  • PCB - 2.4" by 3"
  • Mezzanine boards - stack on top of main PCB, provide prototyping and optional sensors
  • Computer Interface - Standard serial RS232. DB9 connector. 8N1, no handshaking.
  • 40-pin OOPic-compatible header for interfacing to mezzanine boards and/or OOPic-compatible expansion boards. All PIC lines brought out to header.
  • Firmware - Rick Farmer's PICLoader
  • Low-battery indicator

Mezzanine Boards

Mezzanine boards are optional.
  • Two mezzanine board designs:
    • General-purpose prototype
    • Multiple optional sensor boards
  • Sensor mezzanine board has areas laid out for the following:
    • Quad H-Bridge for DC motor control
    • Two-axis accelerometer
    • 8 12-bit Analog inputs
    • 8 Digital inputs
    • Handyboard-compatible Digital I/O
    • Eltec PIR sensor
    • Piezo speaker


The body is 2 pieces: a chassis and a removable scoop. The controller board connects to the body with four 1.375 inch long standoffs. The design of the chassis, scoop, and standoffs is based on Dan Gates' prototype. The scoop may be detached and replaced with a caster wheel or other means of support. Wheels are custom-made, injection-molded out of ABS plastic.

Sensors (standard)

  • Line Following. Use the Fairchild QRB1133 or QRB1134 photoreflector.
  • Ranging. Use the Sharp GP2D12 infrared ranging sensor. Provide software for proximity triggering.
  • Other sensors are optional and can be interfaced through the 40-pin header.


Please read through the documentation before beginning this project. This will give you an idea of how all the pieces go together and how to make modifications. A basic knowledge of electronics, soldering, and programming is a good idea to be successful with this project.

Before you start building the Mark III, be sure you have the following:

  • Soldering Iron/solder
  • Wire cutters
  • Needle nose pliers
  • Utility knife/X-Acto
  • Hair dryer (for heat shrink)
  • Jeweler's screwdriver (for servo adjust and JST IDC connectors)
  • Plenty of time
  • Digital Multi-meter (optional)
The Mark III Robot is designed to be a starting point for your custom robot. Be inventive, be creative, create a unique robot of your own by making modifications. Try different things, move things around, try different sensors, change the software.

Building the Controller Board

The Controller board is the "brains" of the Mark III robot. It hold the microcontroller along with the associated circuitry necessary for its proper functioning: a power regulator, serial interface, and connection points for the off-board sensors. Most of the work to build the Mark III - and all of the soldering - goes into building the Controller board.

Parts List

Before you begin, remove all the parts from the bag they came in and match them up against the following parts list. It is especially useful to match up the resistors to this list using the color code, then tape those resistors in place on the printed parts list for future use. Don't try this with the integrated circuits, since they are static-sensitive and might be damaged if you do this.

C11040.1uF axial capacitor 50V Z5U
C21040.1uF axial capacitor 50V Z5U
C31040.1uF axial capacitor 50V Z5U
C41040.1uF axial capacitor 50V Z5U
C51040.1uF axial capacitor 50V Z5U
C61040.1uF axial capacitor 50V Z5U
C71040.1uF axial capacitor 50V Z5U
C8100uF100uF radial aluminum electrolytic capacitor 16V
C9100uF100uF radial aluminum electrolytic capacitor 16V
C101040.1uF axial capacitor 50V Z5U
C111040.1uF axial capacitor 50V Z5U
C121040.1uF axial capacitor 50V Z5U
C1333uF33uF radial aluminum electrolytic capacitor 6.3V
C1433uF33uF radial aluminum electrolytic capacitor 6.3V
D11N41481N4148 Fast Switching Diode
D2 Red T-100 LED
D3 Green T-100 LED
J1 40 pin 100mil pitch dual-row header
J2 100 mil pitch 5-pin header
J3 100 mil pitch 3-pin header
J4 100 mil pitch 3-pin header
J5 2.0mm pitch 3-pin shrouded header
J6 2.0mm pitch 3-pin shrouded header
J7 DB9 Female PCB vertical mount
JP1 6-pin 100 mil pitch dual-row header
1K Ohm 1/8W 5% resistor
1M Ohm 1/8W 5% resistor
4.7K Ohm 1/8W 5% resistor
4.7K Ohm 1/8W 5% resistor
7.5M Ohm 1/8W 5% resistor
2.4M Ohm 1/8W 5% resistor
56 Ohm 1/8W 5% resistor
Spare 56 Ohm 1/8W 5% resistor
22 KOhm 1/8W 5% resistor
22 KOhm 1/8W 5% resistor
22 KOhm 1/8W 5% resistor
1K Ohm 1/8W 5% resistor
1K Ohm 1/8W 5% resistor
1K Ohm 1/8W 5% resistor
S1 600 mil 40 pin DIP socket
SW1 DPDT Slide Switch
SW2 6.0mm Tact Switch
T1 Terminal Block 3 positions 3.5mm pitch
U1PIC 16F877 - 20/PPIC16F877 DIP 40
U2MAX667250mA LDO Regulator
U3DS232ADual RS-232 Transmitter/Receiver
U4 Unused
Y1ZTT 20.0MX20.00MHz Resonator w/caps

Schematic and PCB Layout

Assembly instructions

Board The picture on the left shows the top side of the bare printed circuit board (PCB) for the Mark III Controller. This is the side on which the components are placed. Soldering is done on the reverse side of the board. The assembly of the Controller starts with the smallest pieces first, and moves up by size. Working with the smallest components makes the soldering job easier because you can rest the PCB on your workbench to hold the parts in place while you solder. If you did the taller components first, the smaller ones would tend to fall out while you had your PCB inverted for soldering.

The first items to mount are the ten 0.1uF axial capacitors. Capacitors are not very static or heat sensitive, so they are a good place to get used to soldering if you're not completely comfortable. These capacitors are all the same and come attached together in your bag of parts, so they should be easy to identify. In order to mount them, you must first bend the leads (wires) to a ninety-degree angle so that the leads will fit into the holes in the PCB. BendLeads Once the leads are bent, you can insert the capacitors into their locations on the PCB. Do one then test. It may take a few to get the spacing right - but this is the spacing used throughout the board so once you get it everything else will turn out right. It doesn't have to be exact. After inserting each capacitor, spread the leads a bit on the back side of the board to hold the capacitor in place. It makes it easier if you rest the board on something like a roll of box tape - this elevates it off your workbench and lets the leads hang down without obstruction.

Put all ten capacitors in their positions (C1-C7, C10-C12) then turn the board over to expose its bottom for soldering. Solder one leg of each, then turn the board back over and examine to make sure all the capacitors stayed in place and are not "floating" on top of the board.
If one slipped out of position you still fix it at this point by heating up the joint while pushing the capacitor back into place. Don't use your fingers to push - the leads get very hot. Use a small piece of wood or some other insulating material that won't melt. When you're satisfied everything is correct, go back and solder the remaining leads.

After soldering, you should make it a practice to visually inspect each completed joint. Take a good look to make sure the solder fills the hole in the PCB and to make sure that all the leads have been soldered. Once you've looked it over and corrected any problems, clip off the excess leads on the back side of the board so they don't stick out too far.

First step done!

Now for the resistors. See Appendix for resistor identification - there are a lot of different values included in this kit. First step is to lay out all the resistors and identify them. Compare against list of materials (insert resistor component list here). Note that you are given one extra 56 Ohm resistor - save this for later. If you have any doubts proceed by the process of elimination. Colors aren't always easy to distinguish on resistor bodies. Again, resistors aren't very sensitive to static or heat so they are a good way to get used to soldering.

Bend the resistors leads exactly the same way you did the capacitor leads. The component bodies are about the same size, and the hole separation on the PCB is the same. Once again, insert all the resistors at once, turn over and tack down one lead, turn over and inspect, make and necessary corrections, then finish soldering. Resistors

Now you've had plenty of practice - 23 components soldered! Time to move on to the harder parts. Next, we're going to put in the Diode at D1. This is the first polarized component on the board. Meaning, unlike the capacitors and resistors we have encountered so far, diodes must be inserted in a particular way - there is a difference between pin 1 and pin 2, and if you insert it the wrong way your board won't work. The appendix discusses polarized components and how to recognize which orientation is the proper one.

Diodes are also static sensitive - electrostatic discharges from touching these components can generate thousands of volts at the lead - enough to damage the component. It is good practice to keep yourself grounded while soldering these. Wrist strap, touching ground, etc. They are also heat sensitive - if you allow the soldering iron to remain on the part for too long, the temperature will damage the part. You have a few seconds - solder the part then move on. If you make a mistake, give it time to cool down before trying to correct it.

Bend the diode leads just like you did for the capacitors and resistors, then insert the diode into the board. The silkscreen on the board shows an outline of the diode, with a triangle and a stripe. The point of the triangle is towards the stripe. The end of the diode with the band around it matches up with the stripe on the silkscreen. See the Appendix for an illustration.

Integrated circuit chips. There are two we are going to solder in this step, the MAX667 Power regulator (U2) and the DS232A serial transmitter/receiver (U3).

Location U4 is reserved for the optional EEPROM. It should be left unstuffed in the default configuration - don't accidentally put the MAX667 in this location! U4 is used to add a serial EEPROM to the Mark III. This EEPROM adds up to 256Kbits of memory to the PIC, for general use. If you choose to use an OOPic instead of a PIC, this EEPROM is mandatory. If you use just a regular PIC, the EEPROM can be useful because the PIC only provides about 300 some odd bytes of RAM storage.

DIPs are polarized and static sensitive. Find pin 1 and make sure that the DIP is oriented properly. Insert into board. The legs of the DIP may be spread too far apart to insert - if so you will need to squeeze them together before you can insert the chip. The easiest way to do this is to insert the legs on one side of the chip halfway, then while holding the chip by the ends apply gentle pressure to simultaneously bend the all legs that are already in the board. Turn board over. Fasten opposite corners with a quick dab of solder then turn back over and check to make sure chips are properly seated.


A 40-pin socket is provided for the PIC chip; this allows the PIC to be easily removed or replaced and also raises the PIC off the surface of the printed circuit board, making room for some resistors to sit underneath the PIC. The socket has a semi-circular notch cut into one end - align this with the corresponding notch shown on the silkscreen. Just like you did with the integrated circuits in the previous step, use a tiny bit of solder to fasten two opposite corners of the socket, then turn the board over and examine it closely to make sure the socket is properly seated. When you are convinced it is, you can solder the remaining pins. Don't forget to go back and make sure the two original corners you soldered get properly fastened.

Tact switch. This push-button switch is used to reset the PIC. The reset switch only fits in two ways, rotated 180 degrees from each other. Either way will work.

Next we will solder in the two small 3-pin shrouded headers (J5 and J6). Notch facing toward the center of the board. Asymmetric - check to make sure that the outline on the PCB matches up with the header. If the PCB outline sticks out a lot, you probably have it backwards.

Electrolytic capacitors. Check for the "-" pin (called the cathode), labeled on the capacitor body with a broad white stripe. The cathode is also the shorter lead. Make sure it goes in the correct hole. The silkscreen has a "+" next to the square pad, the round pad is where the "-" pin goes. This is very important - if power is applied to an electrolytic capacitor in the wrong orientation it may explode! See the Appendix for an illustration.


Resonator Y1. Resonator is not polarized, insert it either way.

LEDs. Light Emitting Diodes - everything we discussed re polarization, heat, static applies here as well. The LEDs are inserted so that the short lead goes into the square pad. The square pad is shaded white on the silkscreen.


Headers, 40-pin and 6-pin at the same time, then the two 3-pin. Again, tack corners (or just one pin, in the case of the 3-pin headers) then turn over to make sure that it is seated properly before doing the final soldering.

Power jack (the black, three-position terminal block) should be inserted so that the wire receptacles face the outside of the printed circuit board.

I²C header (5-pin white header) oriented so that the back (tension relief) is against the DB9 connector.

Power Switch can be inserted either way.

DB9 Serial connector only fits one way. Be sure to solder the locking standoffs to the PCB - this provides strain relief as well as a good ground.

Last step is to insert the PIC chip into the socket. Again, the leads of the PIC may be spread too wide to fit directly into the socket. When finished, your Controller Board should look like this picture:

Building the Chassis

The chassis is the mechanical base for the Mark III - it is where the motors are mounted, it holds the electronics and sensors in place, and it provides a stable foundation for additions. The chassis consists of a base plate, a scoop, four standoffs, a 4AA cell battery holder, a 9V battery snap, and assorted fasteners to hold everything together.

The "Rev2" chassis design has shipped with all Mark III Kits sold since September 2002. The photographs in this section still show the "Rev1" design. However, the PDF drawings of the chassis and scoop are accurate and should be consulted if there is any confusion as to how the pieces fit together.

Parts List and Assembly Drawings

Before you begin to build the Chassis, remove all the parts from the bag they came in and match them up against the following parts list:

19V Battery Snap
14 AA Battery Holder
1Chassis Body
1Chassis Scoop
84-40 .375" phillips pan head sheet metal screw
4Standoff 1.375 inch
54-40 .375" phillips pan head machine screw
54-40 Hex Nut
2#4 Internal Tooth Lock Washer
4#4 Nylon Washer
46-32 .500" phillips pan head machine screw
46-32 Hex Nut
22" Velcro Hook Strip
22" Velcro Loop Strip

Note that the 6-32 screws are larger than the 4-40 screws, and the sheet metal screws have pointed tips while the machine screws have square tips.

Full-scale drawings of the Chassis and Scoop are available to show the dimensions and relative positioning of these parts in the Mark III robot:

The first step in assembling the chassis is to find the base plate. It is a powder-coated aluminum rectangle, with a large tab bent up in the rear and a small tab bent down in front. Four holes provide the attachment points for the standoffs/servo mounts. A slot on the front end is used to pass the wires from the underside of the chassis to the electronics.

Standoffs to chassis

After you have identified proper orientation of the base plate, it is time to attach the standoffs. The standoffs are four pieces of 1.375" long, 7/32" square aluminum tubing, filled with an ABS plastic core. Standoffs The standoffs serve double duty: first, as mounting posts for the servo motors, second, as attachment points for the controller board. The standoffs are not symmetric - the hole through the side of the standoffs is closer to one end than the other. Be sure to orient each standoff so that this hole is closer to the base plate end of the standoff. Standoff_hole Standoffs should be oriented so the hole is facing the side edge of chassis. Hole should be nearer to the bottom than the top. Fasten the standoffs to the chassis with the four #4-40 3/8" sheet metal screws. The screws go into the holes in the end of the standoffs, and create their own threads as they are screwed in. ChassisWithStandoffs Defer final tightening until all components are in place.

Servos to standoffs

Before you perfom this step, you need to modify your servo motors for continuous rotation. The procedure for doing this is shown in the Appendix. Don't attach your servo motors to your chassis until this modification is complete, otherwise you'll just have to take everything apart again.

Use the four #6-32 machine screws and four #6 hex nuts to attach the servos to the standoffs. Make sure the head of the screw is facing the outside edge of the base plate so you have access to it if it needs tightening. The servos should be positioned so that the axle is closer to the rear standoff than the front. This puts most of the weight of the servo in front of the axle. Servos If you want to use the rubber grommets that come with the servos to provide cushioning, mount the grommets on the outside of the standoffs between the standoff and the servo flange. Grommets push the servos toward the outside of the robot, making your robot wider. Be sure to stay within size limits! Grommets

Line sensors to scoop

Now find the scoop. The scoop is the smaller piece of powder-coated aluminum. It has three holes along its length for attaching the line sensors. Line sensors are in a package with a hole in the middle. Attach to scoop with a #4-40 3/8" machine screw and #4 hex nut. Screw head should be facing the front of the robot, with excess screw and nut on the underside. Don't tighten too much, or you may crack the plastic of the sensor case. LineSensors Attach the sensors loosely at first, don't tighten until after you have everything together. You will need to adjust the sensor height at a later time - slide the sensor up or down along the mounting slot in order to raise or lower the sensor. Optimal sensing distance is about 0.2" from the floor. LineSensors_adjustment

Scoop to chassis

After you have the sensors mounted on the scoop, you may attach the scoop to the chassis. Use two #4-40 3/8" machine screws. Scoop The screw head should be facing the front of the robot, with the excess screw underneath the robot. Thread the wire from the center sensor through the slot before you attach the screws. ChassisWithoutBoard You will also need the two #4 lock washers here - the lock washers keep the screws from rotating when the proximity detectors are mounted. Put the washers on the ends of the screws then fasten the screws in place with the remaning two #4 hex nuts. Again, don't do your final tightening - we will have to remove these screws in a little while to mount our infrared proximity detectors.

Battery pack/Velcro

Two 2" strips of adhesive-backed Velcro are included in the kit for attaching the battery pack to the underside of the chassis. Velcro You may stick two strips of either the "hooks" or the "loops" to the back of the battery pack. Whichever you choose, make sure you don't mix them; you should have either two hook strips or two loop strips - not one of each. Velcro_on_pack After you have attached the Velcro to the battery pack, fasten the unused strips to the strips you have just mounted, remove the adhesive, and carefully press the battery pack to the underside of the chassis. Velcro_to_chassis You should make sure that the batteries are oriented side-to-side, so that the full width of the chassis is taken up by the battery pack. Also try to position the battery pack as far forward as possible, without interfering with the line sensor wires running through the slot in the chassis. Positioning the pack forwards improves the weight distribution of the Mark III. BatteryPack

Assembling the Mark III

After completing all the above steps, it is time for the final assembly of your Mark III Robot.

Controller board to standoffs

The first step in the final assembly is to fasten the Controller board to the standoffs. Position the Controller board so that the serial connector is toward the rear of the chassis. Attach the Controller board to the standoffs using four #4-40 3/8" sheet metal screws. Once again, the screws go into the holes in the end of the standoffs, creating their own threads as they are screwed in. Because the mounting holes on the Controller board are large, you will need to use the four #4 washers provided to keep the screw heads from slipping through the holes. Thread the screws first through the washers, then through the Controller board, and finally into the standoffs, as shown in the picture below. ControllerBoard

Now you can finally tighten down all the screws that fasten to the standoffs.

9V placement

The 9V battery which powers the electronics slips in between the rear standoffs and the rear panel. 9VBattery It is a good idea to put a piece of electrical tape or masking tape along the top edge of the 9V battery so the metal case of the battery doesn't short out the electronics if the battery accidentally comes into contact with the bottom of the Controller board while the power is on. If the battery doesn't fit snugly, you can wrap several turns of tape about the body of the battery to increase its width.

Attaching the Line Sensors

To attach the line sensors, solder the wires directly to the pads on the Controller Board. (If you desire, you may make connectors for the line sensors, but the kit does not include any connectors.) On the Controller Board there are three groups (U5, U6, U7) of four pads, each pad is labeled with the color of the wire that attaches to it, O (orange), G (green), B (blue), and W (white). The left group of four pads, U7, is for the left line sensor, the right group, U5, is for the right sensor, and the center, U6, is for the center sensor. If you insert the wires from the bottom of the circuit board, the wires will be short and out of the way.

A length of 1/8" diameter heat shrink tubing is included in the kit. This may be used to keep the line sensor wires together in a neat bundle. At this point in the assembly you will have a good idea of how long the wires for the line sensors have to be and how they will be routed to the circuit board. Cut the heat shrink tubing to length and slip over the wires, shape the bundle to fit, and use a hair dryer on "high" setting to shrink the tubing. This may take a while, as many hair dryers are barely hot enough to cause shrinkage. Shrink

GP2D12 cable assembly

The Sharp GP2D12 sensors have an unusual small white header mounted directly on the sensor. Your Mark III kit has been supplied with the mating connector. This is an Insulation Displacement connector designed for use with 26 AWG stranded hook-up wire. Use the excess wire from your QRB1133 sensors to make small cables for your GP2D12 sensors. These cables only need be a few inches long - they will have one connector at each end. To fasten the wire to the IDC connector... These are Insulation Displacement Connectors - you're supposed to leave the insulation on. Pushing the 26 AWG stranded wire into the connector will pierce the insulation at the contact and provide good mechanical support. The insulation is a large part of the stress relief/mechanical connection and needs to stay on.

One way to do this is to use a small blunt-tipped screwdriver and a paper clip end. If you use a tool that is too sharp it will cut the insulation, which is bad. Add heat shrink if desired. fasten wire to other connector, making sure pin 1 to pin 1 (connectors will be flipped). IDCPolarity

GP2D12 placement

To mount your GP2D12 sensors, remove just one of the screws that fastens the scoop to the chassis. Pass the screw through the mounting bracket on the GP2D12, and re-insert through the scoop and chassis. Repeat on other side. JST connector should be pointed to the inside of the robot for both sensors. SharpMounting

Connecting the Servo Motors

The three-pin connectors J3 and J4 at the sides of the Controller Board are for attaching the servos. Just plug them in. As with the line sensors, the proper orientation of the connectors is indicated on the silkscreen with the color of the wires, B (black), R (red), and W (white). Wrap the excess servo wire around the standoffs before plugging in the servo. This will keep the wire out of the way.

Calibrating servos (code download!)

Need to calibrate your servos. Use program provided to set zero point.


The wheels fit directly onto the end of the servos. Gently press the wheels onto the servo, then use the mounting screws that come with the servo to attach the wheel securely. Wheels The wheels need to have "tires" to provide traction - the tires included with the Mark III are simply rubber bands. Two sets of tires are provided. Tires Slip the tires over the rim of the wheel and smooth them out with your fingers to make them even. Tires_smoothing


All that's left is to connect the batteries! Power is connected to the board using the three-pin terminal block. There are two power circuits, one for the electronics (regulated) one for the servos. "Standard" configuration is to use a 9V battery for the electronics and 4AA for servos.

On the back of the board the terminal block pins are silkscreened "Vin", "V+", and "GND":

  • "V+" is the servo power, which comes directly off the 4AA cells. V+ is the terminal nearest to the corner of the board. Wire the red wire from the 4AA battery pack to the V+ terminal.
  • "Vin" is the electronics power, which comes off the 9V battery. This is regulated, so you can put in anywhere between 6V and 16V. Vin is the terminal nearest to the standoff mounting hole. Wire the red wire from the 9V battery to the Vin terminal.
  • The middle pin is the common ground, labelled "GND" on the back of the board. Connect the black wires from both the 4AA battery pack and the 9V battery to this pin.
An alternate, non-standard configuration is to run the Mark III off of one power supply. To do this, you need to jumper Vin and V+ together at the terminal block with a short length of wire then feed in a minimum of 6.0V (maximum 16.0V) into Vin or V+. You should probably use 6 or more AA cells if you want to run off of one power supply.


When testing the operation of the Mark III, a Digital Multi-Meter is useful to have, but not required. A DMM will allow you to check connectivity of wires and measure voltages at points in the circuit. The DB-9 serial connector is grounded and makes a useful ground clip or ground reference for measurement with a meter or an oscilloscope.

Apply power, look for light

The first step in testing is to apply power to the Mark III. Make sure the power switch is turned off (positioned toward the terminal block) then feed the battery strap wires into the terminal block. The center position of the terminal block is ground, the rear position (nearest the corner of the board where the terminal block is connected) is the motor power, and the front position (nearest the center of the board) is the electronics power. At this point, you should only connect up the electronics. The electronics is normally powered with a 9V battery connected to the battery strap.

When the 9V battery is connected, move the power switch to the on position. The green LED should light; if it doesn't, check to make sure your 9V battery is good, check to make sure that the 1N4148 diode is inserted in the proper direction, check to make sure the MAX667 is inserted in the proper direction, check to make sure the LED is inserted in the proper direction.

If the red LED is on, your 9V battery is low and isn't providing enough voltage for the Mark III to run. Replace your battery. Note that the LEDs indicate the state of the 9V battery only - they tell you nothing about the 4AA batteries mounted underneath the robot.

Terminal program, communicate with PIC

Use a standard serial cable to connect your computer's serial port to the DB-9 serial connector on the Mark III. If you don't have a serial cable, you can buy one at any store that carries computer equipment. The required pinout can be found at The cable must be a straight-through serial extension cable. Pin 1 of one end connected to pin 1 of the other end, pin 2 to pin 2, pin 3 to pin 3, etc. A common problem is using a serial cable which has one pin 3 connected to the other pin 2 and pin 2 connected to the other pin 3 - this will not work on the Mark III.

Connect with HyperTerminal (Windows) or MacTerminal (Macintosh) or xxx (Linux/Unix). (Note: Newer Macs don't have a serial port so they need a USB to serial adapter.) HyperTerminal comes pre-installed on most versions of Windows - it can be found in the "Start" Menu under "Programs/Accessories/Communications". If you don't have HyperTerminal installed for some reason, you can download it from

Terminal settings are 38400 baud, 8 bits, no parity, 1 stop bit. Be sure that you have flow control turned OFF. You cannot communicate with the Mark III board if hardware or software flow control is in use.

When you have HyperTerminal running and the serial cable connected, press the white reset button on the Mark III. This will restart the Mark III and should print the following information in your HyperTerminal window:

    8K PICLOADER v1.1
    Copyright Rick Farmer 1999
    No user code loaded
    Press ? for help
If you fail to see this message, possible causes are
  • Wrong type of serial cable. You need a straight-through serial extension cable. The required pinout can be found at
  • Low power. If the red light is on, your 9V battery is low and isn't providing enough voltage for the Mark III to run. Replace your battery.

Self test program which prints values of all sensors

Download the .hex file containing the self-test program. (These programs and .hex files can be downloaded from Mark Gross' web site at The same procedure you will follow here is used to download programs you write yourself. First open your terminal program and get to the PICLoader prompt.
    8K PICLOADER v1.1
    Copyright Rick Farmer 1999
    No user code loaded
    Press ? for help
Then, select the "U" option to upload a program. PICLoader will ask:
     Are you sure (Y/N)?
Select "Y". At this point, PICLoader will respond
and will clear out the memory, displaying a hash mark ("#") for every 256 bytes it clears. The PIC16F877 used by the Mark III has 6KB of memory available for user programs, so you should see 24 hash marks. While this is happening, you should open up the .hex file using any text editor (e.g. Notepad) and select the entire contents. (Make sure you select all the contents, including the trailing line terminators.) When PICLoader responds with:
paste the contents of the .hex file into the PICLoader window. PICLoader will again display a hash mark, this time one for each line of the .hex file it loads (except for the last line, which is the end-of-file record). Finally, you will be prompted:
    Enter a rev string>
This is your opportunity to store a short, descriptive text string to indicate the nature of the program you have just downloaded. You'll find this useful when you need to figure out what program is loaded into your robot!

When finished, you will be back to the PICLoader prompt. Typing "Q" at this point will quit the PICLoader and start running the self-test program. Results of the self-test will be displayed in your terminal window.

Line sensors

The line sensors emit infrared light, so it can be difficult to tell if they are working properly. One trick when dealing with infrared is to use a digital camera, videocamera, or web camera to view the sensors. Digital cameras use a CCD chip to image light; these CCD chips are sensitive to a wider spectrum of light than the human eye. In particular they can "see" infrared, so infrared light sources will appear in the resulting image. For best results, turn off all the lights in the room before trying to image the infrared output of the line sensors because CCD's have only a small response to the emitted infrared.

GP2D12 sensors

You can use the digital camera method mentioned in the previous section to make sure your proximity sensors are putting out infrared light, but an easier way to tell is simply to look into the lens of the sensor while the power is on. These sensors emit a small amount of visible red light, so the lens will be illuminated if it is emitting. The beam of light from these sensors is very narrow, so your eye has to be positioned in just the right place in front of the lens in order to see the glow.

If your GP2D12 proximity sensors are not emitting infrared, the most likely cause is a mis-wired cable. See the Assembly Instructions and check to make sure you have made your cable correctly. You can use a DMM to check that power and ground is connected to these sensors. (explain).

Loopback Test

If you continue to have trouble connecting to your Mark III even after following the above steps, you can perform a loopback test. You do not normally need to perform this test, it is only for when you have exhausted all other means:
  1. Remove the PIC from the socket
  2. Jumper pins 37&39 of the 40-pin header together. (These are the two pins next to pins 22&21 of the PIC socket. Pin 39 has a label on the silkscreen next to it, pin 37 is adjacent to it - it is the next one in from the end of the 40-pin header.)
  3. Connect a serial cable between your computer and your Mark III
  4. Turn on the Mark III power - the green light should go on.
  5. Open HyperTerminal and type some characters - they should be echoed on the screen
This procedure ties the Receive and Transmit pins together on the Mark III, so any character you send from the PC should get echoed back to the PC. If this works, it means the RS232 tranceiver on the Mark III is functioning. It does not mean that you have the right serial cable or that your HyperTerminal settings (should be 38400, 8N1, no handshaking, 100ms line delay, make sure the right COM port is set!) are correct.

Note the pins on the 40-pin and 6-pin header are numbered in a zig-zag manner:

 1  2
 3  4
 5  6
 7  8
 9 10
11 12
 :   :
35 36
37 38
39 40
So, pins 39 and 37 are only .1" apart and you can use a shorting jumper to connect them.

Other Tests

Check to make sure that R2 has the correct value (1Mohm, brown black green). If this is wrong, the oscillator won't work so the PIC won't run.

You can check that the reset button works by getting an LED and holding it so that the long lead is in pin 1 of the PIC socket and the short lead is connected to ground. The LED should light up. When you press the reset button, the LED should turn off (this doesn't require any soldering, just bend the leads of the LED so that you can touch them to the right places.)

Visually inspect the soldering on the board to make sure that everything that should be soldered is, and nothing that shouldn't be soldered is soldered. Spend a lot of time looking.

The power regulator, RS232 circuit, the oscillator circuit, and reset circuit are the only things on the board that can cause the PIC to be silent. If all these can be verified to be working, you might have damaged your PIC itself with static electricity, but that is the least common cause of trouble.


Where to go for help - mailing list

The primary support resource for the Mark III Robot is the mailing list at Instructions for signing up on this list are on the web site. Before you ask a question on the list, please search the list archives to see if your question has been answered previously. You will find that most of the common questions have been addressed several times - searching is the quickest way to get a good answer. If you don't find an answer to your problem, then post a question to the list. Please include as much detail as possible so other list members can reproduce your problem and suggest solutions.


One of the goals for the Mark III is to provide software and a programming environment that is easily accessible to beginners, while at the same time not limiting for experts. In particular, no proprietary programming environment or software is required. The Mark III supports a variety of languages and computing platforms to appeal to all levels of expertise.

There are a variety of languages that can be used to program the Mark III. It is suggested that you pick the one most suited to your level of expertise and experience. Sample code for self-test, servo calibration, MiniSumo and Line Following is available for each of the supported languages.

First, a Note About Support

What kind of support do you get, you might ask? Well, we can't guarantee much hand-holding or personal attention. Sorry! We're all doing this for free and have jobs of our own, so please rely on the following:
  • directions to get started posted here
  • sample programs posted here
  • the Mark III support forum on Yahoo! Groups at, where your question may already be answered; the Search Archive button is your friend!
  • NOTE: you must join the forum in order to post questions or search for answers; it costs nothing, and you can choose at any time whether to receive all messages posted to the forum via email or only read them from the web site
  • if you can't find an answer to your question through these three avenues, then post your question to the forum; some other MarkIII owner may know the solution, or one of the MarkIII team members may answer

Supported Languages

The members of the MarkIII project have figured out and documented methods for the use of a variety of programming languages with the robot.

Your choice of a programming language depends on your experience, interest level, and budget. There are other languages and programming tools for the PIC16F877 than these; we just aren't currently supporting them.

The supported languages and their advantages are:

  • CH Basic (proponent Mark Gross)
  • JAL (proponent Brett Nelson)
  • C (proponent James Farwell for CC5X, Pete Skeggs for CCS C)
    • CC5X compiler from
      • Integrates with the MPLAB development environment.
      • There is a free version of CC5X available for download from the above site; the standard edition is $250.
    • CCS C compiler from
      • This also integrates with the MPLAB development environment.
      • The PCM compiler costs $125.
    • C is harder to learn than BASIC, but is a great skill to develop; C language compilers are available for virtually every computing platform today
    • C has many of the advantages of assembly language but takes care of the nitty-gritty details for you
  • OOPic (proponent Pete Skeggs)
    • Requires separate purchase from of an OOPIC chip ($49 gets you a chip, a programming cable, and a prototyping board)
    • Also requires installation of a serial EEPROM in socket U4
    • The OOPic II ( is an even more powerful version ($59 at
    • Despite the additional cost, provides a powerful object-oriented programming language that lets you bring up a robot prototype very quickly
    • Easy to learn
    • The OOPIC compiler comes with a built-in downloader which requires the use of a parallel port and a Windows PC
    • There are OOPIC accessory boards which can connect to the 40-pin header to add additional functionality to your robot not available on the standard MarkIII accessory boards:
  • PIC assembly (proponent Rick Farmer)
    • Develop using Microchip's MPLAB
    • Requires a lot of effort to learn, but once you do, you really understand how microcontrollers work and how to get them to do what you want
    • It's free!

The MarkIII kit comes with a license for CH Basic, a nice BASIC language compiler specially designed for the PIC. This compiler normally costs $99, but is included in the price of your kit. The maker of the compiler has donated licenses to the project for $10 each, which is a great bargain.

For nonprogrammers, this is the best way to go.

Links to Example Programs

CH Basic examples are here:

CC5X examples are here:

OOPIC examples are here:

CCS C examples are not ready yet. Sorry.

Neither are JAL examples.

Links to Software Tools

Members of the MarkIII community have created tools to help program the robot.

Rick Farmer's PICLoader, a boot loader or ROM Monitor program that comes preprogrammed into the PIC chip included with the Mark III kit. This small program gives the PIC chip enough smarts to talk to a computer and enables it to reprogram the Flash memory in the PIC with new robot programs using only an RS232 serial cable. Without the PICLoader, you would also need to buy a PIC programmer board, such as the Warp-13a from Newfound Electronics (available from the Mark III Store).

Mark Gross's miii_tools ( include CHPre.exe and mbuild.bat, which help convert the output of CH Basic so that it can be loaded into the PIC using Rick's PICLoader and either HyperTerminal or BotLoader (see below). These are required for all CH Basic users. Power users can hand-edit the CH Basic assembly code and run MPLAB themselves to do this, but even they can benefit by having it done automatically using Mark's tools. Mark's instructions for using them can be found at

Pete Skeggs's companion BotLoader and BotLdrCmd are Windows programs that make it easy to send your robot programs to the MarkIII's PICLoader. You can upload programs to the MarkIII using only a simple terminal program such as HyperTerminal (that comes with Windows), but it can be difficult to get all the settings right. BotLoader automatically finds the serial port in use, configures it correctly, and talks to Rick's PICLoader for you. Just browse your PC's hard disk to select your .hex file or type it in to the filename box, then click Go!. BotLdrCmd does the same thing except runs as a command line program for power users to integrate with their make environment. Instructions are here.

Pete Skeggs's CLst2Asm program for enabling the use of CCS C with the version of the PICLoader (1.1) burned into the standard MarkIII PICs. This is useful if you plan to use a variety of languages with the MarkIII. Alternatively, you can reprogram the PICLoader with version 1.3, which automatically works with the hex files output by CCS C, but which makes it hard to use other languages.

Pete Skeggs's Reloader, which (seemingly) does the impossible -- it can reprogram the PICLoader with another version of PICLoader. You can use this program to switch between versions 1.1 and 1.3 of the PICLoader. Instructions are available here.

General Procedure for Programming the Robot

Regardless of the language you choose, you will need to perform these steps:
  1. write your program's source code (sumo.bsc, firefighter.c, linefollow.jal, etc.) using an editor that either comes with your language tool or with something like Windows' Notepad; start with an example program listed above just to get a feel for the process
  2. compile the source code using your language's compiler
  3. fix up the output of the compiler (sumo.asm) to be compatible with Rick's PICLoader
  4. assemble the fixed up output using MPLAB so that it can be loaded into the PIC (sumo.hex)
  5. connect the robot to your PC using a straight-through 9 pin RS-232 serial cable (female on one end, male on the other)
  6. load the hex file into the PIC using BotLoader or Hyperterminal or whatever tool you like; NOTE: you must hit enter in Hyperterminal, launch BotLoader or hit the Scan Ports button in BotLoader, within 5 seconds of powering on the robot, or else any existing robot program will be automatically run by Rick's PICLoader.
  7. test it out and see if the robot does what you want it to do; if it doesn't, go back to step 1 and try to figure out what went wrong, then fix it and try again

Mark's miii_tools performs steps 3 and 4 for CH Basic users. Steps 3 and 4 are not necessary if you are using CCS C and have switched bootloaders to version 1.3.

Describe functioning of example sumo code, example line following code



Now that your Mark III is assembled and programmed, it's time to find something for it to do, and test your abilities against other robot enthusiasts in friendly competition. Preparing for a competition is the best way to motivate yourself to actually get that robot finished and working. There are a number of contests nationwide, with a number of different events featured. Here, we enumerate some of the more common events and some of the larger competitions.


Sumo wrestling for robots, non-destructive, push out of ring, best of 3 falls. Mini class has size and weight restrictions. The Mark III is designed to be small and light enough to qualify for this class. MiniSumo is a fairly well-defined event, held at a number of competitions across the country. An excellent description of Sumo events can be found at

Line Following

Line following robots attempt to follow a line across a course. Great deal of variations in competitions, line widths, course length, absence or presence of obstacles, criteria for winning.

Line Maze

Line maze is and advanced and enhanced form of line following. Robots attempt to find their way through a maze, guided by lines on the floor. Typically involves

Fire Fighting

Trinity College developed this challenging event, and has held an annual competitions since 1994. Other robotics clubs, such as the Seattle Robotics Society, have also held fire fighting competitions using the Trinity Rules. The Trinity College event is described at


PDXBot is an outgrowth of the mini sumo competitions that the Portland Area Robotics Society, PARTS, has held for two years in conjunction with the Oregon Museum of Science and Industry, OMSI. PDXBot has mini sumo, line following, and demonstration (non-competitive) events.


Seattle Robotics Society, well-funded and attended.


Extending your Mark III

Mark III was designed to be a general purpose robotics platform. In particular, it was designed for expandability to provide an experimentation platform appealing not only to the beginner but also to the advanced robot hobbyist. The abilities of the Mark III can be enhanced almost without bounds, using either the options made available by PARTS or by adding your own extensions.

Prototype Board

The Prototype mezzanine board is a must if you plan to interface your own circuits to the Mark III. The Prototype board is just a blank board, containing only the necessary stacking connectors to interface with the main Controller board. The Prototype board has pads and holes for mounting a variety of components. All header signals are brought out to pads for easy interfacing. Power and ground busses are provides, as well as two general-use busses. Pads are designed to accommodate .3" wide DIP chips as well as .6" wide DIP chips.

Parts List

Before you begin, remove all the parts from the bag they came in and match them up against the following parts list.

J140 pin 100mil pitch dual-row stacking header .435 board separation
J26 pin 100 mil pitch dual-row stacking header .435 board separation

Schematic and PCB Layout

Assembly instructions

The Prototype Board is simple to assemble. There are only two components. The only thing you need to take care with is to make sure the components are inserted on the proper side of the board.

The Prototype Board is meant to stack on top of the Controller Board. Because of this, the two stacking headers that come with the Prototype Board need to have their female ends facing down, so as to mate with the male pins on the Controller Board. Identify the top of the Prototype Board by looking at the silkscreen - the top is labeled "TOP". Insert the male ends of the two header through the bottom of the Prototype Board, so that the male pins point up through the board.

When soldering the headers in place, first tack one pin on each end down with a little bit of solder. Then check to see that the header is seated firmly and flush with the board. Don't complete the soldering until you have it positioned correctly.

Since another mezzanine board may be stacked on top of the Prototype Board, you need to be sure that the solder fillets on the header pins are small. Solder has a tendancy to wick up on the pins - if too much solder is used, then it will make the pins thicker and prevent another board from being mounted on top. If you get too much solder on the pins, you can easily remove it with some soder wick, but it's easier to avoid that problem to begin with.

Sensor Board

The Sensor mezzanine board serves both as an example of how to interface a variety of sensors to the Mark III, and as a useful collection of sensors in its own right. The Sensor Board may optionally be populated with four h-bridge motor drivers, a two-axis accelerometer, and 8 channels of 12-bit A/D. Four additional pads provide space for connecting a pyroelectric detector, or alternatively, they be used as a connection point for any device that requires power, ground, and one analog or digital I/O line. Multiple sensor boards may be stacked on to the Mark III to get more A/D channels or more digital I/O or more motor drivers.

Parts List

Before you begin assembling the Sensor Board, remove all the parts from the bag they came in and match them up against the following parts list. It is especially useful to match up the resistors to this list using the color code, then tape those resistors in place on the printed parts list for future use. Don't try this with the integrated circuits,

J1 40 pin 100mil pitch dual-row stacking header .435 board separation
J2 6 pin 100 mil pitch dual-row stacking header .435 board separation
J3 100 mil header
J4 100 mil header
J9 8 Pin Header
J10 8x2 Pin Header
J11White5-pin 100 mil I²C Connector
RP110X14739-element common-terminal 47K Ohm resistor network
RP28X12237-element common-terminal 22K Ohm resistor network
SW1RedDIP Switch 6-position
U4 Piezo Buzzer
U6PCF8574Remote 8-bit I/O Expander for I²C Bus

Schematic and PCB Layout

Partial Stuffing

The Sensor Board is designed so that it may be partially populated, with only the sensors that you want. The Sensor Board Kit comes with only the components needed for basic operation: the connectors, pull-up resistors, I²C interface, and piezo buzzer. All other components are optional and may be left out. Instructions for adding these additional components are included in the next section.

Assembly instructions

If you have successfully assembled the Controller board, the Sensor Board should be no problem.

Start the assembly by soldering the PCF8574 into the position marked U6 on the silkscreen. Then solder in the 6-position DIP switch. Although the switch is not polarized, it is convenient to solder it so that pin 1 (marked oc) lines up with pin 1 on the board (the square pad). The writing on the switch should then have the same orientation as the writing on the silkscreen.

The next components to add are the resistor packs. There are two of these, an 8-pin package which mounts next to the DIP swith in the location marked RP2, and a 10-pin package which mounds near the front of the board in the location marked RP1. The resistor packs are polarized - they need to be mounted in a specific orientation. Identify pin 1 on the resistor pack and pin 1 on the silkscreen by consulting the Appendix.

Piezo buzzer, U4. Mount in either orientation.

Connectors J9 and J10 (Handyboard Port).

Three-pin servo connectors, J3 and J4. These are mounted at the ends of the 40-pin connector, and provide two additional PWM servo connections.

The Sensor Board is meant to stack on top of the Controller Board or Prototype Board. The order of stacking, i.e. which one is on top, is irrelevant. Because of this, the 6-pin and 40-pin stacking headers that come with the Sensor Board need to have their female ends facing down, so as to mate with the male pins on the Controller Board. Identify the top of the Sensor Board by looking at the silkscreen - the top has outlines of all the chips and other components, and had most of the part designators. The bottom has very little on the silkscreen. Insert the male ends of the two header through the bottom of the Sensor Board, so that the male pins point up through the board.

When soldering the headers in place, first tack one pin on each end down with a little bit of solder. Then check to see that the header is seated firmly and flush with the board. Don't complete the soldering until you have it positioned correctly.

Since another mezzanine board may be stacked on top of the Sensor Board, you need to be sure that the solder fillets on the header pins are small. Solder has a tendancy to wick up on the pins - if too much solder is used, then it will make the pins thicker and prevent another board from being mounted on top. If you get too much solder on the pins, you can easily remove it with some soder wick, but it's easier to avoid that problem to begin with.

The last component to add is the white, 5-pin I²C connector. This is orented so that the tall white back faces the middle of the board. In this orientation the bottom of the connector should match up perfectly with the silkscreen outline and the connector should be entirely on the PCB board. If the connector is hanging off the end, you probably have it backward.

If you purchased the optional Analog Input Expander Kit, there are four additional components to add.

If you purchased the optional Accelerometer Kit, there are seven additional components to add. The Accelerometer solders directly to the 8 surface mount pads on the top side of the board. Pin 1 on the accelerometer chip is marked with a little triangle with a square around it (the Analog Devices logo) Looking at the top of the chip, orient the chip so that the text is right-side up - pin 1 will be in the lower left on bottom edge. On the PCB, the silkscreen mark for pin 1 doesn't show up. Pin 1 is the surface-mount pad on the top of the board that is connected to the through-hole with the square pad.

It's not hard to solder the Accelerometer directly to the board, but it is a pain working with that small package. Put some solder on the pads, and some solder in the connection points of the chip (the gold-colored grooves on the bottom. Put some liquid or paste flux on the pads. Position the chip over the pads and heat up the excess solder you just put on. Do one pin first and make sure you position the chip properly, then it will stay in place when you do the other pins.

The trimpot is mounted in location R7 - it only fits in in one directions. This variable resistor is used to modify the pulse frequency of the accelerometer output.

If you purchased the optional H-Bridge Kit, there are seventeen additional components to add. The four green LEDs are mounted along the front edge of the board, the four red LEDs are mounted behind them. The four 1K current limiting resistors are vertically mounted - bend one lead of each resistor so that it doubles back and lies parallel and next to the other lead. Then insert the resistor into its pads making sure the resistor body is vertical.

The H-Bridge Kit allows you to drive four DC motors, each of which interfaces to the Sensor Board via a 3-pin header. Two 6-pin headers are provided in the H-Bridge Kit in place of four 3-pin headers - this provides a more rugged connection point. Solder one 6-pin header into the spaces marked J7 and J8 on the board, solder the other into the spaces marked J5 and J6 on the board.

Stacking of multiple boards

The Sensor Board is desinged so that multiple Sensor Boards may be stacked on top of each other. If you do this, be sure to set a different I²C address for each Sensor Board, using the 6-position DIP switch.

Running Sensor Board as standalone

The Sensor Board is designed so that it may be operated as a standalone board. All that needs to be done is to supply power to the board - the board's functionality may be used accessed either directly from the I²C connector or from the 40 pin header. A fully stuffed Sensor Board requires about 50mA at 5VDC, supplied either through the I²C connector or through the power pins on the 40-pin header.


The OOPic chip has its own development environment, object-oriented programming language which makes it easy to get started. Variety of third-party expansion hardware which is compatible with the OOPic as well as the Mark III. etc.
  • Compatibility and what is needed
  • Using OOPic-compatible peripherals

Handyboard Port

The Handyboard is a popular robotics controller. Lots of information on the Internet, even some books, describe the Handyboard and how to create sensors and other extensions for the Handyboard. The optional Sensor expansion board for the Mark III has a Handyboard-compatible Digital Input/Ouput port, allowing much of this information to be used directly.

Chassis mods

The Mark III kit comes with a bulldozer-like scoop on the front which serves to support the front end of the robot as well as push opponents in a MiniSumo contest. The scoop is designed to be removable, and replaceable with a variety of other things to make the Mark III suited for other tasks. For example, in Line Following, you might want to replace the scoop with a caster to enhance maneuverability and prevent the sharp scoop edge from catching on the rough surface of the line following course.
  • Replacing scoop with caster

LEGO Chassis

LEGO and robotics have a long history together. Most recently, LEGO Mindstorms Robotic Invention System. To facilitate using LEGOs, the Mark III chassis was designed so that the mounting holes match the separation of holes in LEGO. You may use screws to fasten a LEGO beam to the front of the chassis, in place of the scoop, and attach LEGO parts to this beam. The standoff separation is also matched to LEGO, and the mounting holes in the Controller board are the same diameter as LEGO holes, allowing you to mount the Controller board directly onto an entirely LEGO robot chassis.

Using DC Motors

Can't drive DC motors directly from PIC because of current draw. H-Bridge. Available on Sensor board. Any combination of four motors, either PCM (Servos) or PWM (DC Motors).

Adding sensors

Need to provide sensors with power and external circuitry, need to read values of sensors or set value of actuators. Mark III has a variety of interfaces that make this easy.
  • I²C (I²C mating connector)
  • SPI
  • Serial
  • Bit-bang
  • CMUCam
  • Devantech compass
  • Devantech Ultrasonic ranger
  • Bump sensors
  • Shaft encoders
  • LCD