Schnellstart
Wählen Sie den Tab für Ihre Entwicklungsumgebung. Jeder Tab endet damit, dass die RGB-LED des Boards (eine LED mit roten, grünen und blauen Kanälen) blinkt. So sehen Sie am schnellsten, dass alles funktioniert.
- Arduino
- MicroPython
- ESP-IDF
1. Plattform installieren
Installieren Sie die aktuelle Arduino IDE, mindestens in der Version 1.8. Die aktuelle Version finden Sie auf der Website von arduino.cc.
2. Board-Definitionen installieren
Die Board-Definition ist im Arduino-Core von Espressif für den ESP32 enthalten.
-
Starten Sie Arduino und öffnen Sie das Fenster Preferences.
-
Tragen Sie diesen Link zur stabilen Version in das Feld Additional Board Manager URLs ein. Sie können mehrere URLs hinzufügen, getrennt durch Kommas.
https://espressif.github.io/arduino-esp32/package_esp32_index.json -
Öffnen Sie den Boards Manager über das Menü Tools > Board und installieren Sie die Plattform esp32.
-
Starten Sie die Arduino IDE neu.
3. Board auswählen
Wählen Sie Soldered NULA Dual ESP32C5 im Menü Tools > Board aus. Verbinden Sie das Board dann mit dem USB-C-Kabel mit Ihrem Computer und wählen Sie in der Arduino IDE den zugehörigen seriellen Port aus.
USB-C läuft bei diesem Board über einen USB-seriell-Chip CH340K, daher benötigt Ihr Computer möglicherweise einen CH340-Driver, um den Port anzuzeigen. Wenn kein Port erscheint, lesen Sie Fehlerbehebung.
4. Erstes Programm hochladen
Das Board hat eine WS2812B-RGB-LED an IO8, auf dem Board mit IO8 beschriftet. Die Board-Definition nennt sie LED_BUILTIN, und digitalWrite() schaltet sie wie eine einfache LED ein und aus. Dieser Sketch lässt sie einmal pro Sekunde blinken.
// Blink the onboard RGB LED: 0.5 s on, 0.5 s off.
// LED_BUILTIN comes from the board definition and points at the RGB LED on IO8.
const int LED_PIN = LED_BUILTIN;
void setup()
{
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
digitalWrite(LED_PIN, HIGH); // LED on
delay(500);
digitalWrite(LED_PIN, LOW); // LED off
delay(500);
}
5. Was Sie erwarten können
Laden Sie den Sketch hoch. Die automatische Reset-Schaltung versetzt das Board von selbst in den Upload-Modus, Sie müssen also keine Taste drücken. Sobald der Upload abgeschlossen ist, beginnt die RGB-LED zu blinken. Der Arduino-Core steuert ihren roten, grünen und blauen Kanal gemeinsam an, daher leuchtet sie weiß. Die RGB-LED leuchtet eine halbe Sekunde lang weiß und bleibt dann eine halbe Sekunde lang aus.
Die mit IO8 beschriftete LED sitzt zwischen den Tasten USER und RESET, nahe dem USB-C-Ende des Boards, direkt neben dem Befestigungsloch auf der Seite zum ESP32-C5-Modul.
6. Fehlerbehebung
Wenn das Board nicht erkannt wird oder der Upload fehlschlägt, lesen Sie weiter unter Fehlerbehebung.
1. Plattform installieren
MicroPython wird mit dem Programm esptool.py auf das Board übertragen, das Sie in der esptool-Dokumentation von Espressif finden. Unter Windows heißt das installierte Programm möglicherweise esptool statt esptool.py.
esptool benötigt Python 3.10 oder neuer. Die Installationsanleitung installiert die neueste stabile Version von PyPI mit pip:
pip install esptool
Wenn das bei Ihrer Python-Installation einen Fehler ergibt, versuchen Sie python -m pip install esptool oder pip3 install esptool.
2. Firmware installieren
Laden Sie die neueste .bin-Datei von der Download-Seite ESP32_GENERIC_C5 herunter. Diese generische Firmware läuft auf den meisten ESP32-C5-Boards mit mindestens 4 MiB Flash und einem 40-MHz- oder 48-MHz-Quarz. Dieses Board hat 8 MB Flash und einen 48-MHz-Quarz, und die Firmware findet beim Start den PSRAM (Pseudo-Static RAM, zusätzlicher Arbeitsspeicher im Modul) selbstständig.
Wenn Sie MicroPython zum ersten Mal auf das Board übertragen, löschen Sie zuerst den gesamten Flash:
esptool.py erase_flash
Übertragen Sie dann die Firmware auf das Board, beginnend bei der Adresse 0x2000:
esptool.py --baud 460800 write_flash 0x2000 ESP32_BOARD_NAME-DATE-VERSION.bin
Ersetzen Sie ESP32_BOARD_NAME-DATE-VERSION.bin durch die heruntergeladene .bin-Datei. Wenn das Flashen beginnt und dann mittendrin fehlschlägt, entfernen Sie die Option --baud 460800, um mit der langsameren Standardgeschwindigkeit zu flashen.
3. Board und Port auswählen
esptool.py versucht, den seriellen Port des Boards selbst zu finden. Schlägt das fehl oder sind mehrere Espressif-Boards angeschlossen, geben Sie den Port mit --port an:
esptool.py --port PORTNAME erase_flash
esptool.py --port PORTNAME --baud 460800 write_flash 0x2000 ESP32_BOARD_NAME-DATE-VERSION.bin
Unter Linux lautet der Portname meist ähnlich wie /dev/ttyUSB oder /dev/ttyACM0, auf einem Mac /dev/cu.usbmodem01 und unter Windows COM4.
Der MicroPython-Prompt (die REPL) liegt auf UART0 (der ersten der seriellen UART-Schnittstellen des Chips), der mit einem USB-seriell-Wandler verbunden sein kann, oder auf dem im Chip integrierten USB. Bei diesem Board führt UART0 zum USB-seriell-Chip CH340K, der am USB-C-Connector sitzt. Öffnen Sie den seriellen Port des Boards in einem Terminalprogramm mit 115200 Baud.
4. Erstes Programm hochladen
Die RGB-LED an IO8 ist eine WS2812B, daher steuert MicroPython sie mit dem Modul neopixel statt mit einem einfachen Pin. Drücken Sie am Prompt Ctrl-E, um den Paste-Modus zu starten, fügen Sie das Programm ein und drücken Sie dann Ctrl-D, um es auszuführen.
# Blink the onboard RGB LED on IO8: 0.5 s on, 0.5 s off.
from machine import Pin
from neopixel import NeoPixel
import time
led = NeoPixel(Pin(8, Pin.OUT), 1) # one WS2812B LED on IO8
while True:
led[0] = (64, 64, 64) # equal red, green and blue: white
led.write()
time.sleep(0.5)
led[0] = (0, 0, 0) # off
led.write()
time.sleep(0.5)
5. Was Sie erwarten können
Die RGB-LED blinkt einmal pro Sekunde weiß. Das Programm gibt nichts aus. Die RGB-LED leuchtet eine halbe Sekunde lang weiß und bleibt dann eine halbe Sekunde lang aus.
Die mit IO8 beschriftete LED sitzt zwischen den Tasten USER und RESET, nahe dem USB-C-Ende des Boards, direkt neben dem Befestigungsloch auf der Seite zum ESP32-C5-Modul.
6. Fehlerbehebung
Wenn die REPL nicht antwortet oder das Flashen der Firmware fehlschlägt, lesen Sie weiter unter Fehlerbehebung.
1. Plattform installieren
Installieren Sie ESP-IDF anhand des Getting Started Guide von Espressif. Die folgenden Schritte verwenden das Blink-Beispiel aus ESP-IDF v6.1, das den ESP32-C5 unterstützt.
2. Target festlegen
Das Beispiel befindet sich in Ihrem ESP-IDF-Ordner unter examples/get-started/blink. Legen Sie vor dem Konfigurieren und Bauen das Chip-Target fest:
idf.py set-target esp32c5
3. Projekt konfigurieren
Öffnen Sie das Konfigurationsmenü des Projekts:
idf.py menuconfig
Im Menü Example Configuration:
- Setzen Sie
Blink LED typeaufLED strip, da die RGB-LED des Boards eine adressierbare WS2812B ist. - Wählen Sie die Backend-Peripherie für den LED-Streifen.
RMT(die Remote Control Peripheral des Chips) ist nur für ESP-Targets mit RMT-Peripherie verfügbar, undSPI(der serielle Peripheriebus des Chips) ist für alle ESP-Targets verfügbar. - Setzen Sie
Blink GPIO numberauf8. Der Standardwert des Beispiels für den ESP32-C5 ist GPIO 27 (GPIO steht für General-Purpose Input/Output, also Allzweck-Ein-/Ausgang). Dort befindet sich die LED dieses Boards nicht. - Stellen Sie die Blinkdauer in
Blink period in msein. Der Standardwert ist 1000.
4. Erstes Programm bauen und flashen
Dies ist die Datei main/blink_example_main.c des Beispiels. Mit der Auswahl LED strip schaltet sie die LED zwischen schwachem Weiß und Aus um.
/* Blink Example
This example code is in the Public Domain (or CC0 licensed, at your option.)
Unless required by applicable law or agreed to in writing, this
software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied.
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#include "led_strip.h"
#include "sdkconfig.h"
static const char *TAG = "example";
/* Use project configuration menu (idf.py menuconfig) to choose the GPIO to blink,
or you can edit the following line and set a number here.
*/
#define BLINK_GPIO CONFIG_BLINK_GPIO
static uint8_t s_led_state = 0;
#ifdef CONFIG_BLINK_LED_STRIP
static led_strip_handle_t led_strip;
static void blink_led(void)
{
/* If the addressable LED is enabled */
if (s_led_state) {
/* Set the LED pixel using RGB from 0 (0%) to 255 (100%) for each color */
led_strip_set_pixel(led_strip, 0, 16, 16, 16);
/* Refresh the strip to send data */
led_strip_refresh(led_strip);
} else {
/* Set all LED off to clear all pixels */
led_strip_clear(led_strip);
}
}
static void configure_led(void)
{
ESP_LOGI(TAG, "Example configured to blink addressable LED!");
/* LED strip initialization with the GPIO and pixels number*/
led_strip_config_t strip_config = {
.strip_gpio_num = BLINK_GPIO,
.max_leds = 1, // at least one LED on board
};
#if CONFIG_BLINK_LED_STRIP_BACKEND_RMT
led_strip_rmt_config_t rmt_config = {
.resolution_hz = 10 * 1000 * 1000, // 10MHz
.flags.with_dma = false,
};
ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &led_strip));
#elif CONFIG_BLINK_LED_STRIP_BACKEND_SPI
led_strip_spi_config_t spi_config = {
.spi_bus = SPI2_HOST,
.flags.with_dma = true,
};
ESP_ERROR_CHECK(led_strip_new_spi_device(&strip_config, &spi_config, &led_strip));
#else
#error "unsupported LED strip backend"
#endif
/* Set all LED off to clear all pixels */
led_strip_clear(led_strip);
}
#elif CONFIG_BLINK_LED_GPIO
static void blink_led(void)
{
/* Set the GPIO level according to the state (LOW or HIGH)*/
gpio_set_level(BLINK_GPIO, s_led_state);
}
static void configure_led(void)
{
ESP_LOGI(TAG, "Example configured to blink GPIO LED!");
gpio_reset_pin(BLINK_GPIO);
/* Set the GPIO as a push/pull output */
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
}
#else
#error "unsupported LED type"
#endif
void app_main(void)
{
/* Configure the peripheral according to the LED type */
configure_led();
while (1) {
ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF");
blink_led();
/* Toggle the LED state */
s_led_state = !s_led_state;
vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);
}
}
Bauen, flashen und überwachen Sie das Projekt in einem Schritt, wobei PORT durch den seriellen Port des Boards ersetzt wird:
idf.py -p PORT flash monitor
Um den seriellen Monitor zu beenden, geben Sie Ctrl-] ein.
5. Was Sie erwarten können
Die RGB-LED blinkt in der von Ihnen eingestellten Periode, und der Monitor protokolliert jeden Wechsel. Dies ist die Beispielausgabe aus der README des Beispiels: Mit der Standardperiode leuchtet die RGB-LED eine Sekunde lang schwach weiß und bleibt dann eine Sekunde lang aus.I (315) example: Example configured to blink addressable LED!
I (325) example: Turning the LED OFF!
I (1325) example: Turning the LED ON!
I (2325) example: Turning the LED OFF!
I (3325) example: Turning the LED ON!
I (4325) example: Turning the LED OFF!
I (5325) example: Turning the LED ON!
I (6325) example: Turning the LED OFF!
I (7325) example: Turning the LED ON!
I (8325) example: Turning the LED OFF!
Die mit IO8 beschriftete LED sitzt zwischen den Tasten USER und RESET, nahe dem USB-C-Ende des Boards, direkt neben dem Befestigungsloch auf der Seite zum ESP32-C5-Modul.
6. Fehlerbehebung
Wenn sich das Projekt nicht bauen oder flashen lässt, lesen Sie weiter unter Fehlerbehebung.