Since the two aren't totally pin-compatible, the board allows you to mount either microcontroller on a mini breadboard (so you can swap them out), while using most of the same physical connections for servos and NeoPixels – to create light and motion effects for your companion bot.
When it came time to build a new robot this year, I wanted to reuse the system, but it was so tedious that I've decided to design a quick circuit board for the same task. It's designed to be flexible, so you can keep using the same basic circuit setup without soldering a ton of custom breakouts (which is a time-sink I've found myself stuck on many, many times...). You could swap in any similar board and change the pins easily by moving your servo connections or shifting the breadboard wires.
Order the most recent version from OSH Park here! (The next one will have holes for machine screws.)
I wanted to make the 3-pin headers available to both sides of the microcontroller, without the extra bulk / nuisance / supplies for two full sets of headers. So, I created a column of solderable jumpers on the back. If I'm not using all of the pins on the header side (which I virtually never do), I can easily bridge one over from the opposite side of the board.
Since I'm building a black cat or raccoon robot for Halloween, and this is the sort of "heart" of the bot (taking neural impulses from the "brain" and using them to drive behavior), I decided to go with a ribcage motif for the connecting traces between the two sides:
The board is somewhat self-documenting, inspired by Joey Castillo's Open Book e-reader project.
The quote at the bottom – "Mittler zwischen Hirn und Händen muss das Herz sein!" – is from Metropolis and means, "the mediator between head and hands must be the heart!" It's an elegant expression of a philosophy that drives my work.
It really helped to remember that in KiCad (free / open source CAD software), you don't actually need to create a schematic file! You can just work directly in the.brd layout tool, which is AWESOME, because I like to make lots of little adapters for various projects.
This was a very simple design: on the top is a big silkscreened rectangle to hold the mini breadboard. On each side, some rows of headers; you must have three on one side in order to accommodate side-by-side rows of GND, 5V, and signal. Plus a couple of through holes where you can attach a cut-off USB cable (for a battery pack to power the servos/NeoPixels/whatever). And then, on the bottom, the cool part: a hand-drawn ribcage, made of copper traces, allowing you to jump connections over between the two sides of the board.
I'll publish another project soon that includes my process for bringing art into the circuits. Short answer: I create the outline of the board and place the components, take a screenshot, draw on top of it in a new layer in Procreate on my iPad, export that, scale it in Mac's basic Preview app, use KiCad's Bitmap to Component Converter tool to turn it into a footprint, edit the file if needed to put it on the right layer, import THAT as a footprint in a special KiCad library, then plonk it down on the circuit and test for size! Stay tuned for more detail on that 😅
I always cut corners on my boards. Seriously – I'm done getting poked and jabbed by sharp PCB corners! And at Jazz's request, there are holes for M3 machine screws in the latest version.Usage
As seen in the photos above, and written on the board itself, you'll probably want to solder male headers on the side with 3 rows of holes. That's where it's easiest to plug things in, and servos usually come with female headers, while for NeoPixels / WS2812 LEDs, you usually solder on whichever type you want. The headers may go on either side of the board, but I find it's convenient to put them on the rib-side.
Side note: be sure to double-check the pin arrangement on your NeoPixels!! Sometimes they put data in the middle, and sometimes 5V, and you'll have to make sure your headers end up in the right arrangement.
Then, stick a mini breadboard on top. You can grab various colors from SparkFun to suit your fancy.
Then, determine your microcontroller's pin arrangement, and how you want it to connect to the PCB. Use breadboard wires to make that happen – solder them to the back side of the headers you put in, assuming you have those mounted on the rib-side. (This design means I didn't have to put in an extra row of holes, though I may change it in future so I can plug in the uC and peripherals on the same side.)
The board is designed so that the microcontroller's USB plug sticks out from the top (where the "head" would go, above the ribcage). Both of these boards put pins I like to use on the side with the 3 rows of through-holes: digital pins with PWM on the Arduino, and PWM and touch pins on the Teensy 3.1. However, you can use the ribs to bridge a connection across the board if you'd rather use a pin on the opposite side of the uC. Just don't connect anything to two pins at once!Testing
It works! I'm working on building a raccoon companion bot that uses this to control servos. Here's a test where I was trying to choose between three different servos for the robot.
...And, yes, it looks freaking rad in After Dark coloring too! (Although, in this version, I accidentally dropped prototyping holes over the Metropolis tagline...)
Which one do you like better?
** Note on German grammar: Thank you for your concern!! I took the phrase DIRECTLY from a title card in Metropolis! New versions have the umlaut in "HÄNDEN"! (I had to draw it on graphically, since KiCad won't let me type it that way...) Here's the title card; take it up with Fritz Lang... 😅