ESP8266-Pinbelegung
Der ESP8266 bietet den Vorteil, eine beträchtliche Anzahl von GPIO-Pins zur Verfügung zu haben. Es ist jedoch wichtig, genau auf die Pinbelegung zu achten. Nicht alle GPIO-Pins des ESP8266 sind sicher zu verwenden.
Es ist wichtig zu erwähnen, dass die unten bereitgestellte Pinout-Referenz sich auf die weit verbreitete 30-polige ESP8266 NodeMCU-Entwicklungsplatine bezieht.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
ESP8266-Peripheriegeräte und I/O
Der ESP8266 NodeMCU verfügt über insgesamt 17 GPIO-Pins, die über Pinheader auf beiden Seiten der Entwicklungsplatine verteilt sind. Diese Pins sind vielseitig einsetzbar und können verschiedenen Peripheriefunktionen zugeordnet werden, einschließlich:
- 9 x Digitale Eingabe/Ausgabe-Pins:
- 1 x ADC-Kanal: Bereitstellung eines einzelnen Kanals mit 10-Bit-Genauigkeit SAR-ADC.
- 2 x UART-Schnittstellen: Ausgestattet mit zwei UART-Schnittstellen mit Unterstützung für Flusskontrolle.
- 4 x PWM-Ausgänge: Vier PWM-Ausgänge zur Regelung von Parametern wie Motordrehzahl oder LED-Helligkeit.
- 2 x SPI: Ausgestattet mit zwei SPI-Schnittstellen zum Anschluss verschiedenster Sensoren und Peripheriegeräte.
- 1 x I2C: Integration einer I2C-Schnittstelle zur Anbindung verschiedener Sensoren und Peripheriegeräte.
- 1 x I2S: Eine I2S-Schnittstelle zur Einbindung von Ton in Ihr Projekt.
ESP8266 Pinbelegung
Der ESP8266 NodeMCU verfügt insgesamt über 30 Pins, die eine benutzerfreundliche Funktionalität ermöglichen. Werfen Sie einen Blick auf das untenstehende Pinout-Diagramm, um das Layout zu erkunden.

Nun tauchen wir in die einzelnen Pins des ESP8266 ein und decken ihre spezifischen Funktionen auf.
Digitale Ein- und Ausgabepins
Unter den 30 Pins des ESP8266 NodeMCU-Boards können Sie 9 Pins für die digitale Ein- und Ausgabe verwenden. Von diesen 9 Pins sind 5 sicher zu verwenden; die übrigen 4 Pins können ebenfalls als digitale Eingabe- oder Ausgabe verwendet werden, jedoch mit Vorsicht.
Innerhalb der 30 Pins des ESP8266 NodeMCU-Boards können 9 Pins für digitale Ein- und Ausgabefunktionen verwendet werden. Im Detail:
- 5 Pins sind sicher als digitale Ein-/Aus-Pins verwendbar
- 4 Pins können ebenfalls als digitale Ein-/Aus-Pins verwendet werden, aber eine sorgfältige Handhabung ist erforderlich
- Alle neun Pins können intern (auf dem Chip) Pull-up- oder Pull-down-Widerstände konfiguriert werden oder auf hohen Impedanzzustand gesetzt werden
Die untenstehende Tabelle zeigt, welche Pins sicher zu verwenden sind und welche Pins mit Vorsicht verwendet werden sollten.
GPIO | Pin Label | Safe to use? | Reason |
---|---|---|---|
GPIO16 | D0 | HIGH at boot, used to wake up from deep sleep | |
GPIO5 | D1 | ||
GPIO4 | D2 | ||
GPIO0 | D3 | connected to FLASH button, boot fails if pulled LOW. On-board 10k external pull-up resistor | |
GPIO2 | D4 | HIGH at boot, boot fails if pulled LOW. On-board 10k external pull-up resistor | |
GPIO14 | D5 | ||
GPIO12 | D6 | ||
GPIO13 | D7 | ||
GPIO15 | D8 | Required for boot, boot fails if pulled HIGH. On-board 10k external pull-down resistor | |
GPIO3 | RX | RX pin, used for flashing and debugging | |
GPIO1 | TX | TX pin, used for flashing and debugging | |
GPIO6 | CLK | Connected to Flash memory | |
GPIO7 | SDO | Connected to Flash memory | |
GPIO11 | CMD | Connected to Flash memory | |
GPIO8 | SD1 | Connected to Flash memory | |
GPIO9 | SD2 | Connected to Flash memory | |
GPIO10 | SD3 | Connected to Flash memory | |
ADC0 | A0 | Can be used as the analog input pin only. |
Zeilenumbruch
Legend | |
---|---|
These are your top-priority pins, absolutely safe for use. No concerns here. | |
Pay close attention because their behavior, particularly during boot, can be unpredictable. Also pay attention to their on-board external pull-up/pull-down resistors. Use them only when absolutely necessary. | |
These pins should NOT be used as digital input/output pins. |
Das folgende Bild zeigt, welche GPIO-Pins als digitale Ein- und Ausgabepins verwendet werden können.

