Elektronikmodule von Espressif

Für Bastler bietet die Welt der Elektronik interessante Mikrocontroller-Module mit denen man viele anspruchsvolle Projekte umsetzen kann. Dabei sind insbesondere Mikrocontroller interessant die sich einfach und unkompliziert programmieren lassen. Die Firma Atmel bietet eine Reihe von 8-Bit Mikrocontrollern an, in die viele Zusatzfunktionen integriert sind wie Programmspeicher, Datenspeicher, Zähler, pulsweitenmodulierte Ausgänge (PWM-Ausgänge), Analog-Digital-Wandler (AD-Wandler),  Digital-Analogwandler (DA-Wandler), serielle Schnittstelle (RS232), verschiedene Bussysteme (I2C) und vieles mehr, so dass man ohne großen Zusatzaufwand eigene Elektronik-Projekte umsetzen kann. Oft werden solche Mikrocontroller in Verbindung mit Entwicklerboards angeboten, wo der Mikrocontroller auf einer Platine aufgelötet ist und eine Peripherieschaltung für die nötige Minimalansteuerung vorhanden ist. Über Stiftleisten können die Ein- und Ausgabe-Pins des Mikrocontrollers erreicht werden. Der Arduino Uno ist ein solches beliebtes Entwicklerboard, das nur mit einer USB-Verbindung an einem PC betrieben werden kann.

Abb: Arduino Uno R3 (Urtyp)

Der USB-Anschluss dient sowohl zur Betriebsspannungsbereitstellung als auch zur Programmierung und zum Debuggen von Programmen. Früher waren spezielle und teure Programmiergeräte zur Programmierung der Mikrocontroller nötig. Heute besitzen die meisten Mikrocontroller ein fest eingebautes Bootloader-Programm mit dem über eine serielle Datenverbindung der Programmiervorgang abläuft. Die serielle Schnittstelle ist meistens auf den Entwicklerboards mit einem USB-Seriell-Umsetzer ausgestattet, so dass man eine gewöhnliche USB-Verbindung am PC nutzen kann. Das Anwenderprogramm wird damit in den Programmspeicher geladen und anschließend ausgeführt. Das Programm verbleibt dauerhaft im Programmspeicher bis es durch ein anderes überschrieben wird und startet automatisch mit dem Einschalten der Betriebsspannung. Mit einer Programmierumgebung wie der Arduino IDE kann das Entwicklerboard in der Programmiersprache C oder C++ über die USB-Verbindung programmiert werden.

Abb: Arduino IDE

Die Arduino IDE enthält Bibliotheken verschiedenster Entwicklerboards über die man das verwendete Entwicklerboard auswählen kann. Die Bibliotheken stellt eine Vielzahl von Funktionen bereit, mit der die Hardware über ein Programm angesprochen werden kann und dem Programmierer viel Arbeit abnimmt, weil er sich nicht um die eigentliche Hardwareansteuerung kümmern muss. Mit einfachen Befehlen können selbst komplexe Abläufe wie z.B. die Kommunikation über eine serielle Schnittstelle oder das Auslesen einer Analogspannung über einen AD-Wandler ausgeführt werden. Früher musste man über detailliertes Hardwarewissen verfügen und sich die jeweiligen Funktionen zur Ansteuerung der Hardware selber programmieren. Dies nehmen in großen Teilen die Bibliotheken ab und macht es dem Anwender damit sehr einfach. Die Funktionen sind meistens auch für andere Mikrocontroller-Chips und Entwicklerboards übertragbar und können dort in gleicher Weise benutzt werden. Viele Entwicklerboards sind so aufgebaut, dass die IO-Pins einer standardisierten und festgelegten Anordnung folgen. Damit ist es möglich Hardware-Zusatzmodule auf die Entwicklerboards aufzustecken. Man kann damit den Funktionsumfang der Schaltung deutlich erweitern. Zu den Hardware-Zusatzmodulen werden meistens Bibliotheken angeboten, die die Ansteuerung der Hardware für den Programmierer ebenfalls vereinfachen.

Im Zeitalter des Internet of Things (IoT) nimmt die Bedeutung von vernetzten Geräten zu. Die Geräte kommunizieren über Netzwerke oder WiFi und können sogar mit dem Internet verbunden sein und ihre Daten mit entfernten Geräten austauschen. Die einfachen Entwicklerboards mit den 8-Bit-Mikrocontrollern stoßen an ihre Leistungsgrenzen, obwohl sie auch teilweise mit Zusatzmodulen IoT-fähig gemacht werden können.

