ESP32: Der große Bruder des ESP8266

© Espressif Systems

ESP++

Espressif mischte bereits mit dem WLAN-fähigen ESP8266 die Mikrocontroller-Gemeinde ordentlich auf. Jetzt legt der Hersteller mit dem ESP32 noch einmal nach.

Espressif hat mit dem ESP8266 frischen Wind in die Mikrocontroller-Gemeinde gebracht. Ein günstiger Controller, der WLAN mit an Board hat – das war eine kleine Revolution. Jetzt legt das Unternehmen mit dem ESP32 noch einmal nach.

Die neue Hardware (siehe Tabelle "Technische Daten") bringt erheblich mehr CPU-Leistung, beinahe so viel wie ein RasPi der ersten Generation. Daneben enthält der ESP32 mehr und flexiblere Ein- und Ausgänge und mehr Arbeitsspeicher, zum bereits vorhandenen WLAN gesellt sich nun Bluetooth. Damit eröffnet er viel mehr Möglichkeiten als sein kleiner Bruder.

Technische Daten

CPU

Tensilica LX6 Dual-Core (240 MHz, 600 DMIPS)

RAM

512 KByte SRAM

Speicher

16 MByte Flash, externes SPI-Flash (max. 16 MByte), SD-Card-Slot

WLAN

802.11b/g/n (WEP, WPA/WPA2 PSK/Enterprise)

Bluetooth

Classic, LE

Betriebsspannung

2,2 bis 3,6 Volt

Betriebstemperatur

-40 bis +125 Grad Celsius

Ein-/Ausgänge

GPIO (32), UART (3), SPI (3), ADC (12), DAC (2), I2C (2), I2S (2)

Verschlüsselung

AES/SHA2/Elliptical Curve Cryptography/RSA-4096 (hardwareunterstützt)

Sonstiges

PWM/Timer-I/O auf allen GPIO-Pins, SDIO Master/Slave (50 MHz), Hallsensor, kapazitive Touch-Schnittstelle (10x), 32-kHz-Kristallquartz

Allerdings kostet so viel Power entsprechend mehr: Das Board schlägt bei Amazon mit rund 30 Euro zu Buche. Allerdings liegt die Vermutung nahe, dass der Preis in ein paar Monaten auf ein für den Bastler erträglicheres Niveau fällt.

Zur Programmierung des neuen Mikrocontrollers müssen Sie die Arduino IDE [1] anpassen. Wir demonstrieren das in diesem Workshop anhand eines Beispiels, das eine RGB-LED mit unterschiedlichen Farben zyklisch ansteuert. Als Hardware kommt das ESP32 DevKitC [2] zum Einsatz, das Sie direkt an die USB-Schnittstelle anschließen. Das Board erzeugt alle nötigen Betriebsspannungen selbst. Abbildung 1 zeigt die Beschaltung der einzelnen Pins des DevKitC.

Abbildung 1: Die Anschlussbelegung des DevKitC. (Quelle: Getting Started Guide, Figure 1-2)

Da der ESP32 recht neu auf dem Markt ist, existiert noch kein finaler Board-Manager für die Arduino IDE. Es gibt immerhin eine schon recht gut funktionierende Version auf Github [3], die allerdings etwas Handarbeit erfordert. Im ersten Schritt installieren Sie die aktuellste Version der Arduino IDE. Wählen Sie auf der Download-Seite des Arduino-Projekts [4] die für das jeweilige Betriebssystem passende Version aus und laden Sie diese herunter.

Die Kommandos in Listing 1 zeigen die Schritte für eine Installation unter Ubuntu. Der Usermod-Befehl sorgt dafür, dass der angemeldete Benutzer auf die seriellen Schnittstellen des Systems zugreifen kann. Die heruntergeladene Datei kopieren Sie ins neu erstellte Verzeichnis ESP32. Falls sich der Tar-Befehl mit verschiedenen Meldungen weigert, das Paket zu entpacken, fehlen auf dem System vermutlich die XZ-Tools, die Sie dann mit sudo apt-get install xz-utils nachinstallieren. Nach dem Entpacken prüfen Sie, ob die Arduino IDE sauber startet.

Listing 1

 

$ sudo usermod -a -G dialout $USER
$ mkdir ESP32
$ cd ESP32
$ tar -xvJf arduino-1.8.1-linux64.tar.xz
$ cd ./arduino-1.8.1/
$ ./arduino

Der nächste Schritt umfasst das Herunterladen, Bauen und Einrichten der ESP32-Komponenten. Falls Git noch nicht auf dem Rechner installiert ist, holen Sie das vorab mit dem Kommando sudo apt-get install git nach. Dann führen Sie die in Listing 2 gezeigten Befehle aus.

Listing 2

 

$ mkdir -p ~/Arduino/hardware/espressif
$ cd ~/Arduino/hardware/espressif
$ git clone https://github.com/espressif/arduino-esp32.git esp32
$ cd esp32/tools/
$ python get.py
$ cd ~/ESP32/arduino-1.8.1/
$ ./arduino

Anschließend haben Sie die Möglichkeit, in der IDE das ESP 32 DEV MODULE auszuwählen (Abbildung 2). Die IDE erzeugt jetzt Binärcode für den ESP32. Bevor wir uns mit dem Beispielprogramm beschäftigen, werfen wir noch einen Blick auf die Test-Hardware.

Abbildung 2: Haben Sie die Arduino IDE korrekt installiert, integrieren Sie das entsprechende Modul für den ESP32.

Test-Hardware

Das ESP32 DevKitC bringt alles mit, um direkt in die Programmierung des ESP32 einzusteigen. Es bezieht die komplette Betriebsspannung über den USB-Port. Auf dem Board findet sich ein USB-zu-seriell-Baustein, alle zum Betrieb nötigen Taster und Widerstände sind bestückt.

