The Raspberry-Pi Pico Wireless / WiFi : dual core RP2040 - NO header
This product also exists with a pre-soldered header.
Here is the second microcontroler from the Raspberry-Pi foundation: the RP2040 + Wifi. 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.
This new platefom does fits a CYW43439 WiFi + Bluetooth module from Infineon. It brings the 802.11 b/g/n wifi support and Bluetooth 5.2.
Please note: at launch (juin 2022) the Bluetooth software support would not be ready yet.
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.
The Picture below shows the simplified Pico Pinout (very similar to Pico-W). On the Pico-W the user LED is not controled with the GPIO 25 but with the GPIO named "LED" (see this French article for details).
C/C++ or MicroPython
The Pico-Wireless can be programmed with MicroPython or C++ (as well as a large variety of langage). For MicroPython, the precompiled firmware (uf2 file) is available online at micropython.org (transfert the file to your Pico-W and you are ready to play). MicroPython can run scripts on the both cores ( _thread module) without locking between the threads. You can have 2 concurrent script execution then you must take care of the shared object and memory.
Regarding the C/C++ development, the RaspberryPi offers a open-source SDK using open-source compile chain generating the UF2 file to be uploaded on the RaspberryPi Pico Wireless. You can debug & trace your software with OpenOCD.
All the required information is available on pico.raspberrypi.org
DFU mode & UF2 files
The Pico firmware is updated by using the DFU mode (Device Firmware Upgrade). Press the "Bootsel" button while powering your Pico and it automatically switch to DFU mode. When activated, the DFU mode does show the Pico flash memory as a USB Flash drive! Just copy/paste the UF2 file generated by the compiler to this drive and the Pico get progammed with the new firmware then restart the board. When the board is restarted your new firmware then running on the Pico.
To configure the MicroPython on the Pico-Wireless: activate the DFU mode then copy/pase the MicroPython firmware (UF2 file downloaded from MicroPython.org) onto the USB drive. MicroPython will run at board restarts, DFU mode will not be necessary anymore.
Programming with MicroPython
The RP2040 have the required ressources for USB 1.1 support (host and client). You can use it from C/C++ code but not activated from MicroPython.
Under MicroPython, the internal FileSystem can be updated via the USB-Serial line with tools like Thonny (graphical tool), MPRemote (micropython tool), RShell or Ampy .
The MicroPython command line (named REPL) is available on the USB connector (Serial-over-USB) and can be replicated on UART0 (GP0 & GP1).
PIO - programming the IO
PIO (Programmable IO) is a low level langage offering great performance on the treatment of data or managing several IOs at very high speed. PIO runs over StateMachine and manipulated IO with a software written in PIO language. Such PIO programs are autonomous and can be executed at very high frequency (from 2000 Hz to 125.000.000 Hz=125 MHz). PIO can be used to create "time-critical" treatment like VGA output.
The Pico is ready for the breadboard and for CMS soldering. Solder connectors on it and you can plug it into a breadboard or perfboard.
Advanced users can also integrate it directly the Pico on their own project PCB as a CMS component. The half-moon cut contacts make it easier to solder the Pico on a plate with the Adequate footprint.
Fritzing is a great tool for beginner, it can be used to draw schematics with electronic components by linking them with wire (or plug them on virtual breadboard then draw wires). These diagrams/graphs remain very easy to read and allow optimal communication of knowledge in a world of makers/learning (a dream tool for education).
We really like Fritzing for this DIY approach... more skilled user can use a tool like Kicad.
The Fritzing component for Pico/Pico-Wireless is available from pico.raspberrypi.org .
For each order, you will receive a Raspberry-Pi pico W (Wireless) alone.