Die Tabelle unten zeigt, welche GPIO-Pins auf den ESP8266-Boards vorhanden sind und welche Funktionen sie wahrnehmen können. Das NodeMCU-Board ist optisch einem ESP32-DevKitC ähnlich (allerdings etwas schmaler). Es besitzt 30 Pins; alle 17 GPIOs sind nach außen geführt. Der D1 mini ist deutlich kleiner und hat nur 16 Pins – alle wesentlichen, für eigene Anwendungen nutzbaren sind aber vorhanden.
PDF-Download: Pinbelegung des ESP8266 (NodeMCU und D1 min)
Die Standardspannung des ESP8266 beträgt 3,3 Volt. Darauf sind auch die GPIOs ausgelegt – sie arbeiten mit Signalpegeln von 3,3V; höhere Spannungen als 3,6V – also auch die mglw. vom Arduino gewohnten 5V-Signale – können die Boards beschädigen bzw. zerstören. Ein Spannungsregler sorgt dafür, dass die 5V Versorgungsspannung – z.B. vom USB-Anschluss – auf 3,3V heruntergeregelt werden.
Pin-Name: entspricht der Beschriftung auf den Boards
<FLASH>: Damit sind in der Tabelle die GPIO-Pins 6-11 gekennzeichnet, die zur Ansteuerung des internen SPI-Flash-Speichers verwendet werden und nicht für eigene Projekte zur Verfügung stehen.
EN: ist intern auf HIGH-Pegel gesetzt, damit der Chip arbeitet (LOW schaltet den Chip ab; power down)
RST: Eine kurze Verbindung mit Masse, z.B. über einen Taster, löst einen Neustart (Reset) des ESP32 aus, hat also die gleiche Funktion wie der Reset-Taster auf dem Board.
VIN, 5V: Kann zur Spannungsversorgung des NodeMCU-Boards verwendet werden, wenn das Board nicht per USB-Anschluss versorgt wird. Lt. Forum auf mikrocontroller.net funktioniert das auch beim D1 mini. Wird das Board per USB versorgt, darf an diesem Pin keine Eingangsspannung anliegen – dann stehen hier die 5 Volt des USB-Anschlusses bereit, um angeschlossene Geräte, die das benötigen, zu versorgen. Sehr viele Sensoren arbeiten aber in einem Spannungsbereich von 3,3 bis 5 Volt und können dann mit der Standardspannung der ESPs von 3,3 Volt betrieben werden. Aufschluss gibt das jeweilige Datenblatt.
Je GPIO-Pin kann der ESP8266 max. 12 mA Strom liefern.
Die meisten GPIO-Pins wechseln beim Booten des Boards (vorübergehend) von LOW- auf HIGH-Pegel und sollten deshalb möglichst nicht zum Schalten von Relais verwendet werden. Stabil auf LOW-Pegel bleiben die Pins D1 (GPIO 5) und D2 (GPIO 4). Zu den Details siehe den Artikel »ESP8266 GPIO Behaviour at Boot«.
Pulsweitenmodulation (PWM): Alle GPIOs, die sich als Output-Pins eignen, können PWM-Signale mit 10 Bit Auflösung (0…1023) ausgeben.
Die wichtigsten Schnittstellen sind:
- ADC0: Analog-Digital-Konverter; 1 Kanal mit 10 Bit Auflösung (Werte 0…1023); der einfache Chip kann nur Spannungen zwischen 0 und 1 V messen, die NodeMCUs (und der D1 mini) können wegen eines eingebauten Spannungsteilers bis 3,3 Volt messen.
- I2C: Kommunikation per I2C-Bus über die Leitungen SCL (Takt; serial clock) und SDA (Daten; serial data); da sich die angeschlossenen Geräte (wie Sensoren) je nach Typ über eine eigene Adresse identifizieren, kann man über einen Bus mehrere Geräte ansprechen
- HSPI: (Hardware-) SPI; zur Verbindung mit Modulen, die das SPI (engl.: Serial Peripheral Interface) zur Kommunikation nutzen, bspw. Displays oder SD-Kartenleser. (Da die GPIO-Pins 6-11 zur Anbindung des Flash-Speichers vom ESP8266 selbst verwendet werden, steht nur die Schnittstelle an den Pins 12-15 für Anwendungen zur Verfügung.)
Eine ausführlichere Erläuterung der Funktionen gibt der Artikel »ESP8266 Pinout Reference: Which GPIO pins should you use?« bei Random Nerd Tutorials.
Name | GPIO | NodeMCU (30 Pins) | D1 mini | D1 | Funktion |
---|---|---|---|---|---|
A0 | (ADC0) | x | x | x | ADC0 |
D3 | 0 | x | x | x | FLASH |
TX | 1 | x | x | x | TXD0 |
D4 | 2 | x | x | x | interne LED, TXD1 |
RX | 3 | x | x | x | RXD0 |
D2 | 4 | x | x | 2 x | I2C_SDA |
D1 | 5 | x | x | 2 x | I2C_SCL |
CLK | 6 | x | <FLASH> SDCLK, SCLK |
||
SD0 | 7 | x | <FLASH> SDD0, MISO | ||
SD1 | 8 | x | <FLASH> SDD1, MOSI | ||
SD2 | 9 | x | <FLASH> SDD2 | ||
SD3 | 10 | x | <FLASH> SDD3 | ||
CMD | 11 | x | <FLASH> SDCMD, CS | ||
D6 | 12 | x | x | 2 x | (HSPI_)MISO |
D7 | 13 | x | x | 2 x | (HSPI_)MOSI, RXD2 |
D5 | 14 | x | x | 2 x | (HSPI_)SCLK |
D8 | 15 | x | x | x | (HSPI_)CS, TXD2 |
D0 | 16 | x | x | x | WAKE |
EN | x | ||||
RST, RESET | x | x | x | wie RESET-Taster: Neustart des ESP8266 | |
GND | 4 x | 1 x | 3 x | Masse | |
3V3 | 3 x | 1 x | 1 x | 3,3 V zur Versorgung angeschlossener Komponenten | |
VIN | 1 x | 1 x | als Eingang: 5 V Versorgung; 5V-Ausgang bei Versorgung per USB | ||
5V | 1 x | 1 x | 5V-Ausgang (Spannung vom USB-Eingang) |
Beim D1-Board (unteres Bild) orientiert sich die Pin- (bzw. Buchsen-)Belegung am Arduino Uno – soweit möglich sind die Boards pin-kompatibel. Abweichungen gibt es bei den Analog-Pins, von denen der Uno fünf besitzt (der ESP8266 einen), und beim AREF-Pin, der dem ESP8266 (und damit dem D1 Board) fehlt. Das D1-Board und der Arduino Uno sind zwar pin-Kompatibel, aber die Pins des D1-Boards arbeiten mit der Standardspannung des ESP8266 von 3,3 V – sie vertragen NICHT die bei den Arduinos üblichen 5 V.
Die Digitalpins (am oberen Bildrand) sind vlnr. von D15 bis D0 beschriftet und wie folgt belegt (einige GPIOs sind auf mehrere Pins geführt):
Bezeichnung | GPIO | Funktion |
---|---|---|
D0 | 3 | RX |
D1 | 1 | TX |
D2 | 16 | WAKE |
D3 | 5 | I2C SCL |
D4 | 4 | I2C SDA |
D5 | 14 | SPI SCLK |
D6 | 12 | SPI MISO |
D7 | 13 | SPI MOSI |
D8 | 0 | – |
D9 | 2 | interne LED |
D10 | 15 | SPI CS |
D11 | 13 | SPI MOSI |
D12 | 12 | SPI MISO |
D13 | 14 | SPI SCLK |
D14 | 4 | I2C SDA |
D15 | 5 | I2C SCL |
Letzte Änderung: 11.06.2021