Table Of Contentc't
ESP32A�L�
- -�:=::::=
--------------�
ru n i�g�� sP e :::=:=:=:c =-=--1
G d
• Softwasrceh neeliln richten • Digital-Analog-sWtaenudelrenr
• Hardware-Funktvieornsetne hen• T ouch-Eingäanugsel esen
t ESP32i nsW LAN bringen • Hallsensonruetnz �n
I·
• PerB luetooDtaht ena ustausche• BnA SIC-Interpfrreetiesrc halten
!
2019
€24,95
=,....
0
PROJEKTE
-......
=ll"\
Mini-Webserver mit Temperaturmessung _-�o-
• ==�N
Bluetooth-Sensoren Funktionsgenerator -iill"\iiiöiiiiiiiii�
• • --Cl
=o
�0'
Piano mit Toucheingabe Türüberwachung =..-
• �
-·-·······------······----------·
www.make-magazin.de
Arduino-Projekte
für Fortgeschrittene:
Digital
als PDF
Auch erhältlich:
Teil 1 für Einsteiger
Hardware
�
pROJEKTE
�..:=:;:.��u:e.�er
·-
l'J
Heise www.make-magazin.de
Inhalt
4 Schnelleinstieg:
DasB estzew eieWre lten
10 Hardware:
Hardware-Interna
18 WLAN:
50
FlinkFeurn kwellenreiter
TürsenmsioCtrl oud-Anbindung
30 Bluetooth:
Durch die KombinatiOn des integrierten Hall�ensors mit externen
StrahlendblFauunekre nflug
Magneten wird der ESP32 zur Cloud-fähigen Fernüberwachung
44 Funktionsgenerator:
von Türen und Fenstern.
Signalerzeumgiutdn egm ESP2
50 Hall-Sensor:
Magnetfelmdeesrs en
56 Berührungssensoren:
Touchm e!
61 Impressum
62 Ba sie:
Wiei na lteZne iten
56
Wackelpudding-Piano
Die Touch-Eingänge des ESP32 machen den Anschluss teurer
Tasten überflüssig. Acht Puddingbecher dienen als Tastatur für
ESP32 ThermomE X + - D . das Jelly-Piano, dessen Töne der Mikrocontroller intern erzeugt.
... {9�1
»
Temperatur
""
40 i<·.
Luftfeuchti it
80
;
18 4 4
ESP3a2l WsL AN-Server Funktionsgenerator
Mit wenigen Zeilen Code wird der ESP32 zum Dank seiner zwei Digital-/A nalog-Konverter kann der ESP32 Sinus-,
·
Webserver, der per WLAN die aktuelle Temperatur Dreieck-, Sägezahn-und Rechtecksignale bis in den Kilohertz
und Luftfeuchtigkeit im Browser anzeigt. Bereich erzeugen, die sich für Experimente nutzen lassen.
3
Make: ESP32 special2019l
�-----1-----------
SCHNELLEINSTlEG
DasBeste
zw i r Welt n
e e e
Wer auf den ESP32 setzt, kommt nicht nur in den Genuss leistungsstarker Alles zum Artikel
und günstiger Hardware, sondern kann auch von der intuitiven Arduino I im Web unter .
Entwicklungsumgebung profitieren. • make-magazin.de/xrtn
von Maik Schmidt
Zur Programmierung des ESP32 und des Andocken Unter Linux kann man im Terminal prü
ESP8266 gibt es viele Alternativen. fen, ob das Board erkannt wurde. Dazu gibt
Neben der Entwicklung mittels C/C++ auf Bevor ein ESP32-Board mit der Arduino-IDE man, bevor das Board angeschlossen
Basis des IoT Development Framework verbunden wird, muss es an den PC oder den wurde1das Kommando L s I dev I t ty. *ein.
(ESP-IDF) gibt es auch die Möglichkeit, den Mac angeschlossen w�rden. Das erfolgt über Dann schli�ßt man das Board an und führt
Chip in Lua, JavaScript; MicroPython oder einen USB-Anschluss, der das Board mit Strom das Kommando erneut aus. Der Eintrag, der
gar BASIC zu programmieren. und neuer Software versorgen kann. Wie alle neu hinzugekommen ist, verweist auf das
Sonderlich einsteigerfreundlich sind USB-Geräte benötigen die Boards einen Be ESP32-Board. Unter Ubuntu kann das ein
diese Kandidaten aus verschiedenen Grün triebssystem-Treiber. ln dies.em Fall für den Eintrag wie z_um Beispiel ldevl_ttyltty
den alle. nicht und zum Erfolg des ESP32 CP21 02"Chip des Herstellers SiL ab, derdie se usso sein.
und des ESP8266 hat maßgeblich, beigetra rielle Kommunikation erledigt. Ähnlich läuft es unter macOS. Nur gibt
gen, dass sich beide mit der Arduino-IDE Windows 10, Linux und aktuelle Versio man hier das .Kommando LIS ldevlcu.*
programmieren lassen.Die hat sich ü�er die nen von macOS bringen den Treiber in ein, bevor und nachdem man das Board an-
letzten Jahre zu einemfast konkurrenzlosen der Regel bereits mit. Auf der Seite des Her · gestöpselt hat. Typischerweise heißt der
Werkzeug für Elektronik-Einsteiger entwi stellers (https://www.silabs.com/products/ neue Eintrag ldevlcu. SLAB_USBtoUART.
ckelt und erfreut sich auch unter ESP32- development-tools/software/usb-to-uart
Fans wachsender Beliebtheit, bridge-vcp-drivers) gibt es ihn bei Bedarf Her mit der IDE!
Prinzipiell kann die Arduino-IDE schon aber auch als kostenlosen Down Ioad.
lange mit einer ganzen Reihe unterschied Wenn man das ESP32-Board an einen Zur Installation der Arduiilo-IDE bietet
lieber Boards umgehen, aber von Haus Windows-Rechner mit dem richtigen Treiber die Webseite des Arduino-Projekts
aus erkennt sie die ESP32-Boards nicht. anschließt, sollte im Geräte-Manager ein (https:// www .a rd u i no.cc/ en/Mai n/Softwa re)
Das lässt sich aber mit wenigen Handgriffen neuer Eintrag unt� ,9em Punkt Anschlüsse er je nach Betriebssystem unterschiedliche
ändern. scheinen. Möglichkeiten. Für Windows steht zum Bei-
'
41
Make: ESP32 special 2019
spiel neben einem klassischen Setup auch � Gerä-tMeanager - D X
eine ZIP-Datei zur Verfügung. Die muss man
DateiA ktionA nsicht
lediglich auspacken, ohne die Anwendung ?
$J •IrEli�I6 1Iilli[J;11 lt X @
zLi installieren. Darüber hinaus ist die
�
IDE kostenlos im Microsoft App Store v DESKTOP-18D6BMQ
�
Akkus
(https:// www.microsoft.com/de-de/p/arduino > Ii
ide/9nblggh4rsd8) erhältlich. Für macOS und v iAn schlü(CsOsMe .& lPT)
SilicLoanbC sP 210xU SBt oU ART Brid(gCeO M3)
Linux stehen auf der Arduino-Seite ebenfalls aJ Audoi,V ideo undG amecontroelrl
> .
Installationspakete bereit. Audoieingngäeu nd- ausgänge
)
Der erste Start der Arduino-IDE ist nicht > = Computer
sonderlich spektakulär, denn die Software > li=i!,3 Druckwacrthelsaneng
DVD/OD-ROM-Laufwerke
wirkt etwas schlicht. Den oberen Bereich >
jjW Eingabege(Hruämtaen I nterfaDcevei ces)
>
dominieren eine Menüleiste mit sechs gro Grafikkarten
)
ßen Knöpfen und ein Text-Editor. Im unte "" IDEA TA!ATAPIC-onrtollre
>
ren Bereich gibt es einen Bereich für Ausga > _fl Laufwerke
Mäusuen da nderZee igegeräte
ben der IDE. >
Monitore
Die sechs Knöpfe bieten schnellen Zugriff > -
Netzwerkadapter .
auf die wichtigsten Kommandos. Ganz links > C Prozesens or '
> I
steht der Knopf zur Überprüfung des aktuel Softwa<egeräte
> �
len Programms. Wird er betätigt, werden die > Speicehrcont-lerlro
Quelltexte, die im aktuellen Fenster geöffnet > _ Systemgerä1 te
sind, übersetzt und auf Syntaxfehler über > �i TUa> .BtS-atCuro etnrno elrl
>
prüft. Etwaige Fehler werden im Text-Editor
gekennzeichnet und im unteren Ausgabe
Wurde der Treiber erfolgreich installiert, erscheint der ESP32 so im Geräte-Manager.
fenster vermerkt.
Eine ähnliche Funktion bietet der zweite
Knopf. Allerdings übersetzt er das aktuelle G
ske1i:ch_octt14a,l Arduin.o 1.,8J6 D X
Programm nicht nur, sondern überträgt es
auch auf das angeschlossene Mikrocontrol
ler-Board. Selbstverständlich nur, wenn das
Programm keine Syntaxfehler enthält und
das Board korrekt angeschlossen und konfi
guriert ist.
Weniger spektakulär sind die nächsten drei
Knöpfe. Mit ihnen kann man neue Program
me anlegen, bestehende Programme öffnen
2 I I put. your se�up oo·de hell!e, -co run ·onoe:
und das aktuelle Programm speichern.
3
Schließlich gibt es ganz rechts noch einen
4
vermeintlichen Außenseiter, der aber zu den
5
wichtigsten Funktionen der IDE gehört. Hin
l,o.op() {
ter ihm verbirgt sich nämlich ein serieller Mo 6 void
put.
nitor, mit dem man bequem mit dem ange 7 ll your main oo-de hell!e,, ;oo. run ll!ep.eat.edl·:!ir:
schlossenen Board kommunizieren kann. :::
Zwar gibt es einige gute und frei verfügbare 9
serielle Terminals, aber die Integration in die
IDEvereinfacht die tägliche Arbeit enorm.
Kein ESP32 weit und breit Die Arduino-IDE wirkt spartanisch, kann aber eine ganze Menge.
Bevor man ein erstes Programm schreiben
und aufs ESP32-Board laden kann, muss das
Board in der IDE konfiguriert werden. Die Ar
duino-IDE unterstütztbereits eine große An
zahl unterschiedlicher Boards, die im Menü
Werkzeuge> Board ausgevJählt werden kön
nen. Ein erster Blick sorgt erst einmal für Er Überprüfen
nüchterung, denn ein ESP32-Board ist hier
nirgendwo zu sehen. Offenbar unterstützt
die Standard-Installation längst nicht alle
möglichen Produkte. Öffnen
Viele Boards lassen sich mittlerweile über
den Boardverwalter im Menü Werkzeuge >
Boardverwalter installieren, aber der ESP32 Für die wichtigsten Kommandos gibt es große Knöpfe.
15
Make: ESP32 special2019
I
SCHNELLEINSTIEG I--------------
gehört per Voreinstellung noch nicht dazu. ohne Code-Änderungen hinzuzufügen. Voreinstellung die Liste der unterstützten
Um ihn zu integrieren, bedarf es ein wenig ·Diesmal achteten die Entwickler auf Erwei Boards in den offiziellen Arduino-Quellen,
Handarbeit. Dabei hilft es zu verstehen, wie terbarkeit, sodass sogar Boards unterstützt aber die enthalten zurzeit den ESP32 noch
die Unterstützung verschiedener Boards in werden können, die nicht vom Arduino nicht. Wie den meisten Paket-Managern
der Arduino-IDE funktioniert. Team stammen. kann man dem Boardverwalter aber zusätz
ln den Anfängen des Arduino-Projekts Davon machen mittlerweile einige Her liche Quellen für Board-KonfigurCJtionen
konnte niemand dessen Erfolg vorausahnen steller Gebrauch und die Firma Espressif, die hinzufügen.
und so verlief die Entwicklung zunächst den ESP32 entwickelt hat, bildet keine Aus Die zusätzlichen Quellen werden über
recht hemdsärmlig. Wichtig war in erster nahme. Auf Github (https://github.com/ das Menü Datei > Voreinstellungen festge
Linie, dass alles irgendwie funktionierte und espressif/arduino-esp32) hat sie zu diesem legt. Für den ESP32 fügt man hier unter
über etwaige Erweiterungen dachte nie Zweck das Projekt .,Arduino Core for ESP32" dem Punkt .,Zusätzliche Boardll'erwalter
mand nach. veröffentlicht. URLS" die URL https://dl.espressif.com/
Dieser Ansatz lief lange Zeit gut, stieß dl/package_esp32_index.json hinzu:Bei Be
aber an Grenzen, als nicht mehr alle Arduino-' Fremdgänger darf lassen sich auch weitere Quellen hinzu
Boards auf derselben Mikrocontroller fügen. Die werden jeweils durch ein Komma
Architektur basierten. Neben den AVR-Chips Der Code auf Github nützt nicht viel, so getrennt.
mussten plötzlich auch ARM-Geräte mit der lange er der Arduino-IDE nicht hinzugefügt Wenn man den Dialog für Voreinstellun
IDE funktionieren. wurde. Die einfachste Möglichkeit, Unter gen ohnehin schon geöffnet hat, ist es eine
Zu diesem Zeitpunkt wurde die IDE um stützung für neue Boards zu installieren, ist gute Idee, die Kontrollkästchen für die aus
die Möglichkeit erweitert, neue Hardware der Boardverwalter der IDE. Der sucht per führliche Ausgabe bei der Kompilierung
und beim Hochladen zu aktivieren. Das wird
sich im weiteren Verlauf noch als nützlich
erweisen.
0 Nachdem die neue URL hinzugefügt
wurde, erscheint bei der Suche nach dem
StrgT+ ESP32 im Boardverwalter ein neuer Eintrag.
Sketacrhc ivhieren
Ein Klick auf den Installieren-Knopf lädt die
Kodierkuonrgr igi&e ilreeuln a den
passende Konfiguration herunter und in
Bibliotvheerwkaelentn ... StrUgm+s chalt+l
stalliert sie sogleich.
Serie,lMloenri tor Strg+Umschalt+M
SeriePllotlteerr Strg+Usmchalt+L
Es lebt!
Der obligatorische Funktionstest für jedes
ArduinoAVR·Board• Mikrocontroller-Board ist es, eine LED zum
Boardinforml!tionen holen Blinken zu bringen. Eine solche Anwendung
Programm"eArV.R ImSkPl" l Arduino/GeUnnuoi·n o stiftet zwar nur wenig Sinn, stellt aber sicher,
ArduiDnuoe milanoovrDe i ecimila
Bootleadberre nnen dass die gesamte Entwicklungsumgebung
ArduiNnaon o
mcdi:�ie::2i 3er.:·.2 0lf Ardui/GneonuiMneog ao rM ega25 60 so funktioniert, wie sie soll.
t:; h.::tur;. Gua:d.alu·r:i Die meisten Boards verfügen zumindest
ArduiMneog aA DK
mcdi!ied 3 S�p 2•HC: über eine Power-LED. Die lässt sich in der
ty :clby Ue\o"ma:'l Arduilneoo nardo
Thu example cc<ie l.5 in theu bplic cdmain. AArrdduuii/LGnneoeoon nuoai rMnETHdioc ro uRengde lel aubcehtre nti cnhutr p dearn Sno, fwtwenanre d kaosn Btoroalrldie mreint
httr:: "-"',.. . ard.Ul:lC. cc '+::-n.'Tut�rial /Blink ArduiEsnpol ora Strom versorgt wird. Darüber hinaus spen
ArduiMnion i dieren viele Hersteller ihren Produkten
II the �etup functoin runso ncew heny ou press reseto r power the ArduiEntoh ernet mindestens eine weitere LED, die sich in ei
void setup( ) { ArduinoFio genen Programmen beliebig verwenden
II init ialized iqit al pin LEO_ BUIL!IN as an outpu.t ArduiBnTo lässt.
pinMode( LED_BOJLTIN,O UTPUT): LilyPAarddu inUoS B
Beim mitgelieferten Board ist das der Fall
· llyPiadA rduoi n
und Listing Blink.ino lässt die eingebaute
II the loop tunction runso ver and over againf orever ArduiPnrooo rP roM ini
Status-LED im Sekundentakt blinken.
void loop() { ArduiNnGoo ro lder
diqitalWrite(LED_BUIL!IN, HIGH); II turnt he LE.O on (RIGH is ArduiRnoobo tC ontrol Für einen ersten Test muss das Board der
ddeiqliaty(allWOrOiOt):e( LED_BUIL!NI, LOW): IIII wtauirt.n t fohre aLE sDe ocofntd b y making ArduiRnoob oMto tor Arduino-IDE bekannt gemacht werden. Dazu
delay(lOOO): II wait for a second ArduiGneom ma wählt man im Menü Werkzeuge> Board den
AdafrCuiitr cPulita yground Eintrag .,ESP32 Dev Module". Anschließend
ArduiYnUon M ini wählt man unter Werkzeuge > Port den seri
Arduilnnod us1t0r1i al ellen Port, über den das ESP32-Board mit
LinionOne dem Rechner verbunden ist. Schließlich
muss man noch die .,Flash Frequency" auf
80MHz und .,Upload Speed" auf 115200 set
zen. Diese und alle weiteren Parameter wer
den im folgenden noch ausführlich erklärt. ·
Ein Klick auf den Upload-Knopf übersetzt
Ohne Hilfsmittel unterstützt die Arduino-IDE den ESP32 nicht. das Programm und überträgt es anschlie�
61
Make: ESP32 special 2019
ßend aufs ESP32-Board. Die Übertragung VoreinsteHungen
:X
dauert ein paar Sekunden und den aktuellen
EinstneglelnNu etzwerk
Status zeigt das Ausgabefenster der Ardu
ino-IDE an. Auf manchen ESP32-Boards zei Sktdlboeok -Speicherort:
gen separate LEDs Aktivität auf der seriellen �lc:lj.J�sers�'lnai�kljlocum�entsl,tl�rdui==no ========� --�I I Durchsuchen
Schnittstelle an. Das heißt, diese LEDs blin Editor-Sprache: 1'-ys-t."-s_em._ De_faU___t � _____ __v I___,--( erfo--rdNee--ruts tavroAntr duino)
ken beim Senden und Empfangen von Editor-Textgröß�e:
Daten. Das mitgelieferte Board hat solche
Oberflächen-Zoomstufe·: !;21 Automatisch1 00 ; Yo (erforNdeeurstvt oaArnrduino) t
LEDs nicht. Nachdem das Programm übertra Thema: lstandardtherna v I (erforNdeeurstvt onaA rrtd uino)
gen wurde, sollte aber die blaue Status-LED
Aufuhrliehse Ausgwaäbher e0n Kdompifi:er ung 0 Hochladen
im Sekundentakt blinken. Compiler-Warnungen:! Keinve j ,
Das Blink-Programm ist einfach aufge '-
0 Zeilennaunmzmeerni gen
baut. Im Wesentlichen besteht es aus den
Funktionen setup() und Loop< ). Das ist 0 Code.faltuankgtivier en
eine Konvention, der alle Arduino-Program 0 Code,ndaechmHochlade n überprüfen
me gehorchen. Die s e tup <)-Funktion wird 0 ExternenE divtoerr wenden
einmalig aufgerufen, wenn der Mikrocon 0 KompiliertenK ern aw-eszwischsienspeivch ern
troller startet und ist der perfekte Ort, .um 0 Beim Starnta chUpda tes suchen
lnitialisierungen vorzunehmen. Die L oop < ) 0 Sketbeimche Speicher n au<fi neuee Dateierweiteruankgtuaisier en (.pde -> .ino)
Funktion enthält die tatsächliche Pro 0 Speichern beim überprüfen oder Hochladen
gramm-Logik und wird vom Mikrocontroller ZusätzlichBeo ardverwaltlehrt-uRI.stp:s ://dl.espressife.spc3o2mi /nddle/packagxe. json I �
in einer Endlosschleife immer wieder auf Mehr Voreinste11ungen können direkt in der Da�ei bearbeitet werden
gerufen. C: lj.Jsers'lnaik\Apap!)ta lj.ocal\flrduino lS'!Jreferences. txt
(nur bearbeiten, weM Arduino nicht läuft)
Vor den beiden Funktionen definiert das
Blink-Programm eine/,. Konstante namens
LED_PIN, welche die Nummer des Pins ent
hält, der mit der Status-LED des Boards ver Das Hinzufügen neuer Quellen für den Boardverwalter ist einfach.
bunden ist. Beim mitgelieferten Board ist
das der Pin mit der Nummer 2. Bei anderen
Boards ist es mit hoher Wahrscheinlichkeit e
Boardverwalter X
ein anderer Pin und manche Geräte haben
[Ale-
überhaupt keine Status.-LED.Im Zweifel hilft Typ
ein Blick ins Datenblatt des Herstellers. eIsnpd 3i'2e bsye EmPs pareskeetsifn Styhstaelmtse ne Boards:
,
Die setup()-Funktion nutzt die pin ESP32D evM oduleW,E MO.S LoLin32.
Mor@i nf�
Mode <>"Funktion, um den LED-Pin in den I
Ausgabemodus zu schalten. Die L oop <) Instaleren
Funktion versetzt anschließend mittels
digitaLWrite<> den Pin in den Zustand
HIGH. Dadurch liegen am Pin 3,3V an und
Den ESP32 kann man leicht über den Boardverwalter installieren.
die LED leuchtet. Die Funktion d e Lay <)
wartet 1000 Millisekunden und ein weiterer
Aufrufvon di gi ta LWri te<) mit dem Argu
ment LOW schaltet die LED wieder aus. Nach 0
einer weiteren Pause von einer Sekunde be B l i nk. i no
n
ginnt das Spiel von vorn, weil die Loop()
'
Funktion automatisch wieder aufgerufen 1 const uint8_t LED_PIN = 2;
2
wird. Damit blinkt die LED im Sekundentakt
n 3 void setup() {
Beim Code ist zu beachten, dass Funktio 4 pinMode(LED_PIN, OUTPUT);
nen, w[e zum Beispiel se t up <), p i nMode C) 5.
oder Loop<) durch die Arduino-Umgebung 6
' 7 void Loop() {
definiert werden. Das gilt auch für das Ver-
8 digitalWrite(LED_PIN� HIGH);
' halten, also zum Beispiel dafür, dass die 9 delay(1000);
setup<> -Funktion automatisch beim Start 10 digitaLWrite(LED_PIN, LOW);
11 delay(1000l;
des Mikrocontrollers aufgerufen wird. ln an
12
deren Entwicklungsumgebungen würde ein
Programm, das eine LED zum Blinken
bringt, gänzlich anders aussehen.
Leider ist clie Arduino-Umgebung nicht
vollständig kompatibel mit allen ESP32- den Arduino-Boards enthält. Für viele sich leicht umschiffen und für spezielle
Boards und wird es vermutlich auch nie sein. ESP32-Boards ist diese Konstante nicht qefi Boards sogar lösen. Es gibt aber auch schwer
Beispielsweise definiert die Umgebung eine niert und das wäre auch schwierig, weil der wiegendere Mängel. Beispielsweise ist die
Konstante namens LED_BUILTIN, die die Wert für unterschiedliche ESP32-Boards un Funktion .analogWri te() zurzeit noch nicht
Pin-Nummer der eingebauten LED auf terschiedlich sein kann. Dieses Problem lässt implementiert.
17
Make: ESP32 special2019
I
SCHNELLEINSTIEG
t--- ----------
schiedlichen Speichergrößen daher, son
dern variieren unter anderem auch in der
Strg+T Lese- und Schreibgeschwindigkeit. Daher
Sketch archWieren bietet die Arduino-IDE Einstellmöglichkeiten
Kodierung korrigieren & neu laden für die wichtigsten Flash-Parameter.
Bibliotheken verwalten... Strg+Umschaft+l .,Flash mode" legt die Geschwindigkeit
Serieller Monitor Strg+Umschaft+M des Flash fest. Genauer gesagt legt diese
Serieller Plotter Strg+Umschalt+l Option fest, über wie viele Leitungen und
Boardverwafter ... auf welche Art der ESP32 mit dem Flash per
SPI kommuniziert. Anders als etwa beim Ar
J.
Arduino Gemma duino ist der Flash-Speicher zur Aufnahme
Boardinformationen holen Adafruit Circuit Playground der Programme nicht im Mikrocontroller
Arduino YUn Mini Chip enthalten, sodass die Hersteller einen
Programmer: "AVRISP mkll"
Arduino lndustrial101 Extra-Chip extern anschließen und ihn an
Bootloade r brennen
by ScottF itzger��-a ------'-------------1 Linino One steuern müssen.
modifud 2 Sep 20lf Arduino Uno WiFi Der schnellste Modus zur Kommunika
by ArturGou adalupi
ESP32 Arduino
modifü:de S�::p 2016 tion mit dem externen Flash ist QIO (Quad
i)y Colby Nf::Yo1llan TIGO LoRa32-0LED Vl
1/0 Fast Read) und knapp dahinter kommt
ESP32 Dev Module
This examplec ode is in the publicd omain. QOUT (Quad Output Fast Read). An dritter
XinaBox CW02
http:J i.."Yll.-1. arduino.c c/en/Tutorial/lBink ESP32 Wrover Module Stelle steht DIO (Duall/0 Fast Read) und das
'l ESP32 Pico Kit Schlusslicht bildet DOUT (Dual Output Fast
SparkFun ESP32 Thing Read). Während die ersten beiden Verfahren
vI Io itdh see :=�teutp(u )p f{ unction runs once when you rpess reseto r power the u-blox NINA-WlO series (ESP32) vierSPI-Pins einsetzen, benötigen die letz
I I initilaize digitla pin LED_BUILTIN as an outpu't. WidoraAIR ten beiden nur zwei. Nicht alle Bausteine
pinMode(LED_BUILTIN, OUTPUT); Electronic SweetPeas-ESP320 kommen mit allen Verfahren zurecht, aber·
Nano32
das mitgelieferte Board versteht QIO.
I I the loop function urns over and over again forever LOUN 032 Die Option .,Flash frequency" spezifiziert
void loop() I LOUN D32PRO
diqitlaWrite(LED_BUILTIN, HIGH); //turn the LED on WEMO S LOLIN32 die Taktfrequenz für Zugriffe auf das Flash.
dela(ylOOO); Mit 40MHz sollten die meisten Bausteine ar
Oongsen Tech Pocket 32
"WeMos" WiFi&Biuetooth Battery beiten können, aber 80MHz können zu einer
ESPea32 deutlichen Beschleunigung führen. Auf Um
Noduino Quantum gebungen, die mit 80MHz nicht arbeiten
Node32s können, führt diese Einstellung schnell zu
Hornbill ESP32 Dev Abstürzen.
Hornbill ESP32 Minima
Schließlich definiert .,Flash size" die
Größe des externen Flash-Bausteins. Mögli
Nach der Installation stehen viele verschiedene ESP32-Boarils zur Verfügung.
che Größen für den ausgewählten Board
Typen sind 2MB oder 4MB (die Größen in
Klammern geben die Kapazität in Megabit
AutomatiFsocrhem atierungS trg+ Viele Stellschrauben an). Ein zu groß gewählter Wert würde·
T
Sketcahr chivieren dafür sorgen, dass der Bootloader des
Kodierkuonrgr igienreeuln a den Ganz egal, auf welche Weise die ESP32-Un ESP32 einen falschen Speicherbereich liest
&
Bibliothveerwkaelnt .e.n. StrgU+m schalt+) terstützung installiert wurde, am Ende kann · und das gespeicherte Programm würde
SerieMlolneirt or StrgU+m schaMl t+ man über das Menü Werkzeuge> Board aus nicht .starten.
SeriePllloetrt er StrgU+m schalLt + einer Fülle von ESP32-Boards wählen. Für Für einige Anwendungen reicht selbst
das mitgelieferte Board ist .,ESP32 Dev Mo das vergleichsweise üppige RAM auf dem
WiFi1F0i1r mwaUrped ater
dule" die richtige Wahl, weil dieser Board ESP32 nicht aus. Manche Boards haben
Boar"dE:S P3D2ev Modul"e Typ einige Freiheitsgrade lässt und somit an daher zusätzliches PSRAM (pseudostatisches
FlasMho de":Q IO" eine Vielzahl von ESP32-Boards angepasst RAM). das man mit der entsprechenden
FlasFhr equen"cByMO;H z" werden kann. Menüoption namens PSRAM aktivieren be
Bei den ESP32-Boards herrscht nämlich ziehungsweise deaktivieren kann.
FlasShi z"e4:M B( 32M)"b
ein ziemlicher Wildwuchs und so funktio Im Vergleich zum Hauptspeicher ist ein
PSRAM":D isab"l ed
niert die Konfiguration mit der Bezeichnung Flash oft recht groß und wie bei Festplatten
PartiStcihoenm e"S:t and"a rd
.,ESP32 Dev Module" prinzipiell für einen ist es sinnvoll, den Speicher zu partitionie
UploaSdp ee"d9:2 16"0 0
ganzen Zoo von Geräten. Wie schon zuvor ren, also aufzuteilen. Auf diese Weise kann
CorDee buLge ve"lVe:rb os"e
bemerkt, haben zum Beispiel nicht alle das Flash parallel mehrere Anwendungen
Port":C OM6"
Boards eine Status-LED und falls sie doch und die dazugehörigen Daten beherber
Boardinformahtolieonn. e n
eine haben, ist sie nicht immer mit demsel gen. Prinzipiell kann die Partitionierung auf
Programm"eAVrR.I SmPk l"l ben Pin verbunden. Gravierendere Unter fast beliebige Weise erfolgen, aber die Ar
Boot)oabdreern nen schiede gibt es in anderen Bereichen und so duino-IDE bietet unter der Option .,Partition
finden sich in unterschiedlichen Produkten Scheme" die gängigsten Modelle an. Für
Für viele ESP32-Boards kennt das Werkzeuge verschiedene Ausprägungen von Flash erste Experimente ist der Wert .,Standard"
Menü viele Einstellungen. Speichern. Die kommen nicht nur mit unter- sinnvoll.
81 Make: ESP32 special2019
----------- ----------------------------------------
Wenig überraschend definiert die Option (_)
"
"Upload Speed , mit welcher Geschwindig
keit Daten von der Arduino-IDE zum Board 0 LogBe i spi e l • 1 n o
übertragen werden. Nicht alle Boards kom
1 void setup() {
men mit allen Übertragungsgeschwindig 2 Serial.begin(115200L);
keiten klar und es empfiehlt sich, mit 0 3 }
115D.2ie0 0le Btzatued O zput bioeng iinstn "eCno. re Debug Level" 0 465 voiLdo g_Loeo(.p"E(r)r o{ r");
und die steuert die Geschwätzigkeit von 0 7 Log_w("Warning");
Log-Ausgaben auf dem Board. Sowohl wäh 8 Log_i("Info");
()
9 Log_d("Debug");
rend der Entwicklung als auch während des
10 Log_v("Verbose"l;t
Betriebs einer Anwendung helfen Log-Aus () 11 delay(1000);
gaben auf der seriellen Schnittstelle. Mit 12
n
ihrer Hilfe lässt sich der aktuelle Zustand des
Systems ermitteln oder ein Fehler einkrei
Fazit
sen. Allerdings haben Log-Ausgaben ihren sehe Code-Komplettierung oder einen
Preis und so ist es sinnvoll, während des re Debugger.
gulären Betriebs deutlich weniger Log-Aus Die Arduino-IDE ist längst nicht das einzige Trotzdem-otlergerade deswegen-ist sie
gaben über die serielle Schnittstelle zu sen Werkzeug, mit dem Entwickler Software für für erste Experimente und kleinere Projekte
den, als zum Beispiel während einer Debug den ESP32 erstellen können und auf den optimal. Sie überfrachtet und überfordert den
ging-Sitzung. ersten Blick hat sie einige Unzulänglichkei Einsteiger nicht mit Funktionen, die sich erst
Zu diesem Zweck können Log-Ausgaben ten. Sie bietet weder Zugang zu allen origi mit mehr Erfahrung als nützlich erweisen. Fer
mit einer Dringlichkeitsstufe (Level) versehen nären ESP32-Funktionen noch zu allen des ner nimmt sie ihren Anwendern genau die
werden. Auf dem ESP32 gibt es -nach Dring Arduino-Universums. Darüber hinaus hat Handgriffe ab, die bei Anfängern erfahrungs
lichkeit geordnet -die Stufen Error (Fehler). sie auch keine Features wie eine automati- gemäß zu viel Frustration führen. -dab
Warn (Warnung), Info (lnform.ation). Debug
(Fehlersuche) und Verbose (wortreich). Listing
$)COM6 -
LogBeispiel.ino zeigt die Verwendung der da 0 X
zugehörigen Log-Funktionen. I II Senden I
Die se t up <)-Funktion startet die Kom ....
[il][L ogExamp1eo.:i7n] 1oop(]: Warning
munikation auf der seriellen Schnittstelle [E][L ogExamp1e.ino:6] 1oop(]E:r ror
mit einer Geschwindigkeit von 115.200 Baud. [il][ LogExamp1e.ino:71]o op(]: Warning .
[E][L ogExamp1e.o:i6n] 1oop(:] Error
in der LoopO-Funktion erzeugen dann [il][ LogExamp1e.ino:7]1 oop(]: Warning
L og_e <), L og_w <) und so weiter im Sekun [E][L ogExamp1oe:.6i]n 1oop(]E:r ror
[il{]L ogExamp1e.oi:n7]1 oop(]:W arning
dentakt Nachrichten der verschiedenen Stu
[EI L[ogExamp1ei.no :6 ] 1oop(]E:r ror
fen. Per Voreinstellung werden allerdings [il][ LogExamp1e.i:7n]o 1oop(]W:a rning
[E][ LogExamp1e.in1oo:o6p]( ]E:r ror
keine Log-Ausgaben auf die serielle Schnitt
[il][ LogExampe1.ino:7]1 oop(]: Warning
stelle gesendet. Davon kann man sich über [E][L ogExamp1eo.:i6n] 1oop(]E:r ror
zeugen, indem man das Programm aufs [il][ LogExamp1e.io:n7] 1oop(:] Warning
[E][L ogExamp1ien.o:6] 1oop(]E:r ror
Board lädt, den seriellen Monitor startet [il][L ogExamp1e.oi:n7] 1oop(]W:ar ning
und die Übertragungsgeschwindigkeit auf V
115.200 Baud setzt. Die Ausgabe im seriellen 0 Autoscroll D Zeitstempel anzeigen I Neue Zeile v 11115200 Baud "II Ausgabe Kisdlen I
Monitor bleibt leer.
Setzt man die Option "Core Debug So werden nur Warnungen und Fehler ausgegeben.
"
Level hingegen auf Warn und schiebt das
Programm erneut aufs Board, werden die
$)COM6 -
Ausgaben der Stufen Fehler und Warnung 0 X
kontinuierlich ausgegeben. Neben dem I I�
Nachrichtentext enthält jede Zeile eine Ab ....
[E][L ogBeispienlo.:6i] 1oop(]: Error
"
kürzung der Stufe (in diesem Fall "E und [il][L ogBeispiienol:.7 ] loop( ): Warning
"W"). die Nummer der Programmzeile, in [I][L ogBeispieol:.8]i n1oop(]I:n-f o
[D][ LogBeispiel.in1oo:o9p](: ] Debug
der die Ausgabe erzeugt wurde und den [V][L ogBeispiineoL: 1 0]1 oop(]: Verbose
Namen der Funktion, aus der die Ausgabe [E][ LogBeispieo:l6.]i 1noop(]E:r ror
[W][L ogBeispiel.]i n1ooo:p7(:] Warning
stammt. Das sind wertvolle Informationen
[I][L ogBeiopie1o.:i8]n 1oop(]I:n fo
bei einer Fehlersuche. [D][ LoBgeiopie.il no9:] 1oop(]D:e buq
" [V][L ogBeiopieilno.: 1 0]l oo(p) : Verbose
Setzt man schließlich "Core Debug Level [E][L ogBeispiienoL:6 ] 1oop(]: ErZ:.or
auf Verbose, werden nach einem erneuten [il][L ogBeispiienol:.7 ] loo(p) : Warning
Upload alle Meldungen ausgegeben. [II [ LogBeiopieilno.: 8 ] 1oop(]: Info r
[D][ LogBsepiiel.in:o9]1 oop(]D:e buq
Festzuhalten ist noch, dassalldiese Para [V)[ LogBeiopiel.inlooo:p(1 )0: ] V erbose
meter nicht für jedes ESP32-Board konfigu
V
riert werden können. Die Einträge im Werk 0 Autoscroll 0 Zeitstempel anzeigen I Neue Zeile v I ll!SZOO Baud. vll Ausgabe löschen I
zeuge-Menü variieren daher von Board zu
Board. Hier sind alle Log-Ausgaben zu sehen.
19
Make: ESP32 special2019
��--------------
-------
HARDWARE --------
Hardware-Interna
Für ein paar Euros bietet der ESP32 Konnektivität und
Rechenleistung satt. Auf dem Chip gibt es aber noch viel mehr
Nützliches zu entdecken und wer das Maximum aus dem ESP32
herausholen möchte, sollte alle seine Eigenschaften kennen.
von Maik Schmidt
Alles zum Artikel
I im Web unter
• make-magazin.de/xnxr