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.