ESP32 und Arduino

ESP32 vs. Raspberry Pi Pico W für IoT: WLAN, MicroPython, Arduino und TLS im Vergleich

Ein praxisnaher Vergleich von ESP32 und Raspberry Pi Pico W für vernetzte Projekte: Hardware, WLAN und Bluetooth, Programmieroptionen, TLS-Leistung, Stromsparmodi und MQTT-Code auf beiden Boards.

ESP32 und Raspberry Pi Pico W nebeneinander, beide senden Sensordaten an einen MQTT-Broker
Probieren Sie es auf Ihrem eigenen MQTT-Broker ausHolen Sie sich im Free-Tarif einen privaten, verwalteten MQTT-Broker und starten Sie mit fertigen Codebeispielen.
Kostenlos testen Codebeispiele Keine Kreditkarte erforderlich

ESP32 vs. Raspberry Pi Pico W ist eine der häufigsten Fragen zu Beginn eines WLAN-IoT-Projekts, und beide Boards können Sensordaten mit wenigen Codezeilen an einen MQTT-Broker senden. Dieser Vergleich betrachtet, was für vernetzte Geräte wirklich zählt: den Funk-Stack, die Programmierumgebungen, die TLS-Leistung, das Stromsparen und das Ökosystem, und endet mit einer klaren Empfehlung für jede Art von Projekt.

Die Kurzfassung

Wählen Sie den ESP32, wenn das Gerät in erster Linie ein Netzwerkgerät ist: wenn es TLS, Bluetooth, Batteriebetrieb mit Deep Sleep oder ausgereifte Arduino- und ESP-IDF-Bibliotheken braucht. Wählen Sie den Pico W, wenn Ihnen die hervorragende Dokumentation von Raspberry Pi, die programmierbare I/O (PIO) des RP2040 oder ein sanfter Einstieg in MicroPython wichtig sind und das Gerät überwiegend am Netz hängt. Beide sind vollwertige MQTT-Clients.

Hardware im Überblick

ESP32 (klassisch, z. B. ESP32-WROOM-32) Raspberry Pi Pico W
CPU Dual-Core Xtensa LX6, bis 240 MHz Dual-Core Arm Cortex-M0+ (RP2040), 133 MHz
SRAM 520 KB 264 KB
Flash Auf Modulen typischerweise 4 MB 2 MB
WLAN 802.11 b/g/n, 2,4 GHz, integriert 802.11n, 2,4 GHz, Infineon CYW43439 über SPI
Bluetooth Classic und BLE Über den CYW43439: BLE in MicroPython, BLE und Classic im C-SDK (nach Markteinführung ergänzt)
Krypto-Beschleunigung Hardware für AES, SHA, RSA/Big-Number Keine
Spezielle I/O Touch-Sensorik, DAC beim klassischen ESP32, viele Peripherien PIO-State-Machines für eigene Protokolle
Stromsparen Deep Sleep mit RTC-Speicher, Wecken per Timer und GPIO Dormant- und Sleep-Modi, für WLAN-Geräte weniger schlüsselfertig
Board-Vielfalt Hunderte Boards vieler Hersteller Offizielles Board plus kompatible Boards von Drittanbietern

Die ESP32-Familie hat viele Mitglieder: Der S3 bringt KI-Vektorbefehle und USB, C3 und C6 sind günstige RISC-V-Bausteine, und der C6 ergänzt Wi-Fi 6 und Thread. Raspberry Pi hat außerdem den Pico 2 W herausgebracht, der auf dem RP2350 mit schnelleren Cortex-M33-Kernen, mehr SRAM und Sicherheitsfunktionen basiert. Wenn Sie heute entscheiden, vergleichen Sie auch die neueren Bausteine; die meisten der folgenden Abwägungen gelten weiterhin.

WLAN-Stack und Netzwerk

