High-performance Pro Micro-compatible controller
frood
/fru:d/Noun
A really amazingly together guy. E.g. “There’s a frood who really knows where his towel is.”
Finally, a powerful and affordable Pro Micro replacement! Designed from scratch and haphazardly prototyped by 42. Keebs 🙂 (GitHub repository)
Features:
- Pinout compatible with the classic Pro Micro
- I/O pin mapping follows SparkFun Pro Micro RP2040 with 5 more digital I/O pins at the bottom (same layout as the Elite-C)
- Powerful dual-core RP2040 32-bit Arm microcontroller with 133 MHz clock speed (8 times the Pro Micro)
- 4 MB (Rev7, Rev6) / 2 MB (Rev5) of flash storage – 128 (or 64) times as much as Pro Micro! Should fit all the RGB animations in the world 🙂
- 256 kB SRAM (10 times as much as Pro Micro)
- Just 3.3 mm thick thanks to a mid-mount USB-C socket that sits flush with the bottom of the PCB
- UF2 bootloader for drag & drop flashing – the bootloader presents a USB flash-like device. No extra software needed!
- Total of 23 digital I/O pins supporting a maximum of 132 switches in a standard 11×12 matrix! Or perhaps a 40% split keyboard (up to 46 switches) with no diodes? 🙂
- 4 pins configurable as analogue input (ADC)
- USB data lines (D+, D-) broken out at the top for daughterboard/external USB-C socket compatibility
- 500 mA on-board 3.3 V regulator
- 500 mA resettable fuse for over-current protection
- USB power (VBUS) connected to digital I/O pin GPIO19 for split keyboard main half detection
- Red (orange on Rev5/6) user LED on pin GPIO17 – can be used as an indicator LED for bootloader mode (see below)
- BOOT/RESET pads on the bottom of the PCB in case the buttons are not accessible (when mounted upside-down)
- Now with official CircuitPython support (Rev5 in stable, Rev7 support in snapshot since 11/07/2023; Rev6 not supported)
The black version is the latest revision Rev7 (4 MB flash), other colours are still Rev5 (2 MB flash).
Please note, like many other modern microcontrollers, it uses a 3.3 V supply voltage and the input pins are not 5V-tolerant. There could be issues with 5 V peripherals – but many will also function correctly at 3.3 V.
Pinout
- Generally compatible with the classic Pro Micro and the SparkFun Pro Micro RP2040
- Extra 5 digital I/O pins along the bottom edge
- The
Dn
labels on the PCB correspond to theGPIOn
I/O pins in the RP2040 MCU (GPn
pin definitions in QMK when usingMCU = RP2040
). - Pins labeled
A0-A3
can be configured as analogue input (12-bit SAR ADC, 500 ksps on a single pin) - Extra pins at the top labeled
D+
/D-
are USB data lines which can be connected to an external USB socket/daughterboard - Warning: RP2040 I/O pins are not 5 V tolerant and can be damaged by voltage over 3.3V!
QMK Support
NEW: Frood Rev7 uses a different 4 MB flash chip that no longer requires any special QMK config defines.
Frood Rev6 uses a larger flash chip (4 MB instead of 2 MB) and requires the following configuration option in the config.h
file in QMK (either in the main keyboard folder, or in the keymap folder):
#define RP2040_FLASH_GD25Q64CS
The Raspberry Pi RP2040 MCU is now fully supported in QMK. All you need to do to make your Pro Micro-based kit work with the Frood is to add the following define when compiling QMK (please also see the note about Rev6 above):
CONVERT_TO=promicro_rp2040
This can be added either to the rules.mk
file in your keymap’s folder, or defined directly on the QMK command line:
qmk compile -kb <keyboard_name> -km <keymap_name> -e CONVERT_TO=promicro_rp2040
If it works correctly, you will be able to find the file <keyboard_name>_<keymap_name>_promicro_rp2040.uf2
in the main QMK folder.
You will also want to add the following lines to the config.h
file to be able to easily enter the bootloader mode by double-pressing the RESET button:
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U // Timeout window in ms in which the double tap can occur.
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED D5 // Specify an optional status LED by GPIO number which blinks when entering the bootloader
Flashing
- To enter the bootloader mode, press and hold the BOOT button (on the left) and then briefly press the RESET button (right). A brand new Frood will enter the bootloader upon connecting to USB automatically
- This should present the Frood as a USB Mass Storage (a.k.a. USB flash drive) to the system
- Mount it and copy the .uf2 firmware file to the drive. This should start the flashing process immediately and the storage device will disconnect
- That’s it!
Alternatively, to avoid issues with the mounted device disconnecting unexpectedly in Linux:
- Enter bootloader mode as above
- Run
lsblk
in the console to carefully identify the correct drive – you should find a “128 MB” drive (not really) similar to this:sdx 8:48 1 128M 0 disk └─sdx1 8:49 1 128M 0 part
You want to use the disk device, not the partition (sdx in the example above, not sdx1)
- Flash the firmware by copying the file directly to the main drive – make sure to use the correct device name as you could potentially overwrite the beginning of your main drive!
cat <keyboard_name>_<keymap_name>_promicro_rp2040.uf2 | sudo tee /dev/sdx > /dev/null # <- substitude your correct device name here
or
sudo dd if=<keyboard_name>_<keymap_name>_promicro_rp2040.uf2 of=/dev/sdx # <- again, substitute your correct device name
- The flashing should start immediately. The mass storage device will disconnect and the new keyboard device should then connect right away.
Aitor Zabala (verified owner) –
Very good (almost) drop in replacement for a ProMicro, HUGE capacity and performance.
Able to enable all settings, nooks and crannies in VIAL without compromise.