Heute möchte ich mal das ESP32-P4-NANO von Waveshare ausprobieren.
OnBoard sind ein ESP32-P4 und zusätzlich auch ein ESP32-C6 für die Wi-Fi / Bluetooth Kommunikation.
Da ich noch nicht genau weiß, was ich mit einem ESP32-P4 anstellen soll, hier erstmal nur meine ersten Tests mit dem Board, das ich inklusive einem kleinen Lautsprecher gekauft habe.

Technische Highlights
- Basierend auf dem ESP32-P4 Chip mit:
- RISC-V Dual-Core + Single-Core Prozessoren
- 32MB PSRAM + 16MB Nor Flash
- Leistungsstarke Schnittstellen:
- MIPI-CSI & MIPI-DSI für Kamera & Display
- USB 2.0 OTG, Ethernet, SDIO 3.0, TF-Karten-Slot
- Mikrofon-, Lautsprecher- und RTC-Batterieanschlüsse
- Erweiterte Sicherheitsfunktionen:
- Secure Boot, Flash-Verschlüsselung, TRNG
- Zugriffsschutz & Privilegentrennung
Kommunikation & Konnektivität
- Wi-Fi 6 & Bluetooth 5/BLE über ESP32-C6-MINI Modul (SDIO-Schnittstelle)
- Optionaler PoE-Modulanschluss für Stromversorgung über Ethernet
Weitere Merkmale
- GPIO-Header mit 28 programmierbaren Pins
- USB-C für Strom, Programmierung und Debugging
- Kompatibel mit Arduino-Umgebung

Auszug aus der Dokumentation: ESP32-P4-NANO – Waveshare Wiki
| 1. ESP32-P4NRW32 ESP32-P4 gestapeltes PSRAM mit 32 MB 2. ESP32-C6-MINI-1 SDIO-Schnittstellenprotokoll, ESP32-P4-NANO erweitern Wi-Fi 6, Bluetooth 5 3. Bildschirmschnittstelle MIPI 2-lane 4. Kameraschnittstelle MIPI 2-spurig 5. Typ-C-Schnittstelle Wird für die Stromversorgung, das Flashen von Programmen und das Debuggen verwendet 6. USER-LED-Betriebsanzeige 7. BOOT-Taste Drücken Sie beim Einschalten oder Zurücksetzen, um in den Download-Modus zu wechseln | 8. RESET-Taste 9. Stromversorgungsschnittstelle des PoE-Moduls/externe Stromversorgungsschnittstelle Externer Zugriff auf die Stromversorgung von 5 V oder PoE-Modul 10. RTC-Halterung: Schließen Sie eine wiederaufladbare RTC-Batterie an (es werden nur wiederaufladbare RTC-Batterien unterstützt) 11. SMD-Mikrofon 12. Mikrofon PoE-Modul-Schnittstelle 13. Typ-A-Schnittstelle USB OTG 2.0 High-Speed-Schnittstelle 14. 100 MB RJ45-Netzwerkanschluss 15. Lautsprecherschnittstelle MX1.25 2P-Anschluss, der 8Ω 2W-Lautsprecher unterstützt 16. GPIO-Schnittstelle 17. TF-Kartensteckplatz SDIO 3.0-Schnittstellenprotokoll |
GPIO Belegungsplan

Erster Test mit Arduino IDE 2
Vorab habe ich die neuste ESP32 Library Version 3.3.6 von Espressif Systems installiert.
Wenn ich in der Arduino IDE eine simple „hallo welt“ Ausgabe im Seriellen Monitor ausgeben lassen möchte, und ESP32-P4 auswähle bekomme ich auch ein Hallo im Seriellen Monitor.