Die Firma Espressif ist eine chinesische Firma und stellt kostengünstige 32-Bit-Mikrocontroller-Chips für IoT-Geräte (ESP8266, ESP32) her. Die Mikrocontroller-Chips verfügen über Netzwerkschnittstellen zu WiFi und Bluetooth. Zudem sind sie wesentlich leistungsfähiger als 8-Bit-Mikrocontroller und verfügen über mehr Zusatzfunktionen. Die Chips haben einen fest eingebauten Bootloader und besitzen ein Real Time Operating System (RTOS), um die Netzwerkfunktionalität und andere zeitkritische Programmabläufe realisieren zu können. Die IoT-Chips werden in Kombination mit einem Speicherchip zu kleinen IoT-Modulen in Briefmarken-Größe verbaut, die sich recht einfach in eigene Schaltungen integrieren lassen. Espressif bietet verschieden ausgestattete IoT-Module an. Die IoT-Module werden in selber Weise benutzt und programmiert wie der Arduino Uno. Es gibt eine Vielzahl von Entwicklerboards zum ESP8266 und ESP32. Auch die Arduino IDE lässt sich zur Programmierung benutzen.

In der nachfolgenden Tabelle werden die beiden Mikrocontroller-Chips ESP8266 und ESP32 gegenüber gestellt.

Eigenschaft ESP8266 ESP32
Mikrocontroller Single Core Dual Core
Registerbreite 32 Bit 32 Bit
Prozessor Typ Xtensa LX106 Xtensa LX6
Betriebssystem RTOS RTOS
Max Frequenz 80…160 MHz 160…240 MHz
Flash 4 MB 4 MB
SRAM 160 KB 520 KB
GPIO 17 36
 Touch-Sensoren  10
 ADC Kanäle  1  16
 ADC Auflösung  10-Bit  12-Bit
 ADC Low-Noise Amplifier  Ja
DAC (Digital-to-Analog Converter) 1
WiFi 802.11 b/g/n 802.11 b/g/n
Bluetooth Bluetooth, BLE
 CAN 2.0  –  1
 I2C  1  2
 PWM Kanäle  8  16
 Temperatur-Sensor  –  Ja
 Hall-Sensor  –  Ja
 Stromverbrauch (Aktiv)  80 mA  260 mA
 Betriebsspannung  2,3 bis 3,6 V  2,3 bis 3,6 V
 Datenblatt  Link  Link

Tab.: Vergleich ESP8266 vs. ESP32

Durch den Dual Core Prozessor mit höherer Taktfrequenz ist der ESP32 leistungsfähiger als der ESP8266, verbraucht allerdings auch mehr Leistung. Beide IoT-Chips sind in diversen IoT-Modulen verbaut. Die nachfolgende Tabelle listet einige Module auf.

Bild Typ Chip IO-Ports Spannungs-Versorgung Besonderheiten
ESP-01 ESP8266 6 3.3V kleinstes DIL-Modul
ESP-07 ESP8266 14 3.3V Ext. Antenne
ESP-12 ESP8266 14 3.3V weniger IO-Pins als ESP-12F
ESP-12F ESP8266 20 3.3V mehr IO-Pins als ESP-12
ESP32 Wroom ESP32 26 3.3V Dual Core, etwas größer als ESP-XX Module

Tab.: ESP-Module

Die ESP-Module sind in einer Reihe von Entwicklerboards verbaut. Die Entwicklerboards verfolgen unterschiedliche Ziele und unterscheiden sich in der verbauten Zusatzhardware.

Bild Typ Chip Programmier-Interface Spannungs-Versorgung Besonderheiten
Wemos D1 mini ESP8266 Micro-USB 5V USB Viele aufsteckbare Zusatzmodule verfügbar
NodeMCU ESP8266 Micro-USB 5V USB Weit verbreitet
NodeMCU32 ESP32 Micro-USB 5V USB Weit verbreitet
NodeMCU32S ESP32 Micro-USB 5V USB Mehr IO-Pins
TTGO OLED ESP32 USB-C 5V USB OLED 64×128 Pixels
TTGO TFT ESP32 USB-C 5V USB TFT 135 x 240 Pixel
Heltec WiFi LoRa 32 ESP32 Micro-USB 5V USB, LiPo LoRa (SX1276, 868MHz), OLED 64×128 Pixels
ESP32-CAM ESP32 Seriell, 3.3V TTL 5V 2 MPixel Kamera, SD-Card-Reader

Tab.: ESP-Entwicklerboards

Wer eine gute Einführung in die ESP32-Programmierung sucht, der sollte sich dieses Buch ansehen: Das offizielle ESP32-Handbuch Dort wird ausführlich beschrieben wie man Projekte mit dem EPS32 und der Arduino-IDE umsetzen kann. Beginnend mit einfachen Projekten wie “Blinkende LED” werden Stück für Stück alle wichtigen Hardwareeinheiten erklärt und mit Software-Beispielen auf einem Steckboard in Betrieb genommen.