Help develop a new stackable development system

A couple of us are working on a new take on a stackable development system. It will be Arduino software/IDE compatible but hardware wise it is nothing like what has been offered before AFAIK.

I've been working on this on and off for about 3 years, an earlier version was written up in "Electronic Design" and there will be a new article about it soon. So the basic idea is fairly mature, that being...

  • Processor independent, processor boards are being designed with an 8-bit AVR ATmega1284, ATmega328, and a 32-bit LPC1227 at this point. Even a Picaxe.
  • Small form factor, nominally 2.5 x 2.5 inches (64x64mm).
  • Daughter boards (like shields) can be stacked above or below the core processor.
  • Special types of daughter boards allow large power supplies, robot wheels, displays etc to be mounted at the top and bottom of a stack.
  • All four sides of the system available for IO connectors.
  • Up to 30-way backplane using stackable headers. The system is usable with just 6 signals though.
  • Backplane has provision for I2C, SPI, UART, vectored interrupts, and general-purpose user signals for analog inputs, PWM, inter-module comms etc.
  • Special consideration paid to make multi-processor systems easier to develop. For example in-system programming of up to 16 processors with a single USB connection.(not all at the same time though)
  • Up to 4 daughter boards can be addressed.
  • Each daughter board can in turn have up to 4 addressed modules (granddaughter boards) making a total of 15 addressable modules that can share the same system IO lines.
  • Granddaughter boards can be dumb IO or smart co-processors.
  • Vectored interrupts supported from granddaughter boards, up to 16 interrupt sources possible on a system.
  • 5V and 3V3 modules can co-exist.
  • Debugging support in the form of an extension for connecting test equipment and working on a module outside the stack.
  • Unique module IDs can be read by the core processor so it knows exactly what IO is connected. Module information stored in granddaughter board EEPROMs.

PCBs for the first 5 boards are almost ready to go and we have organised someone to do the PCBA for the prototypes. Another 5-6 board designs are almost ready but we'll sit on them until after the proof of concept boards are working.

There are 2 of us working on this and the design is largely locked in, but smart as we are it's always possible to make dumb mistakes or just not see a golden opportunity. I'd hate to miss a great feature for sake of changing the function of a single pin.

Which brings me to the point of this post (finally).

I'd like to have a total of 3-4 maybe even 5 people interested in working on/with the design. At present that just means reviewing the schematics and the overall concept with a view to pointing out mistakes, improving existing features, or suggesting new features.

This will be a totally open project (CC BY SA I think) and there are already a lot of details on a web site, however right now we are not releasing schematics etc except to the chosen few, the web site is not hard to find but I'm not pushing it yet either.

So if you are interested in being a co-founder of, or contributor to, this system and you have a good knowledge of embedded hardware and/or firmware please email me rob@robgray.com

What do you get out of it? Apart from the huge satisfaction of helping me to get rich you mean? Well when this becomes a global phenomenon you will be listed under the "Much thanks to..." heading on an obscure page of the web site. If you want to go shares in the prototype cost you will be a "Co-founder" and get your share of the PCBs, fully built and ready to let the smoke out.

Really I can't put it any better I think, this is a great opportunity to waste some time and maybe some money as well, and in return get a few prototype PCBs that don't work. On the other hand...


Rob

PS, I think that was about right, did I sugar-coat it too much?

Are you stuck on that 64x64mm footprint? That's a horrible size with respect to the Itead/Seeed/Elecrow PCB fabs.

I'd been thinking of the same type of project myself, 50x50mm, because in a couple months I'm going to be pushing into a fairly large automation project. I need various combinations of RS485, wireless, display, etc. nodes and was thinking something stackable and built around an I2C bus would be the way to go. With ATTinys under a dollar now it would be pretty inexpensive to do I2C-to-whatever translation for each module.

Are you stuck on that 64x64mm footprint? That's a horrible size with respect to the Itead/Seeed/Elecrow PCB fabs.

Pretty much, in fact the original design was 48x48 but this version has modules that solder onto the "mother board" and if the mother board is that small the modules are too small to be of any use.

Here is a pic of an existing mother board design, known as the X-board

The odd shape allows 4 modules to be connected to it, you can then stack several of these as well. A typical module looks like this


(This is the ATMMega1284 core CPU module)

As you can see things get pretty packed so going smaller is not really an option. However it's only the X-board itself that is 64x64, the modules are only 48x21mm and well within the cheap fab house sizes, they require castellated vias though, I'm not sure if those guys will do that.