Beim ESP32 ist das WLAN Teil des Chips, und der Netzwerk-Stack (lwIP plus Espressifs Treiber) steckt in einer riesigen Zahl ausgelieferter Produkte. Reconnects, mehrere Sockets, TLS und Funktionen wie WLAN-Provisioning sind gut erprobt. Espressifs eigene ESP-MQTT-Komponente unterstützt MQTT 3.1.1 und MQTT 5 direkt, wenn Sie ESP-IDF verwenden.

Der Pico W bindet sein CYW43439-Funkmodul über einen SPI-ähnlichen Bus an und betreibt lwIP auf dem RP2040. Für typische Sensor- und Steuerungsprojekte funktioniert das zuverlässig, und das Raspberry-Pi-SDK sowie der MicroPython-Port werden gut gepflegt. Der Funktreiber beansprucht allerdings einen Teil der RP2040-Ressourcen, und in C haben Sie weniger Auswahl an ausgereiften Netzwerkbibliotheken als beim ESP32.

Beide Boards unterstützen nur 2,4 GHz, keines verbindet sich also mit einem reinen 5-GHz-Netz.

Programmieroptionen

Umgebung ESP32 Pico W
Arduino Offizieller Espressif-Core, sehr großes Bibliotheks-Ökosystem (PubSubClient, AsyncMqttClient, ArduinoJson) Community-Core arduino-pico von Earle Philhower; PubSubClient funktioniert
MicroPython Unterstützt, umqtt.simple verfügbar Unterstützt und offiziell von Raspberry Pi dokumentiert
CircuitPython Auf vielen Boards unterstützt Unterstützt
Natives SDK ESP-IDF mit FreeRTOS, integrierter MQTT-Client Pico SDK mit lwIP, MQTT-Client aus den lwIP-Apps

Für MicroPython-Einsteiger ist die Dokumentation des Pico W ein echter Vorteil: Die Anleitungen von Raspberry Pi führen durch Flashen, WLAN und erste Programme mit sehr wenigen Überraschungen. Für Arduino-Nutzer bietet der ESP32 das tiefere Bibliotheks-Ökosystem. Wenn Sie zu MicroPython auf dem ESP32 tendieren, zeigt der Leitfaden zu MicroPython umqtt auf dem ESP32 das entsprechende Setup.

MQTT auf dem Pico W mit MicroPython

Dieses Skript verbindet einen Pico W mit dem öffentlichen MQTT-Broker broker.connectmq.com und veröffentlicht alle zehn Sekunden den Wert des internen Temperatursensors. Derselbe Code läuft unter MicroPython auch auf einem ESP32, wenn Sie die Zeilen zum Temperatursensor entfernen.

import time
import network
import machine
from umqtt.simple import MQTTClient   # installieren mit: import mip; mip.install("umqtt.simple")

SSID = "YOUR_WIFI"
PASSWORD = "YOUR_WIFI_PASSWORD"
BROKER = "broker.connectmq.com"
CLIENT_ID = b"picow-5b2e"                      # darf nicht leer sein und muss eindeutig sein
TOPIC = b"connectmq/demo/picow-5b2e/telemetry"

wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
for _ in range(30):
    if wlan.isconnected():
        break
    time.sleep(1)
if not wlan.isconnected():
    machine.reset()
print("Wi-Fi OK:", wlan.ifconfig()[0])

sensor = machine.ADC(4)                        # interner Temperatursensor des RP2040


def read_temp_c():
    volts = sensor.read_u16() * 3.3 / 65535
    return 27 - (volts - 0.706) / 0.001721


client = MQTTClient(CLIENT_ID, BROKER, port=1883, keepalive=60)
client.set_last_will(b"connectmq/demo/picow-5b2e/status", b"offline", retain=True, qos=1)
client.connect()
client.publish(b"connectmq/demo/picow-5b2e/status", b"online", retain=True, qos=1)

while True:
    try:
        payload = '{"temp_c":%.2f,"rssi":%d}' % (read_temp_c(), wlan.status("rssi"))
        client.publish(TOPIC, payload.encode())
        print("sent", payload)
    except OSError as e:
        print("MQTT error, reconnecting:", e)
        time.sleep(5)
        client.connect()
    time.sleep(10)

