The Raspberry Pi Pico was the first microcontroller to feature Raspberry Pi’s RP2040 SoC, but a number of vendors are releasing their own third-party boards with added features. The latest and, so far, best is Adafruit’s Feather RP2040, which combines the popular Feather ecosystem and form factor with Raspberry Pi silicon.
Powered by a variety of SoCs from the likes of Atmel and Espressif, Adafruit’s Feather line of microcontrollers has been around for years so there’s a plethora of accessories and add-on boards called FeatherWings, which can mount either on top of or underneath the board or, if we use stacking headers, on both at the same time.
Even if you’re not invested in the Feather ecosystem, there’s a lot to love about the Adafruit’s microcontroller, including its strong battery support, STEMMA QT compatibility, 8MB of Flash storage and four ADC ports. At three times the price of a regular Pico, the Feather RP2040 still offers great bang for the buck.
|System on Chip||RP2040 microcontroller chip designed by Raspberry Pi in the United Kingdom. Dual-core Arm Cortex M0+ processor, flexible clock running up to 133 MHz. 264KB of SRAM, and 8MB of on-board Flash memory||Row 0 - Cell 2|
|GPIO||21 × multi-function 3.3V GPIO pins 2 × SPI, 2 × I2C, 2 × UART, 4 × 12-bit ADC, 16 × controllable PWM channels 8 × Programmable I/O (PIO) state machines for custom peripheral support. Castellated module allows soldering directly to carrier boards. Onboard WS2812 Neopixel STEMMA QT connector Onboard battery charging and support for hot swappable LiPo and Lilon batteries USB Type C||Row 1 - Cell 2|
|Row 2 - Cell 0||Row 2 - Cell 1||Row 2 - Cell 2|
Design and Use of the Adafruit Feather RP2040
As you may have already gathered, the Adafruit Feather RP2040 follows the Feather design principles and so it is compatible with the Feather range of addons, known as FeatherWings. Measuring 2 x 0.9 inches (50.8 x 22.8mm) the Feather RP2040 is slightly larger than the Raspberry Pi Pico which measures 2 x 0.8 inches (51 x 21mm).
Despite the larger size, the Feather RP2040 comes with a slightly-reduced number of GPIO pins, -- 21 versus the PIco’s 40 -- laid out to match the Feather pinout. It is great to see the GPIO labeled on both sides of the board as the Pico’s labels are only on its underside. .
Of the 21 pins there are four 12-bit ADCs, one more than the Pico and we gain the extra ADC by not monitoring the battery power levels. There are two sets of I2C pins, two SPI and two UART. Of the 21 pins, 16 can be used for PWM (Pulse Width Modulation) such as servo control, LEDs and basic audio output.
Onboard the Feather RP2040 is a simple red LED and we see a single Neopixel RGB LED which we can control using CircuitPython. On board flash storage is four times the amount found on the Raspberry Pi Pico, 8MB vs 2MB. With a typical CircuitPython install, we still have around 7 MB spare for our code and the supporting libraries.
Feather boards come with extra features, and the Feather RP2040 is no different. In the top left of the board, we see a JST connector for compatible Lithium Ion and Lithium Polymer batteries. When plugged into USB, the battery is charged at a 200mA, making this handy for embedded projects and even cosplay.
Batteries can be hot swapped and used as a form of UPS for critical projects. We plugged in a spare LiPo battery and wrote a test project to flash the onboard Neopixel. After removing the USB power, the board continued running the code. The inclusion of the JST connector is why we lose a few GPIO pins, but we will happily take their loss for the inclusion of battery power.
Another feature found on Feather boards is the STEMMA QT connector, a keyed connector that enables quick connections to compatible components. The STEMMA QT connector is really a breakout for one of the two I2C channels, and compatible components are in reality I2C boards.
Last but by no means least, we see two buttons, BOOTSEL, used to set up the board for flashing new firmware, and a RESET button that resets the Feather RP2040, saving wear and tear on the USB C port.
Programming on the Adafruit Feather RP2040
As the Feather RP2040 is an Adafruit board, it is obvious that Adafruit would champion CircuitPython, its version of MicroPython, as the programming language of choice. Downloading and flashing CircuitPython is a simple process, made simpler thanks to the reset button.
CircuitPython is a little more user friendly than MicroPython, not that MicroPython is particularly difficult to work with, and includes some extra features such as USB HID support. . Our Feather RP2040 appears as a USB flash drive, and we can edit the code.py file to write our code. It is best practice to use a good editor, such as Visual Studio Code, Thonny or, for young makers, there is Mu. Libraries of pre-written Python code for addons and accessories are available as a download from Adafruit and they greatly simplify projects, especially if used with STEMMA QT components.
We chose to use Visual Studio Code and we soon wrote a script to blink the onboard LED to confirm that our code worked with the board. With that success we moved on to more adventurous tests. After installing the Neopixel library we wrote a test script to change the color of the Neopixel LED and, after saving our code, the Adafruit Feather RP2040 rebooted and ran it, producing a rainbow of lights in these dark winter nights.
STEMMA QT and I2C Connections on Adafruit Feather RP2040
The onboard STEMMA QT connector had us intrigued, so we connected an MPR121 capacitive touch board to the Feather RP2040, installed the CircuitPython library and wrote a few lines of code to detect when a pin was touched. The code worked perfectly and this bolstered our confidence.
Next we tried connecting an I2C HD44780 LCD screen, which has a 16 x 2 character display. We connected the screen to the Feather RP2040, found a compatible library and then wrote a short test to display text. This is where our confidence took a knock, We saw errors in the Python Shell that indicated the need for pull up resistors on both of the I2C pins. The Feather RP2040 does not have pull up resistors for the I2C pins, unless you are using a STEMMA QT board which has resistors built in.
After sourcing two 4.7K Ohm resistors (see resistor color codes to identify) we tried again, this time the error involved “clock stretching”, after a little time searching the Internet and trying a few suggestions, the error remained. In the end it turned out that the two 4.7K Ohm resistors were touching and causing the error.
Using Adafruit’s Feather RP2040 with CircuitPython felt natural. Projects worked and after a few hiccups we found the workflow that suited us best. At the time of writing Feather RP2040 cannot be used with MicroPython or C. Scott Shawcroft, CircuitPython project lead has raised an issue on Github to address this issue. But in our experience CircuitPython and Feather RP2040 is the ideal combination.
We didn’t get to test the Feather RP2040 with any of Adafruit’s ecosystem of FeatherWing add-on boards, but there are more than a dozen ready to go. These include an OLED screen, a Wi-Fi coprocessor, an RGB LED matrix, a joystick and a QWERTY keyboard with LCD. Because the Feather line has been around for years, there’s a ton of options.
Use Cases for the Adafruit Feather RP2040
With the integrated battery power system, Feather RP2040 is as much at home in an embedded, outdoor and portable project as it is powering a cosplayer’s latest creation. The form factor, STEMMA QT add-ons, FeatherWing add-on boards and ease of use, thanks to CircuitPython, make this board ideal for those wanting to use accessories from Adafruit’s vast collection.
The Raspberry Pi Pico is a great development board, but the Feather RP2040 is a refinement of that original board.
If you can find one for sale -- they were sold out at press time -- consider Adafruit’s Feather RP2040 over the official Pico . We get battery power, STEMMA QT,FeatherWing add-ons, onboard Neopixel and lots more storage space.
Of course, its Feather compatibility could be a drawback in some instances as it clearly won’t work with add-ons and accessories that are specifically designed to work with a Pico. You wouldn’t be able to plug it into, for example, Pimoroni’s Pico Explorer Base, which has a 40-pin connector. And, if you need a smaller form factor, the Pimoroni Tiny RP2040 is made for you.
However, if you’re looking for the most versatile RP2040 board on the market, look no further. Sure, we pay a premium over the Raspberry Pi Pico, but the Adafruit Feather RP2040 is a refined product that is ready to drop into your next project.