Was ist der ESP32 – Wie funktioniert er und was kann der ESP32?

Der ESP32 ist wie der Arduino ein Entwicklungsboard. Das bedeutet, dass es alle Funktionen besitzt, um einen Großteil an Projekten zu realisieren. Um dieses Board genauer zu verstehen, musst du natürlich wissen, wer das Board entwickelt hat und was die Hauptaufgabe und die Gedanken hinter der Entwicklung waren. Natürlich auch die technischen Merkmale.

Der ESP32 ist dem Arduino Uno und dem ESP8266 weit überlegen. Das bedeutet natürlich nicht, dass der ESP32 für alle Projekte ideal geeignet ist. Um das Beste aus dem Board herauszuholen, musst du wissen, was der ESP32 ist, wie der ESP32 funktioniert und was die besonderen Eigenschaften im Vergleich zu anderen Mikrocontroller-Boards sind.

Was ist der ESP32?

Der ESP32 wurde von Espressif Systems mit einer Reihe von SoC (System on a Chip) und Modulen entwickelt, die kostengünstig sind und wenig Strom verbrauchen. Dabei ist der aktuelle ESP32 ein Nachfolger des bekannten ESP8266 (welcher dank eingebautem WiFi (WLAN) sehr beliebt wurde). Dabei verfügt das Board nicht nur über WiFi (WLAN), sondern gleichzeitig auch noch über Bluetooth Low Energy. Mit anderen Worten ist der ESP32 die Hulk-Version oder der große Bruder vom ESP8266.

Als Mikroprozessor kommt ein Tensilica Xtensa LX6 Dual-Core-Mikroprozessor mit einer Betriebsfrequenz von bis zu 240 MHz zum Einsatz.

Dabei bietet das kleine Entwicklungsboard viele Möglichkeiten für Integrationen:

  • Antennenanschlüsse
  • Leistungsverstärker
  • Empfangsverstärker
  • Filterstufen und Power-Management-Module
  • Viele weitere

Alles in allem glänzt der ESP32 mit einer sehr geringen Stromaufnahme durch Energiesparfunktionen wie Taktsynchronisation und verschiedenen Betriebsmodi. Der Ruhestrom etwa liegt beim ESP32 Chip weniger als 5µA (5*10^-6 A), was natürlich ideal für alle möglichen Batterieanwendungen oder Projekte im Bereich der IoT macht.

Unterschied zwischen ESP32 und ESP8266

Wie bereits oben beschrieben, ist der ESP32 der Nachfolger vom ESP8266 und verfügt neben WLAN zusätzlich noch über Bluetooth direkt on Board. Hier zeige ich dir, welche Unterschiede es zwischen dem ESP32 und dem ESP8266 gibt, betrachten die Funktionen und Spezifikationen.

  • ESP32 hat einen Kern mehr als der ESP8266
  • Schnelleres WiFi (WLAN) Modul
  • Weit mehr GPIO Pins
  • Kompatibel sowohl mit Bluetooth 4.2 als auch Bluetooth Low Energy (BLE)

Darüber hinaus hat der ESP32 einen „touch-sensitive“ Pin der den Mikrocontroller aus dem „deep sleep mode“ herausholen kann. Wir können also den ESP32 ruhen lassen und durch die Betätigung eines Pins ihn aus diesem energiesparenden Modus herausholen.

Beide Boards sind dabei sehr günstig, wobei der 32er etwas teurer ist als der 8266er.

Die wichtigsten technischen Spezifikationen und Unterschied der beiden Boards habe ich dir nachfolgend in der Tabelle aufgeführt.