Prüfen Sie es von einem beliebigen Rechner aus:

mosquitto_sub -h broker.connectmq.com -p 1883 -i picow-5b2e-viewer -t "connectmq/demo/picow-5b2e/#" -v

Das Arduino-Gegenstück für den ESP32 mit PubSubClient wird Schritt für Schritt im ESP32-IoT-Tutorial behandelt.

TLS-Leistung: Hier unterscheiden sich die Boards am stärksten

Produktives MQTT sollte über TLS auf Port 8883 laufen, und genau hier zeigt sich der Hardware-Unterschied. Ein TLS-Handshake umfasst Public-Key-Operationen (RSA oder elliptische Kurven) und die Zertifikatsprüfung, die für einen Mikrocontroller rechenintensiv sind.

  • Der ESP32 nutzt mbedTLS mit Hardwarebeschleunigung für AES, SHA und Big-Number-Arithmetik. Handshakes sind so schnell abgeschlossen, dass ein Reconnect nach einem WLAN-Ausfall kaum auffällt, und neben Ihrer Anwendung bleibt genug RAM für die TLS-Puffer.
  • Der Pico W führt dieselben Operationen in Software auf Cortex-M0+-Kernen mit 133 MHz aus, denen einige Befehle fehlen, die diese Arithmetik beschleunigen. TLS funktioniert, Handshakes dauern aber spürbar länger, und der RAM ist mit 264 KB zum Teilen knapper.

In der Praxis zählt das vor allem bei Batteriegeräten, die aufwachen, sich verbinden, veröffentlichen und wieder schlafen: Jedes Aufwachen bezahlt einen vollständigen Handshake, ein langsamerer Handshake kostet also direkt Batterielaufzeit. Bei dauerhaft eingeschalteten Geräten ist eine langsamere erste Verbindung selten ein Problem.

