The Raspberry-Pi Pico microcontroler, a powerful dual core to mame C++ or MicroPython development
Here is the very first microcontroler created by the Raspberry-Pi foundation: the RP2040. It is a Dual core Cortex-M0+ running at 133 Mhz supported by 2 MB of Flash (QSPI). The RP2040 does have 256 KB of RAM (~265Kio), which is a lot of memory for a microcontoler.
Under MicroPython, the RP2040 reserve ~128KB of flash for the filesystem.
The 26 GPIOs availables on the board does offers lot of possibilities: 6 bus (2x I2C, 2x SPI, 2x UART) that can be attached on so many places on the GPIOs thanks to the bus fabric. Be reasurred, MicroPython user will benefits from a default bus configuration. The RP2040 also provides up to 16 PWM channel, all the GPIOs are PWM capable. The board also feature 3 analog inputs (12 bits resolution, 500.000 samples per second).
The board doesn't fit SD card but the RP2040 does have a SDIO interface. The most advanced user could create a VGA interface (as described in the conception with RP2040 manual, see details on pico.raspberrypi.org).
Finally, the microUSB connector on RP2040 does support USB 1.1 Client/Host.
C/C++ or MicroPython
The Pico can be programmed with MicroPython or C++. To use MicroPython, the foundation did provides a precompiled firmware (U2F file) that must be uploaded to the board. MicroPython can run in real concurrency over the both core (see the _thread module) without Python inter-locking between the threads. It is a real thread execution, share memory must be protected with ressource locking access.
For the C/C++ development, the Foundation relies on open-source compilation chain producing the U2F file uploaded to the Pico. The Pico debugging capability is done with OpenOCD.
All the required information is available from pico.raspberrypi.org
DFU mode and U2F file
The Pico can receive a new firmware by using the DFU mode (Device Firmware Upgrade). Press the "Bootsel" button when powering the microcontroler and it will enter into DFU mode (Device Firmware Upgrade). Into this mode, the MicroContoler will expose its Flash memory as a thumb drive, you will just ,eed to drop the U2F file into the drive and the board will send it into its flash. When programming is done, the board restart and executes the new Firmware.
To puts the MicroPython firmware onto your Pico, just switch to DFU mode and drop the MicroPython U2F file onto the drive. After reboot the MicroPython will be active and you will no more need the DFU mode.
Programming with MicroPython
Even if the RP2040 does have the needed ressources (USB 1.1 Host & Client), it is not activated inside the MicroPython firmware. As a consequence, le Serial-over-USB does works fine but the MicroPython file system is not available throught USB Mass storage (as on the Pyboard). You must use tool like RShell and Ampy to manipulate MicroPython filesystem onto the MicroControler.
REPL is available on the USB (Serial-over-USB) and on the UART0 (GP0 & GP1).
PIO - programmable IOs
PIO (Programmable IO) is a low level language offering great advantages when treating data or manipulating inputs/outputs at low level. PIO does support finite state machines (StateMachine) linked to GPIO and linked to PIO program (manipulating the GPIO). The PIO program will be executed at a fréquency from 2000 Hz to 125.000.000 Hz (125 MHz). PIO can be used to make time critical implementation (like a VGA output).
The Pico is designed to be used with breadboard or for CMS soledering. Solder some connector and you are ready to plug it on perfboard/breadboard.
Advanced user can integrates the Pico in theur own CMS based projet. The contacts are half-moon cuts to help in solder them onto the Pico Footprints.
Fritzing is a great tool allowing newbies to draw schematics with electronic components directly onto a breadboard. Such schematic/graphics are easy to read and reproduce on a board... a great option to share knowledges (the dream tool for educational purpose).
We do like Fritzing for its DIY approach... skilled user would prefer tool like Kicad.
The Fritzing component is available directly from pico.raspberrypi.org .
For each order, you will receive a Raspberry-Pi pico board alone.
If you want to use the Pico on a breadboard, it will be necessary to purchase à pinHeader to solder it on the board (they are not included, but you can easilt buy it on the shop).
The foundation do advise to connect the header pointing downward for the GPIOs (and pointing upward for the debug port)