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