was thinking something stackable and built around an I2C bus would be the way to go.

The Quub has I2C, SPI and UART comms links on the backplane. SPI is considered to be the primary link because of it's speed, however I2C is also supported and if that's all you need you can get by with a 6-way bus for power, I2C and UART. This will (in theory) allow 127 slaves but as you know often the addresses clash.

Have a look at the web site, (quub.org), it's still pretty light on details but we're head down and bum up with the hardware design at present. We were almost ready to get boards made when I had a bright idea last night that will require some changes. Still better to do that now than try to retro fit later.

I am certainly interested in hearing more about what you have in mind, maybe this will suit you or maybe not, but we can still swap ideas.


Rob

Had a few free days to think about this.
Going back to the OP I don't think we need to go round and round evaluating, to put it nicely, the design.

But from life long experience I feel that a non-standard ( whatever"standard" is ) motherboard locks the design into hard to change layout - as aready pointed out about Arduino "fixed" I/O assigments.

I see the design as an attempt to have a freedom of I/O assingmets and let the off-the -shelf hardware do the real I/O work. That's good. But fabricating the odd looking ciruits boards and then soldering docking modules would not be a resonable option for "mass production".

I really believe that a basic board with processor and semiuniversal I/O access would make more sense.
I bet a one kind of protype "production " of 5 pices of a controller with I2C output could be easy ( software) modified for another type , say RS232 "product" and so on.

I really feel the center connector is really cutting down the real-estate too much.
I have not digested the actual benefits of this "connector column."

Thanks for your input both here and offline Vaclav.

I think you have many valid points and in fact I am prepared to change the physical format, I already have a new version half designed with square boards, standard connectors, and native Arduino shield support. The electrical format will change a little as well but overall I am pretty happy with that. Things like board addressing and low-latency interrupt support are important IMO and something that cannot be done with a simple I2C bus.

I'll PM/email those who have shown an interest with new details when they are ready, so if anyone is more interested in this with a changed format get in touch.


Rob

Chagrin:
Are you stuck on that 64x64mm footprint? That's a horrible size with respect to the Itead/Seeed/Elecrow PCB fabs.

I'd been thinking of the same type of project myself, 50x50mm, because in a couple months I'm going to be pushing into a fairly large automation project. I need various combinations of RS485, wireless, display, etc. nodes and was thinking something stackable and built around an I2C bus would be the way to go. With ATTinys under a dollar now it would be pretty inexpensive to do I2C-to-whatever translation for each module.

Friend,
take a look at "LittleWire", basically PC via USB to I/O "dongle". It has 4 I/O pins and a small set of "samples" applictaions.
It uses one of the Atmel "tiny" processors, sorry I can't read the label. I used it to interface to DDS module.
There seems to be no big interests( !) in the setup, and the supprting libraries are somehow capable of only 50 ms "speed" . I did not need anything faster, so I did not do any search why it works that slow.

Did you ever come up with any ideas on the best way to handle the "I/O bus" problem when stacking? I finally took the time to draw up some boards so I could illustrate my thoughts from earlier. And apologies if I came off a little rough earlier; I'm apologizing now by giving you a chance to ridicule my concept. :wink:

As I mentioned earlier the size is set at 5cmx5cm to keep it cheap ($1/board). Only the SDA, SCL, VCC, GND, TX, and RX pins in a standard/defined location. I just have this basic '328 prototype and an empty prototyping board as an example, but if you can tell I took care to make sure all the holes would stay lined up, kept the GPIO pins on the 328 on the edge so they can be "brought up" if required. I kinda cheated in my philosophy by adding the MAX485 but I anticipate that to be frequently needed. I can always be left unpopulated, of course.

Again it's just intended to be a rudimentary layout for quick and inexpensive projects. That's what I'm after -- something more than a blank perfboard and less expensive than another Uno.

5x5_2IC.png

5x5_328.png

Hi Rob,

It sounds interesting, I havent seen your hardware, but from the description you gave, One of the project that came to my mind is TinkerForge Home | Tinkerforge. Although its not arduino IDE compatible, hardware wise its stackable and similar.

Krishna

I've been working a lot on this but not posted anything because...well nobody seems interested really :slight_smile:

Did you ever come up with any ideas on the best way to handle the "I/O bus" problem when stacking?