Zwei Tipps gelten für beide Boards: Stellen Sie vor dem Verbinden die Systemzeit (NTP) ein, weil die Zertifikatsprüfung das aktuelle Datum benötigt, und laden Sie nur die Root-CA, die Sie brauchen (ISRG Root X1 für Broker mit Let's-Encrypt-Zertifikat), um Speicher zu sparen. Der ESP32-MQTT-SSL-Leitfaden zeigt die ESP32-Seite im Detail.

Stromverbrauch und Batterielaufzeit

Der Deep Sleep des ESP32 ist genau für das Muster „aufwachen, messen, veröffentlichen, schlafen“ ausgelegt: Die Hauptkerne werden abgeschaltet, die RTC-Domäne behält einen Timer und einige Byte Speicher, und der Chip wacht per Timer oder GPIO auf. Batteriesensoren, die monatelang mit einer einzigen Zelle laufen, sind üblich. Ein vollständiges Beispiel finden Sie unter ESP32 Deep Sleep mit MQTT.

Der Pico W beherrscht Sleep- und Dormant-Modi, doch der WLAN-Chip muss separat verwaltet werden, und die Werkzeuge sind weniger schlüsselfertig. Viele batteriebetriebene Pico-W-Projekte trennen stattdessen die Stromversorgung mit einem externen Timer-Chip vollständig. Läuft Ihr Gerät an Netz- oder USB-Strom, verschwindet der Unterschied weitgehend.

Checkliste für die Entscheidung

  1. Batteriebetrieben und Veröffentlichung über TLS? ESP32.
  2. Bluetooth Classic oder ein ausgereifter BLE-Stack nötig? Der ESP32 hat die längere Erfolgsbilanz.
  3. MicroPython von Grund auf mit offiziellen Tutorials lernen? Der Pico W ist eine sehr freundliche Wahl.
  4. Eigene zeitkritische Protokolle (LED-Streifen, ungewöhnliche serielle Formate)? Die PIO des Pico W ist hervorragend.
  5. Großer Bedarf an Arduino-Bibliotheken? ESP32.
  6. Neueste Chips gewünscht? Vergleichen Sie vor der Entscheidung ESP32-S3/C6 mit dem Pico 2 W.

Sie kommen stattdessen vom ESP8266? Der Vergleich ESP32 vs. ESP8266 behandelt diesen Umstiegsweg.

Die Broker-Seite ist für beide gleich

Welches Board Sie auch wählen, das Gerät ist nur ein MQTT-Client. Der Broker übernimmt Authentifizierung, die Verteilung an Dashboards und Backends sowie den Retained-Zustand. Das heißt, Sie können ESP32- und Pico-W-Geräte auf denselben Topics mischen, ohne anderswo etwas zu ändern. Auch in einem industriellen Umfeld mit Unified Namespace (UNS) spielt die Board-Wahl für die Datenarchitektur keine Rolle: Beide Boards veröffentlichen in dieselbe ISA-95-Topic-Struktur aus Werk, Bereich und Linie. Beginnen Sie Ihre Tests auf dem öffentlichen MQTT-Broker, der für Tests und Prototypen gedacht ist, und wenn das Projekt live geht, wechseln Sie zu einem privaten, TLS-geschützten Cloud-MQTT-Broker, damit Ihre Geräte eigene Zugangsdaten erhalten. ConnectMQ unterstützt sowohl MQTT 3.1.1 (verwendet von umqtt.simple und PubSubClient) als auch MQTT 5.

Starten Sie mit ConnectMQ

Beide Boards funktionieren sofort mit ConnectMQ: TCP auf 1883, TLS auf 8883 mit einem Let's-Encrypt-Zertifikat und ein MQTT-Client im Browser zum Testen Ihrer Nachrichten. Erstellen Sie unter app.connectmq.com einen kostenlosen Serverless-Broker ohne Kreditkarte und verbinden Sie Ihren ESP32 oder Pico W in wenigen Minuten.

Häufig gestellte Fragen

Ist der ESP32 oder der Pico W besser für Einsteiger?

Beide sind einsteigerfreundlich. Der Pico W hat eine herausragende offizielle MicroPython-Dokumentation, während der ESP32 einen größeren Fundus an Arduino-Tutorials und Bibliotheken bietet.

Kann der Raspberry Pi Pico W MQTT über TLS nutzen?

Ja, über das ssl-Modul von MicroPython oder den Secure Client des arduino-pico-Cores. Rechnen Sie mit langsameren Handshakes als beim ESP32, weil es keine Krypto-Beschleunigung gibt.

Welches Board verbraucht weniger Strom?

Für Batteriegeräte, die zwischen Messungen schlafen, ist der Deep Sleep des ESP32 einfacher zu nutzen und sehr effizient. Bei dauerhaft eingeschalteten Geräten ist der Unterschied kleiner als der Einfluss der Sensorwahl und des Sendeintervalls.

Kann ich ESP32- und Pico-W-Geräte in einem MQTT-System mischen?

Ja. MQTT ist hardwareunabhängig, beide können also auf demselben Broker und denselben Topics veröffentlichen und abonnieren.

Verwandte Artikel

ESP32 NTP MQTT Zeitstempel: genaue Uhrzeit in jeder Nachricht

Synchronisieren Sie die ESP32-Uhr per NTP, formatieren Sie Zeitstempel in ISO 8601 und Epoch-Millisekunden und hängen Sie sie an MQTT-Payloads, damit Messwerte ihren echten Erfassungszeitpunkt behalten, auch wenn sie verspätet veröffentlicht werden.

8 Min. Lesezeit

Alle Artikel →

Ihr privater MQTT-Broker ist nur wenige Klicks entfernt

Konto anlegen, Broker-Zugangsdaten erhalten und das erste Gerät verbinden — ohne Server, die installiert, gepatcht oder skaliert werden müssen.