CharakteristikESP8266ESP32
BildESP8266 Mikrocontroller Baord mit eingebauten WLAN WiFIESP32 Mikrocontroller mit Bluetooth und WLAN (WiFi)
MikroprozessorXtensa Single-core 32-bit L106Xtensa Dual-Core 32-bit LX6 con 600 DMIPS
WiFi (802.11 b/g/n)HT20HT40
BluetoothNicht vorhandenBluetooth 4.2 BLE
Taktfrequenz80 MHz160 MHz
SHAMENicht vorhanden448 KB
FlashNicht vorhanden520 KB
GPIO1734
PWM (Hardware)Nicht vorhandenNicht vorhanden
PWM (Software)8 Kanäle16 Kanäle
SPI24
I2C12
I2S22
UART22
ADC10-Bit Auflösung12-Bit Auflösung
CANNicht vorhandenNicht vorhanden
MAC EthernetNicht vorhandenJa
Touch SensorNicht vorhandenJa
Temperatur SensorNicht vorhandenJa (auf alten Boards)
Halleffekt SensorNicht vorhandenJa
Arbeitstemperatur-40°C bis 125°C-40°C bis 125°C

ESP32 Funktionsblöcke und Eigenschaften

In der obenstehenden Tabelle findet man so die wichtigsten Unterschiede der beiden Mikrocontroller, aber wie du dir sicher denken kannst, sind in der Tabelle noch lange nicht alle Vorzüge des ESP32 vermerkt. Dafür möchte ich dir hier das Datenblatt und das Reference Manual vom ESP32 weitergeben. Wenn du dich also noch tiefer einarbeiten möchtest, ist ein Gang durch die Dokumentationen ein guter Anfang.

Blockdiagramm der Architektur vom ESP32

Hier zeige ich dir in einem Blockdiagramm den architektonischen Aufbau des ESP32, welches gleichzeitig alle Funktionsblöcke des ESP32 SoC zeigt.

Blockdiagramm der Architektur vom ESP32 mit allen Komponenten und Schnittstellen
Klick auf das Bild für vollständige Ansicht

Jeden der im Blockdiagramm aufgeführten Blöcke erkläre ich dir im Folgenden genauer.

Wireless Connectivity | Wireless Verbindung

Der ESP32 SoC-Chip verfügt über eine WiFi-Verbindung, welche mit 802.11 b / g / n im 2,4 GHz Band kompatibel ist. Dabei wird eine Geschwindigkeit von bis zu 150 Mbits/s erreicht. Auch Bluetooth 4.2 und Bluetooth Low Energy (BLE) ist kompatibel und mit an Board.

ESP32 Architektur Ausschnitt der Radio und Wireless Connectivity Sektion

Der Radio oder auch Funkblock ist eng mit den drahtlosen Kommunikationsmodulen verbunden. Dabei sind das die Sektionen, welche die Informationen tatsächlich übertragen und empfangen.

Das heißt, dieser nimmt die digitalen Daten von dem WiFi- und dem Bluetooth-Modulen und wandelt sie in elektrische Signale um, die durch die Luft übertragen werden, um zum Beispiel mit deinem Smartphone oder Router zu kommunizieren.

Natürlich übernimmt er auch die Funktion für den umgekehrten Weg und wandelt die von anderen Geräten erzeugten elektromagnetischen Wellen in digitale Daten um. Diese können anschließend von den WiFi- und Bluetooth-Modulen interpretiert werden.

Core | Kern | Prozessor

Wie ich bereits erwähnt habe, verfügt der ESP32 über einen Dual-Core-Low-Power Tensilica Xtensa 32-Bit LX6 Mikroprozessor.

Core Kernprozessor des ESP32 in Blockgrafik der Architektur

Wie in der Grafik zu erkennen ist, verfügt der ESP32 über einen Ultra-Low-Power-Coprozessor, welcher zur Durchführung von Analog-Digital-Unwandlungen und anderen Operationen verwendet wird, während das Gerät slebst im „Deep-Sleep-Low-Power-Mode“ arbeitet. Auf diese Weise wird ein sehr geringer Verbrauch des SoC erreicht.

Es ist wichtig zu beachten, dass diese Prozessoren über typische Vorteile verfügen:

  • Taktfrequenz: 240 MHz (führt Anweisungen 15 Mal schneller aus als ein Arduino UNO-Board)
  • Er erlaubt es, Operationen mit reellen Zahlen (Zahlen mit Kommas) sehr effizient durchzuführen.
  • Ermöglicht die sofortige Multiplikation großer Zahlen.

