Erstveröffentlichung ·
Von Thierry Stadler
Das D1-Mini-ESP32-Board erweitert das kompakte Format um einen ESP32 mit WLAN, Bluetooth und Bluetooth Low Energy. Gegenüber dem ESP8266 bietet der Controller zusätzliche I/O- und Analogfunktionen. Die Abbildung zeigt die Anschlussanordnung der damaligen Board-Variante mit ESP32-WROOM-Modul.

Technische Daten
- Versorgung über USB
- 5 V DC
- Logikspannung
- 3,3 V DC
- Prozessor
- Dual-Core Tensilica Xtensa LX6, bis 240 MHz
- Modul
- ESP32-WROOM-32 / ESP32-WROOM-32D, je nach Variante
- Chip
- ESP32-D0WDQ6 / ESP32-D0WD, je nach Variante
- USB-UART
- Im damaligen Steckbrief: CH9102X; Bestückung prüfen
- WLAN
- 2,4 GHz, IEEE 802.11 b/g/n, PCB-Antenne
- Bluetooth
- Bluetooth 4.2 BR/EDR und BLE
- Speicher im Chip
- 448 kB ROM und 520 kB SRAM
- Analogeingänge
- ESP32-Chip: zwei 12-Bit-ADCs mit insgesamt bis zu 18 Kanälen; nicht alle am Board verfügbar
- Analogausgänge
- Zwei 8-Bit-DACs: GPIO25 und GPIO26
- Abmessungen / Gewicht
- Damals beschriebene Variante: 39 × 31,36 mm, 12 g
Anschlüsse und Pinbelegung
| Anschluss / GPIO | Funktion | Hinweis |
|---|---|---|
| RST / EN | Reset / Enable | Kein allgemeiner GPIO |
| VCC / 5V | 5-V-Versorgung | Keine GPIO-Signalspannung |
| 3V3 | 3,3-V-Versorgung | Beschriftung am Board beachten |
| GND | Masse | Gemeinsame Masse für angeschlossene Geräte |
| GPIO1 / GPIO3 | UART0 TX / RX | Auch für Programmierung und serielle Ausgabe verwendet |
| GPIO22 / GPIO21 | I²C SCL / SDA | Zuordnung im abgebildeten D1-Mini-Layout |
| GPIO18 / GPIO19 | SPI SCK / MISO | SPI-Signale sind über die Software konfigurierbar |
| GPIO23 / GPIO5 | SPI MOSI / CS | GPIO5 ist zugleich ein Strapping-Pin |
| GPIO25 / GPIO26 | DAC1 / DAC2; ADC2 | Analoge Ausgabe oder allgemeiner I/O |
| GPIO32 / GPIO33 | ADC1_CH4 / ADC1_CH5 | Analoger Eingang oder digitaler I/O |
| GPIO34 / GPIO35 | ADC1_CH6 / ADC1_CH7 | Nur Eingang; keine internen Pull-up-/Pull-down-Widerstände |
| GPIO36 / GPIO39 | ADC1_CH0 / ADC1_CH3; SVP / SVN | Nur Eingang; keine internen Pull-up-/Pull-down-Widerstände |
| GPIO4 / GPIO13 / GPIO14 / GPIO27 | Allgemeiner I/O; ADC2 | ADC2-Nutzung kann mit WLAN kollidieren |
| GPIO16 / GPIO17 | Allgemeiner I/O; häufig UART2 RX / TX | Abhängig vom eingesetzten Modul |
| GPIO0 / GPIO2 / GPIO12 / GPIO15 | I/O mit Boot-Konfigurationsfunktion | Externe Beschaltung kann das Startverhalten beeinflussen |
| GPIO6–GPIO11 / CLK / SD0–SD3 / CMD | Verbindung zum SPI-Flash | Bei WROOM-Modulen nicht als freie I/O verwenden |
3,3-V-Signale und 5-V-Versorgung
Die Stromversorgung über USB erfolgt mit 5 V. Die GPIO-Pins arbeiten mit 3,3-V-Logik und sind nicht 5-V-tolerant. Für ein Peripheriegerät mit 5-V-Signalen ist eine passende Pegelanpassung erforderlich.
Anschlusswahl
Wähle GPIOs anhand der benötigten Funktion. GPIO34 bis GPIO39 sind beim klassischen ESP32 reine Eingänge. Die Leitungen zum Flash und die Boot-Konfigurationspins eignen sich nicht als beliebig austauschbare Anschlüsse.
Häufige Anschlussfragen
Welchen Analogeingang nehme ich, wenn WLAN aktiv ist?
Beim klassischen ESP32 teilt sich ADC2 Ressourcen mit WLAN. Für einen analogen Sensor bei gleichzeitigem WLAN-Betrieb sind herausgeführte ADC1-Pins wie GPIO32 oder GPIO33 die einfachere Wahl. GPIO34, GPIO35, GPIO36 und GPIO39 gehören ebenfalls zu ADC1, sind aber reine Eingänge. Diese Auswahl gilt nicht pauschal für ESP32-C3 oder ESP32-S3.
Warum liefert ein Analogeingang keine genaue Spannung?
Ein ADC-Rohwert ist noch keine kalibrierte Spannungsmessung. Beim ESP32 hängen Messbereich und Umrechnung unter anderem von der eingestellten Eingangsdämpfung und der tatsächlichen Referenzspannung ab. Verwende die Kalibrierungsmöglichkeiten deiner Entwicklungsumgebung und prüfe die Messung mit einer bekannten Spannung. 3,3-V-Logik bedeutet nicht automatisch einen präzisen ADC-Messbereich von 0 bis 3,3 V.
Sind SDA und SCL beim ESP32 immer GPIO21 und GPIO22?
Das sind die Standardpins des Generic-ESP32-Boards im Arduino-Core und die Zuordnung in dieser Abbildung. Andere Boards können andere Vorgaben haben. Die Pins lassen sich im Arduino-Core beispielsweise mit Wire.begin(21, 22) ausdrücklich für SDA und SCL festlegen. Prüfe ausserdem die Pinbeschriftung, die Versorgung des Moduls und die Pull-up-Spannung der I²C-Leitungen.