Vom 02. bis 17. Mai 2019 veranstaltete das HPI (Hasso-Plattner-Institut in Potsdam) den Online-Kurs „Wie programmiere ich meinen ersten Mini-Computer?”. Kursthema war die Programmierung des ESP32-Mikrocontrollers mit der Arduino-Entwicklungsumgebung, um in einfachen Projekten verschiedene Sensoren abzufragen und Ausgaben an Bauteile wie Motoren oder LEDs zu steuern.
Für mich ist das ein völlig neues Thema – deswegen erweitere ich diesen Beitrag bei Bedarf noch – und ich hoffe, aus dem Kurs ein paar Anregungen mitzunehmen, die ich vielleicht auch auf den Raspberry Pi übertragen kann (mit dem ich schon vor zwei Jahren in die Thematik einsteigen wollte).
Vorab: Ich nutze derzeit hauptsächlich einen Rechner mit Windows 10 Home (64 bit) – darauf beziehen sich i.d.R. die folgenden Beschreibungen und Abbildungen. Teilweise habe ich Hinweise zu anderen Systemen ergänzt.
Anschluss per USB – Verwendung des richtigen Kabels
Zum Anschluss des ESP32 Developer Boards an den PC wird ein Datenkabel mit Mikro-USB-Anschluss benötigt. Die Betonung liegt auf »Daten« – reine Ladekabel, die oft z.B. bei Powerbanks, USB-Ladegeräten für die Steckdose oder Akku-Leuchten mitgeliefert werden, können ein angeschlossenes Gerät zwar mit Strom versorgen, aber es fehlen die Datenleitungen. Dadurch kann keine Kommunikation über das Kabel erfolgen – der PC erkennt nicht, dass ein Gerät angeschlosssen ist. Optisch lassen sich die Kabelarten kaum unterscheiden, und bei den kleinen Mikro-USB-Steckern ist das Durchmessen der Datenleitungen mit einem Multimeter auch nicht einfach möglich. Man nimmt also z.B. ein Kabel, das man auch zur Übertragung von Fotos oder Musik zu oder vom Smartphone verwendet. Sonst muss man ausprobieren.
Ob man das Board mit einem USB2- oder USB3-Anschluss (auch USB 3.1) verbindet, ist egal.
Treiber-Installation