I'm not sure there are any major problems, the stackable headers (al la Arduino) are a cheap and reasonable option. I have moved the backplane to one side and that allows the use of larger chips which is good. But I've lost one side of IO connectors.

Only the SDA, SCL, VCC, GND, TX, and RX

All these appear to be on different headers, is that the case?

You seem to have the standard GVS pinout on the GPIO which is good.

I'm not that worried about being under the 2x2" size, truth is I don't think I could do what I want in that size anyway, I have reduced the boards though to 2.2(56mm) sq. Boards this size with 4 layers, SMDs on both sides and fine geometries are about $2.50 each which is OK I think.

One of the important things I think is to design a header pinout that will stand the test of time, this can be done by using just a few signals as you have. I have the same idea but can't resist adding a few bells and whistles :slight_smile:

How are you going to program the 328?

@Krishna, I'll have a look at the Tinkerforge stuff now.


Rob

Rob,
I have been busy coding my video application.
I do not want to rain on your parade, but from causal encounters on this board - the "mass market" is in "buttons and LED's". That is probably why there is no great interest here. I think you would benefit from somebody who has a need for semi-universal application for the latest Atmel hardware. After all, the PC layout is pretty staight forward regardless what you choose.
Best of luck
Vaclav

Graynomad:

Only the SDA, SCL, VCC, GND, TX, and RX

All these appear to be on different headers, is that the case?

These are all on the six pins on the top edge on the left side. They're not duplicated on the GPIO headers in the GVS arrangment on the sides, if that's what you mean.

Graynomad:
How are you going to program the 328?

Did I goof up my ISP header? I haven't given the design a full check.

@Vaclav, no problems, I just like to wallow in self-pity every now and then :slight_smile: Yes it's hard to get any interest in projects here, sometimes it happens but not often. I'll post some more details soon.

@Chagrin, don't pay no mind to me, I must be blind. I haven't checked every connection but your design looks OK, just not complicated enough :slight_smile:

@codelectron, I had a look at that system, seems pretty nice but I can't find an overall simple explanation of the principals, so I've had to interpret some schematics. It seems to be just very similar to what I'm doing but it's not possible to really know how it works without better documentation, maybe I missed that. One difference is that it has to be connected to a host PC, although it seems a standalone version is in the wings.


Rob

Yes the basic principle is missing online, From what I understood.
The basic communication between PC and Master Brick is USB (there are many slave bricks). User Applications are written in PC and they communicate with a local server which act as a gateway between sockets and USB. Since its socket there are many bindings and wrapper available.

Bricks do complex tasks( Each brick has a controller in it), and Bricklets are sensors. Atleast one Master brick is needed to communicate with PC and you can stack as many Bricks on top of it. They communicate with the local daemon in the PC using this protocol. Blog | Tinkerforge and here Doku | Tinkerforge .

Krishna

As I said, lots of changes have been made to bring the Quub more in line with being a hobbiest-friendly platform while at the same time being suitable for more professional use.

  • The solder-on modules are gone as they would be too small and fiddly for many people but also they made it hard to reconfigure a system.
  • The size is now 2.2" (56mm) square
  • Backplane is now on one edge, this does lose 1/4 of the connector capability but OTOH allows larger chips to be used. This will be important when we do a SAM or LPC or other 32-bit CPU board.
  • Backplane supports battery backup and system power down and wake up.
  • The first core processor is now a Mega2560 with 512k external SRAM.
  • Direct support for Arduino shields (UNO size).
  • Up to 16 modules can be addressed, each with 4 sub addresses.
  • 34-way backplane, modules can be stacked although if 16 are used it would get a bit high so modules can also be used on a DIN rail mountable backplane. Modules can also be connected with a standard 34-way IDC ribbon cable.
  • Each module has a front panel for user interface items, logos etc.
  • Ability to address a huge amount of IO, for example 512 digital channels (heck even 1024 depending on the connector pinout you use). Or maybe 64 serial ports, 256 differential analogue inputs etc etc.
  • 5v and 3v3 modules can co-exist. Probably even 2v5 and 1v8 modules (TBD)
  • Up to 64 interrupt sources (pseudo-vectored) from system modules.
  • Direct connector support for all 4D Systems LCD/OLED displays.
  • Expanded support for I2C, essentially an unlimited number of I2C devices will be allowed using expander modules.

Some pics of the proposed CPU board.


So we should now have immediate access to the 100s of Arduino shields on one side of the CPU board, but can also start developing a more capable system on the other side.


Rob

