Keyboard Builders' Digest / Tools
Frood RP2040
Frood RP2040 is an open-source controller by 42keebs. A Pro Micro compatible breakout board with an RP2040.
Published October 28, 2022
Petr Sedlacek aka piit79 of 42keebs.eu published his Frood, a Pro Micro compatible controller sporting an RP2040. (It was brought to my attention by _GEIST_ and his gorgeous Charybdis Nano build.)
The Frood is a high-performance and affordable Pro Micro drop-in replacement based on a Raspberry Pi RP2040. It is physically and electrically compatible with Elite-C/nice!nano as much as possible – piit79.
It follows the SparkFun Pro Micro RP2040 pinout with 5 more pins (GPIO12-GPIO16) added along the bottom edge (like on the Elite-C), and USB data lines broken out in the top corners (like nice!nano).
Features
- Powerful dual-core Raspberry Pi RP2040 MCU
- 2 MB on-board QSPI flash memory
- Only 3.2 mm thick thanks to a mid-mounted USB-C socket
- 500 mA linear regulator and resettable fuse
- Combined Pro Micro / Elite-C / nice!nano / SparkFun Pro Micro RP2040 compatible pinout
- 5 more I/O pins (GPIO12-GPIO16) added along the bottom edge
- 23 available digital pins for a maximum of 11x12 = 132 switches (or is it 506? ;))
- 4 pins configurable as analogue inputs
- USB D+/D- broken out for use with an external USB socket/daughterboard
- USB power sensing on GPIO19 for split keyboard side detection
- UF2 bootloader for drag & drop programming with no extra software required
- Orange indicator LED on pin GPIO17
Btw, the project is at Rev5(!), although only the second working version as far as I can see.
EDIT
Pete reached out to me with the reasons for this:
The project is now at Rev5, which unfortunately is indeed only the second working revision. While I now know my way around KiCad pretty well, I'm in no way a very experienced electronics designer, and that fact manifested itself in the prototyping process of the Frood – Pete.
A quick devlog in the designer's own words:
- Frood Rev1 had a top-mounted USB-C socket (as I couldn't find a suitable in-stock mid-mounted USB-C socket in JLCPCB's inventory back then), but it didn't work at all due to a simple mistake of the crystal having a 2-pin schematic symbol, but a 4-pin footprint (which resulted in the crystal pins being mapped to footprint pins 1 and 2, when the correct pins are 1 and 3 /2 and 4 are ground/)
- Rev2 wasn't manufactured as I quickly made another iteration
- Rev3 had a mid-mounted USB-C socket, but to get it to sit flush with the bottom of the PCB, a 1 mm PCB was chosen. This seemed to work just fine. This revision initially looked good as it started up in the UF2 bootloader mode upon connecting. However, it would go completely silent after flashing. Another closer look at the flash memory datasheet uncovered another stupid mistake – the chip was for 1.8-2.6 V power supply range (while RP2040 uses 3.3 V). So flashing the module destroyed the flash chip…
- Rev4 fixed this issue by selecting a smaller 2 MB flash chip, but with a proper power supply range this time. And to my great relief, it ended up working! Some JLCPCB quality issues were uncovered later – the soldering of the USB-C socket wasn't very good on some modules and the USB-C socket could easily detach from the PCB :/ Fortunately not too many modules were affected, and those were of course promptly replaced
- Rev5 is just a minor revision with added BOOT/RESET pads on the bottom of the PCB (in case the buttons are not accessible, like when the module is mounted upside down - which is in most cases) and a user LED was added on a free internal GPIO pin. Fortunately nothing was broken in the process :)
Rev5 is now live in the shop in no less than four (4) different colors – black, white, purple and yellow.
The Frood now also has official CircuitPython support.
Resources
Published on Fri 28th Oct 2022. Featured in KBD #100 (source).