Als Hardware kommt ein ESP32 Developer Board zum Einsatz, ein sog. Mikrocontroller mit WLAN-Chip, der per USB mit einem PC verbunden und programmiert werden kann. Auf dem Board befindet sich der CP2102-Chip, der für die USB-Anbindung zuständig ist. Unter Windows muss für diesen Chip ein Treiber installiert werden (Download-Link), der einen virtuellen COM-Port bereitstellt – eine serielle Schnittstelle, die man bei angeschlossenem ESP32 im Windows-Gerätemanager findet und deren Name (hier: COM3) später noch benötigt wird. Auf der Download-Seite findet man verschiedene Treiber-Versionen für mehrere Windows-Versionen, Mac und Linux (s.u.).
(Anmerkung: Den Treiber kann man auch installieren, ohne das Board anzuschließen. Damit das Board aber im Gerätemanager sichtbar wird und einen COM-Anschluss zugewiesen bekommt, muss man es natürlich mit dem PC verbinden – also per Mikro-USB-Kabel anschließen. Wenn man das Board abstöpselt und neu verbindet, erhält es i.d.R. wieder den selben COM-Port zugewiesen.)
Ohne Treiber wird das Board zwar meist auch als „CP2102 USB to UART Bridge Controller” im Windows-Gerätemanager angezeigt – aber als unbekanntes Gerät mit gelbem Ausrufungszeichen und ohne dass ein COM-Port zugewiesen wurde; bei Rechtsklick und Auswahl der Eigenschaften erscheint der Hinweis, dass kein Treiber gefunden wurde.
Den Mac sollte man nach der Installation des Treibers neu starten. In der Arduino-IDE kann man dann bei angeschlossenem ESP32 den seriellen Port /dev/cu.SLABUSBtoUART
auswählen.
Unter aktuelleren Linux-Versionen (Kernel 3.x und 4.x) sollten die Treiber bereits vorhanden sein – prüfen kann man das mit den folgenden Befehlen, die z.B. auf einem Ubuntu 18.04 anzeigen, dass die Treiber als Kernel-Modul installiert sind: [1]Siehe die Antwort auf https://askubuntu.com/questions/941594/installing-cp210x-driver (die beiden modinfo-Anweisungen)
modinfo usbserial
modinfo cp210x
Installation der Arduino-IDE
Den Download der Software findet man auf www.arduino.cc/en/main/software für Windows, Mac und Linux (ältere Versionen sind auch noch verfügbar). Wenn man keine Standardinstallation vornehmen will oder kann (z.B. weil man unter Windows keine Administrator-Rechte hat), kann man die Arduino-IDE auch als portable Version installieren – die Arduino-Seite bietet dazu eine Beschreibung.
Die Arduino-IDE [2]Entwicklungsumgebung; Abkürzung IDE = integrated development environment; manchmal auch SDK = software development kit; Werkzeuge zur Softwareentwicklung unterstützt den ESP32 von sich aus nicht – die entsprechenden Werkzeuge und Bibliotheken müssen zusätzlich installiert werden. Inzwischen geht das ganz einfach über die Boardverwaltung: [3]Anleitungen zur Installation der Dateien mit manuellen Downloads aus den Software-Archiven von github.com findet man noch häufig über die Suchmaschinen; diese entsprechen nicht mehr dem aktuellen … Continue reading
- Menü
Datei → Voreinstellungen → Zusätzliche Boardverwalter-URLs
: dort https://dl.espressif.com/dl/package_esp32_index.json eintragen. Mehrere Adressen kann man durch Kommata trennen. Wenn man z.B. auch noch den ESP8266 nutzt, sieht der Eintrag so aus:https://dl.espressif.com/dl/package_esp32_index.json,https://arduino.esp8266.com/stable/package_esp8266com_index.json
(in einem Stück, ohne Zeilenumbruch) -
ESP32 im Arduino-Boardverwalter Menü
Werkzeuge → Board → Boardverwalter
; im Suchfeld „esp” eingeben (oder ganz nach unten scrollen), den Eintrag „esp32 by Espressif” auswählen und aufInstallieren
klicken. Das kann ein bisschen dauern, da mehrere 100 MB an Daten heruntergeladen werden.
Eine ausführliche Anleitung mit Screenshots gibt es in einem Blogeintrag des Versandhändlers AZ-Delivery. [4]Hinweis aus einem Posting von E.B. im Forum zum ESP32-Kurs beim HPI; die Foren sind nur für angemeldete Benutzer zugänglich; aus Datenschutzgründen habe ich den Namen durch die Initialen ersetzt.Falls beim Download ein Fehler auftritt und erneute Versuche keine Besserung bringen, kann es helfen, bereits heruntergeladene Fragmente manuell zu löschen – manchmal blockieren die den Download. Der Ordner für die Board-Daten befindet sich bei einer Standardinstallation unter Windows im Verzeichnis
C:\Users\<benutzername>\AppData\Local\Arduino15\packages
. Dort vorhandene Dateien oder einen Ordneresp32
zu löschen bereinigt fehlerhafte Downloads, sodass ein neuer Versuch evtl. erfolgreicher ist.Eine andere Ursache kann eine fehlerhafte Proxy-Einstellung sein (Menü
Datei → Voreinstellungen → Reiter „Netzwerk”
). Standardmäßig ist„Proxy-Einstellungen automatisch erkennen”
eingestellt (was i.d.R. funktioniert) – hier kann es helfen, explizit„Kein Proxy”
auszuwählen, wenn keiner verwendet wird (z.B. bei einer üblichen DSL-Verbindung zuhause), oder die korrekten Einstellungen manuell einzutragen. - Wenn das erledigt ist, steht der ESP32 in der IDE zur Verfügung und man wählt ihn im Menü
Werkzeuge → Board → ESP32 Dev Module
aus (bzw. statt „Dev Module” das Board, das man gekauft hat). - Unter
Werkzeuge → Ports
stellt man außerdem den oben im Gerätemanager ermittelten Schnittstellennamen ein (hier: COM3); dazu muss das Board angeschlossen sein.
Funktioniert das Board? Erste Tests
Auch wenn für diese ersten Testprogramme keine Bauteile oder Sensoren angeschlossen werden, würde ich das ESP32-Modul schon mal auf ein Breadboard (eine Steckplatine) stecken – einfach um die Pins gegen Verbiegen zu schützen und um versehentliche Verbindungen (Kurzschlüsse) durch Kontakt mit Werkzeugen oder herumliegenden Drähten etc. zu vermeiden. Dann wird das Board mit einen USB-Anschluss des PCs verbunden. Als Ergebnis sollte die rote Power-LED leuchten – sofern das Board eine hat; es gibt auch Modelle ohne Power-LED. Außerdem sollte das Board im Gerätemanager von Windows angezeigt werden, wenn eine Verbindung mit dem Rechner hergestellt wurde (siehe oben unter dem Punkt Treiber-Installation).
Mit den folgenden Programmen (in der Arduino-IDE wird ein Programm meist als Sketch bezeichnet) lässt sich einfach prüfen, ob das Board mit der IDE zusammenarbeitet. Vorab jedoch ein Hinweis, was man tun kann, wenn das Hochladen von Programmen auf den Mikrocontroller nicht funktioniert.
Fehler beim Hochladen des Programms
Sketch → Hochladen
kompiliert und zum ESP32 übertragen. Alternativ kann man in der Symbolleiste direkt unterhalb des Menüs auf das runde Pfeil-Symbol klicken, das mit „Hochladen” beschriftet ist.
Bei manchen Boards erhält man beim Versuch, das Programm zu übertragen, nach einiger Zeit (ca. 30 Sekunden) die Fehlermeldung „A fatal error occurred: Failed to connect to ESP32: Invalid head of packet
”.Connecting........_____....._____
” angezeigt wird, so lange bis die Verbindung steht – i.d.R. reichen dafür 3-4 Sekunden. Hierzu gibt es auch eine bebilderte Anleitung in englischer Sprache (dort ist es Punkt 4) und eine Beschreibung, wie man mit einem Kondensator dieses Verhalten dauerhaft abstellen kann.
Und wie oben bereits erwähnt: Für die Verbindung zwischen ESP32 und PC muss ein USB-Datenkabel verwendet werden.
Nach erfolgreichem Upload des Programms wird als letzte Meldung „Hard resetting via RTS pin...
” angezeigt. Das ist keine Fehlermeldung, sondern weist darauf hin, dass das Programm übertragen wurde und der ESP einen Reset durchgeführt hat, um es auszuführen.
Blinkende LED oder „Hallo Welt”
Ein häufig verwendetes Programm zum Testen des Boards ist das Blink-Programm, das die eingebaute LED zum Blinken bringt – bei vielen Mikrocontrollern ist das der Ersatz für das bekannte „Hallo Welt”-Programm. Auf meinem Board gibt es zusätzlich zur roten Power-LED eine blaue LED, bei anderen Boards (z.B. denen ohne Power-LED) ist es eine rote LED – das kann je nach Hersteller unterschiedlich sein. Es gibt auch Boards ohne interne LED, z.B. das ESP32 Pico Kit, das nur eine Power-LED hat, und auch Boards ganz ohne eingebaute LED sollen vorkommen.
Das Arduino-Beispiel im Menü Datei → Beispiele → 01.Basics → Blink
läuft auf dem ESP32 nicht, da dessen Pin-Belegung sich vom Arduino unterscheidet. Folgendes Programm funktioniert und lässt die LED im Sekundentakt blinken.
Auf einigen ESP32-Boards (die ohne Power-LED?) hat die interne LED die Adresse 1 (siehe unten in den Kommentaren). Falls die LED nicht blinkt, kann es also helfen, die erste Anweisung im Programm wie folgt zu ändern: #define LED 1
// Quelle: https://circuits4you.com/2018/02/02/esp32-led-blink-example/ #define LED 2 // auf manchen Boards 1 void setup() { pinMode(LED,OUTPUT); } void loop() { delay(1000); digitalWrite(LED,HIGH); delay(1000); digitalWrite(LED,LOW); }
Ein klassisches „Hallo Welt” ist natürlich auch möglich – und vor allem sinnvoll, wenn man ein Board ohne eingebaute LED hat:
void setup() { Serial.begin(115200); delay(500); Serial.println("Hallo Welt!"); // leere Dauerschleife; das Programm bleibt im Endeffekt hier stehen for (;;) ; } void loop() { // Hauptschleife bleibt leer, weil alles Nötige bereits // (einmalig) im Setup erledigt wurde }

Die Texte werden über die serielle Schnittstelle ausgegeben und können im seriellen Monitor der Arduino-IDE angezeigt werden: Menü Werkzeuge → Serieller Monitor
; dort muss die Baud-Rate auf den selben Wert wie im Programm eingestellt werden (im Beispiel ist das der Befehl Serial.begin(115200);
), sonst wird nur Zeichensalat (oder gar nichts) angezeigt.
Interner Temperatursensor
Der ESP verfügt über einen eingebauten Temperatursensor – dieser misst aber nicht die Umgebungstemperatur, sondern die Prozessortemperatur (und das nicht besonders gut, sondern von Chip zu Chip mit anderen Werten). [5]„The internal temperature sensor unfortunately has a pretty big random offset that differs from chip to chip. It can be useful to keep track of temperature deltas, but you can’t really infer … Continue reading Man kann ihn über folgendes Programm abfragen:[6]Quelle: circuits4you.com/2019/01/01/esp32-internal-temperature-sensor-example
Die Funktion heißt tatsächlich temprature_sens_read()
, also ohne ein „e” in „temperature”.
/* * ESP32 Internal Temperature Sensor Example * https://circuits4you.com/2019/01/01/esp32-internal-temperature-sensor-example/ */ #ifdef __cplusplus extern "C" { #endif uint8_t temprature_sens_read(); #ifdef __cplusplus } #endif uint8_t temprature_sens_read(); // Setup void setup() { Serial.begin(115200); } // Loop void loop() { Serial.print("Temperatur: "); // Temp. von Fahrenheit in Grad Celsius umrechnen Serial.print((temprature_sens_read() - 32) / 1.8); Serial.println(" C"); delay(2000); }
Die Temperatur wird über die serielle Schnittstelle ausgegeben und kann in der IDE angezeigt werden (siehe Bild und Text am Ende des vorherigen Abschnitts).
Weit verbreitete Sensoren zur Messung der Umgebungstemperatur werden im Beitrag »Temperatursensoren DS18B20 und DHT22/DHT11« beschrieben. Alle weiteren Temperatur- und Luftfeuchtigkeitssensoren, die im Blog beschrieben werden, sind in einer tabellarischen Übersicht aufgeführt – mit Links zu den jeweiligen Beiträgen.
Interner Hall-Sensor (Magnetfeldsensor)
Auch ein Hall-Sensor zur Messung des Magnetfeldes ist auf dem Board vorhanden. Im Netz ist tlw. zu lesen, dass die Messwerte nicht besonders gut sind, sondern stark streuen. In einem Forum habe ich ein Programm gefunden und minimal angepasst, das eine Vielzahl von Messungen in kurzem Abstand macht und den Mittelwert ausgibt.
// Hall sensor test // https://esp32.com/viewtopic.php?t=4963 int i; long h; void setup() { Serial.begin(115200); } void loop() { h=0; for(i=0; i<5000; i++) { h += hallRead(); delayMicroseconds(100); } Serial.print("Hall sensor value: "); Serial.println((double)h/5000.); }

Die Messwerte lassen sich wieder im seriellen Monitor anzeigen. Ohne mir eine Aussage zur Bedeutung der Werte zuzutrauen, kann ich zumindest feststellen, dass sie sich deutlich ändern, wenn ich einen Magneten (z.B. einen Kühlschrankmagneten oder einen magnetischen Schraubendreher) in die Nähe des Sensors bringe. 😉 (Der Sensor sitzt im ESP32-Chip in der Nähe der WLAN-Antenne.)
WLAN-Scan
Um die WLAN-Funktionen des ESP32 kennenzulernen, kann man ohne Anpassungen eines der in der Arduino-IDE installierten Beispiele nutzen: Datei → Beispiele → WiFi → WiFiScan
. Das Programm zeigt über den seriellen Monitor die Netzwerknamen (SSIDs) sowie die Signalstärke (RSSI) aller in der Umgebung vorhandenen WLANs an.
Ich habe bei diesen allerersten Schritten keine Probleme festgestellt – die vorher unbekannte Technik hat wie erhofft funktioniert. Im Fehlerfall kann vielleicht der ESP32 Troubleshooting Guide von Random Nerd Tutorials weiterhelfen.
Informationen und Beispiele zur Anwendung des ESP32 finden sich in großer Anzahl ohne viel Aufwand per Suchmaschine. Ich bin gespannt, was der Online-Kurs ab Mai an Erkenntnissen bringen wird. Vermutlich werde ich bis dahin auch schon meiner Neugierde nachgeben und den einen oder anderen Sensor ausprobieren.
Pin-Belegung des ESP32
Je nach Modell haben die ESP32-Entwickler-Boards (auch als DevKitC bezeichnet) 30 oder 38 Pins, die zum Anschließen und Steuern von Sensoren, Displays und anderen Geräten genutzt werden können. Einige Pins dienen zur Versorgung (Masse und 3,3 oder 5 Volt Spannung), andere z.B. zum Lesen von digitalen oder analogen Werten oder zur Kommunikation über die Standard-Protokolle I2C und SPI.
Eine Übersicht gibt es hier: »ESP32 Pin-Belegung« mit Diagrammen (auch als PDF zum Download) und einer Tabelle der Unterschiede zwischen den ESP32-Modellen.
ESP32 auf dem Breadboard
Der ESP32 macht sich auf dem Breadboard (Steckplatine) relativ breit. Die meisten Modelle lassen beim mittigen Einstecken nur auf einer Seite eine Reihe Kontakte frei, sodass man die Pins auf der anderen Seite nicht nutzen kann (ganz links im Bild). Ich besitze auch ein schmaleres Modell (Breite ca. 2,4 cm statt 2,8 cm), das auf jeder Seite eine Reihe an Kontakten freilässt – dafür hat es den Nachteil, dass die Beschriftung der Pins sich nur auf der Unterseite des Boards befindet. Ein Bild dieses Boards habe ich als Beitragsbild dieses Textes (ganz oben auf dieser Seite) verwendet.
Ein deutlich schmaleres Modell ist das ESP32 Pico Kit, das auf dem Breadboard insgesamt vier Reihen Steckkontakte Platz lässt.
Man kann sich aber behelfen, indem man das Board am Rand der Steckplatine einsteckt, sodass eine Reihe Pins in der Luft hängt. Dabei gewinnt man etwas Platz, auch wenn weiter nur die Pins auf einer Seite nutzbar sind. Das ist nicht besonders stabil, aber man kann die in der Luft hängenden Pins bei Bedarf mit Female-Male-Jumperkabeln (Kabel mit einer Buchse auf einer Seite) abgreifen (zweites Bild von links). Oder man steckt zwei Breadboards zusammmen, wobei man vorher bei einem durch Abknicken die Reihen für die Stromversorgung entfernt. Als weitere, etwas radikalere Option kann man das Breadboard entlang der Mittelnut zersägen und mit einem ESP32 als Abstandhalter die beiden Teile z.B. mit der selbstklebenden Rückseite auf einer Holzplatte montieren (im Foto ganz rechts mit zwei Breadboards demonstriert).

Literatur und weitere Links
Der Chip-Hersteller Espressif hat den ESP32 entwickelt.
- Homepage
- ESP32-Homepage
- API der ESP32-spezifischen Funktionen
Arduino-IDE und Programmiersprache:
- Arduino Homepage: www.arduino.cc
- Download der Entwicklungsumgebung (IDE): www.arduino.cc/en/main/software (aktuelle Version für verschiedene Betriebssysteme; ältere Versionen sind weiter verfügbar; auch eine portable Installation ohne Administrator-Rechte ist möglich)
- Referenz der Programmiersprache: www.arduino.cc/reference/en/
(Englisch; es gibt auch eine deutsche Version) [7]Beim Schreiben des Beitrags Anfang 2019 bestand die deutsche Version hauptsächlich aus Lücken. Das scheint inzwischen (November 2020) nicht mehr der Fall zu sein.
- Arduino Programmier-Handbuch: 25 Seiten Einführung in die an C/C++ angelehnte Programmiersprache für den Arduino (Stand 2009); dieses PDF findet sich neben weiteren Links zum Arduino auf www.netzmafia.de/skripten/hardware/Arduino/links.html (einige der Links führen leider ins Leere)
Bauteile, Basteln, Projekte:
- Widerstände: Bedeutung der Farbcodes – Tabellen und Umrechner – generell ist das Elektronik-Kompendium hilfreich bei Fragen zu Elektronik-Grundlagen, Bauelementen und mehr
- Kondensatoren: Werte und Bezeichnungen
- Die englischsprachige Seite Random Nerd Tutorials bietet über 200 Projekte und Anleitungen zu verschiedenen Mikrocontrollern, u.a. zum ESP32, angefangen bei der Installation der Arduino-IDE hin zu fortgeschrittenen Projekten. Die Seite wird regelmäßig erweitert und war für mich bisher sehr hilfreich.
- Einige Ideen für eigene Projekte findet man auch im deutschsprachigen Blog des Versandhändlersd AZ-Delivery – auch das wird häufig aktualisiert.
- Infos zu LEDs und Lichterketten (Technik und Typen, Programmierung am Beispiel eines Arduino) – insbes. WS2812B (NeoPixel): Michael Stal, Von Erleuchtungen und Lichterketten, bei Heise Developer[8]Quelle: Posting von D.B. im Forum zum ESP32-Kurs beim HPI; die NeoPixel-LEDs lassen sich mit den für den Arduino geschriebenen Bibliotheken am ESP32 oft nicht sauber steuern – es gibt aber speziell für den ESP32 entwickelte Alternativen wie NeoPixelBus.
Unter dem Titel Der Pragmatische Architekt hat der Autor bis Juli 2019 viele weitere Projekte und Tipps zu Arduino, ESP8266 und ESP32 veröffentlicht. - Eine kindgerechte Einführung ins Basteln mit dem Arduino gibt es im Kidskurs von Starthardware – der Kurs beginnt mit einfachen Erklärungen zu ein paar Bauteilen und dem Breadboard und schreitet in kleinen Schritten fort bis zum Basteln einer „digitalen Katze”, die mit den Augen zwinkern (blinkende LEDs) und schnurren kann. (Auch hier der Hinweis, dass sich die Arduino-Projekte wegen der unterschiedlichen Hardware nicht unbedingt direkt auf den ESP32 übertragen lassen. Aber als Ideengeber taugen sie mindestens.)
Bücher und eBooks
Natürlich gibt es auch diverse Bücher zu ESP32 und Arduino – i.d.R. gedruckt und als eBook. Die folgenden Links sind keine Kaufempfehlungen (bis auf eines besitze ich keines der gedruckten Bücher) und natürlich gibt es viele weitere Bücher zum Thema. Die jeweiligen Verlage bieten aber mehr oder weniger umfangreiche kostenlose Leseproben an, anhand derer man sich einen ersten Eindruck der zu erwartenden Inhalte verschaffen kann.
Die Inhalte der Bücher zum Arduino sind bzgl. Programmcode und Schaltungen oft nicht 1:1 auf den ESP32 übertragbar – schon wegen der unterschiedlichen Anzahl und Nummerierung der GPIO-Pins. Wenn man die Arduino-IDE zum Programmieren verwendet (wie auch in den meisten Beiträgen hier), lassen die Programme sich aber meist leicht anpassen, da viele der weit verbreiteten Bibliotheken nicht nur auf dem Arduino, sondern auch mit dem ESP32 (und ESP8266) funktionieren. [9]Oft muss man wirklich nur die Nummern der GPIO-Pins anpassen und die richtige Datenübertragungsrate zum seriellen Monitor einstellen, um Programme, die für eines der vielen Arduino-Modelle … Continue reading Und die Informationen zu Bauteilen, Sensoren etc. gelten sowieso unabhängig vom Mikrocontroller.
- Kolban’s Books sind sehr umfangreiche Werke zu den Mikrocontrollern ESP8266 und ESP32 in englischer Sprache. Die Bücher sind frei als PDF erhältlich – man wird um eine Spende gebeten (empfohlen werden 5 US$), kann die PDFs aber erst einmal kostenlos herunterladen und die Spende bei Gefallen nachholen. Als Einstiegslektüre scheinen mir die Bücher nicht geeignet, eher zum Nachschlagen für erfahrene Nutzer.
- ESP32 (finale Version vom September 2018): https://leanpub.com/kolban-ESP32
- ESP8266 (finale Version vom November 2016): https://leanpub.com/ESP8266_ESP32 – der Vorläufer des Buchs zum ESP32
- Udo Brandes: Mikrocontroller ESP32 – Das umfassende Handbuch; Rheinwerk Computing, September 2020; 616 Seiten; 44,90 € – die Leseprobe enthält die Kapitel 1 »Der Mikrocontroller ESP32 und seine Funktionalitäten«, 6 »Peripherie und Funktionen des ESP32« und 9 »Projektideen«
- Erik Bartmann: Das ESP32-Praxisbuch: Programmieren mit der Arduino-IDE; Elektor, 2018; 334 Seiten; 39,80 € – online gibt es das Inhaltsverzeichnis und die Programmbeispiele
- Michael Bonacina: Arduino Handbuch für Einsteiger; BMU-Verlag, 2019; ca. 200 Seiten; 14,99 € (inkl. eBook) – die ersten zwei Abschnitte mit Grundlagen zum Arduino und einigen elektronischen Bauteilen gibt es als Leseprobe (Link »Leseprobe« rechts oben unter dem Kauf-Link)
- Danny Schreiter: Arduino Kompendium: Elektronik, Programmierung und Projekte; BMU-Verlag, Mai 2019; mehr als 500 Seiten; 17,99 € (Hardcover 24,99 €; jeweils inkl. eBook) – Einleitung, Geschichte der Arduinos und Installation von IDE und Bibliotheken als Leseprobe
Hinweis: Online-Kurse beim HPI
Das Hasso-Plattner-Institut veranstaltet auf seiner Plattform openHPI außer dem Kurs zum ESP32 regelmäßig Online-Kurse (sog. MOOCs; massive open online course) zu Themen aus dem weiten Feld der Informatik. Frühere Kurse bleiben online verfügbar und können im Selbststudium absolviert werden. Die Kurse sind kostenlos und offen für jedermann. I.d.R. werden keine oder nur EDV-Grundkenntnisse vorausgesetzt – Vorkenntnisse oder ein bisschen Spaß und Interesse an Computern und Mathematik erleichtern die Teilnahme aber deutlich. Ich habe inzwischen an mehreren Kursen teilgenommen und jedesmal Neues gelernt und bereits vorhandenes Wissen aufgefrischt und ergänzt. Für mich eine tolle Möglichkeit, mich nebenbei weiterzubilden – vor allem (fast) ohne Kosten, wobei sich das „fast” auf den gelegentlichen Kauf von etwas Lesestoff oder hier eben den ESP32 samt Zubehör beschränkt.
29.11.2020: Ergänzung des Links zur Übersicht der Temperatur-Sensoren; Abschnitt »Pin-Belegung des ESP32« neu; »Hallo Welt«-Programm geändert; Literatur-Links umstrukturiert und etwas ergänzt; verschiedene kleine Änderungen am Text
Fußnoten
1↑ | Siehe die Antwort auf https://askubuntu.com/questions/941594/installing-cp210x-driver (die beiden modinfo-Anweisungen) |
---|---|
2↑ | Entwicklungsumgebung; Abkürzung IDE = integrated development environment; manchmal auch SDK = software development kit; Werkzeuge zur Softwareentwicklung |
3↑ | Anleitungen zur Installation der Dateien mit manuellen Downloads aus den Software-Archiven von github.com findet man noch häufig über die Suchmaschinen; diese entsprechen nicht mehr dem aktuellen Stand. Eine Anleitung nach diesem Verfahren gibt es z.B. von der c’t: Arduino IDE installieren und fit machen für ESP8266 und ESP32 – das empfohlene Verfahren über den Boardverwalter ist einfacher und weniger fehleranfällig. |
4↑ | Hinweis aus einem Posting von E.B. im Forum zum ESP32-Kurs beim HPI; die Foren sind nur für angemeldete Benutzer zugänglich; aus Datenschutzgründen habe ich den Namen durch die Initialen ersetzt. |
5↑ | „The internal temperature sensor unfortunately has a pretty big random offset that differs from chip to chip. It can be useful to keep track of temperature deltas, but you can’t really infer an absolute temperature from the value. We may have some more accurate ways to get the temperature, but at this moment they’re not implemented in esp-idf yet.” (Zitat aus dem Espressif-Forum) |
6↑ | Quelle: circuits4you.com/2019/01/01/esp32-internal-temperature-sensor-example Die Funktion heißt tatsächlich temprature_sens_read() , also ohne ein „e” in „temperature”. |
7↑ | Beim Schreiben des Beitrags Anfang 2019 bestand die deutsche Version hauptsächlich aus Lücken. Das scheint inzwischen (November 2020) nicht mehr der Fall zu sein. |
8↑ | Quelle: Posting von D.B. im Forum zum ESP32-Kurs beim HPI |
9↑ | Oft muss man wirklich nur die Nummern der GPIO-Pins anpassen und die richtige Datenübertragungsrate zum seriellen Monitor einstellen, um Programme, die für eines der vielen Arduino-Modelle geschrieben wurden, auf dem ESP32 zum Laufen zu bringen. |
Themenverwandte Beiträge
Auf Basis des Chips DS3231 werden günstige und sehr genaue RTC-Module (real time clock) zum Einsatz ...
Das ESP32 Pico Kit ist ein ESP32 Development Board mit deutlich kompakteren Abmessungen als die Stan...
Der TEMT6000 ist ein Lichtsensor, der seine Messwerte analog ausgibt. Er besteht im wesentlichen aus...
Der AM2320 ist ein Sensor zur Messung der Umgebungstemperatur und der relativen Luftfeuchtigkeit. Er...
#define LED 1
ist richtig. Mit “2” funktioniert es nicht.
Ich hab’s gerade nochmal mit meinem Board ausprobiert. Da muss es die “2” sein – so wie in dem Bsp. aus der verlinkten Quelle. “1” hat keinen Effekt.
Im Web habe ich auch keine Beispiele mit anderer Angabe als GPIO2 gefunden; siehe auch das Bild auf https://esphome.io/devices/nodemcu_esp32.html und den Text dort “GPIO2: This pin is connected to the blue LED on the board as seen in above picture. It also supports the touch pad binary sensor like some other pins.”
Aber wenn es Boards gibt, wo die LED mit Adresse 1 angesprochen wird, ist es gut, das zu wissen.
Mein Board sieht auch anders aus als das auf der verlinkten Seite.
Es gibt da wohl einige Varianten – mit 30 oder 38 Pins, mit Bohrungen in den Ecken oder nicht, mit anders geschalteter LED… auch wenn die alle unter der Bezeichnung “ESP-32 Dev Kit C” oder ähnlich verkauft werden. Den Hinweis zur LED habe ich oben im Text ergänzt. Danke dafür.
Das Beispiel mit der Core Temp hat einen fehler
temprature_sens_read
nicht
temperature_sens_read
Gruß, Mirko
Danke dir. Ich habe das Programm korrigiert.
(In alten Versionen des Beitrags war das Programm noch korrekt wiedergegeben – in einer Version von September 2019 ist der Fehler erstmals aufgetaucht. Ich kann leider nicht nachvollziehen, ob da irgendeine Auto-Korrektur zugeschlagen hat – ich selber versuche, den Programmcode nach dem Kopieren in einen Beitrag möglichst nicht manuell zu ändern; höchstens in den Kommentaren.) Wie auch immer: vielen Dank für deine Aufmerksamkeit und die Rückmeldung.