QUUB is an open-source, micro controller system based on a core processor, addressable daughter boards, and remote IO modules. It is a general-purpose embedded microprocessor system, the form factor is based on a main MCU board and multiple stacked IO boards called "stackables". It can therefore accommodate designs from the simplest flashing-LED project to a complex multi-processor robot controller.

The QUUB system has the following features.

If you need a system with over 20 analogue inputs, or maybe 30 serial ports, or more than 200 digital IO connections, no problems, QUUB can do that and more.

Stackplane (backplane for the QUUB stack) The stackplane consists of three headers of 24, 7 and 3 connections. With the vast array of I2C and SPI peripheral IO chips now available it makes sense for larger and more complex applications to have a backplane with just a few signals that communicate with slave devices using one of these popular serial interfaces. However for tinkering or simpler applications the QUUB can be used like any of the other development boards available.

There are four user-defined signals on the stackplane, these signals pass up the entire stack and can be used by any stackable for whatever purposes. One example would be a power supply stackable sitting at the bottom of the stack that needs an ON/OFF switch and a power indicator LED at the top of the stack.

Side panels (sides) Provision is made to solder small PCBs at right angles to the main PCB. These can be used to enclose the board so a box is not normally required. If all stackables implement these side panels the QUUB stack becomes fully enclosed on the bottom and sides. This leave the top.

Lids Lids are special stackables that are only used on the top of the stack. They are 3mm larger than the standard stackable size so they cover the stackable sides below them. Lids can be blank and used simply to fully enclose the stack, or they can also have active circuitry, such as an LCD display and some switches to provide a simple user interface to the stack's application.

Bases A base is not normally required as the MCU board has no components on the solder side of the board. However the MCU may not be the lowest stackable and the one that is may have through-hole components. In this case a base board may be required to isolate the electronics from whatever the stack is placed on.

Another reason to have a base board is to accommodate large components, for example a board that has four relays and a 100A shunt, these will not fit on the standard stackable PCB size but can easily be accommodated on a much large board. In this case the stack essentially plugs onto this base board.

Addressing One difference between the QUUB and other systems is that you can address the plugged-in modules, this means that you can for example have up to 8 identical modules and there are no pin-clashing issues. Or you can use modules from different sources and not have to worry about them using the same pins.

Operating modes The QUUB has three pre-defined operating modes, these being modes A, B and C. Mode A is as per all other similar boards, that is all IO is as described for the host processor. Mode B is designed to allow the addressing of stackable boards without using interrupts, and mode C also allows addressing while adding a interrupt protocol that allows the stackables to interrupt the program flow of the MCU for faster event handling.

When using mode B the eight DIO signals are used to select a stackable board, all other stackplane signals are as per normal. Mode C is the same as mode B but it also uses the two AI signals for the interrupt handshaking.

Interrupts The QUUB stackplane allows all stackable modules to interrupt the host processor so when an event happens you can deal with it very quickly. The interrupt to the MCU is a genuine interrupt, however if there are more than one possible interrupt source the MCU must then poll the stackables to see which of them raised the interrupt. There is a fast mechanism defined for this that requires just a few IO calls.

Mezzanine expansion There is provision for two small expansion boards that sit above the MCU and below the first stackable. These can also be addressable (at the expense of addressing stackable #6 and #7) and are designed to be used for small functions that only require a subset of the backplane signals. These are to be used for functions that don't justify a full stackable, such as an SD card socket.

If these mezzanine boards are used and they require addressing they use the board select signals #6 and #7 and therefore only six addressable stackables can coexist with the mezzanine boards. Of course if any/all of the boards don't require addressing there are no restrictions.

Debugging There is provision for a single 13-way header located on the very edge of the PCB for easy access should a daughter board be plugged in that would hinder access to normally-placed headers. This header has power and SWD signals plus three GPIO signals that can be used by the code for debugging and the USR input. This is a system I've used for years that allows the running code to "talk" to a logic analyser in real time with very little intrusion into the real-time running of the program. The header also allows for a small OLED display to be easily attached.

TX0 and RX0 are also available on this connector, this should allow easy connection of a Pi debug probe or even another Pico for full in-circuit debugging.

The combination of OLED (slow but detailed), debug probe (intrustive but very detailed) and GPIO pins (fast and non intrusive but limited information) should cover all debugging methods.

OLED display Four of the connections on the debug header match the pinout of a common .91" I2C OLED display. This allows the easy connection of such a display for debugging with the display poking out from the side clear of any stacked daughter boards.

Switched power A high-side FET switch is provided and controlled by a GPIO pin on the MCU. This can be used to totally remove power from a stackable as a power-saving measure. For example a wireless transmitter or GPS module can be powered down when not in use.

The source of the switched power is solder-jumper selectable and can be 5V, 3V3, VIN, or VBAT.

Power supply The QUUB can get power from the USB connection, a two-pin header, or one of the stackables via the VIN or VBAT signals. The input range from both the header and VIN is 7-20 volts and fo rthe VBAT input 2-5.5 volts. Further more when powered from the two-pin header the input is polarity agnostic, IE it doesn't matter which way you plug the cable in.

Reset There are two reset buttons, one is a standard type to be pressed by a finger when the PCB is accessible. The other is mounted sideways on the edge of the PCB and designed to be actuated by a small object, such as a paper clip, through a hole in the side panel.This allows in-field resets with a fully enclosed stack.

The #RST signal is also available on one of the side panels soldered to the main PCB, so an external reset switch can be implemented if required.

Surface mount There are no through-hole components on the QUUB PCB, while this does make the board a bit less user friendly for the average hobbyist I have used components as large as possible to help with soldering. On the plus side the use of SMD components does allow the underside of the board to be dead flat and therefore easier to mount. More importantly though it creates a constant pitch between stacked boards and a "lid" board that can be used as a display or just to cap off the stack.

Two exceptions to this are the voltage regulator and the Raspberry Pi Pico itself. The former does have a option to use a standard three-pin regulator, and the latter allows for the socketing of the Pico when prototyping.

Location of MCU The MCU board can be located at any level of the stack, this eases access for some debugging but also allows the placing of, for example, a power supply board at the bottom of the stack. Another reason to have the MCU in a location other that the bottom is when a large IO expansion base board (say with relays, shunts, and/or other large components) is being used.

Mechanical For most applications the three stackplane headers will be enough to mechanically secure the circuit boards together. However to applications with a lot of movement and/or vibration this will not be enough so the following provisions have been made.