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

08/2019
Smarte Hacks

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Immer der Reihe nach

    Mit einer einfachen Schaltung testen Sie Bausteine, die über den SPI-Bus miteinander kommunizieren.

  • Einzigartig

    Eine MAC-Adresse ermöglicht die Kommunikation im Netzwerk. Der 24AA02E48 liefert sie für Setups, die aus grundlegenden Komponenten bestehen.

  • Steinkuchen

    Der Raspberry Pi hat viele Fans, doch nicht ohne Grund sehnen sich viele Anwender nach einem RasPi 4. Der Rock Pi 4 übertrumpft den RasPi 3 in Sachen Leistung um Längen und schlägt sich auch in der Praxis gut.

  • Kerngeschäft

    Der Einstieg in die Welt der Mikrocontroller fällt nicht ganz leicht. Mit dem Nucleo F401RE haben Sie jedoch ein Entwicklerboard samt abgestimmter Entwicklungsumgebung an der Hand.

  • Himbeer-Geräte

    Mit Maus und Tastatur im weiß-roten Raspberry-Look macht die Raspberry Pi Foundation das eigene Angebot an Peripheriegeräten für den Mini-Rechner komplett.

  • Unter Kontrolle

    PiCockpit ist eine speziell auf den RasPi zugeschnittene Online-Monitoring-Lösung. Wir werfen einen ersten Blick auf den brandneuen und in Ausbau befindlichen kostenlosen Dienst.

  • Ins rechte Licht gesetzt

    Selbst ohne eigenen Garten holen Sie sich Pflanzen mithilfe von LEDs in jeden Raum und sehen ihnen mit dem RasPi beim Wachsen zu.

  • Helligkeit nach Maß

    Wer bei wechselnden Lichtverhältnissen nicht ständig die Beleuchtung manuell nachregeln möchte, der spannt dafür einen PiXtend ein.

  • Geschrumpft

    Kleine Bildschirme gibt es zwar viele, aber der Support von Raspbian ist überraschend schlecht. Mit ein paar Tricks erzielen Sie trotzdem ein optimales Ergebnis.

  • Brüllwürfel

    Kompakt-Stereoanlagen mit CD-Spieler und Kassettendeck sind inzwischen oft ein Fall für den Recyclinghof – oder für die digitale Wiederbelebung mit einem RasPi und etwas Geschick.