WICHTIG: Obwohl bei der Programmierung diese Merkmale recht transparent und im Hintergrund passieren, haben sie einen großen Einfluss auf die Effizienz und Größe des Codes, welcher in den Mikrocontroller geschrieben wird.

Memory | Speicher

In den meisten Mikrocontrollern, die auf Arduino basieren, gibt es 3 Arten von Speichern:

  • Programmspeicher: Um den Sketch zu speichern (das Programm)
  • SRAM Speicher: Um die Variablen abzuspeichern, die im Code verwendet werden
  • EEPROM Speicher: Um Variablen abzuspeichern, die auch nach einem Neustart weiterhin verfügbar sein sollen
Architektonischer Aufbau des ESP32 mit hervogehobenen Memory Speicher Bereich

Beim ESP32 ist dies, wie du sehen kannst, nicht der Fall. Es gibt auch hier mehrere Arten von Speichern – welche in der Regel als interne und externe unterteilt werden.

Die internen Speicher sind jene, die bereits im SoC enthalten sind und die externen sind die, die hinzugefügt werden können, um die Speicherkapazität des Systems zu erhöhen.

Viele ESP32-basierte Entwicklungsboards fügen externen Speicher hinzu, um ein leistungsfähigeres System zu erhalten.

ESP32 interne Speicher und die Funktion:

  • ROM Speicher (ROM memory) – 448 KiB : Ist ein schreibegschützter Speicher. Das heißt, du kannst diesen nicht neu programmieren. Hier werden die Codes für den Bluetooth-Stack, die Steuerung der physikalischen Schicht des Wi-Fi, einige allgemeine Routinen und der Bootloader zum Starten des Codes aus dem externen Speicher gespeichert.
  • Interner SRAM Speicher (Internal SRAM memory) – 520 KiB: Dieser Speicher wird vom Prozessor verwendet, um sowohl Daten als auch Befehle zu speichern. Sein Vorteil ist, dass er für den Prozessor viel leichter zugänglich ist als das externe SRAM.
  • RTC SRAM – 16 KiB: dieser Speicher wird vom Coprozessor verwendet, wenn das Gerät im Tiefschlafmodus arbeitet.
  • Efuse – 1Kilobit: 256 Bit dieses Speichers werden vom System selbst genutzt, die restlichen 768 Bit sind für andere Anwendungen reserviert.
  • Flash embedded (Embedded flash) – variable Größe: In diesem Speicher wird unser Anwendungscode gespeichert. Die Größe des Speichers variiert je nach verwendetem Chip:
    • 0 MB (chips ESP32-D0WDQ6, ESP32-D0WD, ESP32-S0WD)
    • 2 MB (chip ESP32-D2WD)
    • 4 MB (Chip ESP32-PICO-D4)

Für die Versionen vom ESP32, die keinen integrierten Speicher haben, oder wenn der Speicher für deine Anwendung nicht ausreicht, ist es möglich, extern mehr Speicher hinzuzufügen:

  • Bis zu 16 MB externer Flash-Speicher können hinzugefügt werden. Dadurch können sehr komplexe Anwendungen realisiert werden.
  • Der ESP32 unterstützt auch bis zu 8 MB externen SRAM-Speicher

Bei der Verwendung eines ESP32 ist es somit relativ unwahrscheinlich, an die maximalen Grenzen der Speichermöglichkeiten zu kommen.

Encryption hardware accelerators | Hardware-Beschleuniger für die Verschlüsselung

ESP32 Architekturaufbau Blockbild - Hervorgehobener Bereich der Hardwarebeschleuniger für die Verschlüsselung.jpg

Einer der wichtigsten Faktoren in jedem System ist die Sicherheit. Aus diesem Grund verfügt der ESP32 über Algorithmusbeschleuniger, die auf die Verschlüsselung ausgerichtet sind:

  • AES (FIPS PUB 197)
  • SHA (FIPS PUB 180-4)
  • RSA
  • ETC