Wie programmiert man für den ESP8266 digitale Ein- und Ausgänge.
Sie können die folgenden Funktionen verwenden, um die digitalen Ein- und Ausgänge des ESP8266 zu steuern.
Bitte beachten Sie, dass Sie im Code das Pin-Label verwenden müssen. Zum Beispiel Pin GPIO5 (D1):
Beispiele zur Verwendung des digitalen Eingangspins des ESP8266
Beispiele für die Verwendung des digitalen Ausgangspins des ESP8266:
Analog-Digital-Wandler-Pins
Der ESP8266 ist mit einem 10-Bit-Analog-Digitalwandler (ADC) ausgestattet, der es ermöglicht, 1024 (2^10) verschiedene analoge Stufen zu unterscheiden. Im Wesentlichen wandelt er Eingangsspannungen im Bereich von 0 bis 3,3 V (Betriebsspannung) in ganzzahlige Werte von 0 bis 1024 um. Folglich ergibt diese Konfiguration eine Auflösung von 3,3 Volt geteilt durch 1024 Einheiten, entsprechend 0,0032 Volt (3,2 mV) pro Einheit.

Beispielcode zur Verwendung des ADC am ESP8266:
Beispiele für analoge Sensoren, die den A0-Pin des ESP8266 verwenden:
SPI-Pins
Der ESP8266 verfügt über zwei SPI-Schnittstellen (SPI und HSPI) im Slave- und Master-Modus. Diese SPI-Schnittstellen unterstützen außerdem die unten aufgeführten allgemeinen SPI-Funktionen:
- 4 Timing-Modi der SPI-Formatübertragung
- Bis zu 80 MHz sowie die auf 80 MHz geteilten Taktsignale
- Bis zu 64-Byte-FIFO

Beispiele für die Verwendung der SPI-Pins des ESP8266:
I2C-Pins
Der ESP8266 verfügt nicht über integrierte I2C-Pins, aber man kann ihn dennoch durch Bitbanging verwenden. Er funktioniert gut, und der ESP8266 ist schnell genug, um mit der von Arduino erwarteten Leistung Schritt zu halten.
Standardmäßig sind GPIO4 (SDA) und GPIO5 (SCL) als I2C-Pins eingerichtet, um es für diejenigen zu vereinfachen, die vorhandenen Arduino-Code, Bibliotheken und Skizzen verwenden.
Allerdings haben Sie die Freiheit, zwei andere GPIO-Pins für I2C zu wählen, indem Sie wire.begin(SDA, SCL) in der Arduino-IDE verwenden.

Beispiele für die Verwendung der I2C-Pins des ESP8266:
UART-Anschlüsse
Der ESP8266 verfügt über zwei UART-Schnittstellen, UART0 und UART2, die eine asynchrone Kommunikation (RS232 und RS485) mit beeindruckenden Geschwindigkeiten von bis zu 4,5 MBit/s ermöglichen. Diese Fähigkeit macht sie ideal für Hochgeschwindigkeits-Datentransferanwendungen.
- UART0 (TXD0, RXD0, RST0 und CTS0-Pins) wird für die Kommunikation verwendet.
- UART1 (TXD1-Pin) verfügt lediglich über ein Signal zur Datenübertragung und wird typischerweise zum Ausgeben von Logs verwendet.

