The RP2040 is a microcontroller made by Raspberry Pi. Unlike their more widely known products, the RP2040 is meant to be embedded in consumer electronics. It's cheap and available in tens of thousands for immediate dispatch from your local Mouser.
I really like the RP2040 and I want you to know why.
Here is the Mouser stock for a microcontroller manufacturer Espressif:
Dozens of slightly different controllers. Why?
Unlike software, physical products cost money to manufacture. Every cent saved on a gizmo's components is a cent in earnings, which adds up when the gizmos are manufactured by the million. This creates an incentive to pick a microcontroller that is only just powerful enough (to "right size" it), and usually microcontroller manufacturers are happy to help, offering dozens of variations of the same microcontroller.
Here is the Mouser stock for Raspberry Pi:
(This is the same microcontroller, just two different packaging options1.)
What?
Raspberry Pi pulled a Henry Ford and boldly went with just one microcontroller.
There is no choice, no right sizing, but that might be OK! An RP2040 costs ~70 cents, and not all gizmos are produced by the million.
In return, Raspberry Pi ensured that everyone on the planet works with the same part. Compared to more traditional wide lineups, there is a disproportionate number of StackExchange questions, blog posts (including this one), experience, Github issues, libraries, and tools for the RP20402.
This is a good tradeoff for projects like Late Mate, which are likely to save more on development costs than on parts3.
This single model pragmatism is evident in the choices Raspberry Pi made for the microcontroller itself. It is designed to be a jack-of-all-trades, trading "excellent" for "sufficient and flexible":
Less conventionally, the RP2040 comes with a peripheral called "PIO" for Programmable Input/Output. It's like two tiny coprocessors that can execute your IO fast, with precise timing, and without spending CPU time. Some cool things people do with PIO:
The RP2040 is impossible to brick. It comes with a read-only bootloader that can either mount as a USB mass storage device (firmware updates can just be copypasted to the "storage device"), or use its own simple USB protocol.
In the same pragmatic vein, the RP2040 doesn't engage in security theatre. Protecting the firmware from a dedicated attacker is nearly impossible, but there are complexity and DX costs to trying, so I'm glad Raspberry Pi made the call.
I just love the deliberate design of this little square of silicon. When I work with it, I can see how smart people thought hard about the niche the RP2040 is in and drove the tradeoffs accordingly. As an engineer aspiring to be good someday, I appreciate it.
More of ^this^ on Mastodon, Twitter, RSS, or a very occasional newsletter.
Or just let me know what you think at dan@dgroshev.com!
Shout out to axoltl for a correction.
In particular, Rust support is excellent and examples are plenty (firmwares for keyboards, drones, football robots, …).
I suspect that it might not even be so clear cut on costs, since Raspberry Pi is likely to enjoy economies of scale producing just one part.