Ottantotto

Introduction

The idea behind this board is: build general purpose Arduino for a fraction of its normal price. 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.

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)

Design

PCB can be splitted into two parts: the MAX232 section for programming and communication and the microcontroller itself.

used components

  • ATmega88 or 168
  • ceramic resonator (three legs). Crystal can be mounted on backside of pcb.
  • two general purpose LED's
  • 100uF capacitor
  • LM7805 (can be bypassed by wire or diode)
  • MAX 232 (or equivalent)
  • 5 capacitors (1uF for max232)

other features

  • m3 mounting holes
  • Db9 female connector (solder version)
  • signal - VCC - GND servo style three-terminal connectors
  • DTR line is used for reset. This allows for a bootloader procedure without reset button

Schematic

schematic

PCB design

Breadboard version

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.

PCB

This PCB can be cut into two pieces, the microcontroller board and the programming dongle. The design is very flexible, so the board can be build in a number of 'flavours' tailored to your needs:

Flavours

Full

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.

Breadboard

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.

Compact

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)

The programming dongle can be used separately

PIN description

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.

Connecting Power

Power can be connected in numerous ways, depending on the 'flavour' of your board. An adaptor plug can be connected using wires, you can also connect a battery pack directly to any of the power pins.

Bootloader

The bootloader is adapted from the standard arduino bootloader for atmega168. 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)

Arduino compatibility

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.

F.A.Q

  1. Why not add the ftdi232? Because SMD soldering makes it more difficult for inexperienced people to solder the board. The FTDI chip is also 8 times the price of a MAX232 clone. You can buy ftdi-style USB-2-serial cables for EUR 6,-
  2. why all the extra ground and vcc pins? For every servo or sensor you connect to your arduino, you need supply voltage and ground. Normally on an arduino you would use a protoshield, a breadboard, or a mess of interconnected extra wires.
  3. Why splitting To make it even smaller!
  4. where can I get one? The first batch of 50 has arrived and is ready for testing. The versions I tried out seem to be working fine. Price for a bare PCB is EUR 2,- (ex. vat and p&p) Since I'm not intending to become a web shop, I'll ship a couple while the stock lasts, in exchange for posting your experiences etc. here on the wiki. In addition to the boards I ordered some stock in ATmega88's, so I can ship them too if required. Please contact me by email in case you're interested.
 
boards/ottantotto.txt · Last modified: 2009/06/23 18:16 by edwin
 
Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki