GRAYnomad Nature Photography :: The QUUB


NOTE: This is an initial landing page for an upcoming QUUB website. Both this page and the QUUB itself are a work in progress.

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.

  • The core processor board is an Raspberry Pi Pico module, this is a dual core 32-bit Cortex M0+ processor running at 133MHz.
  • Small form factor, nominally 70 x 70mm (2 3/4 x 2 3/4 inches).
  • A unique method of attaching four "sides" (vertical PCBs). These sides make the QUUB design "self enclosing", no need for a box.
  • Addressable daughter boards can be stacked above or below the core processor.
  • Two optional "mezzanine" expansion modules with a 14-way interface, useful for small addons such as an SD card socket.
  • 24+3+7-way "stackplane" using stackable headers.
  • The stackplane has provision for all power signals, 2x I2C, SPI, 2x UART, 2x analogue in, 8x digital IO, four user-defined signals, and optional addressing of daughter boards.
  • Up to 8 daughter boards can be addressed and can therefore share the same system IO lines.
  • A PiicoDEV (STEMMA-QT/QWIIC) header.
  • Dedicated debugging pins as well as the standard SWD interface brought out to a header.
  • Debugging connector directly compatible with a standard .91" OLED display that can be used for general IO or debugging.
  • Front-panel accessible pushbutton that can be used for reset, designed to be activated through a small hole in the PCB.
  • 7-20 volt polarity-protected VIN.
  • One switched power signal that can be used by the MCU to shut down peripherals such as a GPS or wireless transmitter.
  • Two mounting holes suitable for an M3 bolt or similar-sized screw.

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 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.

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.

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.

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.

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.

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 in the stack
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.

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

  • There are two mounting holes located at the opposite side of the PCB to the 24-pin stackplane header. These can be used for 16mm male/female standoffs that will mechanically hold the stack together.
  • Each mezzanine board position has an optional broaching nut set into the main PCB, this can be used to mechanically secure the boards.