RXD0 und TXD0 dienen als serielle Steuer- und Bootloader-Pins des ESP-Moduls und spielen eine entscheidende Rolle bei der Kommunikation mit dem Modul. Sie sind insbesondere während des Bootloadingsprozesses wichtig. Daher sollten Sie beim Umgang mit ihnen vorsichtig sein, da sie über den USB-zu-Seriell-Wandler verbunden sind und daher USB-Verkehr empfangen.
PWM-Pins
Jeder GPIO-Pin des ESP8266, von GPIO0 bis GPIO15, ist programmierbar, um Pulsweitenmodulation (PWM)-Ausgänge zu erzeugen.
Das PWM-Signal auf dem ESP8266 verfügt über eine 10-Bit-Auflösung und ermöglicht eine präzise Steuerung des Ausgangs. Zusätzlich ist der PWM-Frequenzbereich anpassbar und reicht von 1000 μs bis 10000 μs, was einem flexiblen Frequenzbereich von 100 Hz bis 1 kHz entspricht. Diese Anpassungsfähigkeit macht es für eine breite Palette von Anwendungen geeignet, die unterschiedliche PWM-Einstellungen erfordern.
Stromversorgungsstifte
- Der VIN-Pin bietet eine bequeme Möglichkeit, den ESP8266 und seine Peripherie direkt mit einer geregelten 5-V-Stromquelle zu versorgen.
- Der 3V3-Pin dient als Ausgang des integrierten Spannungsreglers an Bord und kann eine beachtliche Stromstärke von 600 mA liefern. Dies macht ihn zu einer zuverlässigen Quelle für die Stromversorgung verbundener Geräte und Komponenten.
- GND fungiert als Masse-Pin und legt den elektrischen Referenzpunkt für den ESP8266 und die angeschlossenen Geräte fest. Es sorgt für eine gemeinsame Masse im System und gewährleistet stabile und ordnungsgemäße elektrische Verbindungen.
Unterbrechungs-Pins
Jeder GPIO (General Purpose Input/Output) auf dem ESP8266, mit Ausnahme von GPIO16, ist als Interrupt konfigurierbar.
Das bedeutet, dass jeder GPIO, von GPIO0 bis GPIO15, so eingerichtet werden kann, dass ein Interrupt ausgelöst wird, wodurch der ESP8266 auf bestimmte Ereignisse oder Änderungen in den Eingangszuständen reagieren kann. GPIO16 hingegen unterstützt diese Interrupt-Konfiguration nicht. Diese Flexibilität bei der Nutzung von Interrupts erhöht die Vielseitigkeit des ESP8266 bei der Verarbeitung von Echtzeit-Ereignissen und der Interaktion mit externen Geräten.
SDIO-Pins
Der ESP8266 ist mit einer einzigen Slave-SDIO-Schnittstelle (Secure Digital Input/Output Interface) ausgestattet, die zum Anschluss von SD-Karten vorgesehen ist. Sie unterstützt sowohl SDIO v1.1 bei 4-Bit 25 MHz als auch SDIO v2.0 bei 4-Bit 50 MHz.
Diese Funktion ermöglicht eine nahtlose Integration von SD-Karten mit dem ESP8266 und bietet Hochgeschwindigkeits-Datentransfer sowie Kompatibilität mit verschiedenen SDIO-Versionen. Ganz gleich, ob SDIO v1.1 oder v2.0 verwendet wird, bietet der ESP8266 Vielseitigkeit beim Anschluss und beim effizienten Zugriff auf Daten von SD-Karten.
Steuerpins
- Der EN-Pin (auch bekannt als CH_PD oder Chip Power Down) dient als Enable-Pin für den ESP8266 und wird standardmäßig auf HIGH gezogen. Wird er auf HIGH gesetzt, ist der Chip aktiviert und arbeitet normal. Umgekehrt wird der Chip deaktiviert, wenn er auf LOW gezogen wird, was ihn effektiv abschaltet.
- Der RST-Pin fungiert als Reset-Pin für den ESP8266 und wird standardmäßig auf HIGH gezogen. Wird er kurz auf GND gezogen, löst dies einen Reset des ESP8266 aus, ähnlich wie das Drücken des auf dem Board befindlichen RST-Knopfes.
- Der FLASH-Pin wird vom ESP8266 genutzt, um zu bestimmen, ob er in den Bootloader startet. Wird der Pin beim Einschalten auf LOW gehalten, wird der Bootvorgang gestartet, ähnlich wie das Drücken der FLASH-Taste auf dem Board.
- Der WAKE-Pin wird verwendet, um den ESP8266 aus dem Deep-Sleep-Modus zu wecken, sodass das Gerät nach einer Phase im Niedrigenergiezustand wieder normal betrieben werden kann.