Home | Support | Hardware | Software | Download | Media and Pubs | Related Work


The CotsBots hardware is designed for maximum flexibility with the allowance that people should be able to buy the pieces off-the-shelf and assemble them with standard soldering equipment. In this sense, it is considered "open-source" in a way and if anybody designs new boards or uses new hardware with the CotsBots, it is highly encouraged that they be shared with the community (small as it might be at the moment).

Where to Buy

Check out the Where to Buy page.

How to Build

I've put together a CotsBots Hardware Tutorial that goes through the details of building a Mini-Z CotsBot.

Motorboard Design

The MotorBoard has been built to provide a means of actuation for the Mica motes. It has been designed with maximum flexibility to maintain compatibility with previous, current and future mote architectures. The MotorBoard provides an interface to two H-bridge circuits, which can be used to provide speed and direction control for motors, positioning for servos, switching relays or solenoids and a variety of other actuation schemes. Because two H-bridges are provided, the motor board can be used to control two devices from those listed above. The board uses its own microcontroller to communicate with the Mica mote and provide software re-programmability on the motor board itself. Therefore, if new applications arise, appropriate software components may easily be added to the motor board.

Schematic and Layout

The motorboard schematic is listed here. A zip file of the gerber files required for sending to a pcb manufacturer is located here. You can find other items of interest, including a Bill of Materials in the docs directory.


The microcontroller used on the MotorBoard is an ATmega8L available in both a 28-pin DIP design and 32-pin quad flat pack design. The ATmega8L contains 8K of flash program memory, 512 bytes internal EEPROM and 1K RAM. It uses an internal oscillator and consumes only 3.2mA in active mode at 4MHz and 1mA in idle mode. The microcontroller has an onboard 8 channel ADC (6 channels 10-bit accurate and 2 channels 8-bit accurate). There are 2 8-bit timers and 1 16-bit timer with 3 PWM lines available. Data buses include a two-wire serial interface (I2C), UART and SPI serial interface. A hardware multiplier is also available. 23 programmable I/O lines provide the flexibility for additional hardware to be added to the motor board.


An H-Bridge circuit is generally made from 4 MOSFETs (usually two p-type and two n-type) in the configuration of a capital "H" to provide PWM and direction control to the motors. When the PWM is fast enough, the motor averages out the signal to provide an analog voltage for the motor to modify speed. Direction is changed by switching Vmotor or ground to the opposite terminal of the motor.

The MotorBoard uses four Half-Bridge ICs to create two full H-Bridge circuits. The Half-Bridge ICs used are the Fairchild Semiconductor NDS8858H. These ICs support up to 4.5A at 30V if adequate heat-sinking is provided. For currents and voltages much past those required by standard toy motors, external heat-sinks will be required. For more information on this IC, see the datasheet.

Several single chip H-Bridge solutions were also considered, but usually did not meet the logic supply constraints imposed by the Mica mote (3.3V and 90mA output).

Power System

Due to the rapid switching to control the speed of the motor, power supplies in systems that use motors are traditionally very noisy. To prevent the motor power supply from severely affecting the power supply for the Mica mote (and possibly resetting it), two separate power supplies are used. The Mica mote power supply (which is a regulated 3.3V in the case of the MICA mote) is used to power the digital circuitry on the motor board, while the power supply from the robot platform used is used to control the motors. Bypass capacitors clean up the motor supply as well.

Servo Capabilities

The Mini-Z robot platform uses an Ackerman steering system, the traditional type of steering used by a car. One motor drives the back wheels and a servo sets the angle of the front wheels. The servo on the Mini-Z is simply a motor with a potentiometer on the shaft. Therefore, it is necessary to use readings from the potentiometer on the shaft to feedback position information which can be used to appropriately drive the motor. This information is fed back into the microcontroller through a resistor divider network into an ADC pin on the ATmega8L.

Accelerometer Circuit

An ADXL202e accelerometer (2-axis, +/- 2g) has been provided on the MotorBoard for future use in a low-cost inertial navigation system or obstacle detection system. Although the ADXL202e was designed to provide a PWM signal as output, the analog outputs are fed into the ATmega8L instead due to software interrupt considerations. When populating the board, it is not necessary to include the ADXL202e if you do not intend to use it.

More information on the ADXL202e can be found in the datasheet.

Interface to Mica (or future motes)

The hardware interface to the Mica mote is provided by the 51-pin connector used on current and previous Mica motes. This connector is provided on both the top and bottom of the board to allow for maximum flexibility in connecting daughter boards. Lines are provided to connect several communication channels on the Mica mote. Typically the Mica mote provides UART, I2C (inter-integrated circuit communication) and SPI. The corresponding lines have been connected on the motor board so that any of these methods can be used to communicate with the motor board. The motor board is reprogrammed in the same manner as the Mica mote and can be programmed using the same programming board.

Interface to Mini-Z (or other platforms)

Wires are extended on the Mini-Z platform and attached to a Molex connector for which there is a compatible Molex header on the motor board. Extra prototyping pins are also provided as seen on the MotorBoard schematic.

Future Expansion Capabilities

To ensure maximum flexibility with future Mica designs and interesting new sensors, some ADC lines and PW lines are connected to the corresponding pins on the 51-pin connector.

Mica Hardware

For details on the Mica Mote hardware, check out the TinyOS Hardware Page.



Currently no odometry is available on the CotsBots. Current localization information is either obtained from a surrounding sensor network or from a camera overlooking the robots. However, as stated previously, an ADXL202e accelerometer has been included on the MotorBoard for the purpose of investigating its use in a low-cost inertial navigation unit. Although accelerometer drift will likely render the position estimates invalid in short amounts of time, the current plan is to provide global localization through a sensor network.

The standard means odometry on robots, using a wheel encoder, is not in our plans for development due to the very custom nature of such sensors. However, we would welcome the development of such sensors from a larger CotsBots community. In addition to the INU, plans for an optical mouse-like sensor are being investigated along with camera-like sensors that will be able to determine the relative orientation between the robots.

Obstacle Detection/Avoidance Sensors

The accelerometer on the Mica Sensorboard (described below) has been used for simple obstacle detection schemes. Whisker boards were build for previous generations of CotsBots but have not been updated for the Mica Mote version.

Mica Sensor Boards

All of the standard NEST sensor boards are available from Crossbow Technology. The Basic Sensorboard consists of a thermistor, photosensor and prototyping space to develop the user's own sensors. The Mica Sensorboard provides a thermistor, photosensor, buzzer/microphone pair, ADXL202e accelerometer, and a two-axis magnetometer. Documentation for the Mica Sensorboard is provided in tinyos-1.x/doc.