Waveshare ESP32-P4-NANO angetestet

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

  1. Gehe zur offiziellen Download-Seite: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/windows-setup.html
  2. 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ätzlich ESP32-S2, ESP32-C3 usw.)
  • 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.ps1

Damit sind alle Umgebungsvariablen gesetzt (z. B. IDF_PATH, PATH zur Toolchain usw.)


Schritt 4: Testen mit Beispielprojekt

  1. Wechsle in das Beispiele-Verzeichnis:
cd $HOME/esp/esp-idf/examples/get-started/hello_world
  1. Projekt konfigurieren:
idf.py menuconfig

Tipp: Hier kannst du z. B. den COM-Port ändern oder andere Build-Optionen setzen.

  1. Build starten:
idf.py build
  1. Flashen (ESP32 per USB verbunden):
idf.py -p COM3 flash

Ersetze COM3 durch den tatsächlichen COM-Port (siehe Geräte-Manager).

  1. 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.

  1. In VS Code: Datei -> Ordner öffnen...
  2. Navigiere in den entpackten Waveshare-Ordner.
  3. Suche den Unterordner, der nach Audio aussieht = 06 I2SCodec
  4. 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.

  1. Klicke unten in der blauen Leiste auf das Chip-Symbol (oder F1 -> Set Espressif Device Target).
  2. Wähle wieder esp32p4.

Schritt 5: Bauen und Flashen

Jetzt wird es spannend. Audio-Bibliotheken sind groß.

  1. Klicke auf den Zylinder (Build). Übertragungsart: UART
    Das kann diesmal 2-3 Minuten dauern, da er Audio-Treiber kompiliert.
  2. Wenn fehlerfrei: Klicke auf den Blitz (Flash).
  3. Ö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…

,
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzerkomfort bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst und hilft uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.