wenn ich aber esp32-c6 auswähle, dann Meldung „A fatal error occurred: This chip is ESP32-P4, not ESP32-C6. Wrong chip argument?“
Aber wie kann ich zB. Wi-Fi 6 mit dem Board nutzen?
Da auf der Herstellerseite einige Demo´s vorhanden sind, aber nur für VS-Code mit ESP-IDF Extension, Wechsel ich nun die Entwicklungsumgebung
Erster Test mit ESP-IDF
Installation ESP-IDF auf Windows 11:
Die Installation der ESP-IDF (Espressif IoT Development Framework) auf Windows 11 erfolgt am einfachsten über das von Espressif bereitgestellte Installationsprogramm, das alle benötigten Tools automatisch einrichtet.
Hier ist eine Schritt-für-Schritt-Anleitung mit technischer Erklärung, Tipps und Quellen:
Voraussetzungen
- Windows 11 (64 Bit)
- Administratorrechte
- ~2–3 GB freier Speicherplatz
- Internetverbindung
Schritt 1: Installationsprogramm herunterladen
- Gehe zur offiziellen Download-Seite: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html
- Lade die aktuelle Version des Installers herunter:
esp-idf-tools-setup-<version>.exe
Direktlink zur aktuellen Stable: https://dl.espressif.com/dl/esp-idf-tools-setup-latest.exe
Schritt 2: ESP-IDF-Installer starten
Beim Start wirst du gefragt:
- Komponenten: Wähle
ESP32(oder zusätzlichESP32-S2,ESP32-C3usw.) - IDF Version: Wähle
latest release(z. B. v5.x und höher) - Zielverzeichnis: z. B.
C:\Espressif
Der Installer lädt und installiert automatisch:
- ESP-IDF selbst (Source)
- Python 3 mit virtualenv
- Git für Windows
- CMake, Ninja, OpenOCD
- Toolchain (
xtensa-esp32-elf)
Schritt 3: ESP-IDF PowerShell starten
Nach der Installation findest du im Startmenü den Eintrag:
ESP-IDF Command Prompt (z. B. für ESP32)
Diese speziell vorbereitete PowerShell-Umgebung lädt automatisch:
. $HOME/esp/esp-idf/export.ps1Damit sind alle Umgebungsvariablen gesetzt (z. B. IDF_PATH, PATH zur Toolchain usw.)
Schritt 4: Testen mit Beispielprojekt
- Wechsle in das Beispiele-Verzeichnis:
cd $HOME/esp/esp-idf/examples/get-started/hello_world- Projekt konfigurieren:
idf.py menuconfigTipp: Hier kannst du z. B. den COM-Port ändern oder andere Build-Optionen setzen.
- Build starten:
idf.py build- Flashen (ESP32 per USB verbunden):
idf.py -p COM3 flash
Ersetze
COM3durch den tatsächlichen COM-Port (siehe Geräte-Manager).
- Serielles Monitoring:
idf.py -p COM3 monitor
Ausgabe z. B.:
Hello world! This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE...
Funktioniert.
Arbeiten in Visual Studio Code mit ESP-IDF Plugin
Vorbereitung:
Download Visual Studio Code – Mac, Linux, Windows

Gezeigt wird hier die Windows Installation
Installieren des Plugin ESP-IDF
1. Anklicken Extensions Symbol
2. Suche ESP-IDF
3. Auswahl ESP-IDF V1.10.0 installieren
Details der einzelnen Schritte wird je nach Version dann auf dieser Seite unter How to use gezeigt:

Nach der Installation befindet sich in der linken Symbolleiste unten ein Espressif-Logo. Dieses Auswählen und im erscheinenden Welcome Bildschirm die Auswahl „Express“ auswählen.

Wenn Installation fertig wird, unter anderen New Project angezeigt. Dieses Auswählen:

ich werde gleich danach gefragt, welches Framework ich nutzen möchte und wähle:




