Wolles Elektronikkiste

Wolles Elektronikkiste

Nachdem ich in meinem vorherigen Beitrag über die I2C-Schnittstellen des ESP32 berichtet habe, möchte ich hier nun einen Gesamtüberblick über diesen leistungsstarken Mikrocontroller geben.

Warum noch ein Artikel zu diesem Thema, werdet ihr euch fragen. Nun, ich versuche hier die grundlegenden Funktionen, Besonderheiten und Stolpersteine in einem einzigen Beitrag zusammenzufassen. Insbesondere richte ich mich dabei an Arduinonutzer, die in den ESP32 einsteigen wollen. Aber vielleicht findet auch der erfahrene ESP32-Entwickler hier die eine oder andere interessante Information.

Über den Beitrag

In diesem Beitrag gebe ich einen umfassenden Überblick über den ESP32-WROOM-32 Mikrocontroller. Ich beziehe mich bei meinen Ausführungen und Beispielen hauptsächlich auf den weitverbreiteten ESP32-WROOM-32, bzw. die auf ihm basierten Boards. Das Meiste ist aber auf andere Vertreter wie den ESP32-PICO übertragbar.

ESP32 Boards

Der ESP32 ist ein äußerst vielseitiger Mikrocontroller und es gibt viele verschiedene Boards, auf denen er verwendet werden kann. In diesem Beitrag besprechen wir das weitverbreitete ESP32-WROOM-32 Board. Alternativ könnt ihr auch zum “Arduino UNO-like” D1 R32 Board greifen oder den schlankeren ESP32 Pico verwenden.

Eigenschaften des ESP32-WROOM-32

Der ESP32-WROOM-32 ist ein leistungsstarker Mikrocontroller, der den AVR-basierten Arduinos wie dem UNO weit überlegen ist. Er bietet eine viel höhere Taktrate und deutlich mehr Flashspeicher. Dennoch haben die Arduino (AVR) Boards den Vorteil, dass sie einfach “standalone” betrieben werden können, ohne zusätzliche Komponenten.

Hier sind die wichtigsten Daten des ESP32-WROOM-32 im Überblick:

  • Betriebsspannung: 3.3 Volt
  • Stromverbrauch: 1µA (Hibernation) bis max ca. 240 mA
  • Taktrate: bis 240 MHz
  • 520 kByte interner SRAM
  • Externer Flash-Speicher bis zu 16 MByte
  • 34 Ein-/Ausgänge, davon 22 GPIOs und 4 GPIs (reine Eingänge)
  • 2 I2C Schnittstellen
  • 2 nutzbare SPI Schnittstellen
  • 3 UART Schnittstellen
  • Echtzeituhr
  • 10 Touchsensoren
  • Integrierter Hallsensor
  • 16 PWM Kanäle
  • 2 “echte” analoge Ausgänge
  • Bis zu 18 analoge Eingänge
  • WiFi 802.11 b/g/n 2.4 GHz
  • Bluetooth 4.2 / BLE (Bluetooth Low Energy)
LESEN  Wie du sicher heiße Bilder verschickst

Den ESP32 in die Arduino IDE integrieren

Die Integration des ESP32 in die Arduino IDE ist recht einfach. Ihr müsst die entsprechende Boardverwalter-URL hinzufügen und das ESP32 Board dann installieren. Danach könnt ihr den ESP32 wie jedes andere Arduino Board verwenden.

Pinout des ESP32 Development Boards

Die GPIO-Pins des ESP32 sind vielseitig einsetzbar und bieten viele Funktionen. Allerdings gibt es einige Einschränkungen und “verbotene” Pins, die für andere Funktionen reserviert sind. Es ist wichtig, diese Einschränkungen zu beachten, um Probleme zu vermeiden.

Pins des ESP32 Development Boards

