Update 8 Nov 2013 The original version of this post had the holes for the TwinTab tabs placed incorrectly in the 3D printed case. This has now been corrected and the project archive and GitHub repository have been accordingly.
I've been working closely with David Lyon preparing a new site for the Clixx.IO project which we hope will be going live very soon. We are trying to make all the information about Clixx easily available from a single source - this includes all the specifications, sample projects and code as well as a single convenient source for all the related circuit diagrams, 3D models and other assets.
Part of the redesign involved determining what extra tools and support are needed to make it as easy as possible to use the Clixx system. A component of that is Clixx.Lib, an open source C++ library to make writing code to use the Clixx components much easier and consistent over a wide range of devices. It's still in early stages at the moment but I am starting to test on a range of hardware systems, as a result I need to be able to easily connect Clixx Tabs to boards that don't have a Clixx interface definition or an adaptor board designed for them yet.
To help make my life a bit easier I designed this small DockStation that can be connected to any processor board with just a handful of cables. The whole project can be made up on stripboard and I've also designed a matching 3D printed case so it can be moved around while Tabs are still attached.
Designing the Docking Station
My original thought was to make a station with a mix of SingleTab and TwinTab slots so I could use both card formats. After playing with that design for a while I dropped it for a number of reasons:
- It made layout of the stripboard more difficult than it should have been. Routing the signal lines required a lot more wire jumpers than I was happy with.
- No matter how many slots of each format I put in the design you could always count on Murphy's Law law kicking in and needing just one more for the project you are working on. Because the 4 pin SingleTab connections are a subset of the 5 pin TwinTab it is easy to make a SingleTab to TwinTab adaptor.
Some of the SingleTab boards I have are earlier prototypes and don't exactly match the physical dimensions that were settled on for the final system and wouldn't fit into a SingleTab slot anyway.
The final design only provides TwinTab slots but does support both formats of Tab by using adapters. The layout is far simpler and easy to put together on stripboard.
Constructing the Prototype
All of the files for this post can be downloaded here. The archive includes the Fritzing project (with stripboard layout and schematic), OpenSCAD sources to generate the STL models for the case and the generated STL files themselves.
The circuit (shown to the left) is very straight forward, it simply maps pins on the 20 pin header to the corresponding pins on the individual slot headers. The power signals (Vcc and Gnd) are shared by all slots.
The circuit is laid out on a 20 x 24 hole piece of stripboard with the slot's positioned in 2 rows of 3. The large amount of space between the slot headers (vertically and horizontally) is to allow for the board dimensions of the Tabs themselves and allow enough room between the tabs for the circuitry mounted on them.
The image to the right shows the traces to cut and where to mount the components and jumper wires. You will need six 5 pin female headers and a 20 pin male header.Use a right angled version of the latter if you can, it makes for a neater build. See the section on Working with Female Pin Headers a bit lower in the post if you need to break up a larger female header to make the smaller ones.
The Fritzing document for this is contained in this archive and includes the stripboard layout in the breadboard view. Clicking on any of the images in this post will show you full sized versions which should be large enough to work from as well.
Working with Female Pin Headers
Female pin headers, unlike their male counterparts, don't seem to come in a snap off version which can make it difficult to create arbitrary lengths from a single 40 pin strip. You can always order them in the size you need but this can introduce delays in prototyping and leave you with a bunch of unused connectors cluttering up your parts connection.
After a lot of trial and error I've come up with a quick and easy way to cut any length you require from a header strip. It's easy, simple and gives consistent results (and, in hindsight, painfully obvious).
The portion of the plastic that holds the actual pins in place is very thin and, after scouring it with a sharp knife, snaps very easily. All you need to do is remove one pin with a pair of pliers, use a Stanley knife or equivalent to cut along the now empty whole and the length you need will easily snap off. You can then use some sandpaper to file down the rough edge and you have the connector in the size you need.
To cut off a five pin portion simply remove the sixth pin, cut and snap.
Printing a Case
You can use the assembled stripboard as is but if you are going to use it a lot or move it from project to project fairly frequently you might want to build a case for it to make it a bit more robust.
I designed a container using OpenSCAD and printed it on a Solidoodle 2 printer using ABS. Both the SCAD files and the generated STL are contained in the archive linked to above. The case comes in two parts - the main enclosure that the circuit board fits into and a small lid that snaps on to the bottom to keep the board firmly in place. The 20 pin header extrudes from the side of the case so you can easily attach wires to it. The top of the headers for the individual slots are flush with the top of the case so there is very little extruding that might get caught on other items.
You will probably have to file the edges of the lid portion to get a clean fit into the bottom of the case, I've designed it for a fairly tight fit. If it feels a bit loose you can simply glue it in place or, as a less permanent solution, simply wrap some sticky tape around the whole enclosure.
Using the Dock Station
Once assembled you can connect it to a microcontroller using female to female DuPont cables (shown in the image to the right) which are readily available on eBay. The pin definitions for the 20 pin connector are listed in the table below.
I'll provide details on how to connect to the standard pins on a range of devices in a follow up post, this will provide compatibility with the Clixx.Lib library as well as the adapter boards already designed as part of the Clixx project.
Pin|Description |Pin|Description ---|--------------|---|----------- 1 | GND |11 | Slot 2 Out 2 | VCC |12 | Slot 3 Extra 3 | Slot 0 Extra |13 | Slot 3 In 4 | Slot 0 In |14 | Slot 3 Out 5 | Slot 0 Out |15 | Slot 4 Extra 6 | Slot 1 Extra |16 | Slot 4 In 7 | Slot 1 In |17 | Slot 4 Out 8 | Slot 1 Out |18 | Slot 5 Extra 9 | Slot 2 Extra |19 | Slot 5 In 10 | Slot 2 In |20 | Slot 5 Out
A More Robust Version
Now I have a working prototype I wanted to design something that would be a little easier to build that looked a bit more professional. The six slot version won't fit on a 5cm x 5cm PCB due to spacing requirements so you can't take advantage of the Seeed Fusion $10 price for boards of that size. I'm going to trim the design down to 3 slots so it does fit into those limits and add support for daisy chaining so you can attach multiple docks to the same controller board if you need more than 3 Tabs at once.
The 3D case will be fairly easy to modify and I will keep the solid construction so it will handle the general wear and tear that comes with being on a workbench. The first set of those should be ready in a few weeks allowing for delivery time for the PCB's. I'll post about them again when they are done.
Using this design you can build yourself a robust and easy to use docking station that can be used with your microcontroller of choice. I designed it to make it easier for me to test and debug the Clixx.Lib library but you certainly don't need the library to use it. If you've already started playing with Clixx or are thinking about it I recommend building this (or designing something similar for yourself) - it makes things a lot simpler.
All the design files are in the Clixx.Dock repository on GitHub which is a larger project for a smart docking station with it's own CPU on board (a small ARM processor similar to this design) - something that allows you use Clixx from a standard PC or laptop over USB rather than requiring a controller board with GPIO pins available. That is a much larger project and deserves it's own post in the future.