The idea behind this board is: build general purpose Arduino but very much lightweight (similar to the bare bones). Skip the form factor, but make it possible to connect sensors and servo's directly. Make it possible to use in breadboard, but also as small standalone module. Make it flexible, yet as compact as possible. It is by no means meant as competitor to the standard Arduino boards, it is tailored for easy building (few parts, all trough-hole) and easy connection (lots of connection points, standard pin-headers, standard grid size).
This board was previously dubbed 'CheapDuino' but after a discussion with Tom Igoe this board has been renamed 'ottantotto' which is italian for eightyeight (since the board is using Atmega88 controllers)
In the following section the features, schematic, pcb and partlist. After that a section on tailoring your ottantotto built…
The following files can be send to a pcb pooling service.
board size: 2900 mil x 1050 mil - 73.66 mm x 26.67 mm
ottantottogerber.zip (can be submitted to eurocircuits)
This PCB can be cut into two pieces, the microcontroller board and the programming dongle.
The design is made in a way that you can either use a PCB (double sided) or just build it on soldering-breadboard. I decided to build a true-to-scale ottantotto on breadboard. The backside is reasonably simple to solder.
The programming adapter is slightly larger than the PCB version, but the reset functionality using the DTR line works well.
Below an order list for farnell. Since the mega88 is not much cheaper there (get them from Ledsee), a mega168 will do even better (no changing of firmware). In the list cost effective numbers are chosen (to which bulk rates apply). A choice can be made between using an LM7805 regulator (so the board is 12V proof) or a simple diode (0,7 V drop → battery operation up to 6V works)
| n | ordercode | description | order multiple | price each | |
|---|---|---|---|---|---|
| 1 | 9171207 | ATMEL ATMEGA168-20PU 8BIT 16K FLASH MCU, DIP28, 168 | single | 4,54 | |
| or | 1661728 | ATMEL ATMEGA168-20PU 8BIT 16K FLASH MCU, TUBE14 | 14 pieces! | 34,65 | |
| 1 | 9589805 | TEXAS INSTRUMENTS MAX232NG4 DRIVER/RECEIVER DUAL EIA232, DIP16 | or equivalent | 0,84 | |
| 4 | 9452192 | MULTICOMP MCUMR16V106M4X5 CAPACITOR, 10UF, 16V | min. 5 | 0,126 | |
| 3 | 1216445 | MULTICOMP MCRR50104Z5UM0050 CAPACITOR, 100NF, 50V | min. 5 | 0,159 | |
| 1 | 1653942 | SPC TECHNOLOGY SPC15411 CONNECTOR, D-SUB | 0,37 | ||
| 1 | 1448129 | AEL CRYSTALS C16M000000L003 RESONATOR, ZTT, 16MHZ | 0,43 | ||
| 2 | 9339418 | MULTICOMP MCF 0.25W 330R RESISTOR, 0.25W 5% 330R | min. 50 | 0,018 | |
| 1 | 9339060 | MULTICOMP MCF 0.25W 10K RESISTOR, 0.25W 5% 10K | min. 50 | 0,018 | |
| 1 | 9564993 | MULTICOMP 1N4001. DIODE, STANDARD, 1A, 50V | min. 10 | 0,075 | |
| or | 9666095 | ON SEMICONDUCTOR MC7805CTG. V REG +5.0V, 7805, TO-220-3 | 0,32 | ||
| 1 | 9692738 | PANASONIC ECA0JHG102 CAPACITOR, 1000UF, 6.3V | min. 5 | 0,21 | |
| 1 | 1142502 | KINGBRIGHT L-934GD LED, 3MM, GREEN | min. 5 | 0,048 | |
| 1 | 1142517 | KINGBRIGHT L-934ID LED, 3MM, RED | min. 10 | 0,063 | |
| 1 | 1101347 | TYCO ELECTRONICS / AMP1-390261-4 SOCKET IC, DIL, 0.3”, 16WAY | min.5 | 0,43 | |
| 1 | 1103850 | MULTICOMP - 2227MC-28-03-05-F1 - SOCKET IC, DIL, 0.3”, 28WAY | 0,83 | ||
| or | 1182590 | MULTICOMP MC-2227-28-03-F1 | tube of 17 | 4,15 | |
and pin headers:
| 1 | 1099543 | HARWIN M52-5000545 SOCKET, VERTICAL, 1ROW, 5WAY | 0,73 | ||
| 2 | 9729062 | FISCHER ELEKTRONIK SL11 124 36G HEADER, PIN, 2.54MM, 36WAY | 1,39 |
(2 36pin headers are necessary to populate the whole board. The 5way socket is necessary when separating the MAX232 programmer dongle from the board)
The design is very flexible, so the board can be build in a number of 'flavours' tailored to your needs:
This is the board completely populated. It works similar to a serial arduino (except that the power connector is wired to the board) In this way the board can be used as stand-alone microcontroller system, or build in somewhere. The serial port is fully available.
When only the connectors at microcontroller-pin -side are connected, the board can be used as test module for solderless breadboard. the positioning of power connection (- and +) allows for breadboard connectivity too.
When the PCB has been cut, both of the boards can be populated independently. This allows for a very compact board (which can be used for controlling mobile robots such as the flatpack-walker (check http://www.retrointerfacing.com) or an 18-servo walker (softservo)
The programming dongle can be used separately
On the silkscreen of the PCB no room was left for the pin numbers. A simple solution is to print out the following image and to glue it on the microcontroller! ottantottopins.pdf The pin numbers are according to the Arduino standard: PD0 tm PD7 are numbered 0 to 7. PB0 tm PB5 are numbered 8 to 13. The analog pins are numbered a0 to a5 and represent PC0 to PC5.
Power can be connected in numerous ways, depending on the 'flavour' of your board. An adapter plug can be connected using wires, you can also connect a battery pack directly to any of the power pins. A linear regulator (7805) can be mounted in the reserved space (TO220, standing up). This chip is used when you solder the battery leads directly to the - and + connector next to this footprint. On the same footprint you can also mount a 1N400x series diode, as 0.7V drop / reverse polarity protection. (wired from pin 1 to 3, fold the legs tight). You can also wire the power directly to the rail (the pin-tracks on the outside and center side). Be sure not to connect power exceeding the 6V this way, since the avr won't stand it…
The board is Arduino compatible, so the arduino environment can be used to compile sketches and upload them to the board. The dongle part needs to be in place (when you built the 'compact' version) and a serial connection between the dongle and PC should be established. See this page on setting up the environment and programming the board.
I Recently discovered that the combination Mac OSX + PL2303 + driver does not work. Apparently the Auto-reset function using the RS232 DTR line does not function long enough for the bootloader to stay in contact. The board does reset, but after that immediately starts up its program.
Normally the Arduino environment uses both the RTS signal and the DTR to reset the board, so either one of them can be used. See arduino forum. However, with Mac OSX the RTS signal seems to work better. The Workaround is simple: convert the programming dongle or programmer part of the ottantotto to use the RTS instead of DTR signal.
First, disconnect DTR (pin 4 on the DSUB-9 connector) from MAX232 pin 8 by scratching the pcb track (see red circle):
Then make a connection between RTS (pin 7 on DSUB-9 connector) to MAX232 pin 8 by soldering a wire on the bottomside:
After this modification, the dongle should work with Mac OSX too.
The bootloader is adapted from the standard arduino bootloader for atmega168. Look here for a more elaborate page on bootloaders The sources can be found here With winavr installed (I did not use arduino to compile the bootloader, but it should be possible anyway), you type make atmega88 from a command prompt, and the correct version will compile.
Point is that the atmega88 has the same memory footprint as the mega8, but the same internal configuration (registers, timers, uart, interrupts as the atmega 168)
a new entry to the boards.txt file has been made that resides in the 'hardware' directory. boards.txt (zipped)
############################################################## atmega88.name=Ottantotto with ATmega88 atmega88.upload.protocol=stk500 atmega88.upload.maximum_size=7168 atmega88.upload.speed=19200 atmega88.bootloader.low_fuses=0xff atmega88.bootloader.high_fuses=0xdd atmega88.bootloader.extended_fuses=0x00 atmega88.bootloader.path=atmega168 atmega88.bootloader.file=ATmegaBOOT_168_atmega88.hex atmega88.bootloader.unlock_bits=0x3F atmega88.bootloader.lock_bits=0x0F atmega88.build.mcu=atmega88 atmega88.build.f_cpu=16000000L atmega88.build.core=arduino
Besides the board.txt file, also a number of sources need to be altered. Since the processor is mostly compatible with the atmega168, except memory sizes, the c-files in the hardware\cores\arduino directory needed to be altered. Every entry #if defined(AVR_ATmega168) has been replaced with #if defined(AVR_ATmega168) || (AVR_ATmega88)
here you can download the new directory hardware/cores/arduino hardware_cores_arduino.zip. This is the hardware cores directory for Arduino011 or even earlier and is far from complete. When compilation of libraries throws up warnings, the replacement strategy mentioned above normally suffices.
From version 0013 (according to GIPLT) no warnings are thrown, so only adding the ottantotto section described above suffices.
The standard Arduino Blink example with LED on pin 13 does not work, because… we have two LED's on pin 8 and pin 9 instead.
// The basic Arduino example for ottantotto // Turns the red and green LED on and off intermittendly #define red 9 #define green 8 void setup() // run once, when the sketch starts { pinMode(green, OUTPUT); // sets the digital pin as output pinMode(red, OUTPUT); // sets the digital pin as output } void loop() // run over and over again { digitalWrite(green,HIGH); // sets the LED on digitalWrite(red,LOW); delay(100); // waits for 0.1 second digitalWrite(green, LOW); // sets the LED off digitalWrite(red,HIGH); delay(100); // waits for 0.1 second }
During toko#14 a number of wishes for the next version has been formulated.
In this section version 2 of the ottantotto board is presented.
Today a first batch of 100 has been ordered! — edwin dertien 2010/06/29 16:45
The exact sizes are 90.68 mm x 26.67
Carefull with this jumper: it is meant to connect RC-servo's directly to the battery source, after the voltage regulator. The default position is to the 5V!
All three versions: full, breadboard and compact are still possible. The breadboard version is different from the original