Diese Beschleuniger ermöglichen es, die Arbeitsgeschwindigkeit zu erhöhen und die Komplexität der Software für die Verschlüsselung und dynamische Entschlüsselung zu reduzieren. Auf diese Weise ist das System vor möglichen Hackerangriffen geschützt, die darauf abzielen, an den gespeicherten Code zu gelangen.

Peripheral Features | Peripherer Umfang

Im obigen Blockdiagramm wird bereits ersichtlich, dass der ESP32 über eine Vielzahl an möglichen Peripheriegeräten verfügt.

ESP32 Pinout Übersicht

Pinout Übersicht vom ESP32

Digital pins | Digitale Pins

Der ESP32 verfügt über insgesamt 34 digitale Pins. Diese Pins sind vergleichbar mit den digitalen Pins des Arduino und ermöglichen es dir, LED-Anzeigen, OLED-Displays, Sensoren, Taster, Buzzer und vieles mehr mit deinem Projekt zu verbinden.

Die meisten der Pins unterstützen auch die Verwendung von internen Pull-Up oder Pull-Down Widerständen. Das ist antürlich ideal für den Anschluss von Tastern oder ähnlichen Dingen.

Das ESP32 WROMM-Modul verfügt über 25 GPIO-Pins, von denen es nur Eingangspins, Pins mit internem Pull-Up und Pins ohne internen Pull-Up gibt.

Der maximale Strom, der von einem einzelnen GPIO aufgenommen werden kann, beträgt 40mA gemäß dem Datenblatt unter den empfohlenen Betriebsbedingungen.

Input Only PinsPins mit Pull-UpPins ohne Pull-Up
GPIO 34GPIO 14GPIO 13
GPIO 35GPIO 16GPIO 25
GPIO 36GPIO 17GPIO 26
GPIO 39GPIO 18GPIO 27
GPIO 19GPIO 32
GPIO 21GPIO 33
GPIO 22
GPIO 23

ADC (Analog to Digital Converters) | Analog zu Digital Wandler

Einige der Pins, die im Pinout-Diagramm aufgeführt sind, können auch für die Interaktion mit analogen Sensoren verwendet werden, genau wie die analogen Pins eines Arduino-Boards.

Für diesen Fall verfügt der ESP32 über einen 12-Bit (0-4096 Auflösung, d.h. wenn die beobachtete Spannung 0 ist, ist der Wert 0 und wenn eine maximale Spannung wie 3,3 V beobachtet wird, geht der Wert auf 4096), 18-Kanal-Analog-Digital-Wandler, was bedeutet, dass du Messwerte von bis zu 18 analogen Sensoren auswerten kannst.

Dadurch kannst du umfangreiche Anwendungen entwickeln, auch wenn mehrere analoge Sensoren oder Signale ausgewertet werden müssen.

Analoge Input Pins:

  • ADC1_CH0 (GPIO 36)
  • ADC1_CH1 (GPIO 37)
  • ADC1_CH2 (GPIO 38)
  • ADC1_CH3 (GPIO 39)
  • ADC1_CH4 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • ADC2_CH0 (GPIO 4)
  • ADC2_CH1 (GPIO 0)
  • ADC2_CH2 (GPIO 2)
  • ADC2_CH3 (GPIO 15)
  • ADC2_CH4 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)
  • ADC2_CH7 (GPIO 27)
  • ADC2_CH8 (GPIO 25)
  • ADC2_CH9 (GPIO 26)

DAS (Digital to Analog Converters) | Digital zu Analgo Wandler

PWM-Signale werden auf den meisten Arduino-Boards verwendet, um analoge Spannungen zu erzeugen. Der ESP32 hat zwei 8-Bit-Digital-Analog-Wandler.

