Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/cscott/xorduino

XOrduino -- an arduino leonardo/scratch sensor board mash up
https://github.com/cscott/xorduino

Last synced: about 2 months ago
JSON representation

XOrduino -- an arduino leonardo/scratch sensor board mash up

Awesome Lists containing this project

README

        

This is an Open Hardware peripheral for the OLPC XO-1/1.5/1.75/4.

The files are created using Eagle 6.2.0 on Linux and the SparkFun footprint
libraries.

Strong inspiration drawn from the following Open Hardware designs (thanks for
sharing!):
* The Arduino Leonardo (arduino-compatible ATmega32U4 design)
* SparkFun's ATmega32U4 breakout
for figuring out which parts of the Leonardo design are actually
mandatory
* SparkFun's Scratch Sensor Board-compatible PicoBoard

Some notes:

0. This board integrates Arduino, Scratch Sensor Board, and turtle robot
functionality. There are many optional parts: if you want to build
just the Arduino, you may; if you want to populate the robot functionality
but not the sensor board, that's fine, too. If you populate the
peripherals but not the ATmega32u4 processor, this makes a splendid
"shield" for the XO Stick -- one way to amortize the cost of
the robot functionality is to have just one XOrduino-bot shield per
classroom, while still giving the kids their own XO Stick "brains"
which they can mount on top of it.

The "bot" features of the board include a current-limited motor driver,
two bump switches at the front of the board, and two optical sensors
for measuring motor rotation, allowing the user to write code like
"rotate left 90 degrees" instead of "rotate left 2 seconds", which
experimentally kids find much harder to understand. The XOrduino
board mounts on a Tamiya Twin Motor Gearbox (part #70097), and there's
a mounting hole for a ~25mm long standoff to serve as a front skid.

The motors are set up to draw 1A max, which matches the power source
ability of the XO's USB ports. The USB standard only allows 500mA
draw, which would require adjusting F1 and RN7.

1. Many of the Leonardo design's components are optional in a
lowest-possible-cost design, for a number of different reasons:
a) USB port protection which is already included on the XO
motherboard,
b) ESD and protection diodes (helpful but not required),
c) bypass caps and ferrites for less noise on analog signals
(helpful but not required).
Wherever possible I've included the pads anyway, so that less
budget-conscious users can populate these components. At times
this has required jumper traces which you need to cut if you
decide to populate the optional components.

2. I eliminated the multi-way 3.3V/5V internal/external power supply
functionality of the Arduino to save cost. The XOrduino is 5V
only, powered by the USB port. The Arduino "3.3V" pin on the
shield connector is left disconnected. I've replaced this with
a lower cost step-up regulator, allowing "bot" users to power
the XOrduino with a 3-cell (4.5v) battery pack. Again, all
these components are optional: the XOrduino will run fine
powered by its USB tether.

3. The first version of this board used a large number of through-hole
parts. This revision is less afraid of surface mount parts (since
the ATmega32U4 is only available in an SMT package anyway), which
save board space and lower BOM cost. I'm attempting to make the
XOrduino local-assembly-friendly, so I surface mount footprints are
as large as possible: all discrete components are 0805 or larger.
Like the XO Stick, this has been routed as a two layer board to
lower reproduction costs, although if you fabricate with a 4-layer
board you will get more robust power and ground planes.

One possibly-controversial change in this version is to use
surface mount resistor arrays to reduce part count and BOM cost;
they may turn out to be too small to hand assemble. We'll see.

4. I made this Scratch Sensor Board compatible. Even though many of
the scratch sensors are redudant on the XO (it has a microphone
already, and the XO-1.75 includes an ambient light sensor), they
gain new relevance in the "turtle bot" mode -- they make it easy to
build a standalone robot which is "afraid of light", "stops when
you clap", etc. The scratch community has a large number of
interesting examples based around the Scratch Sensor
Board/Picoboard, many of which can use the 4 additional channels
provided by the XOrduino ("color etch-a-sketch", for example, with
knobs for X, Y, color, and line width). I used 3.5mm jacks instead
of the Picoboard-standard 2.5mm jacks in order to be compatible
with probes built for the XO; I hope that was a good choice.

See https://github.com/osbock/ScratchSensors for an arduino sketch
to support the Scratch Sensor board functionality; it might be nicer
to integrate this into the bootloader so that it's "always there".

5. There's a USB plug integrated with the PCB with break-off tabs to
increase the thickness to the USB standard 1.6mm. There are pads
for a through-hole USB mini-B connector and a more-standard surface
mount USB micro-B connector, but they are rather expensive (~$1).

When the discrete connector is populated, it leaves the USB
signals and power/gnd exposed on big metal tabs, which could be
non-ideal. Certainly you shouldn't plug in to more than one jack
at a time.

-- C. Scott Ananian, 2012-06-09, revised 2012-07-30, 2012-08-08.