The SparkFun Pro Micro RP2040 takes the new RP2040 microcontroller chip from the Raspberry Pi Foundation and puts it in a minimal form factor.
Previously, SparkFun used the Pro Micro form factor with an ATmega32u4 to provide the functionality of an Arduino Leonardo: the usual GPIO, analog inputs and PWM outputs plus native USB support. This time they have squeezed the more formidable RP2040 microcontroller onto the board. The RP2040 is more powerful in just about every way. It features a dual-core Arm Cortex-M0+ CPU with 264kB of SRAM. It is attached to 16MB of external flash memory for program storage. There are four 12-bit analog inputs multiplexed onto GPIO pins. It has 16-bit PWM capability available on most pins. It provides native USB device and host support.
The RP2040 chip has 30 very flexible GPIO pins, but you will find only 18 of them broken out to header pins on this board. Two additional GPIO pins provide support for the SparkFun QWIIC Connect System. The four pin QWIIC connector is at the end of the board and provides an I2C serial connection and power to QWIIC-compatible sensors and peripherals. An additional pin is connected to an RGB LED. Most of the RP2040’s pins can be put to multiple uses. Just about all of the pins can be assigned to one of eight PWM timers, or to an SPI, I2C, or UART serial connection. The four analog pins are in fixed positions by hardware, but most of the other pins can be reconfigured from the default roles given to them by SparkFun.
In an improvement to the form factor, the pads for the header pins are now castellated to allow surface mounting the board to another PCB. The board arrives without headers. Be careful when soldering on headers as the switches and crystal crowd some of the pins. There are a few surface mount pads on the bottom of the board. Two pins break out the SWD debugging interface. One pin comes from the data out pin of the RGB LED. The voltage, data, and ground pins from the USB connector are broken out as well.
The Hookup Guide from the SparkFun website walks through the hardware of the Pro Micro RP2040 as well as how to program the board in MicroPython. The guide refers you to the Raspberry Pi Foundation’s website for a guide to programming in C/C++. The overarching theme to programming the board is to treat it like it is a Raspberry Pi Pico, the board the Raspberry Pi Foundation built to carry the RP2040 chip. The only difference in programming the Pro Micro is to be aware of the pins left disconnected, and the pins dedicated to the QWIIC connector and the RGB LED.
To get started with MicroPython, I recommend following the getting started with MicroPython guide on the Raspberry Pi Foundation’s website as it links to the required software. Click the “downloadable UF2” file link to download the latest MicroPython system for the RP2040. Getting MicroPython onto the board is a snap thanks to the UF2 bootloader. Simply hold down the “boot” button (see pinout diagram) on the Pro Micro as you plug in the USB cable and the board will mount as a USB mass storage device on your computer. Copy the UF2 file you downloaded onto the board and it will reboot running MicroPython. At this point the board is in REPL mode, which allows you to issue instructions to the board over USB through any serial terminal program. CircuitPython appears to work as well, with the same installation method.
To program the board in C/C++ you will need to install the Pico SDK. I would not recommend this for beginners. The best documentation comes directly from the Raspberry Pi Foundation website. Scripts are available to install the entire toolchain on a Raspberry Pi if you intend to use one for development, or there is a Windows installer. The SDK can be used with Visual Studio and other IDEs as described in the official documentation, or you can use it from the command line. The SDK includes a number of example programs that I found very useful in getting started.
As another option, I attempted to program the board in Arduino IDE by installing support for “Arduino Mbed OS RP2040 Boards” in the library manager and then programming the board as if it was a Raspberry Pi Pico. At first I was getting an “unknown error” message when downloading a sketch to the board. However, after installing CircuitPython to the board, it began accepting sketches from Arduino IDE as well. Your mileage may vary when using Arduino libraries with the board. The Adafruit Neopixel library worked fine for controlling the on-board RGB LED. The SparkFun Qwiic Button library, for example, did not work as intended.
- Features a QWIIC connector for rapid prototyping
- Very small form factor that can be surface mounted