tl;dr: The Raspberry Pi Pico is a new $4 microcontroller board with a custom new dual-core 133 MHz ARM Cortex-M0+ microprocessor, 2MB of built-in flash memory, 26 GPIO pins, an assortment of SPI, I2C, UART, ADC, PWM, and PIO channels.
It also has a few other party tricks, like edge castellations that make it easier to solder the Pico to other boards.
The Pico is powered by a new RP2040 chip—a brand new Raspberry-Pi-built ARM processor. And the best thing about this processor is the insanely-detailed Datasheet available on the Pico website that steps through every bit of the chip's architecture.
Video Review and 'Baby Safe Temperature' Project
I posted an entire video reviewing the Pico and demonstrating a MicroPython project. The video is embedded below:
Compared to other microcontrollers
When I saw the Pico, I thought immediately of the Teensy LC that's almost identical in size, and also has an ARM M0 processor, but 3x, with a single core, and a lot less flash storage.
The going rate for a Teensy LC is $8, twice the Pico.
There's also the ESP32, but a full package like the Pico offers costs $10-20.
Obviously wireless capabilities on the ESP32 aren't present on the Pico, so you have to discount that in the price, but it is a lot less money for any project that doesn't require WiFi or Bluetooth.
Finally, there's also the Pro Micro, but it offers a different set of tradeoffs and a way slower clock speed than the Pico, and it also costs $10 or more most places online!
Anyways, here are the specs of the Raspberry Pi Pico:
- It has an RP2040 microcontroller with 2 megabytes of flash storage
- The processor runs up to 133 MHz, and is based around a dual-core Cortex M0+ design
- The processor also has 264 KB of SRAM
- The processor has 2 UART, 2 I2C, 2 SPI, and up to 16 PWM channels
- The processor includes a timer with 4 alarms and a real time counter, as well as dual Programmable IO peripherals
- It uses a Micro USB port for power and data, and for programming the flash
- 40 pins are both through-hole and castellated for mounting flexibility
- There are 26 3.3V GPIO pins
- 23 of the GPIO pins are digital-only, and 3 are ADC capable
- It has a 3-pin ARM Serial Wire Debug port
- And finally, it can be powered via micro USB or a dedicated power supply or battery
Programming the Pico and writing to the Flash memory
The easiest way to get started with the Pico is to hold down the BOOTSEL button on it while you plug it into a computer. It will be mounted as a Mass Storage Device!
To program the Pico with MicroPython, you can use the Thonny Python IDE that's already built into Raspberry Pi OS, or you can install it on any Mac, Windows, or Linux PC.
Before you can run MicroPython code, though, you need to follow the instructions on the Pico Getting Started Guide to download a UF2 file that will install MicroPython on the Pico and reboot it. After that, the Pico will automatically run whatever's stored in
main.py on the Pico's filesystem when it boots up.
There's an entire book, [Get started with MicroPython on Raspberry Pi Pico](TODO: Add link) available through the Pico website, and I highly recommend it!
Now that we know a bit about the Pico itself, and how to program it, I need to explain when I'd use a microcontroller instead of a full computer like a Raspberry Pi with it's GPIO pins. For me, the main reason is usually power consumption.
I've done a LOT of power testing for my Raspberry Pi projects. Typically I measure power consumption in Amps and Watts, though there are a few Pi models, like the Model A+ and Zero, that sip only a few hundred milliamps when running at 5V, which translates into 1 to 2 W.
Well, when we talk about microcontrollers like the RP2040 on the Pico, power efficiency on a different planet. In sleep or dormant mode, the Pico consumes less than 2 milliamps, or 6 milliwatts! That's .006 W!
And even when it's running full tilt, doing graphics rendering, it uses less than 100 milliamps, or .33 watts.
If you program it efficiently, you can run the Pico off a small rechargeable battery for days or even weeks!
One of the things I don't like about the Pico's design is the lack of pin labels on the top of the device.
They're all labeled nicely on the bottom, but only pins 1, 2, and 39 are labeled on the top.
There's no way to see which pin is which when I have it plugged into a breadboard. It would be nice if the Pi Foundation could silkscreen labels on top somehow, maybe like the Teensy does it, with little angled labels:
Other than that, there's not much downside to the Pico. I mean, having two cores may be nice for some projects, but most of my own work wouldn't benefit from dealing with the complexity of multiple threads in software. But that's not really a bad thing.
All-in-all, I think the Pi Foundation has a winner with their new $4 microcontroller board, and I can't wait to see what other people come out with based on the RP2040.
You can get a Pico from any of Raspberry Pi's authorized resellers, and I really hope the Pi Foundation can keep up with demand. It would be really sad if they're hard to find months after launch, like what's happened with the Compute Module 4!
One other thing I want to see is a full getting started kit, like you can find for the Arduino. I'm sure some companies will be putting these together.
Anyways, for more details, and a hands-on project, check out my video: The Raspberry Pi Pico Review - $4 ARM Microcontroller
The huge downside to the Pico is the lack of any kind of radio, either WiFi or Bluetooth. In this day and age I can't imagine them making that design decision. I use parts with a radio in all my projects now, if for no other reason than being able to talk to the thing to see how it's doing. In today's world of ubiquitous handheld devices, why would you NOT want to communicate with even your simplest projects from you phone?
The ESP32 might be a bit more expensive in its most feature rich form, but you can get it for the same price if you buy the bare processor. It is similarly powerful and IO rich, but it has WiFi and Bluetooth. And the ESP8266 can be had for less that a Pico. Not as powerful, not as much RAM, but it has WiFi and most likely plenty powerful enough for most projects.
I assume RPi will come out with a version of this device with radios. But I feel like they should have lead with that!
If you do not like it, then you are probably not the target audience. That does not mean the Pico is bad.
What if I do not want wifi? What if I want LoRa? or a simple ISM radio transceiver, ZigBee or if you fancy it ethernet (yeah yeah, cable - but I wish a lot of my oh so smart IoT devices would have a wired connection)?
Now: do all of your projects only consist of a single board and nothing else? Let me propose something completely crazy: you can attach a wifi module to your Pico - mind blowing, I know...
How can you compare the price of the bare processor? No price has been announced for the RP2040 to my knowledge
Dunno if you looked at the original post on the foundation's blog but Arduino already has a rp2040 board with a radio attached. Won't be as cheap as the pico but might be what you want...
You've said that you've tested pico with ds18b20.
Is it working, dobyou have an example of micropython code?
Thanks for your video.
I haven't gotten it tested and working yet, but apparently the bug I was running into was fixed on Jan 20th, so it should work using an example similar to the example in the MicroPython docs: http://docs.micropython.org/en/v1.8.2/esp8266/esp8266/tutorial/onewire.html
Hi, I'm tryi9ng to get this going. can you post your code please? which library did you use to control the DS? I cantr find the one you cited in the example?
Would love to know how the PICO compares in terms of power consumption. I think the decision for most projects these days rests on how long the battery will last, more than how much compute is available.
Milliamps isn't small for sleep. The ESP32 can use more like 5 to 10 microAmps (uA) when sleeping, depending on the board and regulator. That's about 100 times less. It makes the difference between being able to sleep for about a week on batteries vs being able to sleep for a couple of years.
Maybe there's a way to isolate off-chip components you don't want and achieve microAmp sleep current but the board in its current configuration is unsuitable for many battery powered applications that need to be able to wake up by themselves from time to time.
Sleep current of 2mA ? This is the current of run mode of various cortex-M0 microcontrollers. Sleep current should be in a couple of microamps for use in battery powered systems. Remember that in these systems, the sleep current is used in the most part of time.