Einige Pins, wie GPIO6 bis GPIO11, sind für die SPI-Kommunikation mit dem Flash-Speicher reserviert und sollten daher am besten nicht verwendet werden. Andere Pins, wie GPIO0, GPIO1, GPIO3, GPIO5, GPIO14 und GPIO15, können beim Booten des ESP32 PWM-Signale senden oder vorübergehend in den HIGH-Status wechseln. Es ist wichtig, diese Pins richtig zu konfigurieren, um unerwartetes Verhalten zu vermeiden.

Digitale Ein-/Ausgänge des ESP32

Die Verwendung der GPIOs als digitale Ein- und Ausgänge funktioniert ähnlich wie beim Arduino. Ihr könnt die Funktionen pinMode(), digitalWrite() und digitalRead() verwenden, um die Pins zu konfigurieren und die Werte zu lesen oder zu setzen. Beachtet jedoch, dass der ESP32 mit einer Betriebsspannung von 3,3 Volt arbeitet und der maximale Strom auf 12 mA begrenzt ist.

Analoge Ein-/Ausgänge des ESP32

Der ESP32 verfügt über zwei 12-Bit-A/D-Wandler für analoge Eingänge. Ihr könnt die Funktion analogRead() verwenden, um die Spannung an den Anschlüssen zu messen. Beachtet jedoch, dass die A/D-Wandler des ESP32 nicht so präzise sind wie die des Arduino UNO. Die Messwerte können variieren und das Verhalten ist nicht linear. Um genauere Messungen zu erhalten, empfiehlt es sich, einen externen A/D-Wandler zu verwenden.

Analoge Ausgänge können mit der Funktion dacWrite() erzeugt werden. Der ESP32 verfügt über zwei DAC-Pins, an denen ihr ein echtes analoges Signal zwischen 0 und 3,3 Volt erzeugen könnt. Beachtet jedoch, dass die Ausgabe nicht präzise ist und eine Kalibrierung erforderlich sein kann.

LESEN  RTL Plus kostenlos streamen: So einfach geht’s!

Pulsweitenmodulation (PWM)

Die Pulsweitenmodulation (PWM) wird verwendet, um beispielsweise Servomotoren anzusteuern oder LEDs zu dimmen. Der ESP32 verfügt über 16 PWM-Kanäle, die den GPIO-Pins zugeordnet werden können. Ihr könnt die Funktionen ledcSetup(), ledcAttachPin() und ledcWrite() verwenden, um die PWM-Kanäle zu konfigurieren und die Duty Cycles zu setzen. Beachtet jedoch, dass einige Pins nicht für PWM verwendet werden können.

I2C

Der ESP32 verfügt über zwei I2C-Schnittstellen, die für die Kommunikation mit anderen Geräten verwendet werden können. Die Standard-Schnittstelle befindet sich an den GPIO-Pins 21 und 22. Ihr könnt die Funktionen der Wire.h Bibliothek verwenden, um die I2C-Kommunikation zu implementieren. Beachtet jedoch, dass der ESP32 mit 3,3 Volt arbeitet und eine Level-Shifter-Schaltung erforderlich sein kann, wenn ihr 5 Volt Geräte anschließen möchtet.

SPI

Der ESP32 verfügt über vier SPI-Schnittstellen, von denen zwei (VSPI und HSPI) für die Kommunikation mit externen Geräten verwendet werden können. Die Standard-SPI-Schnittstelle ist VSPI, die an den GPIO-Pins 18, 19, 23 und 5 angeschlossen ist. Ihr könnt die Funktionen der SPI.h Bibliothek verwenden, um die SPI-Kommunikation zu implementieren. Beachtet jedoch, dass einige Pins für andere Funktionen reserviert sind und nicht für SPI verwendet werden können.

UART (Serial)

Der ESP32 verfügt über drei serielle Schnittstellen, die als U0UXD, U1UXD und U2UXD bezeichnet werden. Die U0UXD-Schnittstelle ist die Standardschnittstelle und wird für die Serielle Kommunikation mit dem PC oder anderen Geräten verwendet. Die anderen beiden Schnittstellen (U1UXD und U2UXD) können für zusätzliche serielle Kommunikation verwendet werden. Ihr könnt die Funktion Serial.begin() verwenden, um die Schnittstellen zu initialisieren.