Danach auf Build und wenn ohne Fehler dann auf Flash (Frage: welche Übertragung? wählte ich UART)
Und im Monitor Zeigte sich ein Hello World!
Dann hello_world_main.c inhalt durch diesen Blink Code ersetzt und an GPIO 21 LED und GND angeschlossen
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
// WICHTIG: Hier legen wir den Pin fest.
// Da dein Board evtl. keine programmierbare Onboard-LED hat,
// steuern wir hier Pin 21 an. Du kannst dort später eine LED anschließen.
#define BLINK_GPIO 21
static const char *TAG = "MEIN_PROJEKT";
void app_main(void)
{
// 1. Konfiguration: Wir sagen dem Chip, dass Pin 21 ein Ausgang ist (Strom raus)
// gpio_reset_pin setzt den Pin auf Werkseinstellungen zurück
gpio_reset_pin(BLINK_GPIO);
// gpio_set_direction stellt ihn auf "OUTPUT" (Ausgang)
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
printf("Start des Programms...\n");
// 2. Die Endlosschleife (Das Herzstück)
while (1) {
// Nachricht an den PC senden
ESP_LOGI(TAG, "LED einschalten!");
// Strom auf den Pin geben (1 = AN / 3.3V)
gpio_set_level(BLINK_GPIO, 1);
// 1000 Millisekunden (1 Sekunde) warten
vTaskDelay(1000 / portTICK_PERIOD_MS);
ESP_LOGI(TAG, "LED ausschalten!");
// Strom wegnehmen (0 = AUS / 0V)
gpio_set_level(BLINK_GPIO, 0);
// Wieder 1 Sekunde warten
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}und LED an GPIO 21 Blinkt!
Jetzt aber (weil ein Lautsprecher dabei lag) das I2S Audio Demo:
Download von ESP32-P4-NANO Demo
Und entpackt in einen Waveshare-Ordner
Die Hardware vorbereiten
Bevor wir Software machen, muss die Hardware stimmen.
- Lautsprecher: Das Board hat einen kleinen weißen Stecker (JST-Buchse). Dort muss ein passender Lautsprecher (oft 4 Ohm oder 8 Ohm) angeschlossen sein. Ohne den hörst du nichts, da der P4 keinen „Summer“ hat, sondern echten Sound ausgibt.
- Mikrofone: Das Board hat oft zwei kleine silberne Bauteile (MEMS-Mikrofone) direkt auf der Platine. Die funktionieren „ab Werk“.
Schritt 3: Das Projekt in VS Code öffnen
Das ist anders als bisher. Wir erstellen nichts Neues, wir öffnen etwas Vorhandenes.
- In VS Code:
Datei->Ordner öffnen... - Navigiere in den entpackten Waveshare-Ordner.
- Suche den Unterordner, der nach Audio aussieht = 06 I2SCodec
- Wähle diesen spezifischen Ordner aus und klicke auf „Ordner auswählen“.

Schritt 4: Den Chip konfigurieren (Target setzen)
VS Code hat jetzt ein neues Projekt geladen. Es weiß aber vielleicht noch nicht, welchen Chip du hast.
- Klicke unten in der blauen Leiste auf das Chip-Symbol (oder
F1->Set Espressif Device Target). - Wähle wieder esp32p4.
Schritt 5: Bauen und Flashen
Jetzt wird es spannend. Audio-Bibliotheken sind groß.
- Klicke auf den Zylinder (Build). Übertragungsart: UART
Das kann diesmal 2-3 Minuten dauern, da er Audio-Treiber kompiliert. - Wenn fehlerfrei: Klicke auf den Blitz (Flash).
- Öffne den Monitor.
Im Monitor steht:
I (397) i2s_es8311: i2s driver init success
I (427) ES8311: ES8311 in Slave mode and I2S format
I (437) i2s_es8311: es8311 codec init success
I (437) main_task: Returned from app_main()
I (10347) i2s_es8311: [music] i2s music played, 640000 bytes are written.
Und es ist ein kurzes barockes Tasteninstrument Stück leise zu hören!
Habe mal auf GitHub dieses Demo mit meinen Kommentare angelegt.
Aktuell habe ich noch nicht wirklich ein Fazit das ich schreiben könnte.
Werde zu gegebener Zeit die Tests fortgesetzt…
