ESP32-C6 Tutorial: WiFi 6, Zigbee & Matter – Dein Einstieg ins Smart-Home-Board

WiFi, Bluetooth, Zigbee, Thread und Matter – bisher brauchtest du dafür mehrere Boards oder teure Gateways. Der ESP32-C6 packt alle diese Funkstandards auf einen einzigen RISC-V-Mikrocontroller mit USB-C. Damit baust du Sensoren, die direkt mit deiner Zigbee-Zentrale sprechen, oder Lampen, die sich per Matter in Apple Home, Google Home und Alexa einbinden lassen – ganz ohne Cloud und ohne Bastel-Bridge. In diesem Tutorial richtest du den C6 in der Arduino IDE ein und setzt vier Projekte um: WiFi-6-Verbindung, Zigbee-Temperatursensor, Matter-Lampe und Deep-Sleep für Batteriebetrieb.

Warum der ESP32-C6 ein besonderes Board ist

Der C6 ist Espressifs erster Chip mit WiFi 6 (802.11ax) und gleichzeitig einer der ersten Mikrocontroller überhaupt, der das 802.15.4-Funkprotokoll für Zigbee und Thread direkt an Bord hat. Statt der Xtensa-Kerne des klassischen ESP32 arbeitet hier ein 32-Bit-RISC-V-Kern mit 160 MHz – plus ein zweiter Low-Power-Kern für stromsparende Hintergrundaufgaben.

Merkmal ESP32 (Classic) ESP32-C3 ESP32-C6
CPU 2x Xtensa LX6, 240 MHz 1x RISC-V, 160 MHz 1x RISC-V 160 MHz + LP-Core
WiFi WiFi 4 (802.11n) WiFi 4 (802.11n) WiFi 6 (802.11ax)
Bluetooth BLE 4.2 + Classic BLE 5.0 BLE 5.3
Zigbee / Thread (802.15.4) ✔ integriert
Matter-fähig über WiFi über WiFi über WiFi und Thread
USB über USB-Seriell-Chip nativ (USB-C) nativ (USB-C)
Logikpegel 3,3V 3,3V 3,3V

ℹ️ Was bringt WiFi 6 am Mikrocontroller? Nicht mehr Speed für deinen Sketch, sondern Effizienz: Mit Target Wake Time (TWT) vereinbart der C6 mit dem Router feste Aufwachzeiten und schläft dazwischen – das senkt den Stromverbrauch batteriebetriebener IoT-Sensoren drastisch. Außerdem bleibt die Verbindung in vollen Funknetzen (viele Smart-Home-Geräte!) deutlich stabiler.

Was du brauchst

1x ESP32-C6 N16 Dev Kit (WiFi 6, Zigbee, Thread, Matter) – Zum Produkt
1x AM2302 (DHT22) Temperatur- und Feuchtigkeitssensor – Zum Produkt
1x Relais-Modul KY-019 (für die Matter-Lampe) – Zum Produkt
1x Solderless Breadboard 400 Kontakte – Zum Produkt
LEDs und Widerstände für Statusanzeigen – LED-Sortiment & Widerstände-Set

Arduino IDE einrichten

  1. 1Installiere über den Boardverwalter das Paket esp32 by Espressif Systems in Version 3.x oder neuer – erst ab 3.0 werden C6, Zigbee und Matter unterstützt.
  2. 2Wähle unter Werkzeuge → Board den Eintrag ESP32C6 Dev Module.
  3. 3Aktiviere USB CDC On Boot: Enabled, damit der serielle Monitor über den USB-C-Port funktioniert.
  4. 4Für die Zigbee-Beispiele: Stelle Zigbee Mode: Zigbee ED (end device) und das Partition Scheme Zigbee 4MB with spiffs ein.

Verkabelung

Modul-Pin ESP32-C6 Hinweis
DHT22 VCC 3V3 3,3V reicht völlig
DHT22 DATA GPIO 4 10 kΩ Pull-Up nach 3V3
DHT22 GND GND
Relais IN GPIO 10 High-Level-Trigger
Relais VCC / GND 5V / GND 5V vom USB-Pin des Boards
Status-LED (+ 220 Ω) GPIO 8 Anode über Vorwiderstand

Code 1: WiFi 6 verbinden und Netzwerke scannen

Der Einstieg fühlt sich an wie bei jedem ESP32 – die WiFi.h-API ist identisch. Der Unterschied passiert unter der Haube: Hängt der C6 an einem WiFi-6-Router, nutzt er automatisch OFDMA und TWT.

#include <WiFi.h>

const char* ssid     = "DEIN_WLAN";
const char* passwort = "DEIN_PASSWORT";

