Adafruit have so far released three RP2040 boards. We have already reviewed the Feather RP2040 and that board has become our go-to RP2040 board for many reasons. Adafruit’s second board, the ItstBitsy RP2040 is next on the bench for our review, but we couldn’t wait to get our hands on Adafruit’s smallest RP2040 board, the QT Py 2040.
We already own the previous version, based around a SAMD21 chip. Comparing the two side by side, we can’t see much difference as both have the same GPIO pinout and identical size and Stemma QT connector. The only physical differences are an extra button, and the change of chip.
The QT Py RP2040 adds an additional analog pin, bringing the total to four, and it features a built in NeoPixel RGB LED which is used as a status indicator and to alert us to issues in our code. But with a board this small some sacrifices had to be made, most notably the reduced number of GPIO pins. Is the reduction in size and GPIO pins worth paying over double ($9.95 vs $4) the price of a Raspberry Pi Pico?
Adafruit QT Py RP2040 Hardware Specifications
|RP2040 SoC||ARM Cortex M0+ running at up to 133Mhz|
|Flash Storage||8MB of QSPI|
|GPIO||13 GPIO pins. 7 x Digital I/O, 4 x Analog 12-bit ADC, 2 x I2C (including Stemma QT), SPI, UART, Programmable IO, 1 x NeoPixel|
|USB Port||USB C|
|Dimensions||0.86 x 0.7 inches (22 x 18mm)|
Design of the Adafruit QT Py RP2040
Adafruit’s QT Py RP2040 is much smaller than the Pico, roughly a third of the size. It has castellations that can be used to surface mount the board to a PCB, but just like Pimoroni’s Tiny 2040, the RP2040 SoC is located on the underside of the board, meaning that a cutout will need to be made to the PCB for flush mounting.
You may be thinking that the Adafruit QT Py RP2040 looks familiar, and you are correct. The QT Py RP2040 bears a passing resemblance to Tiny 2040. Both are very close in size, but their GPIO layout is much different. The QT Py RP2040 has the same GPIO pinout as the previous SAMD21 power QT Py, meaning that this can be a drop in upgrade for a project.
Two buttons are present on the topside of the QT Py RP2040, boot and reset. The addition of a reset button is a nice feature as it saves wear and tear on the USB C port. The strongest addition to the QT Py RP2040 is the Stemma QT connector located opposite the USB C port.
Stemma QT is Adafruit’s connector, introduced in 2018. In reality it is a 3 or 4-pin JST PH connector which has a keyed interface so that it can only be inserted one way. Typical Stemma QT devices are sensors / inputs that use the I2C protocol for communication. Inserting a Stemma QT component requires just the cable and nothing more. We do not have to use pull up resistors for the I2C SDA / SCL connections; everything just works. Stemma QT devices can be chained together to create elaborate, yet simple electronic projects. SparkFun’s Qwiic ecosystem of boards uses the same connector so many of those may also be compatible with the Adafruit QT Py RP2040.
Using the Adafruit QT Py RP2040
At the heart of the QT Py RP2040 is Raspberry Pi’s “Pi Silicon” RP2040 SoC and that means we can write code for the QT Py RP2040 in MicroPython, CircuitPython, C/C++ and soon via the new Arduino Core. But most of us will be writing code in CircuitPython, Adafruit’s own version of MicroPython which has support for an extensive library of add ons via a downloadable library of drivers.
Writing code in CircuitPython is much the same as Python, the only difference is that we save the project as code.py on the QT Py RP2040 and it will autostart when the board is powered up. We installed the latest version of CircuitPython and ran through a few common tasks. Blinking LEDs and using buttons as inputs were no challenge. We then connected a NeoPixel ring to the board and installed the neopixel.mpy library. In a few minutes of coding, we had a multi-color NeoPixel ring lighting up our bench.
To test the Stemma QT connection, we used an MPR121 12 point-gator clip breakout which creates 12 capacitive touch inputs. We installed the required libraries and then wrote our code, but we then saw errors that prevented us from moving forwards. Not to be beaten, we connected the MPR121 to the I2C pins of the board, and everything worked.
After a brief conversation with Adafruit, we discovered that the Stemma QT connection is on a secondary port, requiring our code to be modified to use board.SDA1 and board.SCL1. With that change made, our code worked.
CircuitPython is quite simply the most effective way to work with the RP2040. We have the simplicity of Python along with a massive amount of support in the form of documentation and libraries of code for add ons.
Use Cases for the Adafruit QT Py RP2040
The size and capabilities of the QT Py RP2040 lean towards embedding the board in a project. If space is at a premium, but you need the power of the RP2040 then this is the board for you. We can also see the QT Py RP2040 powering many USB HID devices, such as stream decks, keyboard shortcuts and MIDI control.
The power of the RP2040 in a smaller package and the added flexibility of the Stemma QT interface. There is nothing not to like here. If you don’t need the Stemma QT interface, then perhaps Pimoroni’s Tiny 2040 is for you. But Adafruit’s QT Py 2040 is a fantastic board for Pico projects. The only RP2040 board to beat it is Adafruit’s Feather RP2040 which is a larger board with more features and a price that’s $2 higher.