In diesem Beitrag wollen wir uns ansehen, was dieser Mikrocontroller alles kann, wie er mit der Arduino IDE programmiert werden kann, und welche unterschiedlichen Module und Boards zur Verfügung stehen.
Technische Daten
Der ESP32 besticht schon durch seine technischen Daten
- CPU Dual-Core XTENSA mit 240MHz (Bis zu 600MIPS)
- ROM 448kB
- SRAM 520kB
- SRAM in der RTC 16kB
- Externer Flash-Speicher bis zu 16MB (Module haben typisch 4MB)
- WiFi 802.11 b/g/n 2.4 GHz bis 150 Mbps
- Bluetooth V4.2 und BLE 16mW Sendeleistung
- Echtzeituhr läuft auch im Tiefschlaf-Modus weiter
- 34 programmierbare Ein-/ Ausgänge
- 12 bit Analog zu Digital Wandler auf bis zu 18 Kanälen
- 2 8-bit Digital zu Analog Wandler
- 10 Berührungssensoren
- 3 SPI Interfaces
- 2 I2C Interfaces
- 2 I2S Interfaces
- 3 serielle Schnittstellen
- CAN-Bus 2.0
- Ethernet Media Access Controller (MAC)
- PWM an allen Digitalausgängen möglich
- Eingebauter Hallsensor
Neben den in den meisten Projekten verwendeten WiFi- und Bluetooth-Funktionen beherrscht der ESP32 noch viele andere praktische Dinge. Die Echtzeituhr zum Beispiel beherrscht die automatische Sommerzeit-Umschaltung und kann auch mit einem externen Uhren-Quarz an Stelle des internen Takts betrieben werden.
Die beiden Ausgänge der Digital zu Analog Wandler bieten - im Gegensatz zu den bei Mikrocontrollern üblichen PWM - eine echte Gleichspannung mit variabler Höhe. Zusätzlich kann man über eine eingebaute Funktion auch Sinuswellen ausgeben.
Die Berührungssensoren ermöglichen die Realisierung einfacher kapazitiver Eingabeflächen ohne zusätzliche Elektronik.
Die verschiedenen Bussysteme können über einen Multiplexer mit beliebigen Ein-/Ausgängen verbunden werden. Die Abbildung zeigt, wie das funktioniert. Die Abbildung dient nur der Veranschaulichung und ist nicht vollständig.
Eine weitere interessante Möglichkeit bietet der I2S-Bus. Dieser Bus ist vor allem zur Übertragung von Media-Daten konzipiert worden. Der ESP 32 bietet die Möglichkeit, einen der ADW-Eingänge als Input zu nutzen. Aber auch die DAW-Ausgänge können als I2S Ausgänge genutzt werden.
Da die I2S-Bus Implementierung einen direkten Speicherzugriff ermöglicht, können, über ADW-Eingänge, Tonsignale ohne Zutun der CPU im RAM gespeichert werden. Genauso ist es möglich, digitalisierte Töne aus dem RAM über die DAW-Ausgänge auszugeben.
ESP32 und die Arduino IDE
Der ESP32 ist nicht von Anfang an in der Arduino-IDE Boardverwaltung verfügbar. Damit man Programme für den ESP32 erstellen und hochladen kann, muss daher ein Softwarepaket für die Unterstützung des ESP32 installiert werden.
Zuerst müssen wir der Arduino-IDE mitteilen, wo sie die zusätzlich benötigten Daten für den ESP32 findet. Dazu öffnen wir im Menü Datei den Punkt Voreinstellungen. Im Voreinstellungs-Fenster gibt es das Eingabefeld mit der Bezeichnung „Zusätzliche Boardverwalter URLs“. Wenn man auf das Ikon rechts neben dem Eingabefeld klickt, öffnet sich ein Fenster in dem wir die URL https://dl.espressif.com/dl/package_esp32_index.json eingeben.
Nachdem die Änderung gespeichert ist, können wir über das Menü Werkzeuge>Board die Boardverwaltung öffnen und ESP32 als Suchbegriff eingeben.
Nachdem das ESP32 Paket installiert wurde, sollte das „ESP32 Dev Module“ in der Board-Auswahl erscheinen.
ESP32 DevKit C V4
Dies ist das Flaggschiff der von AZ-Delivery angebotenen ESP32 Module. Durch eine neue verbesserte Platine wurde die Funktionssicherheit beim Hochladen der Programme verbessert. Da die Antenne jetzt über die Basisplatine hinausragt, hat sich die Abstrahlbedingung deutlich verbessert. Im Vergleich zum Pin-kompatiblen ESP32 NodeMCU Modul ist die Empfangsleistung in etwa 1m Entfernung -25dBm (3µW) statt -45dBm (0.03µW). Das heißt 100-mal größer. In größerer Entfernung wurde für den DevKit C V4 -62dBm (631pW) und für den NodeMCU -69dbm(126pW) gemessen, also das Fünffache.
22 Ein-/Ausgänge sowie 4 Eingänge sind herausgeführt und für Anwendungen nutzbar. Am 5V Anschluss steht 5V vom USB Bus zur Verfügung. Über diesen Anschluss kann auch eine externe Versorgung mit maximal 9V erfolgen. Der 3,3V Anschluss ist mit dem Ausgang des eingebauten Spannungsreglers verbunden und darf nicht als Eingang benutzt werden!
Ein Nachteil dieses Moduls ist seine Breite. Wird es mit einem Breadboard verwendet, stehen nur die Pins auf einer Seite zur Verfügung. Besser ist es, man steckt wie auf dem Bild zwei Breadboards zusammen.
ESP32 NodeMCU
Dieses Modul ist Pin-kompatibel mit dem DevKit C V4. Die ältere Platine hat schlechtere Abstrahleigenschaften der Antenne und das Hochladen der Programme bereitet manchmal Probleme.
22 Ein-/Ausgänge sowie 4 Eingänge sind herausgeführt und für Anwendungen nutzbar. Am 5V Anschluss steht 5V vom USB Bus zur Verfügung. Über diesen Anschluss kann auch eine externe Versorgung mit maximal 9V erfolgen. Der 3,3V Anschluss ist mit dem Ausgang des eingebauten Spannungsreglers verbunden und darf nicht als Eingang benutzt werden!
Auch dieses Modul ist für einfache Breadboards zu breit.
ESP32 Lolin LOLIN32
Dieses Modul verwendet nicht das WROOM32 Modul mit eingebautem Flash-Speicher, sondern hat den ESP32 Chip, den 4MByte Flash-Speicher und die Antenne direkt auf der Platine verbaut. Dadurch konnte die Breite um ein Rastermaß reduziert werden.
Dieses Modul kann also direkt auf einem einfachen Breadboard verwendet werden. Ein weiterer Vorteil dieses Moduls ist der eingebaute Laderegler für 3.7V LiPo-Akkus. Auf dem Modul ist eine Buchse JST 2.0 mm zum Anschließen eines Akkus verbaut.
Das Modul hat aber auch Nachteile. Es gibt keinen 5V Anschluss und die Versorgung kann nur über USB oder einen Akku erfolgen. Es sind auch weniger Anschlüsse herausgeführt. Es gibt 19 Ein-/Ausgänge und 4 Eingänge. Eine auf dem Modul verbaute LED kann über GPIO22 angesteuert werden.
ESP32 NodeMCU mit OLED Display und LoRa
Dieses Modul hat zusätzlich ein 0,96 Zoll OLED Display mit 128x64 Bildpunkten sowie einen 433 MHz LoRa Transceiver. Bei LoRa (Long Range) handelt es sich um ein Übertragungsverfahren, das bei geringer Sendeleistung große Entfernungen (bis zu 10km) überbrücken kann. Erreicht wird das durch die patentierte „Chirp Spread Spectrum Modulationstechnik“. Spezielle Sender und Empfänger sind erforderlich. Da das Modul durch den ESP32 WiFi unterstützt wird, eignet sich dieses Modul besonders als Gateway zwischen LoRa und Internet.
Das Modul hat 22 Ein-/Ausgänge, von denen aber neun für LoRa und OLED Display verwendet werden. Es gibt zusätzlich sechs Eingänge. Das Modul hat außerdem einen Laderegler für einen 3,7 V LiPo-Akku. Für den Anschluss ist eine Buchse JST 1,25 mm eingebaut. Bei angeschlossenem USB liegt am 5V Anschluss 5V und ein angeschlossener Akku wird geladen. Ohne USB-Verbindung kann der 5V Anschluss zur Versorgung und zum Laden des Akkus genutzt werden. Eingangsspannung 4,5 bis 7 V.
Achtung! Nie eine externe Versorgungsspannung anschließen, wenn eine USB-Verbindung besteht!
ESP32 CAM Modul
Das besondere an diesem Modul ist der Anschluss für eine Kamera, ein zusätzlicher 4MB PseudoStatic RAM und ein SD-Card Reader. Auch eine helle weiße LED zur Beleuchtung ist eingebaut und kann über GPIO04 angesteuert werden. Der in diesem Modul verwendete Mikrocontroller arbeitet mit 160MHz. Die mitgelieferte 2MPixel Kamera kann zum Beispiel mit einem doppeltklebenden Klebeband am SD-Card Leser festgeklebt werden. Es sind nur Anschlüsse herausgeführt, die nicht intern verwendet wurden. Die Versorgung erfolgt über den 5V Anschluss.
Dieser Anschluss ist Eingang eines Spannungsreglers, der die interne Versorgungsspannung auf 3,3 V regelt. Am 5V Anschluss können Spannungen zwischen 4,5 und 7V angelegt werden. Leider hat das Modul keinen USB-Anschluss und muss daher über einen USB zu Seriell Adapter programmiert werden.
ESP32 WROOM32 mit Adapterplatine
Hierbei handelt es sich um ein nacktes WROOM32-Modul, das auf einer Adapterplatine mit zwei zweireihigen Stiftleisten und zwei Tastern verlötet werden kann. Es sind alle verfügbaren Anschlüsse auf die Stiftleisten geführt. Die Programmierung muss mit einem USB zu Seriell Adapter erfolgen. Eine 3.3 V Stromversorgung wird benötigt. Wegen der zweireihigen Stiftleisten ist das Modul nicht für die Verwendung mit Breadboards geeignet.
Zusammenstellung der Pinbelegung aller Module
Controller:
A ESP32 DevKit C V4 bzw. ESP32 NodeMCU
B ESP32 Lolin LOLIN32
C ESP32 NodeMCU mit OLED Display und LoRa
D ESP32 CAM
E ESP32 WROOM Modul
USB zu Seriell Converter
X CP2102
Y CH340
Anschluss |
A |
B |
C |
D |
E |
GND |
2 |
1 |
3 |
3 |
2 |
3.3V Ausgang |
1 |
1 |
2 |
2 |
- |
5V Versorgung |
1 |
- |
2 |
1 |
- |
3.3V Versorgung |
- |
- |
- |
- |
1 |
USB |
X |
Y |
X |
- |
- |
Batterieanschluss |
- |
1 |
1 |
- |
- |
Reset Eingang |
1 |
1 |
1 |
- |
1 |
GPIO0, ADC2/CH1, TOUCH1, RTCIO11 |
1 |
1 |
1 |
1 |
1 |
U0/TX, GPIO1 |
1 |
- |
1 |
1 |
1 |
GPIO2, ADC2/CH2, TOUCH2, RTCIO12, HSPI/WP, SD/D0 |
1 |
1 |
1 |
1 |
1 |
U0/RX, GPIO3 |
1 |
- |
1 |
1 |
1 |
GPIO4, ADC2/CH0, TOUCH0, RTCIO10, HSPI/HD, SD/D1 |
1 |
1 |
* |
1 |
1 |
GPIO5, VSPI/CS0 |
1 |
1 |
* |
- |
1 |
Flash CLK, GPIO6 |
* |
- |
- |
- |
* |
Flash D0, GPIO7 |
* |
- |
- |
- |
* |
Flash D1, GPIO8 |
* |
- |
- |
- |
* |
Flash D2, GPIO9 |
* |
- |
- |
- |
* |
Flash D3, GPIO10 |
* |
- |
- |
- |
* |
Flash CMD, GPIO11 |
* |
- |
- |
- |
* |
GPIO12, ADC2/CH5, TOUCH5, RTCIO15, HSPI/Q, SD/D2 |
1 |
1 |
1 |
1 |
1 |
GPIO13, ADC2/CH4, TOUCH4, RTCIO14, HSPI/D, SD/D3 |
1 |
1 |
1 |
1 |
1 |
GPIO14, ADC2/CH6, TOUCH6, RTCIO16, HSPI/CLK, SD/CLK |
1 |
1 |
* |
1 |
1 |
GPIO15, ADC2/CH3, TOUCH3, RTCIO13, HSPI/CS0, SD/CMD |
1 |
1 |
* |
1 |
1 |
GPIO16, U2/RX |
1 |
1 |
* |
1 |
1 |
GPIO17, U2/TX |
1 |
1 |
1 |
- |
1 |
GPIO18, VSPI/CLK |
1 |
1 |
* |
- |
1 |
GPIO19, U0/CTS, VSPI/Q |
1 |
1 |
* |
- |
1 |
GPIO21, VSPI/HD, |
1 |
- |
1 |
- |
1 |
GPIO22, U0/RTS, VSPI/WP |
1 |
1 |
1 |
- |
1 |
GPIO23, VSPI/D |
1 |
1 |
1 |
- |
1 |
GPIO25, ADC2/CH8, DAW1, RTCIO6 |
1 |
1 |
1 |
- |
1 |
GPIO26, ADC2/CH9, DAW2, RTCIO7 |
1 |
1 |
* |
- |
1 |
GPIO27, ADC2/CH7, TOUCH7, RTCIO17 |
1 |
1 |
* |
- |
1 |
GPIO32, ADC1/CH4, TOUCH9, RTCIO9 |
1 |
1 |
1 |
- |
1 |
GPIO33, ADC1/CH5, TOUCH8, RTCIO8 |
1 |
1 |
1 |
- |
1 |
GPI34, ADC1/CH6, RTCI4 |
1 |
1 |
1 |
- |
1 |
GPI35, ADC1/CH7, RTCI5 |
1 |
1 |
1 |
- |
1 |
VP, GPI36, ADC1/CH0 mit Vorverstärker, RTCI0 |
1 |
1 |
1 |
- |
1 |
C-VP, GPI37, ADC1/CH1 mit Vorverstärker, RTCI1 |
- |
- |
1 |
- |
- |
C-VN, GPI38, ADC1/CH2 mit Vorverstärker, RTCI2 |
- |
- |
1 |
- |
- |
VN, GPI39, ADC1/CH3 mit Vorverstärker, RTCI3 |
1 |
1 |
1 |
- |
1 |
* Der Anschluss ist herausgeführt, wird aber intern benutzt
- Der Anschluss ist nicht herausgeführt
18 comentarios
Andreas Wolter
@Robert: ESP32 WROOM32-D ist ein SMD Modul von Espressif. Es enthält die CPU, Flash Speicher, Schnittstellen, etc.
Es wird normalerweise auf die Entwicklungsboards gelötet. Damit hat man dann auch den USB-Anschluss zur Verfügung, um den Mikcrocontroller über den PC zu programmieren.
Grüße,
Andreas Wolter
AZ-Delivery Blog
Robert
Und was bedeutet ESP32 WROOM32-D ? Da sollte ja auch ein USB drauf sein
Andreas Wolter
@marc: einige der ESP32 Entwicklungsboards (wie das Devkit C V4) haben keine built-in LED verbaut. Die LED, die leuchtet, ist die Power-LED.
Grüße,
Andreas Wolter
AZ-Delivery Blog
marc
ist es richtig, dass die led auf dem neuen wroom board mit überstehender antenne nicht mehr geschaltet werden kann und immer leuchtet?
Andreas Wolter
@KG: ich nehme an, dass Sie den Strom meinen. Nach meinen Recherchen ist der Maximalstrom am 3.3V Pin 50 mA. An den GPIO Pins sind es 40mA. Wenn Sie die Leistung meinen, kann man das daraus nun berechnen mit P = U * I.
https://components101.com/microcontrollers/esp32-devkitc
Grüße,
Andreas Wolter
AZ-Delivery Blog
KG
Wie hoch darf die Belastung am 3,3V Abschluss der Boards sein?
Rudolf Widmer-Schnidrig
Hallo,
Gruß und Dank Rudolfich habe ein neues Heltec LoRa 32 V2 Modul und frage mich wie das Coax-Antennenkabel an das Board angeschlossen wird. Bevor ich zuviel Kraft anwende wollte ich fragen ob da noch gelötet werden muss oder ob der Stecker einfach nur einschnappen sollte? Welches ist das richtige Werkzeug dafür? Oder reicht Fingerdruck?
Andreas Wolter
Wenn Sie in der Arduino IDE unter Werkzeuge → Boards den ESP32 auswählen, sollten die Beispiele für den ESP32 D1 R32 funktionieren. Sie finden sie unter Datei → Beispiele.
Ferdinando Todeschini
Hello, I need to find some program examples related to the D1 R32 Board. You can help me?
Thank you
Peer Geisendorf
Danke für diesen Artikel. Ich würde mich freuen hier auch noch ein Update zum ESP32 D1 Mini NodeMCU WiFi Modul zu sehen.
Bernd Albrecht
Hallo, danke für den Vorschlag zur Verlinkung der Bilder mit den Anschlussbelegungen.
Sollte jetzt klappen.
Justin
Interessanter Artikel! Der Newsletter enttäuscht mich nie!
Michael Klein
Da ich neu bin finde ich den Blog sehr hilfreich. Gute Infos zum ESP32 , nur die Anschlussbelegung könnte grösser sein , weil man das schlecht erkennen kann. Vielleicht kann mir das einer sagen was ist der Unterschied zwischen ESP32 DevKitC V2 Modell : ESP-Wroom-32 und dem ESP32 NodeMCU Module WLAN WiFi Development Board mit CP2102 (Nachfolgemodell zum ESP8266) – 1x ESP32
Lars
Hallo Herr Lechner, danke für den hilfreichen Artikel. Allein die Bilder mit den Anschlussbelegungen könnten etwas größer sein (so mit Anklicken für hohe Auflösung).
Wolfgang
Toller Artikel. Endlich ein guter Überblick. Danke
tzoumaz
Sehr übersichtlicher, informativer Artikel über den ESP32
Kroon
Klasse Artikel, endlich mal eine Übersicht die alle notwendigen Infos zu den ESP-Versionen enthält.
Danke dafür.
Rainer Oberegger
Ich bin letztens (unter PlatformIO) gescheitert die Partitionierung zu Ändern, das wäre doch eine feine Fortsetzung dieses sehr informativen Blogs