Da die Platine etwas breit gerät, passt sie nicht mehr auf ein einzelnes Breadboard – zumindest kommen Sie nur schlecht an die Kontakte heran. Daher empfiehlt es sich, mehrere Breadboards nebeneinander zu verwenden. Diese lassen sich wie der ESP32 günstig in China beziehen [5], allerdings müssen Sie dafür eine gewisse Lieferzeit in Kauf nehmen.

Abbildung 3 zeigt den Testaufbau, Abbildung 4 den recht sparsamen Schaltplan mit nur drei Vorwiderständen und einer RGB-LED, wie Sie sie bei jedem Elektronikversand bekommen. Die hier verwendete kommt ebenfalls direkt aus China [6]. Sie weist vier Anschlüsse auf, je eine Anode für Rot, Grün und Blau sowie eine gemeinsame Anode (das längste Beinchen des Bausteins).

Abbildung 3: Das etwas groß geratene Board des DevKits erzwingt beim Testaufbau zum komfortablen Arbeiten mehr als ein Breadboard.
Abbildung 4: Der Schaltplan zeigt die Vorwiderstände und die eigentliche LED, die der ESP32 ansteuert.

Programm

Das Testprogramm (Listing 3) enthält kaum Überraschungen: Die Funktion setup() definiert die IO-Pins 5, 18 und 19 als Ausgänge. Es legt sie auf logisch HIGH, um alle LEDs direkt nach dem Starten des ESP32 auszuschalten. Die LEDs hängen über die gemeinsame Anode an Plus. Sollen sie leuchten, legen Sie die Kathode auf 0 Volt. Sollen sie ausgehen, legen Sie die Kathode auf logisch 1 (3,3 Volt).

Listing 3

 

void setup() {
  pinMode(5, OUTPUT);
  pinMode(18, OUTPUT);
  pinMode(19, OUTPUT);
  digitalWrite(5, HIGH);
  digitalWrite(18, HIGH);
  digitalWrite(19, HIGH);
};
void loop() {
  digitalWrite(5, LOW);
  delay(1000);
  digitalWrite(5, HIGH);
  delay(1000);
  digitalWrite(18, LOW);
  delay(1000);
  digitalWrite(18, HIGH);
  delay(1000);
  digitalWrite(19, LOW);
  delay(1000);
  digitalWrite(19, HIGH);
  delay(1000);
};

Die Funktion loop(); dient dazu, die LEDs eine nach der anderen ein- und wieder auszuschalten. Der Wert von 1000 in delay() entspricht einer Sekunde. Der ESP32 führt die Funktion loop() aus, bis Sie ihn vom Strom trennen oder alternativ ein neues Programm hochladen.

Nun bleibt als letzte Aufgabe nur noch, herauszufinden, wie das Hochladen von Programmen funktioniert. Tatsächlich waren im Test einige Versuche nötig, um die Taster in der korrekten Reihenfolge zu drücken. Zuerst drücken Sie den Boot-Taster auf dem Controller und halten ihn fest. Dann betätigen Sie den Reset-Taster, lassen ihn aber wieder los. Jetzt befindet sich der ESP32 im Flash-Modus.

In der Arduino IDE drücken Sie nun den Upload-Button und warten, bis das Hochladen abgeschlossen ist. Dann nehmen Sie den (vermutlich mittlerweile eingeschlafenen Finger) wieder vom Boot-Taster. Abschließend drücken Sie kurz den Reset-Taster, damit das Programm startet. In manchen Fällen lief es im Test allerdings schon direkt nach dem Upload an. Hat alles geklappt, leuchtet die LED jetzt abwechselnd in unterschiedlichen Farben.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

12/2019
RasPi-Alternativen

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Grußbotschaften

    Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

  • Das Runde und das Eckige

    Mit dem MCP4725 ergänzen Sie einen RasPi um einem D/A-Wandler, der bei Bedarf noch weitere Funktionen erfüllt.

  • Alles unter Kontrolle

    Schon ein einfaches Mikrocontrollerboard wie das CY8CKIT-049-42xx bietet erstaunlich viele Möglichkeiten beim Ansteuern von Hardware.

  • Viele Kerne

    Das Spresense Development Board von Sony lässt sich mit der Arduino IDE programmieren und bringt auch ein eigenes Entwickler-SDK mit.

  • Exotische Früchte

    Der aus China stammende Orange Pi positioniert sich mit einem guten Preis und interessanten Features gegen die RasPi-Truppe. Kann er sich auch behaupten?

  • Flexibler Surfer

    Mit dem neuen RasPi 4 setzen Sie einen öffentlichen Webkiosk schnell und kostengünstig auf.

  • Auskunftsfreudig

    Viele Devices, so auch der E.ON-Aura-Controller, verwenden eine Schnittstelle namens REST, um Zustandsdaten zu übermitteln. Mit ein wenig Bastelei lesen Sie diese auch über Ihr Smartphone aus.

  • Doppelt gemessen

    Mit wenig Aufwand und einem Pi Zero realisieren Sie einen mobilen Zweikanal-Spannungsprüfer.

  • Elegant zusammengeführt

    Tizonia streamt Musik von Online-Quellen und lokalen Sammlungen. Die schlanke Architektur macht den Player zur guten Wahl für den Einsatz auf dem RasPi.

  • Kommunikativ

    Nicht jeder traut sich zu, sein eigenes Smartphone zu bauen. Allerdings kann jeder Linux-Nutzer den Raspberry Pi im Handumdrehen zu einem VoIP-Telefon aufrüsten.