Dadurch können zwei rein analoge Spannungssignale erzeugt werden. Diese Wandler können verwendet werden, um:

  • Zur Steuerung einer analogen Schaltung
  • Die PWM Steuerung einer Leistung zum Beispiel die Intensität einer LED
  • Oder auch die Ansteuerung eines Verstärkers oder Lautsprechers um Töne oder Lieder abzuspielen

DAC Pins:

  • DAC1 (GPIO 25)
  • DAC2 (GPIO 26)

Capacitive Touch GPIOs | Kapazitiver Touch

Wenn du eine Anwendung ohne mechanische Taster entwickeln möchtest, kannst du dabei auch auf die berührungsempfindlichen Pins des ESP32 zurückgreifen.

Diese Pins sind in der Lage, die kleinen Veränderungen zu erkennen, die bei der Annäherung eines Fingers an den Pin entstehen. Auf diese Weise ist es möglich, alle Arten von Bedienelementen wie Knöpfe oder Schieberegler zu entwickeln, ohne mechanische Komponenten zu benötigen.

Kapazitive Touch Pins | Capacitive Touch Pins:

  • T0 (GPIO 4)
  • T1 (GPIO 0)
  • T2 (GPIO 2)
  • T3 (GPIO 15)
  • T4 (GPIO 13)
  • T5 (GPIO 12)
  • T6 (GPIO 14)
  • T7 (GPIO 27)
  • T8 (GPIO 33)
  • T9 (GPIO 32)

RTC

Die GPIOs, die an das RTC Low-Power-Management-Subsystem geroutet sind, können verwendet werden, wenn sich der ESP32 im Tiefschlaf befindet. Diese RTC-GPIOs können verwendet werden, um den ESP32 aus dem Tiefschlaf aufzuwecken, wenn der Ultra Low Power (ULP) Co-Prozessor läuft. Die folgenden GPIOs können als externe „Aufweckquelle“ „Wake On“ verwendet werden.

  • RTC_GPIO0 (GPIO 36)
  • RTC_GPIO3 (GPIO 39)
  • RTC_GPIO4 (GPIO 34)
  • RTC_GPIO5 (GPIO 35)
  • RTC_GPIO6 (GPIO 25)
  • RTC_GPIO7 (GPIO 26)
  • RTC_GPIO8 (GPIO 33)
  • RTC_GPIO9 (GPIO 32)
  • RTC_GPIO10 (GPIO 4)
  • RTC_GPIO11 (GPIO 0)
  • RTC_GPIO12 (GPIO 2)
  • RTC_GPIO13 (GPIO 15)
  • RTC_GPIO14 (GPIO 13)
  • RTC_GPIO15 (GPIO 12)
  • RTC_GPIO16 (GPIO 14)
  • RTC_GPIO17 (GPIO 27)

SD / SDIO / MMC driver

Diese Peripherie ermöglicht es dem ESP32, direkt mit SD- und MMC-Karten zu interagieren. In Kombination des Controllers mit dem Analog-Digital-Wandler ist es möglich, vollständige Songs oder Audios abzuspielen.

UART – Universal Asynchronous Receiver / Transmitter

Viele Mikrocontroller verfügen über UART-Module, die beim Arduino als serielle Schnittstellen bezeichnet werden. Diese ermöglichen die asynchrone Kommunikation zwischen zwei Geräten mit nur zwei Pins.

Der ESP32 hat drei UART-Ports:

  • UART0
  • UART1
  • UART2

Alle diese sind mit den Protokollen RS-232, RS-485 und IrDA kompatibel.

I2C | Inter-Integrated Circuit

Der ESP32 hat zwei Schnittstellen I2C oder TWI, die die Betriebsarten Master und Slave unterstützen. Seine Funktionen umfassen:

  • Standard Modus: 100 Kbit/s
  • Schneller Modus: 400 Kbit/s
  • 7- und 10-Bit-Adressierung

I2C Pins:

  • GPIO 21 (SDA)
  • GPIO 22 (SCL)

SPI | Serial Peripheral Interface