Touch Pins

Der ESP32 verfügt über mehrere Touch-Pins, die auf Berührungen reagieren. Ihr könnt die Funktion touchRead() verwenden, um den Berührungsstatus der Pins auszulesen. Der ESP32 reagiert auf die Kapazität der Berührung. Je größer die Kapazität, desto geringer ist der Messwert. Beachtet jedoch, dass der ESP32 nicht so empfindlich ist wie andere Mikrocontroller und eine naheliegende Berührung erforderlich ist, um eine Reaktion auszulösen.

Hall Sensor

Der ESP32 verfügt über einen integrierten Hall-Sensor, der auf magnetische Felder reagiert. Ihr könnt die Funktion hallRead() verwenden, um den Wert des Hall-Sensors auszulesen. Beachtet jedoch, dass der Hall-Sensor des ESP32 im Vergleich zu anderen Hall-Sensoren weniger empfindlich ist und eine geringere Reichweite hat.

LESEN  Wie erstellt man einen Screenshot auf Ihrem Lenovo Computer

Interrupts

Der ESP32 unterstützt Interrupts, die verwendet werden können, um auf externe Ereignisse zu reagieren. Ihr könnt Interrupts an jedem GPIO-Pin konfigurieren, einschließlich der reinen Eingänge GPI34 bis GPI39. Die Verwendung von Interrupts ist ähnlich wie beim Arduino, mit der Besonderheit, dass der Code für die Interrupt Service Routine (ISR) im RAM statt im Flash-Speicher gespeichert werden kann, um die Ausführungsgeschwindigkeit zu erhöhen.

Strom sparen – Schlafmodi

Der ESP32 kann in verschiedene Schlafmodi versetzt werden, um den Stromverbrauch zu reduzieren. Ihr könnt bestimmte Komponenten abschalten und den ESP32 in den Schlafmodus versetzen, um den Stromverbrauch auf ein Minimum zu reduzieren. Es gibt verschiedene Schlafmodi, wie den “Light Sleep” und den “Deep Sleep”, die ihr verwenden könnt. Beachtet jedoch, dass der Deep Sleep-Modus das Gerät neu startet, während der Light Sleep-Modus das Programm an der Stelle fortsetzt, an der es gestoppt wurde.

WiFi

Der ESP32 verfügt über integriertes WiFi und kann für die drahtlose Kommunikation verwendet werden. Die Verwendung von WiFi ist ein komplexes Thema, das in einem separaten Beitrag behandelt wird. Ihr könnt das WiFi des ESP32 aktivieren und verwenden, um eine Verbindung zu einem WLAN-Netzwerk herzustellen und Daten zu senden oder zu empfangen.

Bluetooth

Der ESP32 verfügt auch über integriertes Bluetooth und kann für die drahtlose Kommunikation mit anderen Bluetooth-Geräten verwendet werden. Die Verwendung von Bluetooth ist ebenfalls ein umfangreiches Thema, das in einem separaten Beitrag behandelt wird. Ihr könnt Bluetooth aktivieren und verwenden, um Daten zwischen dem ESP32 und anderen Bluetooth-Geräten auszutauschen.

“Exotische” Pin-Funktionen

Der ESP32 verfügt über einige Pins mit speziellen Funktionen, die für spezielle Anwendungen verwendet werden können. Diese Funktionen sind jedoch für die meisten Anwender nicht relevant und werden selten genutzt.

Dieser Beitrag gibt euch einen umfassenden Überblick über den ESP32 und seine Funktionen. Es gibt noch viele weitere Funktionen und Möglichkeiten, die hier nicht behandelt werden. Wenn ihr weitere Informationen benötigt, könnt ihr die offizielle Dokumentation des ESP32 konsultieren oder euch an die ESP32-Community wenden.

Ein herzliches Dankeschön für das Lesen dieses Beitrags! Ich hoffe, er hat euch geholfen, den ESP32 besser zu verstehen und neue Möglichkeiten für eure Projekte zu entdecken.