Raspberry Pi Pico W - an alternative to the ESP32
Microcontrollers with integrated Wi-Fi are still rare. But especially in the IoT environment, this is of course one of the basic requirements for easily connecting a microcontroller with other devices. Even the Raspberry Pi Pico, which was introduced in January 2021, does not have the option of establishing a wireless connection with its environment. But now the Raspberry Pi Foundation has introduced the Raspberry Pi Pico W, which solves exactly this shortcoming. The size and connections correspond to those of the Raspberry Pi Zero W.
Therefore, the Pico was equipped with a CYW43438 radio module, which is coupled with the RP2040 via the SPI interface. This module operates in the 2.4 GHz band and supports the 802.11n standard. It also supports Bluetooth 5.2, which is not yet supported by the Pico's firmware. The following table shows the features of the Raspberry Pi Pico W in comparison to two other microcontroller boards:
|Arduino Nano RP2040 Connect||Raspberry Pi Pico W||ESP32 DevKit C V4|
|Type||Arm Cortex-M0+ (32 Bit)||Arm Cortex-M0+ (32 Bit)||Tensilica Xtensa LX6 (32 Bit)|
|Clock||133 MHz||133 MHz||240 Mhz|
|RAM||264 KB||264 KB||520 KB|
|Flash||16 MB||2 MB||4 MB external|
|Wi-Fi||U-blox Nina W102
(Cortex-M3 & Cortex-M4)
|2,4 GHz, 802.11b/g/n|
|Bluetooth||4.2 BR/EDR & BLE||-||4.2 BR/EDR & BLE|
|ADC||4 x 12 Bit||3 x 12 Bit||18 x 12 Bit|
|Debugging||-||SWD Port||Only with ESP-Prog Board|
|Price||28 Euro||7 Euro||5 Euro|
But what is really interesting is the design of the boards. While the complete Wi-Fi functionality of the ESP32 has to be taken over by the two Xtensa LX6 cores, this is done by a coprocessor in the other two boards. Funnily enough, in the case of the Arduino Nano RP2040 Connect, this is again an ESP32, while the Raspberry Pi Pico W has a module with one Cortex-M3 and one Cortex-M4 core. The two cores take over the Wi-Fi and Bluetooth tasks respectively. The following diagram shows the structure of the CYW43439:
This has a very big advantage. With the ESP32, you have to make sure that the core 0 (also called PRO CPU) is not blocked, as this is responsible for Wi-Fi, Bluetooth and all other internal peripherals. Only core 1 (also called APP CPU) can be used without restriction. So from the user's point of view, the ESP32 is not actually a 100% dual-core CPU. This can also be seen in the naming of the two cores. The PRO stands for Protocol, as this core is responsible for the entire hardware. The APP stands for Application, so it primarily runs your own programs. The other two boards do not have this problem. Here, the two Cortex-M0+ cores can be used to almost 100% capacity, only communication with the coprocessor must be maintained.
Unfortunately, the Raspberry Pi Pico W is sold out everywhere at the moment. But as soon as that changes, I'll be sure to buy a board. Meanwhile, I'm still excited about the ESP32, especially in terms of documentation, API and availability. But I will definitely give the Raspberry Pi Pico W a chance, as it will finally allow me to get to know the Cortex architecture. The documentation and the examples already look very promising.