Der ESP32 verfügt auch über SPI-Kommunikation. Er hat drei voll funktionsfähige Busse:

  • Vier Übertragungsmodi: Dadurch ist der ESP32 mit fast allen SPI- und QSPI-Geräten kompatibel.
  • Alle SPI-Ports sind für hohe Geschwindigkeiten geeignet (theoretisch bis zu 80 MHz).
  • 64-Byte-Puffer für Übertragung und Empfang

Standardmäßig ist die Pinbelegung für SPI:

SPIMOSIMISOCLKCS
VSPIGPIO 23GPIO 19GPIO 18GPIO 5
HSPIGPIO 13GPIO 12GPIO 14GPIO 15

Infrared remote controller | Infrarot-Fernbedingung

Der ESP32 ermöglicht auch das Senden und Empfangen von Signalen mit verschiedenen Infrarotprotokollen (die gleichen, die auch von der Fernsehfernbedienung verwendet werden).

Daher kannst du einen ESP32 auch verwenden, um eine Fernbedienung zu erstellen, mit der du den Fernseher oder deine Stereoanlage steuern kannst.

PWM | Pulsweitenmodulation

Wie der ESP8266 unterstützt auch der ESP32 die Verwendung von Analogausgängen mit PWM. Der große Unterschied ist, dass beim ESP32 bis zu 16 Pins als PWM-Ausgänge verwendet werden können, während der ESP8266 nur 8 und das Arduino UNO Board nur 6 unterstützt.

Alle PWM fähigen Pins sind im Pinout mit der kleinen Welle gekennzeichnet.

Wie wählt man das richtige ESP32 Board aus?

Eine Übersicht zu diesem Thema habe ich bereits hier verfasst, wo einige der gängigen ESP32 Boards vergleichen und aufgeführt werden: Welches ESP32 Board | Development Bords Test und Vergleich

Bevor du jedoch ein ESP32 Board auswählen kannst, berücksichtige bitte folgende Faktoren:

  • Anzahl der Pins und Konfiguration: Es ist wichtig, die Pinbelegung des Boards zu kennen, um es richtig nutzen zu können.
  • Serielle -USB-Schnittstelle und Spannungsregler: Diese beiden Funktionen sind in praktisch allen Entwicklungsboards zu finden. Sie ermöglichen es, die Platine direkt an den Computer anzuschließen, um sie mit Strom zu versorgen und zu programmieren.
  • Batterieanschluss: Es gibt Boards, welche genau für die Verwendung in Batterieanwendungen vorgesehen sind. Diese werden direkt mit einem JST-Anschluss ausgeliefert. Auch enthalten Sie meist bereits eine Ladevorrichtung für LiPo-Akkus oder 18650 Akkus. Solltest du vorhaben eine Batterieanwendung zu entwickeln, rate ich dir zu einem solchen Board.
  • Zusätzliche Funktionen: Viele Entwicklungsboards für ESP32 verfügen über zusätzliche Funktionen wie Kameras, OLED-Displays, LoRa-Module, etc.

Fazit zum ESP32-Chip

Dieser Artikel umfasst natürlich nicht lückenlos alle Aspekte des Chips und dient lediglich dafür, dir einen groben Überblick zu verschaffen, was damit alles möglich und umsetzbar ist. Dennoch hoffe ich, dass du aus diesem Beitrag einige wichtige Informationen mitnehmen konntest und vor allem nun etwas näher weißt, was der ESP32 eigentlich ist, wie er sinnbildlich funktioniert und was man damit realisieren und umsetzen kann.

Mit dem ESP32 handelt es sich um ein nahezu perfektes (aktueller Stand) Entwicklungsboard für eine Vielzahl von Projekten und gerade im Bereich der IoT oder auch der Heimautomatisierung.

Solltest du Fragen oder Anregungen haben, lass es mich gerne in den Kommentaren wissen. Ich probiere zeitnah auf jeden Kommentar zukünftig einzugehen und freue mich über jedes Feedback!

Schreibe einen Kommentar