QuickStack: Let's make it easy!
QuickStack is an open source, truly stackable, embedded platform with hardware abstraction, integrated kernel, therefore simple to use.
Still working on the site
What is QuickStack?
The QuickStack platform is an open-source hardware solution intended for a wide range of users, from first time users with little or no knowledge of embedded controllers to embedded engineers with years of experience. The QuickStack platform can be used for educational purposes or for creating a specific end-user product.
QuickStack is a Platform somewhere between Adruino and PC104. It has the hardware quality, stack-ability, and integration of PC104, combined with the ease of use of Arduino.
QuickStack is the only platform that integrates hardware and software completely. Every module has a unique name and its own software library, creating a simple development environment. To switch on relay 4 of an I/O board is as simple as calling functions like qWorkerRelayOn(4).
QuickStack consists of the following boards
- BrainBoards. BrainBoards are boards with a defined shape and size that contain a microcontroller and connect to the QuickStack™ interconnect. Every BrainBoard™ is equipped with a crossbar so every peripheral can be connected to almost every pin. This makes BrainBoards very powerful.
- WorkerBoards. WorkerBoards are boards with a defined shape and size that contain electronics that provide required functionality. Examples of WorkerBoards are relay boards, high side switches, LCD boards, Wi-Fi boards, etc. WorkerBoards are controlled by BrainBoards.
These boards are connected by the QuickStack interconnect
- The QuickStack interconnect is the connection between BrainBoards and WorkerBoards. It consists of two 28 pin connectors. They are located on the short side of the board so there is lots of space on the long sides to connect to the outside world. The interconnect is divided into lanes. 1 Main lane, 4 Smart lanes, and a Shared lane including power. BrainBoards provide lanes and WorkerBoards consume lanes. Smart lanes are automatically connected to WorkerBoards™ depending on the requirements of the other boards. Some WorkerBoards™ may supply power.
The QuickStack interconnect consists of the following:
- Main Lane. The Main Lane consists of 16 pins that can be connected to any of the peripherals of the processor like UARTs, SPIs, Timers, or PWMs. Eight of the pins can also be used as analog inputs.
- Smart Lanes. There are 4 smart lanes on the QuickStack interconnect. They each consist of 6 pins that can all be connected to any peripheral of the processor just like those in the main lane. The WorkerBoards are able to change the lane they connect to, so even 2 identical WorkerBoards will not try to connect on the same physical pins.
- Shared Lane. The shared lane has an I2C bus, all the power rails, like 5v, 3v3, GND, and the calibrated 20ppm/C° 2.5v reference for analog measurements. It also contains the QuickStackBus.
- QuickStackBus. The QuickStackBus is a multi-master bus based on a CSMA/CA access method running at an auto negotiated speed of 1 to 16Mbaud. The libraries use this bus to seamlessly communicate to a practically unlimited number of boards.
The motto of QuickStack is “Let’s make it easy”. This drives the hardware and software development.
Most platforms are simple to use for one task but there is a very steep learning curve when multiple tasks need to be implemented on the same MCU. Most applications consist of multiple tasks, like sensors that control motors or relays and communicate over Wi-Fi or USB.
When you want to expand and do more, you can control the timing of the tasks individually and then communicate information between them with messages. This gives you a very even learning curve because you can tackle your project in bite-sized chunks.
- When applications become more complex, software simplicity suffers. QuickStack™ is designed from the ground up to provide software simplicity for simple and complex projects.
- Software and hardware are completely integrated.
- Projects should be modular and simple to combine. QuickStack can dynamically allocate any peripheral (functions of the processor like SPI, UART’s, or PWM’s). This prevents pin contention (when multiple boards try to use the same pin) and therefore allows the platform to stack without any problems.
- The physical layout is designed from the ground up to fit into off-the-shelf enclosures.
- Applications like robotics, filtering, and motor control, require powerful MCU’s. QuickStack™ is designed for modern MCU’s that operate at 3.3 Volt.
- We put the QuickStack interconnect on the short side of the boards so there is plenty of room for other connectors.
- We did not use flimsy stack through connectors. The interconnect is made from sturdy 0.100" headers that come apart without much trouble and still have a good firm connection.
Most Powerful Software
The software truly sets QuickStack apart. Just like most other platforms, it is easy to get simple examples running. However, with most platforms it becomes difficult to combine these examples into a complete project without extensive software experience. With QuickStack, multiple example programs can be combined without any changes. Each task can be put into its own thread so it has no interference with other tasks.
The software is so efficient that it has practically no overhead and it makes it much easier to get more out of your processor.
One example is the software PWMs. The software PWMs have a period of 1mSec and a duty cycle between 0 and 1000 µSec in 1µSec steps (far beyond what you need to smoothly dim LEDs). Even with 20 software PWMs running, only 2% of the processor time is used. This means you can be idle for 98% of the time, saving a lot of power, or you can use all that processing power to do other things. On top of all this power in the software, the Hello also has another 7 hardware PWMs with 16bit resolution.
More and more projects are becoming wireless...sort of...
They all get cool wireless technology built in like Wi-Fi or Bluetooth, but to really make it wireless you also need to get rid of the power cord. This is a lot harder. When the software is written in a superloop the processor is always running at 100% and this consumes lots of power. It takes lots of programing experience to make the processor go to sleep in a superloop. The QuickStack software takes care of this for you. Any time the processor has nothing to do, the QuickStack software will automatically switch everything to sleep or idle mode. In sleep mode a processor takes in the order of 1000x less power than normal.
With the 2400mAH battery board you can run a QuickStack Stack for many months to years on a single charge!!
We really take pride in the QuickStack
documentation. During the campaign and continuing with every new board
we release, we will update the documentation and make it even better. We
have included some of the documentation and schematics here. It is not quite finished yet but we are most of the way there.
Here are a few of the alpha documents.
How it all started
We have often worked with other platforms, like Arduino, and found that making larger more complex projects with multiple boards could become very difficult. We would run into problems like pin contention, where we would have to botch wires to actually make the hardware work. The software also turns out not to be the easiest thing when it comes to combining more than a single task. That’s when the idea of QuickStack sparked. We realized there was nothing embedded out there that was truly stackable. We started to systematically look at the problems that prevented a system from being stackable. If we really wanted to make the system smart, we joked around that we should just put a real brain on the boards. Ever since then we just started calling the processor boards BrainBoards. John, having extensive knowledge about embedded software, really let the BrainBoards become very smart.
Right from the get go we knew we wanted a few things:
- Real software debugging beyond just print-f statements, so we worked to be able to have a licenced debugger on every processor board.
- The board to board interconnect to have as little impact on being able to have external connectors as possible.
We really learned a lot about how to design with fewer mistakes after this first board. We now make sure that any mistake we make will be understood and added to a check list. This has reduced the chances of making a mistake twice.
With this prototype we had fixed all the mistakes of the first device. And further tidied things up with the next prototype.
At this point we really started to scrutinize ourselves. There were a number of things we just did not like.
- The stack through connectors we opted for were either very flimsy or impossible to separate without bending the pins. We knew it could be better.
- Jumpers, we just don’t like jumpers. Things should just work automatically.
- Crosstalk and noise. We wanted to make this a very reliable, robust platform, which meant kicking crosstalk and noise in the head.
The next prototype looked a lot different. And it got us very close to where we are now.
- We chose some very robust surface mount connectors with very little insertion force. Separating boards is now very easy.
- We wanted to do the power selection with diode ORing but we also did not want a voltage drop on the 5V rail. Unfortunately, ideal diodes are very expensive but luckily we came across this discreet way to do an ORing circuit. So no more jumpers!
- We added a small RC filter on every single line to take out some of the troublesome high frequency content of the signals. Then we also made it a 4 layer board to make everything better overall. For good measure, we also sprinkled some ferrite beads around to further knock any noise on the head.
- We also moved a few critical parts from the edges to prevent board flex damaging components.
A Complete Platform
So far we have 9 boards designed and are just about ready to put them into production. We have loads of ideas to expand the number of QuickStack boards out there. During and after Kickstarter we will continue to make the platform bigger and better. A lot of time has been spent to make the platform very expandable without much headache.
We will continue to have a special progress page on our site so you can see what we are working on, how far we are, and when it will become available.
An electronics platform is only as good as the projects it enables people to build. We hope that QuickStack will remove most of the roadblocks that add difficulty and frustration to some projects.
The QuickStack Hello is the first BrainBoard of the platform. Based on the PIC24FJ128GA310. The core of the MCU has the following capabilities:
- 128Kbyte Program memory (Flash)
- 8 Kbyte Data SRAM with single cycle memory access
- Modified Harvard Architecture (two memory channels)
- 16 general purpose registers
- Most instructions are single cycle (16 MIPS)
- Single cycle hardware multiplier
- 32-bit by 16-bit hardware divider
- 16-bit and 32-bit data manipulation instructions
- 65 Interrupt sources, 16 Interrupt levels with fixed 4 cycle interrupt response
- 32MB/s memory bandwidth
- Six independent DMA channels with concurrent CPU operation that support all peripherals modules
The following peripherals are available to connect to pins:
- 7 Input Capture modules with dedicated 16-bit timers
- 7 Output Capture or PWM modules with dedicated 16-bit timers and fault triggering
- 4 High Speed interrupts with edge triggering
- 2 4-wire SPI module 8 level FIFO Buffer
- 1 Digital Signal Modulator
- 3 General purpose hardware timers (There are 5 timers but 2 are used by QuickStack)
- 3 UART Modules support RS-485, RS-232 and LIN with auto-baud, 4 level deep FIFO’s and hardware flow-control (There are 4 UARTs but one is used by the QuickStack bus)
- Hardware Real Time Clock and Calendar (RTCC)
- Programmable 8/16/32-bit CRC generator
The Hello provides the following lanes:
- Main Lane
- 2 Smart Lanes
- Shared Lane (including power)
- Full Hardware debugger.
- USB interface (12Mbit/s)
- Full current protection and soft startup
- Two push buttons
- Two LED’s for indication
- Three power LED’s for Debug power, 3.3V, 5 Volt and a USB connection indication that specifies if the USB driver on the PC or MAC is loaded and working.
- 2.5Volt Voltage reference 20ppm/°C
- Small EEPROM that contains product information and can also be used for other purposes
- Pads to install additional memory
- Temperature sensor (added in the next board revision)
8x Relay Board
The 8x relay board has 8 IM03JR relays, 4 of which are single pole dual throw (SPDT), and 4 that are single pole single throw (SPST). Each relay has a LED indicating the relay position. The relays can easily switch things like light bulbs or small appliances. The board has a small prototyping area with a 3V3 and GND rail. There is also a through hole at the base of each driving transistor. This can be used to hard wire the relays to switch in parallel or switch the relays using something other than the board manager.
16x High Side
The 16x MOSFET high side driver board has 16 MOSFET switches to switch up to 4 different voltages at 4.2 Amps per MOSFET. The board can be easily used to PWM High power LED lighting, Drive Motors, or any other application that requires fast switching of high currents.
The Wi-Fi Board uses a TI CC3000 Wi-Fi module with a PCB antenna. This module is very versatile and can easily be configured using an Android or iPhone app. This configuration technology is called SimpleLink™ Wi-Fi SmartConfig™ Technology, a one-step Wi-Fi setup process that allows multiple in-home devices to connect to Wi-Fi networks quickly and efficiently. See a complete description here.
The board includes a board manager that provides an extended lane with 8 pins. Those 8 pins can be a PWM, Analog input, Digital Output, or Digital Input. There is also a small prototyping area and a place to put an external connector.
Since QuickStack is interrupt driven and designed to be inherently low power for both software and hardware, many applications can easily last over a few months on a battery board. The board also has 2 LED’s to indicate where the board is in its charging cycle.
32x16 LED Board
The 32×16 LED board is a matrix of 32 by 16 LED’s. It’s great to display text, counters, or anything else that you may want. The entire display is dimmable via a programmable I2C potentiometer, or parts can be dimmed to 8 different levels using PWM. It uses TC62D748CFNAG current source IC's to give an even amount of light from all the LED’s.
Smart Bread Board
The Smart Bread Board comes with the connectors needed to connect to the QuickStack interconnect, as well as a Board manager and all the circuitry needed to connect to a smart lane. All the pins from the Main Lane, Shared Lane, one smart lane and Power Lane have been brought out for easy soldering. The board manager provides an extended lane with 8 pins. Those 8 pins can be a PWM, Analog input, Digital Output, or Digital Input. There is also a small prototyping area and a place to put an external connector.
8x Power Relay Board
The 8x power relay board has 8 T9AS5D22-12 relays. These relays can switch up to 20 Amps at 250V so anything like large appliances, machinery, and large amounts of lighting can be controlled with these relays. Each relay has an LED indicating the relay position. Since the relays switch so much power they use 12V coil voltage. Therefore the board requires an external 12V power supply. The 12V is brought down to 5V using a switch mode buck converter and fed to the rest of the stack where a Brainboard can make 3v3 for the system. The relays are pulled down so they cannot be accidentally turned on. The board is controlled by the QuickStackBus™ and only uses the shared lane.
Arduino Interface Board
The Arduino level shifter board shifts between 5V/3V3 and interfaces to QuickStack using the Main lane. This means you can add any Arduino shields you may already have to QuickStack. You still have the shared and smart lanes available with QuickStack.
The QuickStack enclosure is a Polycarbonate enclosure with 2 mounting flanges and a clear lid. It is extremely durable, waterproof, heat resistant, and has IP65, IP66, IP67, NEMA 1,2,4,4X,12,13, UL-508 Ratings.
It comes in 2 heights, one that supports 4 boards and another that supports 3 boards.
5V 2A USB Power Supply:
The USB power supply is a compact, very powerful supply. It is rated for 2A at 5V as apposed to the normal 0.5A most USB power supplies deliver. We also checked the switching noise and it is barely visible on the scope, even under heavy load. We strongly believe in quality in these types of things, they may be a bit more expensive but they are absolutely top notch.
12V 3A Power Supply:
These are 36W 90% efficient supplies for the Big Relay Board or to power the LED lights below. Just like the USB supplies they are excellent quality.
These are powerful 1.5 inch square little LED Lights that run on 12V. They have 16 LED's that produce over 100 Lumens/Watt. They should be limited to 4 Watts if you don't add some kind of heat sync but the LED's can be pushed to 7.5 watts total with a bit of extra cooling attached. This puts out over 800 Lumens (about that of a 60W bulb)
What is left to do.
All the Black boards excluding the battery board are preproduction boards, meaning that at the most they may need a few minor tweaks. We can order the final PCB's for the HELLO once we have added the temperature sensor and swapped a few pins of the processor. We will produce them in panels of 10 instead of panels of 12 pictured here.
The battery board has been prototyped and the schematic is finalized. We should be ordering the pre-production PCB's this week.
The Arduino interface board needs a bit more testing and needs a few minor dimensional changes, then we should be ready to order the pre-production PCB's.
The Big Relay board is going to get some nicer connectors and a few tweaks to the 12v switch-mode supply. Then we should be ready to order the pre-production PCB's.
The Core of the software has been written and tested. The outer layers like device drivers are currently in progress. The Board Manager software that controls WorkerBoards needs some more work and testing.
We chose to go to Kickstarter because it's a great way to get input from the community. For a platform that can be so broadly used, having a connection with the community lets us make the platform better. With your input we know which boards are most desired, therefore we can tailor our production and future designs accordingly.
The money raised here will specifically let us buy the components in reels and packaging that will make producing the boards economical.
The Engineering Team
Tom Groenland - Hardware
Tom has always had a keen interest in anything electronics. First it was just about taking things apart to see how they worked and sometimes put it together. Unfortunately, the cost of things not put together ran slightly out of control, so he started fixing things instead.
Tom went to the University of Calgary to study Engineering and started to really delve into design for manufacturing. Now he does freelance hardware design and has done work in the medical and Oil+gas sectors. This includes a full redesign of an RF front end, miniaturizing an analog measurement device, and changing designs to reduce the manufacturing cost.
He has good experience with Altium designer, a good base of anything from precision analog, to digital, to RF and the drive to learn whatever it takes to make things a reality.
John Groenland - Software/Firmware
John is an Electrical Engineer with extensive experience in software and firmware architecture, design, development and delivery. He was the lead architect of Q-Kernel™ by QuasarSoft Ltd., and is currently product manager of Q-Kernel™.John also works as a consultant for a medical device company and for oil and gas related companies. His experience with abstracting the complexities of hardware, the design of modular systems and device drivers are very valuable because QuickStack requires a clean design to make it easy for the developer.
What's Left to do
Risks and challenges
We know we are very close to getting the hardware done since we already have pre-production units (panelized and all) and manufacturing experience. The only real problem we may run into with regards to getting the hardware out in time is component lead times. They can become longer than expected. Once the campaign is nearing its end and we have a better idea of the quantities we will be producing, we will have a much better idea of the sourcing timeline.
The hardest parts of the software have been written and tested. Some WorkerBoard libraries may still need some optimizing when the hardware is ready. Just like any piece of software, it can take a while to track down every single bug.Learn about accountability on Kickstarter
- (39 days)