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. Die Größe und Anschlüsse entsprechen denen des Raspberry Pi Zero W.

Raspberry Pi Pico W

Dazu wurde dem Pico ein Funkmodul vom Typ CYW43438 spendiert, das über das SPI Interface mit dem RP2040 gekopplet 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 18 x 12 Bit
 SPI 1 2 4
  I2C 1 2 2
 UART 1 2 3
 Debugging - SWD Port Nur mit  ESP-Prog Board
 Pinbelegung

Arduino Nano RP2040 Connect Pinout

Raspberry Pi Pico W Pinout

ESP32 DevKitC V4 Pinout

 Preis 28 Euro 7 Euro 5 Euro
 Verfügbar gut schlecht gut
Mikrocontroller im Vergleich


Das eigentlich Interessante dabei ist aber der Aufbau des Boards. Während beim ESP32 die komplette WLAN-Funktionalität von den 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:

CYW43439 Block Diagramm

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.

Konversation wird geladen