void setup() {
  Serial.begin(115200);
  delay(1000);

  // Umgebung scannen: welche Netze sind da?
  Serial.println("Scanne Netzwerke...");
  int n = WiFi.scanNetworks();
  for (int i = 0; i < n; i++) {
    Serial.printf("%2d: %-24s %4d dBm  Kanal %2d\n",
                  i + 1, WiFi.SSID(i).c_str(),
                  WiFi.RSSI(i), WiFi.channel(i));
  }

  // Verbinden
  WiFi.begin(ssid, passwort);
  Serial.print("Verbinde");
  while (WiFi.status() != WL_CONNECTED) {
    delay(300);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Verbunden! IP: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  Serial.printf("Signalstaerke: %d dBm\n", WiFi.RSSI());
  delay(5000);
}

Code 2: Zigbee-Temperatursensor mit DHT22

Jetzt wird es spannend: Der C6 meldet sich als echtes Zigbee-Endgerät an deiner Zentrale an (Home Assistant mit ZHA/Zigbee2MQTT, Hue Bridge & Co.) – so, als hättest du einen fertigen Funksensor gekauft. Installiere vorher die Bibliothek DHT sensor library von Adafruit. Denk an die Board-Einstellungen: Zigbee Mode: Zigbee ED und Partition Scheme Zigbee 4MB.

#include "Zigbee.h"
#include "DHT.h"

#define DHT_PIN     4
#define DHT_TYP     DHT22
#define ENDPOINT_ID 10
#define BOOT_TASTE  9   // BOOT-Taste: gedrueckt halten = Reset der Kopplung

DHT dht(DHT_PIN, DHT_TYP);
ZigbeeTempSensor zbTempSensor = ZigbeeTempSensor(ENDPOINT_ID);

void setup() {
  Serial.begin(115200);
  pinMode(BOOT_TASTE, INPUT_PULLUP);
  dht.begin();

  zbTempSensor.setManufacturerAndModel("MAKEROO", "DHT22-Sensor");
  zbTempSensor.setMinMaxValue(-40, 80);   // Messbereich des DHT22
  zbTempSensor.setTolerance(0.5);

  Zigbee.addEndpoint(&zbTempSensor);

  Serial.println("Starte Zigbee als End Device...");
  if (!Zigbee.begin()) {
    Serial.println("Zigbee-Start fehlgeschlagen! Neustart...");
    ESP.restart();
  }
  while (!Zigbee.connected()) {
    Serial.print(".");
    delay(200);
  }
  Serial.println("\nMit Zigbee-Netzwerk verbunden!");

  // Alle 30 s berichten, sofort bei Aenderung um 1 Grad
  zbTempSensor.setReporting(1, 30, 1);
}

void loop() {
  float temperatur = dht.readTemperature();
  if (!isnan(temperatur)) {
    zbTempSensor.setTemperature(temperatur);
    Serial.printf("Temperatur: %.1f Grad C\n", temperatur);
  }

  // BOOT-Taste 3 s halten: Zigbee-Kopplung zuruecksetzen
  if (digitalRead(BOOT_TASTE) == LOW) {
    delay(3000);
    if (digitalRead(BOOT_TASTE) == LOW) {
      Serial.println("Factory Reset der Zigbee-Kopplung!");
      Zigbee.factoryReset();
    }
  }
  delay(10000);
}

ℹ️ Anlernen: Setze deine Zigbee-Zentrale in den Pairing-Modus (z. B. in Home Assistant: „Gerät hinzufügen") und starte dann den C6. Er taucht als Temperatursensor „MAKEROO DHT22-Sensor" auf – inklusive automatischer Messwert-Updates.

Code 3: Matter-Lampe – steuerbar mit Alexa, Google & Apple Home

Matter ist der herstellerübergreifende Smart-Home-Standard – und der C6 spricht ihn direkt aus der Arduino IDE. Dieses Beispiel macht aus dem Relais eine Matter-Lampe, die du per Sprachassistent oder Smartphone-App schaltest. Beim ersten Start gibt der Sketch einen Pairing-Code und eine QR-Code-URL im seriellen Monitor aus.

#include <Matter.h>
#include <MatterOnOffLight.h>
#include <WiFi.h>

const char* ssid     = "DEIN_WLAN";
const char* passwort = "DEIN_PASSWORT";

#define RELAIS_PIN 10

MatterOnOffLight lampe;

bool lampeSchalten(bool an) {
  digitalWrite(RELAIS_PIN, an ? HIGH : LOW);
  Serial.printf("Lampe ist jetzt %s\n", an ? "AN" : "AUS");
  return true;   // Zustand erfolgreich uebernommen
}

void setup() {
  Serial.begin(115200);
  pinMode(RELAIS_PIN, OUTPUT);

  WiFi.begin(ssid, passwort);
  while (WiFi.status() != WL_CONNECTED) { delay(300); Serial.print("."); }
  Serial.println("\nWLAN verbunden.");

  lampe.begin(false);              // Startzustand: aus
  lampe.onChange(lampeSchalten);   // Callback bei Schaltbefehlen

  Matter.begin();

  if (!Matter.isDeviceCommissioned()) {
    Serial.println("Geraet noch nicht gekoppelt. Kopplungsdaten:");
    Serial.printf("Manueller Pairing-Code: %s\n",
                  Matter.getManualPairingCode().c_str());
    Serial.printf("QR-Code-URL: %s\n",
                  Matter.getOnboardingQRCodeUrl().c_str());
  }
}

void loop() {
  // Matter laeuft im Hintergrund - hier ist nichts weiter noetig.
  delay(500);
}

Öffne die QR-Code-URL am PC, scanne den Code mit Apple Home, Google Home oder der Alexa-App – fertig. Die Lampe lässt sich danach von allen Ökosystemen gleichzeitig steuern, komplett lokal und ohne Herstellercloud.

Code 4: Deep Sleep – der C6 im Batteriebetrieb

Für Batteriesensoren zählt jedes Milliampere. Im Deep Sleep zieht der C6 nur wenige Mikroampere – kombiniert mit kurzen Wachphasen laufen Sensoren so monatelang mit einem Akku-Pack.

#include <WiFi.h>
#include "DHT.h"

#define DHT_PIN 4
#define SCHLAF_SEKUNDEN 300   // alle 5 Minuten messen

DHT dht(DHT_PIN, DHT22);

void setup() {
  Serial.begin(115200);
  dht.begin();
  delay(2000);   // DHT22 braucht kurz nach dem Aufwachen

  float t = dht.readTemperature();
  float h = dht.readHumidity();
  Serial.printf("Messung: %.1f Grad C, %.1f %% rF\n", t, h);

  // Hier: Wert per WiFi/Zigbee senden, dann schlafen legen

  Serial.println("Gehe in Deep Sleep...");
  esp_sleep_enable_timer_wakeup((uint64_t)SCHLAF_SEKUNDEN * 1000000ULL);
  esp_deep_sleep_start();
}

void loop() {
  // wird nie erreicht - nach dem Aufwachen startet setup() neu
}

Praxistipps

📡 Zigbee oder Matter – was nehmen? Hast du bereits eine Zigbee-Zentrale (Home Assistant, Hue), ist der Zigbee-Weg am unkompliziertesten. Willst du dein Gerät ohne Zentrale direkt in Apple/Google/Alexa einbinden, nimm Matter über WiFi.

🔋 TWT nutzen: An einem WiFi-6-Router hält der C6 die Verbindung mit Target Wake Time auch zwischen Deep-Sleep-Phasen effizient – ideal in Kombination mit Code 4.

⚡ Stromversorgung: Funk-Peaks beim Senden erreichen kurzzeitig mehrere hundert Milliampere. Am Breadboard hilft ein Elko (470 µF) zwischen 3V3 und GND gegen sporadische Resets.

Troubleshooting

⚠️ „Zigbee.begin() failed": Fast immer falsche Board-Einstellungen. Prüfe Zigbee Mode: Zigbee ED und das Partition Scheme Zigbee 4MB with spiffs – ohne beides startet der Zigbee-Stack nicht.

⚠️ Serieller Monitor bleibt leer: USB CDC On Boot auf „Enabled" stellen und den Monitor nach dem Flashen neu öffnen.

⚠️ Sensor taucht in der Zigbee-Zentrale nicht auf: Pairing-Fenster der Zentrale öffnen, dann den C6 neu starten. Hilft das nicht: BOOT-Taste 3 Sekunden halten (Factory Reset im Code 2) und neu anlernen.

⚠️ Upload schlägt fehl: BOOT-Taste gedrückt halten, RESET kurz drücken, BOOT loslassen – dann ist der C6 im Download-Modus und der Upload läuft durch.

⚠️ Matter-Kopplung bricht ab: Der C6 funkt nur im 2,4-GHz-Band. Stelle sicher, dass dein Smartphone beim Koppeln im selben WLAN (2,4 GHz) hängt und nicht im reinen 5-GHz-Netz.

🚀 Bereit für dein Smart-Home-Projekt?

Alle Bauteile für dieses Tutorial findest du bei MAKEROO.

Fazit

Der ESP32-C6 ist das aktuell spannendste Board für Smart-Home-Bastler: WiFi 6 für effiziente, stabile Verbindungen, Zigbee für die nahtlose Integration in bestehende Zentralen und Matter für den direkten Draht zu Apple, Google und Alexa – alles auf einem Chip für wenige Euro. Mit den vier Beispielen aus diesem Tutorial hast du die komplette Bandbreite einmal durchgespielt: vom WLAN-Scan über den anlernbaren Zigbee-Sensor bis zur sprachgesteuerten Matter-Lampe und dem batteriefreundlichen Deep Sleep. Dein Smart Home gehört damit wieder dir – lokal, offen und selbst gebaut.

Zurück zum Blog