Rob,
Can I suggest that for your backplane connector you use an angled 34 pin connector so that the board can plug directly into the backplane without the need for a cable (and two more plugs). Even if a cable is used, an angled connector will mean that it will be possible to insert and remove the plug without having to disassemble the stack. This will increase the overall front-to-back dimension of the unit, but not alter the PCB.

Yes I agree, I think we can have two bob each way by just not loading the connector and letting the user solder on what they think is appropriate for the application.

For a few boards in a final "product" (ie all working and won't change) a bolted-together stack is arguably the more robust option, but it's a pain if just tinkering or in the design stage.

I also like the idea of an old-fashioned backplane and do plan to make one, in this case as you say RA headers would allow easy plugging in and swapping of modules but at a slightly higher cost because you have to have the backplane as well. A backplane is probably less robust, especially as I can't use card guides, but I have some ideas for an enclosure that would hold the boards rigid.

So we could go either way, or indeed both ways, with no changes to the design. The original version of this only allowed for 4 boards to be addressed so stacking was a good option, however we now have up to 16 and that would be a bit silly as a stack, so maybe the backplane option will be the default. Still thinking about such things.

There's still time for ideas, we've almost done the final review of the schematics, when that's done I'll start laying out the above CPU board and the further I get into that the less inclined I'll be to change anything :slight_smile:


Rob

With a solid backplane and right angle plugs on the boards, you'll have a rigid structure without the need to bolt them together. You'll have them fixed in all three axes without bolts.

The only problem I can see is that the force needed to mate 16 cards to 16 * 34 pin sockets (16 * 34 = 544 pins) all at the same time will be quite large! Extraction will be even more difficult. (I forsee broken fingernails and much swearing :grin:)

To overcome this, you could make your backplane so that the sockets slide up and down individually (connected by ribbon cable) on guide rails. Plug a board in and slide it down to mate with the board below to form your stack. The bottom socket can be fixed for rigidity. A small fixing mechanism ( a couple of small bolts into threaded holes?) for the topmost socket would hold the stack together.

The Mama Shield uses (used) a backplane technique. PCI Express x1 connectors if I'm not mistaken.

Thank you for sharing the link Chagrin.
It appears that backplane sits on top of an Arduino shield, which to me doesn't represent a way forward, just more capacity to create some mess. Looking at the photos I don't see how that is an improvement on what we already have or how that will be mechanically stable.

Over the past months, a fair amount of thought has gone not only into the electronics of the Quub system, but also into how it can be mechanically constructed and expanded.

It is hoped that it will suit many different situations, from the desktop plaything to robotic adventurer to sophisicated remote monitoring systems and even to finding a place in the niche of industrial control systems. We'll be excited to see what people do with it.

Each iteration of the design has seen requested features and its overall functionality improved, whether that be from people here on the forum, or the ideas talked on late night skype.

The signals that make up what we call the 'stackplane' of Quub have been thought over long and hard now and it is all to easy to keep going with designing and putting new ideas in, with ever decreasing gain. Saying that, what we were asking is for any specific ideas or suggestions you may have we could consider.

The current design of Quub, we think what we have is very good, in terms of backplane signals and how that works to create a very expandable system with per board addressing and vectored interrupt giving fast servicing of IO on the different I/O modules that will become available in time.

Quub is designed to be as rugged electrically and mechanically as we can have for as lower cost as possible.

Talking with Rob, our next step is to have the CPU-2560 board made so we can put it through it tests.
We then expect to make a start on the various IO modules that will make up the Quub system.


Paul

the force needed to mate 16 cards to 16 * 34 pin sockets (16 * 34 = 544 pins)

Whether backplane or stackplane you would only plug in a single board at a time. Or are you suggesting that a bolted-together stack would then have a backplane attached? Yes that would be an issue but there's no need to do that, board can be fixed after the event if necessary.

Re the rigidity, if you look at the photos on Chagrin's link you can see two setups, the first has standoffs on the free end of the board and the second doesn't. The version with no standoffs looks like a dog's breakfast and I think would not be very robust.

However I agree, I think with a hard backplane there would be little need to also fix the front of the boards, but it's still an option for high-vibration applications etc.

As for the Mama shield, I'm still trying to figure out what the advantages are. I suppose it's similar to the Quub in that you can use both standard Arduino shields and their new versions, however it seems to be discontinued, was that because it wasn't very good, or there weren't enough new-style shields, or...


Rob