Raspberry Pi Pico W - eine Alternative zum ESP32
Mikrocontroller mit integriertem WLAN sind immer noch recht selten. Aber gerade im IoT Umfeld gehört das natürllich zu den Grundvoraussetzungen, um einen Mikrocontroller einfach mit anderen Geräten vernetzen zu können. Auch der im Januar 2021 vorgestellte Raspberry Pi Pico hat von Haus aus keine Möglichkeit, mit seiner Umgebung eine Funkverbindung aufzubauen. Doch nun hat die Raspberry Pi Foundation den Raspberry Pi Pico W vorgestellt, der genau dieses Manko behebt.
Dazu wurde dem Pico ein Funkmodul vom Typ CYW43438 spendiert, das über das SPI Interface mit dem RP2040 gekoppelt ist. Dieses Modul arbeitet im 2,4-GHz-Band und unterstützt den 802.11n Standard. Zusätzlich beherrscht es auch Bluetooth 5.2, was aber im Moment von der Firmware noch nicht unterstützt wird. Die folgende Tabelle zeigt die Features des Raspberry Pi Pico W im Vergleich zu zwei weiteren Microcontroller Boards:
Arduino Nano RP2040 Connect | Raspberry Pi Pico W | ESP32 DevKit C V4 | |
---|---|---|---|
Jahr | 2021 | 2022 | 2016 |
SoC | RP2040 | RP2040 | ESP32 |
Typ | Arm Cortex-M0+ (32 Bit) | Arm Cortex-M0+ (32 Bit) | Tensilica Xtensa LX6 (32 Bit) |
Kerne | 2 | 2 | 2 |
Takt | 133 MHz | 133 MHz | 240 Mhz |
RAM | 264 KB | 264 KB | 520 KB |
Flash | 16 MB | 2 MB | 4 MB external |
WLAN | U-blox Nina W102 (ESP32) 802.11b/g/n |
CYW43439 (Cortex-M3 & Cortex-M4) 802.11n |
2,4 GHz, 802.11b/g/n |
Bluetooth | 4.2 BR/EDR & BLE | - | 4.2 BR/EDR & BLE |
GPIO | 20 | 26 | 34 |
ADC | 4 x 12 Bit | 3 x 12 Bit | 2 x 12 Bit |
SPI | 1 | 2 | 4 |
I2C | 1 | 2 | 2 |
UART | 1 | 2 | 3 |
Debugging | - | SWD Port | Nur mit ESP-Prog Board |
Pinout | |||
Preis | 28 Euro | 7 Euro | 5 Euro |
Verfügbar | gut | schlecht | gut |
Das eigentlich Interessante dabei ist aber der Aufbau der Boards. Während beim ESP32 die komplette WLAN-Funktionalität von einem der beiden Xtensa LX6 Kernen übernommen werden muss, erledigt das in den beiden anderen Boards ein Coprozessor. Witzigerweise ist das bei dem Arduino Nano RP2040 Connect wiederum ein ESP32, während der Raspberry Pi Pico W ein Modul mit einem Cortex-M3 und einem Cortex-M4 Kern hat. Die beiden Kerne übernehmen jeweils die WLAN bzw Bluetooth Aufgaben. Das folgende Diagramm zeigt den Aufbau des CYW43439:
Das hat einen sehr großen Vorteil. Beim ESP32 muss man darauf achten, dass der Core 0 (auch als PRO CPU bezeichnet) genannte Kern nicht blockiert wird, da dieser für WLAN, Bluetooth und auch alle andere interne Peripheriegeräte zuständig ist. Nur der Core 1 (auch als APP CPU bezeichnet) kann uneingeschränkt verwendet werden. Aus Anwendersicht ist der ESP32 also eigentlich gar keine 100%ige Zweikern CPU. Das sieht man auch an der Namensgebung der beiden Kerne. Das PRO steht für Protocol, da dieser Kern für die gesammte Hardware zuständig ist. Das APP steht für Application, hier laufen also primär die eigenen Programme. Diesen Problem haben die beiden anderen Boards nicht. Hier können die beiden Cortex-M0+ Kerne nahezu zu 100% ausgelastet werden, es muss nur Kommunikation mit dem Coprozessor aufrecht erhalten werden.
Leider ist der Raspberry Pi Pico W im Moment überall ausverkauft. Aber sobald sich das ändert, werde ich mir sicher ein Board zulegen. Derweil bin ich immer noch vom ESP32 begeistert, vor allem was Dokumentation, API und Verfügbarkeit betrifft. Aber ich werde dem Raspberry Pi Pico W auf jeden Fall eine Chance geben, da ich so endlich auch die Cortex Architektur kennenlernen kann. Die Dokumentation und die Beispiele schauen jedenfalls schon sehr vielversprechend aus.