S P E::: : : :C - 1: Projekte
S P E::: : : :C - 1: Projekte
E S P 3 2
- �g ��--- - - --- s P e :::=:=:=:c =-=--1
-� :=::: := A�L�
G ru n d i
�
2019
PROJEKTE
€24,95
=,....
0
- ......
=ll"\
_o-
-�
-·-·······----··-
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
·-
30
Flinker Funkwellenreiter
Bluetooth:
50 Türsensor mit Cloud-Anbindung
Durch die KombinatiOn des integrierten Hall�ensors mit externen
Strahlendblauer Funkenflug
44 Funktionsgenerator:
Magneten wird der ESP32 zur Cloud-fähigen Fernüberwachung
von Türen und Fenstern.
Signalerzeugung mit dem ESP2
50 Hall-Sensor:
Magnetfelder messen
56 Berührungssensoren:
Touch me!
61 Impressum
62 Ba sie:
Wie in alten Zeiten
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
Andocken U nte r
Z u r P rog ra m mieru n g des E S P 3 2 u nd des
ESP8266 gibt es vie l e A l t e r n a tive n .
N e b e n d e r E ntwick l u n g mitt e l s C/C++ a u f Bevor ei n ESP32-Board mit der Ard uino-I D E man,
Li n ux ka n n m a n i m Termi n a l p r ü
fen , o b d a s B o a rd e r ka n n t w u rde. Dazu gibt
bevo r das B o a rd angeschlossen
Basis d e s I oT Deve l o p m e n t F r a m ew o r k verbu nden wird, muss e s a n den P C ode r den w u rde1d a s Kom m a nd o L s I d e v I t t y . * ei n.
(ESP-I D F) g i b t es a uc h d i e M ö g lich keit, den Mac a ngesc h l ossen w� rden. Das e rfolgt ü be r D a n n s c h li� ßt m a n das B o a rd a n u n d fü h rt
Chip i n L u a , J a v a S c ri p t; Mic r o Pyt h o n ode r einen U S B-Ansc h l u ss, der d a s Board mit Strom d a s Ko m m a nd o e r n e u t a u s . Der Ei ntrag, d e r
g a r BAS I C zu prog ra m mi e r e n . u nd neuer Softwa re ve rsorgen ka n n . Wie a l l e n e u hi n zu g e ko m m e n i s t , ve rweist a u f d a s
Sonderlich ei n stei g e rfre undlich sind U S B-Geräte ben ötigen die Boards ein e n Be E S P 3 2- B o a rd . U nt e r U b u nt u ka n n d a s ei n
diese Ka ndidaten a u s verschiedene n G r ün triebssystem-Treiber. ln dies. e m F a l l fü r den Ei n t r a g wie z_ u m B ei s pi e l l d e v l_t ty l t t y
den a l l e. nic ht u nd zum E rfo l g des E S P 3 2 CP2102"Chip des H e rstel lers Si L a b, derdie se usso sei n .
u nd d e s E SP8266 hat m a ß g e b lich, beig etra rielle K o m m u ni kation erledigt. Ä h n li c h lä u ft e s u n ter m a cO S . N ur gibt
g e n , dass sic h beide mit de r A rdui n o - I DE Wi ndows 10, Li n ux u nd a kt ue l l e V e rsio man hier d a s . Ko m m a nd o LIS l d e v l c u.*
p rogra m mieren l a s s e n .Die h a t sich ü�e r die n e n vo n m a c O S b ri n g e n d e n Trei b e r i n ei n , bevor u nd n a c hdem man d a s Boa rd a n-
l etzten J a h re zu ei n e m fa st k o n ku rrenzlosen d e r Regel bereits mit. A u f d e r S eite d e s Her · g e s tö p s e l t hat. Typi s c h e rwei s e h ei ß t der
Werkze u g fü r E l e kt r o n i k- Ei n stei g e r e n twi ste l l e rs (https://www. si l a bs.co m/prod u cts/ n e u e Ei ntrag l d e v l c u. S L A B_ U S B t o U A R T .
c ke l t u nd e rfre ut sic h a u c h u nter E S P 3 2 - dev e lo p m e nt-to o l s/s oftwa re/ u s b-to - u a rt
F a n s wa c h sender Beliebtheit, b ridge-vcp-d rivers) gi bt es i h n bei B eda rf Her mit der IDE!
P ri n zi pi e l l ka n n die A rd ui n o - I D E s c h o n a be r a u c h a l s koste n l os e n Down I oad.
lange mit ei n e r g a nzen Rei h e u ntersc hied Wenn man das ESP32-Board an ein e n Zur I n sta l lation der A rduiilo- I D E bietet
lieber B o a rd s u m g e h e n , aber v o n H a u s Windows-Rec h n e r mit dem richtigen Trei be r die Webseite des A rduino-P rojekts
a u s e r ke n n t sie die E S P 3 2- B o a rd s nicht. a n s c h ließt, sol lte i m Geräte-Ma n a g e r ein ( https://www .a rd ui n o.cc/e n/Main/Softwa re)
Das lässt sic h a be r mit weni g e n H a ndg riffen neuer Eintrag u nt� ,9em P u n kt Ansch l ü sse er je nach Betriebssystem u nterschied li c h e
ändern. scheinen. Möglich keiten. F ü r Windows s t e h t zum Bei-
'
�
zLi i n s ta l lieren. D a r ü ber hi n a u s i s t die
� Akkus
v
IDE koste n l o s im Microsoft App Sto re DESKTOP- 18D6BMQ
fl
ren Berei c h gibt es ei n e n Bereic h fü r A u s g a > _ Laufwerke
C Prozessoren
> Netzwerkadapter
'
I Softwa<egeräte
auf die wichtig sten Kom m a ndos. G a n z lin ks >
� Speichercontro-ller
steht der Knopf zur Ü berprüfu n g des a kt u e l >
>
len Prog ra m m s . Wird er betätigt, werden die
> _ Systemgeräte 1
Q u e l l texte, die im a kt u e l l e n Fenster g eöffnet
> � Ta>taturen
sind, ü be rsetzt u nd auf Syntaxfe h l e r ü be r > i U.SB-Controller
prüft. Etwaige F e h l e r werden im Text-Editor
g e ke n n zei c h n et u nd im u nteren A u s g a be
Wurde der Treiber erfolgreich installiert, erscheint der ESP32 so im Geräte-Manager.
fen ster vermerkt.
Ei ne ä h n li c h e F u n ktio n bietet der zweite
Kei n ESP32 weit und b reit Die Arduino-IDE wirkt spartanisch, kann aber eine ganze Menge.
Es lebt!
D e r o b lig atori s c h e F u n kt i o n stest fü r jedes
ArduinoAVR·Board• M i krocontro l l e r- B o a rd ist es, ei n e L E D zum
Boardinforml!tionen holen
B li n ke n zu b ri n g e n . Ei n e solche Anwend u n g
Arduino/Genuino Uno·
Programmer. "AVRISP mkll" stiftet zwa r n u r wenig Si n n , ste l l t a ber sicher,
Arduino Duemilanove or Diecimila
Bootleader brennen dass d i e gesa mte E n twickl u n g sumg e b u n g
Arduino Nano
mcdi:�ie::i 2 3er.:· .20lf so fu n ktio n i e rt, wie sie s o l l .
Arduino/Genuino Mega or Mega2560
t :; h.:: t ur;. Gua:d.alur:·i
D i e m eisten B o a rd s verfü g e n zu m i ndest
mcdi!ied 3 S�p 2•HC: Arduino Mega ADK
[Ale-
ei n a nderer Pi n u nd m a n c h e G e räte h a b e n
Typ
ü berha u pt kei n e Sta t u s.- L E D . I m Zweife l hilft
esp3'2 by Espressif Systems
ei n Blick i n s Date n b l att des He rste l l e rs . In diesem Pak et enthaltene Boards:
,
D i e s e t u p ()- F u n ktio n n utzt d i e p i n ESP32 Dev Module, WEMOS . LoLin32.
I
Mor@ inf�
M o d e <>" F u n ktio n , u m d e n L E D - Pi n in d e n
Instaleren
A u s g a be m od u s z u s c h a l te n . D i e L o o p <)
F u n ktio n versetzt a n s c h li e ß e nd mitte l s
d i g i t a L W r i t e < > d e n Pi n i n d e n Z us ta nd
H I G H . Dad u rc h l i e g e n am Pi n 3 , 3 V an und
Den ESP32 kann man leicht über den Boardverwalter instal lieren.
die LED l e u c htet. Die F u n ktio n d e L a y <)
wa rtet 1 000 Mi l liseku nden u nd ei n weiterer
0
Aufruf von d i g i ta L W r i t e < ) mit dem A r g u
ment L O W sc h a ltet die L E D wied e r a u s . N a c h
ei n e r weite ren P a u s e von ei n e r Seku nde be n B l i nk. i n o
gi n nt das S pi e l von vorn, wei l die L o o p ( )
'
F u n ktio n a u tom a ti s c h wied e r a u fg e r u fe n 1 c o n s t u i n t 8_t L E D_P I N = 2 ;
wi rd . Da mit b li n kt die L E D i m Seku ndenta kt 2
n 3 v o id s e t u p ( ) {
Beim Code ist zu beachten, dass F u n ktio
4 p i n M o d e ( L E D_ P I N , OU T P U T ) ;
n e n , w[e z u m Beispiel s e t u p <), p i n M o d e C) 5.
ode r L o o p < ) d u rc h die A rd ui n o - U m g e b u n g 6
' 7 voi d Loop ( ) {
defi niert werd e n . Das gi lt a u c h fü r das V e r-
8 d i g i ta l W r i t e ( L E D_P I N� H I G H ) ;
' h a l t e n , a l so z u m B ei spi e l dafü r, d a s s die 9 d e l a y ( 1 000 ) ;
s e t u p <>- F u n kti o n a u t o m a ti sc h bei m Sta rt 10 d i g i t a L W r i t e ( L E D_P I N , L OW ) ;
des Mikrocontro l l e rs a ufg e rufe n wi rd . ln a n 11 d e la y ( 1 0 0 0 l ;
12
deren Entwickl u n g s u m g e b u n g e n w ü rde ei n
P rog ra m m , d a s ei n e L ED z u m B li n ke n
b ri n gt, gänzlich a nders a u ss e h e n .
Leid e r i s t cl i e A rd ui n o - U m g e b u n g nic h t
vo l l stä ndig kom pati b e l m i t a l l e n E S P 3 2 - den A rd ui n o-B o a rd s e n t hä l t . Für vie le sic h l eicht u m sc hiffe n u nd fü r s pezi e l l e
Boa rds u nd wird es verm utlich a u c h n i e sei n . ESP32-Boards ist diese Konstante nicht qefi Boards sog a r lösen. Es gibt a ber auch schwer
Beispiel sweise definiert die U m g e b u n g ei n e niert u nd das wä re a u c h schwierig, wei l der wiegendere Mä n g e l . Bei s pi e l sweise ist die
K o n s t a n t e n a m e n s L E D _BU I L T I N , d i e die Wert fü r u n te rschiedliche ESP32-Boards u n F u n ktio n . a n a l o g W r i t e ( ) zu rzeit noch nicht
Pi n- N u m m e r der ei n g e ba u t e n LED auf terschiedlich sein ka n n . Dieses P r o b l em lässt i m p l e m e ntiert.
s c h i ed li c h e n Speic h e r g r ö ß e n d a h e r, s o n
d e r n va riieren u n ter a nderem a u c h i n d e r
Strg+T L e s e - u nd S c h re i b g e s c h w i nd i g keit. D a h e r
Sketch archWieren bietet d i e A rd uino-I D E Ei n ste l l m ö g li c h keite n
Kodierung korrigieren & neu laden fü r d i e wic htigsten F l a s h - P a ra m eter.
Bibliotheken verwalten... Strg+Umschaft+l ., F l a s h m ode" legt die G e s c h wi ndig keit
Serieller Monitor Strg+Umschaft+M
des F l a s h fest. G e n a u e r g e s a g t l e g t diese
Serieller Plotter Strg+Umschalt+l
O ptio n fest, ü be r wie vie l e Lei t u n g e n u nd
Boardverwafter ... a u f w e l c h e A rt der E S P 3 2 m i t dem F l a s h per
J.
S P I komm u n iziert. Anders als etwa beim Ar
Arduino Gemma d u i n o ist der F l a s h - S p e i c h e r z u r Aufn a h m e
Boardinformationen holen Adafruit Circuit Playground d e r P rog ra m m e n i c h t i m M i krocontro l l e r
Arduino YUn Mini C h i p entha lten, sodass die H e rste l le r ei n e n
Programmer: "AVRISP mkll"
Bootloader brennen
Arduino lndustrial101
Extra-Chip exte r n a n s c h li e ß e n u nd i h n a n
by Scott Fitzgera ��-----'---1 Linino One
ste uern m ü ss e n .
modifud 2 Sep 20lf Arduino Uno WiFi
by Arturo Guadalupi D e r sc h n e l l ste M od u s z u r Ko m m u nika
e S�::p 2016
ESP32 Arduino
modifü:d tio n mit dem exte r n e n F l a s h ist Q I O (Quad
i)y Colby Nf::Yo1llan TIGO LoRa32-0LED Vl
1/0 Fast Read) u nd k n a p p d a hinter kom mt
ESP32 Dev Module
T h is example code is in the public domain.
XinaBox CW02
QOUT ( Q u ad O u t p u t F a st Read) . An d ritter
Ste l l e steht DIO ( D u a ll/0 Fast Read) u nd das
http: Ji.."Yll.-1. arduino. cc/en/Tutorial/Blink ESP32 Wrover Module
void setup() {
u-blox NINA-WlO series (ESP32) vier S P I - Pi n s ei n setze n, benöti g e n d i e l etz
II initiali ze digital pin LED_BUILTIN as an outpu't. Widora AIR ten beid e n n u r zwe i . Nic h t a l l e B a u stei n e
pinMode(LED_BUILTIN , OUTPUT); Electronic SweetPeas - ESP320
ko m m e n m i t a l l e n V e rfa h re n zu recht, a be r·
Nano32
das m it g e lieferte B o a rd versteht Q I O .
II the loop function runs over and over again forever LOUN 032
void loop() I
D i e O ptio n ., F l a s h freq u e n cy" spezifiziert
LOUN D32 PRO
diqitalWrite(LED_BUILTIN , HIGH); //turn the LED on
WEMOS LOLIN32
die Ta ktfre q u e n z fü r Z u g riffe a uf das F l a s h .
delay(lOOO);
Oongsen Tech Pocket 32 Mit 40 M H z sol lten d i e m eisten B a u stei n e a r
"WeMos" WiFi&Biuetooth Battery beiten kö n n e n , a be r 80MHz kö n n e n zu ei n e r
ESPea32 deutlic h e n Besc h l e u n i g u n g fü h re n . Auf U m
Noduino Quantum g e b u n g e n , d i e m i t 8 0 M H z nic h t a rbeiten
Node32s kö n n e n , fü h rt diese E i n ste l l u n g sch n e l l zu
Hornbill ESP32 Dev
A b s t ü rze n .
Hornbill ESP32 Minima
S c h l i e ß l i c h defi n i e rt ., F l a s h s i z e " die
G rö ß e des exte r n e n F l a s h - B a u stei n s . M ö g l i
Nach der Installation stehen viele verschiedene ESP32-Boarils zur Verfügung.
c h e G rö ß e n fü r d e n a u s g ewä h l ten Boa rd
Typ e n si nd 2 M B ode r 4MB (di e G rö ß e n i n
K l a m m e r n g e b e n die Kapazität i n M e g a b i t
Strg+T a n ) . E i n zu g ro ß g e wä h l ter W e r t w ü rde·
Automatische Formatierung
Viele Ste l l sch ra u ben
Sketch archivieren dafü r s o r g e n , d a s s d e r Bootloader des
Kodierung korrigieren & neu laden G a n z e g a l , a u f w e l c h e Weise d i e E S P 3 2 - U n ESP32 einen fa l s c h e n Spei c h e rbe reich l i est
Bibliotheken verwalten... Strg+ Umschalt+) terstützu n g i n sta l l i ert w u rde, a m E n d e ka n n · u nd das g e s p ei c h e rte P rog ra m m w ü rde
Serieller Monitor Strg+ Umschalt+ M m a n ü be r d a s M e n ü Werkze u g e > B o a rd a u s nicht .sta rte n .
Serieller Plotter Strg+ Umschalt+ L ei n e r F ü l l e v o n E S P 3 2 - B o a rd s wä h l e n . F ü r F ü r e i ni g e A n w e nd u n g e n reicht sel bst
d a s mitge lieferte Board i st ., E S P 3 2 Dev Mo d a s verg l ei c h sweise ü p pige RAM a u f dem
WiFi101 Firmware Updater
d u l e " die ric h t ige Wa h l , wei l dieser B o a rd ESP32 nicht aus. M a n c h e B o a rd s haben
Board: "ESP32 Dev Module" Typ e i nige F r e i h eitsg rade lässt u nd s o m i t an d a h e r zusätzl iches PSRAM (pseudostatisches
Flash Mode: "QIO" ei n e V i e l za h l v o n E S P 3 2 - B o a rd s a n g e p a sst RAM). d a s man mit d e r e n t s p rec h e nden
Flash Frequency; "BOMHz" werden ka n n . M e n ü option namens PSRAM a ktivieren be
Flash Size: "4MB (32Mb)" B e i d e n E S P 3 2 - B o a rds h e r rs cht nä m li c h zie h u n g sweise dea ktivieren ka n n .
PSRAM: "Disabled"
e i n z i e m l i c h e r Wi ldwu c h s u nd so fu n ktio I m V e rg l e i c h z u m H a u pts p e i c h e r i s t ei n
We n i g ü be r ra s c h e nd defi n i e rt d i e Option
"
(_)
0
" U p l oad Speed , m it w e l c h e r Geschwi nd i g
keit Daten v o n der A rd u i no-I D E z u m Boa rd Lo g B e i s p i e l • 1 no
ü b e rtra g e n werd e n . N i cht a l l e Boa rds ko m
1 v oid s e tup() {
men mit a l l e n Ü bertra g u n g s g e s c h w i nd i g
0
2 S e r ia l . b e g i n ( 1 1 5 2 0 0 L ) ;
keiten kla r u nd es e m pfi e h l t s i c h , mit 3 }
0 5 void L o o.p ( ) {
1 1 5 .200 Ba ud zu beg i n n e n . 4
Die l etzte O p t i o n ist " Core Debug Level "
6
0
L o g_e ( " E r r o r " ) ;
u nd d i e ste u e rt d i e G e s c h wätzi g keit v o n 7 L o g_w ( " W a r n i n g " ) ;
()
Log-Au sga ben a u f dem Boa rd. Sowo h l wä h 8 L o g_ i ( " I n f o " ) ;
rend der Entwickl u n g a l s a u c h wä h re nd des 9 L o g_d ( " D e b u g " ) ;
()
10 L o g_v ( " V e r b o s e " l ; t
Betriebs e i n e r Anwend u n g h e l fe n Log-A u s 11 d e l a y ( 1 000 ) ;
ga ben a u f d e r s e ri e l l e n S c h n ittste l l e . M i t 12
n
i h re r H i lfe lässt s i c h der a kt u e l l e Z u stand des
Syst e m s e r m itte l n ode r ein F e h l e r e i n krei
sen. A l l e rd i n g s ha ben Log-Ausgaben i h re n Fazit seh e Code-Ko m p l etti e r u n g ode r einen
P r e i s u nd so ist es s i n nv o l l , wä hrend des re D e b u g g e r.
g u lären Betriebs deutlich w e n i g e r Log -Aus D i e A rd u i no-I D E ist lä n g st n i c h t das e i n z i g e Trotzdem - otle r gerade deswegen - ist sie
ga ben ü be r d i e seri e l l e S c h n ittste l l e zu s e n Werkzeu g , m i t d e m E ntwic k l e r Softwa re fü r fü r e rste Ex peri m ente u nd kleine re P rojekte
den, a l s z u m B e i s p i e l wä h rend e i n e r D e b u g d e n E SP 32 e rste l l e n kö n n e n u nd a u f d en optima l . Sie ü be rfrachtet u nd ü be rfordert den
g i n g -Sitzu n g . e rsten B l i c k hat s i e e i n i g e U nz u l ä n gl i c h ke i E i n steiger nicht mit F u n ktionen, die sich erst
Zu d i e s e m Zweck kö n n e n Log-Ausgaben t e n . S i e b i etet wed e r Z u ga n g zu a l l e n o r i g i mit m e h r E rfahrung a l s n ützl ich erweisen. Fer
mit einer Dri n g l i c h keitsstufe (Level) versehen nären E S P 3 2 - F u n kt i o n e n n o c h zu a l l e n des n e r n i m mt sie i h re n Anwendern genau die
werden. Auf dem ESP32 g i bt es - nach Dring A rd u i n o - U n iv e rs u m s . Da r ü b e r h i na u s hat Handg riffe ab, die bei Anfängern erfahrungs
l i c h keit geord n et - die Stufe n Error ( F e h le r). s i e auch kei n e F eatu res w i e eine a utomati- gemäß zu viel Frustration fü h ren. -dab
Wa rn (Wa r n u n g ) , I nfo ( l nfo rm.a tion). Debug
$)COM6 -
(Fehlersuche) u nd Verbose (wortreich). Listi n g
0 X
LogBeispie l . i n o zeigt die Verwend u ng der da
zugehörigen Log-F u n ktionen. I II Senden I
D i e se t up <)- F u n kt i o n sta rtet d i e Kom [il] [LogExamp1e.ino:7] 1oop(]: Warning
....
.
m u n i ka t i o n a u f d e r s e ri e l l e n S c h n ittste l l e [E] [LogExamp1e.ino:6] 1oop(]: Error
1 1 5 .200 Ba ud setzt. D i e A u sgabe i m seri e l l e n 0 Autoscroll D Zeitstempel anzeigen I Neue Zeile v 11115200 Baud "II Ausgabe Kisdlen
I
Mon itor b l e i bt leer.
Setzt ma n d i e O p t i o n " C o re D e b u g So werden nur Warnungen und Fehler ausgegeben.
Level " h i n g e g e n a u f Wa rn u nd s c h i ebt das
$)COM6 -
P r o g ra m m e r n e u t a u fs Boa rd, werd e n d i e
0 X
A u sga b e n d e r Stufe n F e h l e r u nd Wa r n u n g
konti n u i e r l i c h a u sg e g e b e n . Neben dem I I�
Nachrichte ntext enthält j ede Z e i l e e i n e A b [E] [LogBeispiel.ino : 6] 1oop(] : Error
....
kü rzu n g d e r Stufe ( i n d i e s e m Fa l l " E " u nd [il] [LogBeispiel.ino:7] loop() : Warning
"
" W ) . d i e N u m m e r d e r P rog ra m m ze i l e, i n
[I] [LogBeispiel.ino:8] 1oop(]: In-fo
[D] [LogBeispiel.ino:9] 1oop(]: Debug
d e r d i e A u sga be e rze u g t w u rd e u nd d e n [V] [LogBeispieL ino: 10] 1oop(]: Verbose
riert werden kö n n en . D i e E i nt rä g e im Werk 0 Autoscroll 0 Zeitstempel anzeigen INeue Zeile v I ll!SZOO Baud. vll Ausgabe löschen
I
zeuge- M e n ü va r i i e re n da h e r v o n Boa rd zu
Boa rd. Hier sind alle Log-Ausgaben zu sehen.
Hardware-Interna
Fü r ein p a a r Euros bietet der ESP32 Konnektivität und
Rech enleistung satt. Auf d e m C h i p g ibt es aber noch viel m e h r
Nützliches z u entdecken und w e r d a s Maxi mum a u s d e m ESP32
h e raus h olen möchte, sollte alle seine E i g enschaften kennen.
Artenvielfalt
Entwickelt wurde der ESP32 von Espressif Sys
tems in China (Shanghai), derselben Firma, die Mittlerweile gibt es eine Vielzahl unterschiedlicher Development-Boards für den ESP32.
den ESP8266 entwickelt hat. ln großen Stück
zahlen ist er seit Ende 2016 verfügbar und seit
dem erfreut er sich wachsender Beliebtheit etwas für die industrielle Fertigung. Darüber schwindigkeit ai' so durchaus, weil zum Bei
unter Elektronik-Bastlern. Weil der ESP32 noch hinaus fehlen ihnen trotz ihrer vielen Funk spiel der ESP32-SOWD und der ESP32-D2WD
verhältnismäßig neu ist, wurden noch nicht tionen noch ein paar wichtige Eigenschaf nur mit höchstens 160MHz gegetaktet wer
alle seine Fähigkeiten in aller Tiefe dokumen ten. Beispielsweise haben sie fast alle nur den können. Prinzipiell ist die Taktrate bei
tiert und zu manchem Thema findet sich wenig beziehungsweise gar keinen Flash allen Modulen per Software bis zur maxima
selbst nach längerer Recherche nicht allzu Speicher. len Taktfrequenz einstellbar. ln der Praxis ist
viel. Das gilt ebenso für die ESP32-Software, Deshalb gibt es Module, die auf den Basis aber über den ESP32-Core für Arduino die
denn auch die befindet sich noch im Fluss. Chips aufbauen und sie um nützliche Hard Frequenz in den Bibliotheken auf 240MHz
Wichtig zu verstehen ist zuerst, dass es ware erweitern. Ein gutes Beispiel dafür ist (bzw. 160MHz) fest eingestellt. Eine Anlei
nicht "den" ESP32 gibt, sondern dass unter der ESP32-WROOM-32. Er basiert auf dem tung, wie man die Frequenz anpasst, finden
schiedliche Ausprägungen existieren. Im We ESP32-DOWDQ6 und spendiert ihm unter an Sie unter den Links.
sentlichen unterscheiden sie sich in der An derem 4MB Flash-Speicher. ln der Brust der meisten Modelle schlagen
zahl der Prozessor-Kerne, der Größe des ein Doch selbst mit den nackten" ESP32-Mo also gleich zwei Herzen, das heißt, zwei (PU
"
gebauten Flash-Speichers und in der Ge dulen dürften die meisten Hobbyisten nicht Kerne. ln der Dokumentation tragen die
häuse-Form. Sie haben so wenig klangvolle viel anfangen können. Sie sind sehr klein und beiden Kerne die Namen Protocol CPU
Namen wie ESP32-DOWDQ6, ESP32-DOWD, lassen sich nicht ohne Weiteres mit Drähten (PRO_CPU) und Application CPU (APP_CPU).
ESP32-D2WD, ESP32-SOWD. oder einem Breadboard verbinden. Daher Der Kern namens PRO_CPU ist verantwort
Die Bezeichnungen wirken zunächst kryp dürfte die Mehrheit der Bastler zu einem De� lich für die gesamte Kommunikation, also für
tisch, folgen aber einem einfachen Schema. velopment-Board wie dem mitgelieferten WLAN und Bluetooth, aber auch für andere
Der erste Buchstabe spezifiziert die Anzahl greifen. Kommunikationssysteme, wie zum Beispiel
der Prozessor-Kerne. D steht für Duai-Core Development-Boards gibt es in vielen 12C und SPI. Um den Code der Anwendun
und S für Single-Core. Die darauf folgende Ausprägungen und sie unterscheiden sich gen kümmert sich der APP _CPU-Kern. Ob
Zahl gibt an, wie groß derinterne Flash-Spei teilweise deutlich voneinander. Die einfachs wohl prinzipiell möglich, ist es nicht ganz
cher des Bausteins ist. 0 bedeutet, dass er ten führen lediglich alle Pins des ESP32 nach
keinen hat und die 2 steht für 2MB. außen, so dass das Gerät problemlos mit an
Weiter geht es mit einer Kennung für die deren Bauteilen verbunden werden kann.
Netzwerk-Fähigkeiten des Chips. Die wird Meist haben sie noch eine oder mehrere
Entwickler-Boards
mit zwei Buchstaben kodiert und kann die LEDs. Boards wie das ESP-WROVER-KIT
folgenden Werte annehmen: verfügen sogar über einen kleinen
WD (Wi-Fi b/g/n, BT/BLE Dual Mode), AD Bildschirm, einen Slot für SD-Karten
(Wi-Fi a/b/g/n, BT/BLE Dual Mode) und CD und einen Kamera-Anschluss.
(Wi-Fi ac/c/b/n/g, BT/BLE Dual Mode).
ln Bezug auf die Bluetooth-Fähigkeiten Doppelher(t)z
sind die Produkte gleich, aber beim WLAN
gibt es durchaus Unterschiede. Trotz dieser Vielfalt ticken die Bo-
Schließlich kommen die Chips noch in . ards intern alle gleich und haben
ve-rschiedenen Gehäusen daher und die einen oder zwei Prozessor-Kerne.
kann man an den letzten beiden Stellen der Jeder Kern ist eine 32-Bit-CPU Xtensa
Produktkennung ablesen. Steht hier nichts, LX6, die neben einer Fließkomma-Ein
dann handelt es sich um einen Chip mit den heit auch Unterstützung für DSP-Ope
Abmessungen Smm x Smm in der QFN-Bau rationen (Digital Signal Processing) bie
form (Quad-Fiat No-Leads Package). Der tet.
Wert Q6 steht hingegen für 6mm x 6mm, Die CPU bringt es -je nach Modell -auf
ebenfalls in der Bauform QFN. 200 bis 600DMIPS (Dhrystone MIPS) bei einer
. Die Basis-Chips des ESP32 eignen sich Taktfrequenz zwischen 80MHz und 240MHz. Module basieren in der Regel auf Chips und
nicht für den Heimgebrauch. Sie sind eher Die Module unterscheiden sich in ihrer Ge- Entwickler-Boards.
PWM
Immer noch nicht genug
RTC
Abgesehen vom eFuse haben die bisher vor
Touch sensor
gestellten Speicher allesamt gemeinsam, dass
ULP Recovery
DAC PMU sie nicht persistent sind. Das heißt, sie über
co-processor
dauern selbst eine kurzzeitige Unterbrechung
ADC der Stromzufuhr nicht. Darüber hinaus wären
sie für so manche Anwendung auch immer
noch zu klein. Abhilfe schafft hier nur ein
Auf dem ESP-SOC finden sich erstaunlich viele nützliche Funktionen. Flash-Speicher.
optional. Für industrielle Anwendungen kann 'liegt der Stromverbrauch zwischen 1011A
das durchaus Sinn stiften, �ber typische Heim Ox1000 -·-axt:ooö und 150!-IA.
·
Stromversorgung Abhängig von der Anzahl der Kerne und und können unterschiedliche Funktionen er
ihrer Taktfrequenz schwankt der Stromver füllen. Genau genommen ist die Situation
Die Betriebsspannung des ESP32 liegt zwi brauch zwischen.20mA und 68mA. Je nach sogar noch etwas komplizierter, denn der
schen ·2,3V und 3,6V und angeschlossene dem, welche Peripheriegeräte aktiv sind und ESP32 beherrscht das PIO-Multiplexing. Das
Elektronik muss mit 3,3V operieren. Das ist wie hoch die Prozessorlast ist, passt der bedeutet, dass viele der Funktionen, die der
genauso wie beim Raspberry Pi, aber ganz ESP32 die Taktfrequenz automatisch an. Chip anbietet, auf beinahe beliebige Pins ge
anders als bei den meisten Arduino-Boards, Light Sleep Mode: Jetzt ist die CPU ausge legt werden können. Bevor der ESP32 eine
denn die laufen fast ausschließlich mit SV. Es schaltet. Zumindest gilt das für die Haupt Funktion ausführt, sieht er in einer Tabelle
ist also Vorsicht geboten, wenn man Schal CPU. Der ESP32 hat nämlich einen ULP-Copro nach, welcher Pin gerade dafür zuständig ist.
tungen kopiert, die ursprünglich für einen zessqr (Ultra LowPower), der auch dann noch Es gibt für viele Funktionen voreingestellte
Arduino gedacht waren! mit GPIO und 12C arbeiten kann, wenn der r Pins, aberdarauf sollte man sich bei der Ana
Angesichts der Funktionen, die der ESP32 große Bruder schläft. Neben dem ULP arbeitet lyse von Projekten nicht verlassen.
·
bietet, dürften sich viele Maker fragen, was in diesem Zustand noch die Echtzeituhr(RTC) Eine weitere Spezialität, die den ESP32
der Winzling denn so verbraucht. Schließlich und externe lnterrupts sind ebenfalls möglich. von der Konkurrenz abhebt, ist die einge
ist das Gerät für mobile Anwendungen gera Der Stromverbrauch liegt bei geringen 0,8mA.� baute Unterstützung für Berührungssenso
dezu prädestiniert und es wäre doch ein Deep Sleep Mode: Per Voreinstellung ist ren (Touch-Sensoren). Er nennt gleich zehn
Jammer, wenn ein angeschlossener Akku jetzt nur noch die RTC aktiviert. DerULP kann kapazitive Eingänge sein Eigen und damit
lassen sich neben vielen nützlichen Anwen wendet werden. Generell werden sie vom sich unter anderem Motoren steuern lassen.
dungen auch schnell ein paar Spaß-Projekte WLAN-Treiber benötigt und sind blockiert, Dank des Multiplexings funktioniert die
umsetzen, etwa ein Synthesizer mit Obst wenn der Treiber läuh.Darüber hinaus wur PWM auf jedem GPIO-Pin, der ein Ausgangs
oder Knete als Eingabeelemente. den ihnen auf verschiedenen Entwickler signal erzeugen kann.
Boards andere Funktionen zugewiesen und Eine weitere Besonderheit ist der LED
Digital ist besser? so ist es ratsam, sich zuvor über die konkrete PWM-Controller. Mit ihm lässt sich die Inten
Pin-Belegung zu informieren. sität von LEDs auf sechzehn Kanälen auf viel
Bei all diesen fast extravaganten Fähigkeiten Leider klingen die Leistungsmerkmale der fältige Weise steuern. Bei Bedarf erzeugen
darf man das Brot- und Buttergeschäft eines Analog-/Digital-Wandler auf dem Papier bes die sechzehn Kanäle unterschiedliche
Mikrocontrollers nicht aus den Augen verlie ser, als sie in Wirklichkeit sind. in den Ent Schwingungsformen, um RGB-LEDs zu kon
ren und auch bei der Verarbeitung analoger wickler-Foren gibt es ellenlange Diskussio trollieren.
und digitaler Signale Weiß der ESP32 zu nen über die Qualität der gemessenen Daten Neben diversen Timern, die für hohe Fle
punkten. und es scheint auf dem ESP32 diesbezüglich xibilität bei der Erzeugung schicker Muster
Der ESP32 verfügt über einen Digital-/ tatsächlich ein Problem zu geben. Die vom sorgen, helfen Funktionen zum Ein-, Aus
Analog-Wandler (DAC), der auf zwei 8 Bit-Ka ADC erzeugten Werte sind nicht-linear und und Überblenden von LEDs bei der kreativen
nälen digitale Signale in analoge Ausgangs unterliegen einem mehr oder weniger star Beleuchtung. Solche Spielereien belasten die
spannungen umwandeln kann. Für den um ken Rauschen. Bisher scheint niemand eine CPU übrigens nicht und natürlich muss der
gekehrten Weg bilden 12-Bit SAR ADCs (Suc befriedigende Lösung für dieses Problem ge LED-PWM-Controller nicht unbedingt LEDs
cessive Approximation Register Analog-ta funden zu haben. ansteuern, sondern kann auch für andere
Digital Converters) analoge Signale auf bis zu Übrigens war für den ESP32 ursprünglich Zwecke eingesetzt werden.
18 Kanälen auf digitale Werte ab. Hierbei ein Low-Noise Amplifier (LNA) angekündigt.
gibt es einiges zu beachten. Er scheint es aber nicht ins finale Produkt ge Schnittstellen satt
Die 18 analogen Kanäle zerfallen in zwei schafft zu haben; denn seine Beschreibung
Klassen namens ADC1 und ADC2. ÄDC1 ent wurde in Version 2.1 des Datenblatts entfernt. Große Auswahl bietet der ESP32 bei den
hält die acht Kanäle, die mit den GPIO-Pins Schnittstellen zur Außenwelt, insbesondere
32 bis 39 verbunden sind. Diese Pins unter Mustererzeugung bei den seriellen. Gleich drei UART-Einheiten
liegen keinerlei Einschränkungen. Die zehn (Universal Asynchronaus Receiver/Transmit
Pins der zweiten Gruppe (GPIO 0, 2, 4, 12-15 Wenig überraschend unterstützt der ESP32 ter) namens UARTO, UART1 und UART2
und 25-27) können nicht unbedingt frei ver- die Pulsweiten-Modulation (PWM), mit der bringt er mit. Sie unterstützen neben RS232
und RS485 auch lrDA und kommunizieren
mit einer Geschwindigkeit von bis zu
5 Mbit/s. Alle drei UART-Schnittstellen kön
nen von der CPU und per DMA (Direct Me
DIRECT MEMORY ACCESS mory Access) mit Daten versorgt und ausgec
lesen werden. Das ist eine feine Sache für An
wendungen, die umfangreiche Daten über
Bei den beispielsweise im Arduino verwendeten ATmega-Mikrocontrollern ist die CPU al� die serielle Schnittstelle transportieren wollen,
Iein für das Lesen und Schreiben von Speicherbereichen zuständig. Will man etwa Daten denn OMA-Zugriffe erfolgen parallel zur Ar
seriell per UART oder SPI senden, muss immer wieder die CPU bemüht werden, um beit der CPU.
neue Daten in die Sende-Register zu schreiben. Beim Direct Memory Acccess (DMA) hilft Dank Multiplexing kann beinahe jeder Pin
ein spezieller Controller der Peripherie, indem er die zu sendenden Daten ohne Umweg zu jedem Zeitpunkt die serielle Kommunika
über die CP,U an die Schnittstelle übergibt. Damit kann die CPU ungestört andere Arbei tion übernehmen. Nur UARTO ist etwas be
ten übernehmen. Einzige Hürde bei DMA ist die Zugriffsteuerung auf den Speicher, sonders, denn diese Schnittstelle wird vom
auch Arbitrierung genannt, damit sich CPU und Controller nicht ins Gehege kommen .'-- Bootloader im ROM zur Programmierung des
ESP32 verwendet. Sie lässt sich allerdings im
Schon viel dabei Sensor eine feine Sache, denn damit lassen >
SPI
sich zum Beispiel leicht kontaktlose Schalter
SPI F FS >
Im Vergleich zu anderen populären Mikro bauen, die ein drahtloses Signal senden.
controllern hat der ESP32 eine beeindru Listing HaiiSensor.ino zeigt, wie einfach licker >
ckende Zahl von Schnittstellen. SPI und 12C sich der Hall-Sensor auslesen lässt. Lässt man
Update >
sind zwar auf allen Arduino-Boards zu finden, das Programm laufen und bringt einen Mag
aber die meisten haben jeweils nur eine neten nah an das Board heran, kann man im WebS e rver >
Schnittstelle und Verfahren wie 12S sind dort seriellen Monitor schnell eine deutliche Ver
WiFi >
meist gar nicht zu finden. Darüber hinaus änderung der Messwerte beobachten. Aller
spendiert der ESP32 seinen Nutzern noch di dings sind die so ermittelten Werte alles an WiFiCiientSecure >
verse Sensoren und andere Feinheiten. dere als genau, können aber ohne großen
Zum Beispiel profitieren ESP32-Nutzer Aufwand verbessert werden. Viele Beispiele zeigen in der Arduino-IDE, wie
vom SDIO/SPI-Controller (SD Input/Output), Übrigens gibt es im Menü .,Datei/Beispie sich die Bausteine des ESP32 nutzen lassen.
der es ziemlich einfach macht, SO-Karten mit le" der Arduino-IDE einen eigenen-Abschnitt
dem ESP32 zu lesen und zu schreiben. Zwar nur für den ESP32. Es lohnt sich, zumindest
c
lassen sich SO-Karten seit jeher per SPI ein mal einen Blick auf alle Beispiele zu werfen,
binden, aber eine separate SOlO-Schnittstel um ein Gefühl dafür zu bekommen, was alles c HallSensor.ino
le beschleunigt die ganze Angelegenheit er möglich ist.
( 1 void setup() {
heblich und blockiert keine SPI-Schnittstelle.
2 Serial.begin(9600);
Ungewöhnlich ist die Unterstützung des Der Netzwerkar c 3
ESP32 für Infrarot-Signale typischer Fernbe 4
c 5 void L·oop() {
dienungen. Der ESP32 hat nämlich einen Die meisten Bastler dürften auf den ESP32
6 int wert = haLLRead�);.
Baustein zur Kodierung und Dekodierung wegen seiner vielfältigen Kommunikations ( 7 Serial.println(wert);
von modulierten Signalen, wie sie in gängi möglichkeiten aufmerksam werden. Pro 8 delayC500l;
(
gen lnfrarot-Fermbedienungen verwendet blemlos verbindet sich das Gerät mit WLAN 9
werden. Das bedeutet aber nicht, dass man Netzen.der Versionen 802.11b/g/n (manche _] ________________· ---·-·-·-
o
Erfinder Rivest, Shamir u n d Adleman), i m mer.
RandomNumbe rs . i no wichtiger. RSA w i rd nicht nur bei der Ver
0
s c h l ü s s e l u n g , sondern oft a u c h bei der Be
() �
·
1 voi d setupO { ;
rech n u ng d i g italer Signaturen verwendet.
} S e r i a l . be g i n ( 1 1 5 2 00 l ;
Der ESP32 bietet zwa r keine d irekte U nter
' 4 stütz u n g fü r den RSA-Aigorith m u s, aber fü r
() 5 voi d l oop ( ) { .
6 Seri � l : pri n t l n ( "***" l ;
d i e zugrunde liegende Mathemati k. Die ba
7 S e r i a l . p r i n t l n ( e s p_ r a n d o m ( l ) ; siert auf mod u l a rer Arithmetik mit sehr g ro
0
8 S e r i a l . pr i n t l � ( r a n d o m ( 1 0 l l ; ßen ganzen Za hlen u n d d a bei m ü ssen d iese
9 S er i al . p r i n t l n ( r a n dom ( 1 0 , 20 > > ;
1 Zahlen u nter a nderem m u ltipl iziert werden.
i'"' 1 0 } d e l a y C 1 000 l ;
'· ' 11 Der ESP32 u nterstützt d i e M u l ti p l i kation von
Za h l e n m it einer Länge von bis zu 20'48 Bits
und erlau bt die mod u l a re Potenzieru ng von
Zah l e n mit einer Lä nge von bis zu 4096 Bits.
4.2 u n d B l u etooth Low E n e rgy (BLE). Band Steueru n g m it i h rem S m a rtphone ü berneh Auf d ieser Basis l ässt sich der RSA-Aigorith
breite u n d Geschwi n d i g keit rei c h e n fü r men u n d a u shebe l n . mus mit a u s reichend g roßen Schl üssel längen
Audio-Strea m s u n d nach der rei n e n F a kten Versc h l ü ssel u n g i s t heutzutag e b e i jedwe i m plementieren u n d eine solche I m plemen
lage sol lte die A n ste u e r u n g von A u d io der öffentl ichen Kom m u n i kation e i n M u s s tieru n g gehört auch zur Standard-Bi bliothek.
Headsets oder d i e Rea l i s i e r u n g eines B l ue u n d das sol lte m a n a u c h bei H o b by-Projek i n der Absicheru ng von Kom m u n i kations
tooth-Lautsprechers fu n kt i o n ieren. Es · g i bt ten im H i nterkopf haben. Sta rke kryptog rac systemen s p i e l e n n i c ht nur Versch l ü sse
e i n paa r v i e l versprec h e n d e P rojekte i m fische Algorithmen ste l l e n aber sel bst fü r l u ngsa lgorith men eine wichtige Rolle, denn
Netz, a ber d i e F i rmwa re scheint noch nicht e i n e verg leich sweise l e i stu n g s sta rke C P U , sel bst ü ber einen versch l ü sselten Ka n a l kön
h u n dertprozentig a usgereift zu s e i n . A l ler w i e sie auf dem E S P 3 2 i h ren Dienst verrich nem kom p rom ittierte Doku mente und Infor
d i n g s gab es hier i n l etzter Zeit g roße Fort tet, eine g roße Hera u sforderung d a r. Da ist mationen ü bertragen werde n . Um die l nte
sch ritte. es u mso erfreulicher, dass der ESP32 ein paa r g riÜit u n d Authentizität von I nformationen
Bei a l l den d ra ht l o s e n F u n k-Tech no l o n ützl iche Helfer an Bord hat, die i h m die stu zu g ewä hrleisten, kom m e n kryptag rafische
g ien ka n n m a n d e n Ethernet Media Access pide Rec h nerei abnehmen. Hash-F u n ktionen z u m Einsatz. Sie helfen bei
1
Contro l l er (MAC) auf dem ESP32 schon m a l Bei der sym m etrischen Versc h l üssel u n g der Berec h n u n g von sicheren Prüfs u m m e n
sch n e l l ü berse h e n . Tatsäc h l i c h ka n n s i c h g reift i h m beispielsweise e i n AES-Besch l e u u n d b e i der Erste l l u n g d i g italer Sig naturen.
der C h i p darü ber mit e i n e m ka belgebunde n iger u nter d i e A r m e . Der Adva nced Encryp Es g i bt e i n ige solcher H a s h -F u n ktionen,
n e n LAN verb i n d e n . S c h l i e ß l i c h h a t der tion Sta ndard (AES) gehört zu den wichtigs a be r d i e derzeit wichtigsten sta m men aus
ESP32 noch einen Contro l l e r fü r d e n CAN ten sym m etrischen Versc h l üssel u n g sa l g o der S H A-Fa m i l i e (Secu re Hash Algorith m).
B u s (Contro l l e r Area N etwork), d e r in der rith m e n u n d d e r ESP32 kom m t m i t S c h l üs I n s besondere g elten heute S H A-256, S H A-
Auto-I n d u strie weit verbreitet i st. seln der Lä nge 1 28, 1 92 u n d 256 Bit klar. 384 u n d S H A-5 1 2 noch a l s sicher u n d kom
N icht wen i g e N utzer d ü rften sich fü r Sym m etrische Versc h l ü ssel u n g sa lgorith men i n vielen Kontexten zum E i nsatz. F ü r a l l e
einen ESP32 entscheiden, wei l er mit WLAN men h a ben e in e ga nze Menge Vorteile. Sie d rei bietet der ESP32 e i n e H a rdwa re-Be
und B l u etooth zwei wichtige Technologien s i n d schnell, einfach zu i m plementieren, ein schleu n i g u n g . Das gilt a u c h fü r den Algorith
zur d rahtlosen Kom m u n i kation zu e i n e m fach zu versteh e n u n d ziemlich sicher. I h r mus S H A- 1 , der n icht mehr als sicher gilt u n d
g ü nstigen P r e i s a n bietet. F ü r viele Anwen g rößtes Problem i st d i e Vertei l u n g d er verm utlich n u r a u s Gründen der Kom patibi
dungsfelder, wie zum Beispiel bei der Heim Sch l üssel, d e n n zwei Partner, d i e i m Gehei l ität a n g e boten wird .
a utomatisierung, ist das Gold wert. m e n m itei n a n d e r kom m u n izieren wol len,
m ü ssen densel ben Sch l ü ssel besitzen . Dieser Würfeleien
Gehei m n i skrämerei dient sowo h l zum Versc h l üssel n als a u c h
zum Entsc h l ü sseln e i n e r Nach richt. W i e kön Viele La ien ü berrascht zunächst, dass d e r Zu
Bei der ganzen F u n kerei darf m a n heutzuta nen sich jedoch beide Partner auf e i n e n fa l l i n der Kryptog rafie eine g roße Rolle spielt.
ge das Thema Sicherheit nicht a u s den · Schl üssel e i n i g e n , o h n e d a s s er v o n Dritten G ute Zufa l l sza h len bilden a ber d i e Basis fü r
Augen verlieren. Das woh l ige Gefü h l des Er a bgehört wird ? d i e Sicherheit vieler Verfa h ren. Auf determi
finderstolzes ist schnell verflogen, wen n ner U m d i eses Problem zu lösen, werden bei n i stischen Masc h i n e n ist es sehr schwer bis
dige Nachbarski nder oder gar kri m inelle Ge d e r s i ch eren Kom m u n i kation h eute d a h e r
· u n mö g l ich, wirkl ich zufä l l i g e Za h l e n zu �r
sellen die eigens entwickelte G a ragentor- asym m etrische Verfa h ren, w i e z u m Beispiel zeu g e n . Das ist auf dem ESP32. prinzipiel l
nicht anders, a ber i m Gegensatz z u vielen an
deren Rechnern verfügt er ü ber echte Entro
pie-Quellen, a lso ü ber E i n g a ngssigna le, d i e
ROM Flash . tatsächlich zufä l l i g erzeugt werden.
(vertra uenswü rd i g) · Diese Quellen echten Zufa l l s sind das Rau
schen i n den WLAN- und B l u etooth-Date n .
BootROM Software Wie bei a l len F u n km e d i e n fa l le n h ier jede
Anwend u n g
und eFUSE Bootloader Menge zufällig e Stö rgerä u s c h e a n und die
s a m m elt der ESP32 konti n u ierlich i n e i n e m
Register, so d a s s das System u n entwegt mit
neuen Zufa l lsza h l en versorgt wird. Sowo h l
Secure Boot sorgt für sichere Projekte. d i e Geschwi n d i g keit, m i t der n e u e Zufa l l s-
von Ma i k Schmidt
c�
bei der Entwickl u n g von Proj e kten, zu m i n 8 Seri a l . pr i nt l n ( "Suche läuft . " ) ;
9 c o n s t u i n t 8_t n = W i F i . s c a n N e t w o r k s ( ) ;
dest die g r u n d l e g e n d e n P r i n z i p i e n zu ver
,, 10
stehen. ....... - 11 i f ( n == 0 ) {
,.... 12 S e r i a l . p r i n t l n ( " K e· i n N e t z w e r k g e f u n d e n . " ) ;
13 e lse {
I rgendwer zu sehen? 14 Seri a l . print(n);
�.
� I RSSI I
ist es ratsam, zunächst nach a l l e n Netzwer
17 Seri a l . pr i nt ln(" SSID
ken in der Umgebung zu suchen. Eine erfolg
AUTH MO D E ");
reiche Suche ste l l t s i c h e r, dass d i e WLAN ,,! 18 S e r i a l . p r i n t l n ( " - - - - - - - - � - - - - -� - - - - - - - - - � - - - - - - - - + - - - - - - + - - � - -
\.__
Hardwa re des ESP32 ordentlich fu n ktioniert - -- - - - - - - - - - " ) ;
Ich b i n d ri n !
rischen E n u m e rationstypen i n einen lesba sucht u n d n icht versucht, sich m it einem zu
ren Text um. verbinden, sol lte er i n jeder Umgebung, in der Nach d iesem ersten Test, der sicherstel lt,
m i ndestens ein d ra htloses Netzwerk i n Reich dass die WLAN- F u n ktionen prinzipiell richtig
Es geht los weite ist, fu n ktionieren. a rbeiten, wi rd es Zeit fü r ein u mfa ng rei
Schon ku rz nachdem man den seriellen c h e res Beisp i e l . Listi n g M i n iWebServer.ino
Jetzt ist es an der Zeit, das Progra m m endlich Monitor i n der Ard u i no-IDE geöffnet hat, er macht den ESP32 zu einem kleinen Web-Ser
auf das ESP32-Boa rd zu laden und auszupro scheint eine Ta belle mit den Eigenschaften ver, der a uf Anfragen eines Web-Browsers
bieren. Wei l der Code n u r nach Netzwerken a l ler gefu ndenen Netzwerke. Diese Ta bel le wa rtet und sie d a n n beantwortet.
D RU CKE N M IT FORMAT
Zwar hat der ESP32 keinen Bildschirm, aber die meisten Projekte Z�ichen, die n icht zu· einem Platzlia lter gehöre n, werden unver
geben I nformationen ü ber die seriel l e Sch nittstel l e aus. Manch ä ndert a u sgegeben.
m a l sind es Meldungen ü ber den a ktuellen Sta nd des Program m s
Jeder Platzha lter beginnt mit einem Prozentzeichen u n d muss
und oft sin d es Messdaten, die i n ei nem festen Format ercscheinen
den Typen des Parameters enthalten. Ein s steht beispielsweise
sollen.
für einen String urid ein'd fü r eine vorzeichen behaftete Ga nzzah L
'
Die Formatierung von Daten ist mit der herkö m m l ichen zei Zusätzlich zum Typen kön n e n noch e i n e Mindestlänge, eine
chenketten-F u n ktion oft etwas friemelig. Daher bietet d ie Maxim a l l äng\'!, die Anza h l der Nachkom mastellen u n d Optionen
s e r i a L -Kiasse die p r i n t f - F u n ktion (print formatted) a n , die zu m Au ffj.i l l.e n leerer Ausgabefelder angegeben werden. Damit
es i n d ieser oder ä h n licher Form schon seit m e h r a l s 5 0 Jahren lassen si<!h Werte zum Beispiel l i n ksbündig oder rechtsbündig
g i bt. ausg'eben u n d Zah len können d u rch fü h rende N u l len auf eine
.g leich bleibende Breite gebracht werden.
p r ; n t f gibt eine Liste von Werten aus u n d erwartet neben den
Werten einen Formatstring, der deren Formatierung beschreibt. Eine vollständige Beschreibung a l ler unterstützten Formate
Der Format-String enthält einen Platzhalter für jeden Wert, der würde den Rahmen·sprengen, aber mithi lfe der Dokumentation
beschreibt, wie der Wert vor der Ausgabe zu formatieren ist. Alle ist es ganz einfach.
!
!
!
printf ( "Text : %s , Zahl 11 : % 0 44 , Zahl
/
/_
/
/
Station Station
i � u
'---:-g-:-=·.
_
. _
·
--'
- - - - - --- ; ccess Point--------, �·� i
II
GI
c::::::J
- :: 1 �� 1·
·--
- -- -
--- -
-
�
lfrr. l
-- - -
Station Access Point -
- -- - - - -
- -- -
Station -- -
Station
Der ESP32 funktioniert prima als Station i n einem WLAN. Der ESP32 arbeitet als WLAN-Access-Point.
HTIP-Anfragen. Dieses Ma n ko lässt sich a ber u n d i n ei n e m B rowser d i e URL http://esp32/ d e n Pfa d / m a ke kü m me rt. Der w i rd d a h e r
mit wenige_n Handg riffen beheben. a ufgerufe n w i rd , w i rd d i e F u n kt i o n h a n d l e m i t e i n e r a n onymen F u n ktion defi n iert.
Gleich zu Anfa n g des Progra m m s w u rd e R o o t a ufgerufe n . A n o n y m e F u n kt i o n e n s i n d e i n e relativ
e i n Objekt d e r K l a s s e W e b S e r v e r m i t d e m D i e s e F u n ktion besteht n u r a u s e i n e r e i n neue Erweiter u n g der Progra m m i ersprache
N a m e n s e r v e r defi n ie rt. D ieses Objekt zigen A n we i s u n g , n ä m l ic h d e m A ufruf d e r C++ u n d sie s i n d g e ra d e i n solchen Situatio
ü bern i m mt d i e gesamte Ko m m u n i kation F u n ktion s e n d , d i e d rei Para m eter erwa rtet. n e n sehr pra kt i s c h . Die Ko n stru kt i o n [ J < l
m i t dem Web-Browser und muss entspre Der e rste P a r a m eter ist d e r HTIP-Status d efi n iert e i n e n a m e n l ose F u n ktion o h n e Pa
chend konfi g u riert werd e n . Code, d e r a n d e n Web-Browser g e s e n d et ra m eter und die Defi n ition der F u n ktion er
Die WebServer-Kiasse fo lgt e i n e m recht wird. D i e 200 steht fü r O K, d a s h e i ßt, d i e fol g t g leich a n s c h l ießend u n d wie gewo h nt
modernen Entw u rf u n d u n terstützt d i e Re Vera rbeitu n g d e r A n fra g e v e r l i ef erfo l g i n geschweiften K l a m m e r n . Das s i e h t a u f
g i strieru n g von Event- H a n d l e r n . Das s i n d rei c h . Der zweite P a ra m eter e n t h ä l t d e n den ersten B l i c k w ü s t a u s, d i e n t a ber letzten
F u n ktionen, d i e i m Fa l l e besti m mter Ereig Content-Type u n d besc h rei bt, w e l c h e s For Endes der Lesba rkeit und befreit Entwickler
n i sse a ufgerufen werd e n und s i e kö n n e n mat d i e A n twort hat. l n d i esem Fa l l i st es von der lästigen Aufga be, sich stä n d i g neue
u nter a n d erem m i t d e r F u n kt i o n o n a n t e x t I p l a i n , a l so enthält d i e Antwort g a nz Namen fü r d i e Event- H a n d l e r a u szuden ke n .
d a s WebServer-Objekt a n ge h ä ngt werd e n . ord i n ä ren Text. Der d ritte P a ra m eter enthält Die bisherigen Event- H a n d l e r h a ben sich
Die Anwei s u n g s e r v e r . o n ( "/'' , h a n d d e n I n halt der Antwort. um die B e h a n d l u n g fest defi n ie rter Pfa d e
l e R o o t ) l ä sst s i c h d a h e r wie fo l g t l e s e n : F ü r Eve nt- H a n d l e r, d i e so k u rz s i n d wie g e kü m m e rt. Wa s a be r p a s s i e rt, we n n e i n
Wen n e i n Web-Browser n a c h d e m Pfa d / " h a n d l e R o o t , lohnt es sich ka u m , eine eige C l i ent e i n e n Pfa d a n fragt, fü r d e n kei n
"
fra gt, d a n n rufe d i e F u n ktion h a n d l e R o o t ne F u n ktion zu d efi n ieren. Das g i lt ebenso Event- H a n d l e r festgelegt w u rde? l n d i esem
a uf. Das h e i ßt, we n n d a s Prog ra m m l ä uft fü r d e n zweiten Event- H a n d l e r, der sich um Fa l l ruft die WebServer-Kiasse die F u n ktion
auf, d i e zuvor m ittel s o n N o t F o u n d reg istriert
w u rde. ln d iesem Prog ra m m ist d a s h a n d
G coM6 - D X
l e N o t F o u n d . S i e b a u t e i n e entsprec h e n d e
F e h l e r n a c h richt zusa m m e n u n d sendet s i e
. II I
..
I ' Senden
m i t dem Statu s-Code 4 0 4 ( � i l e N ot F o u n d )
. "
a n d e n C l ient zurück .
Verbunden mit 1 3 3 7net .
IP-Adre s s e : 1 92 . 1 6 8 . 1 7 8 . 7 5 . Z u m S c h l u ss ruft d i e s e t u p - Fu n kt i o n
MDNS-Responder gestarte t . s e r v e r . b e g i n a uf u n d der Web-Server war
HTTP-Server qe starte t .
tet a b d iesem Moment auf neue Anfrag e n
a uf Port 80. D i e tatsä c h l i c h e Bea rbeit u n g
d ieser Anfra g e n übern i m mt h a n d l e c l i e n t
i n der F u n ktion l o o p .
Der ESP32 hat Kontakt mit dem heimischen WLAN-Router.
N a c h d e m d a s P rog ra m m ü be rsetzt u n d
a u fs Boa rd g e l a d e n w u rde, wird e s Zeit fü r
e i n e n ersten Test. I m seri e l l e n Mon itor ka n n
X �- -
D . m a n z u e rst e i n m a l prüfen, o b d i e WLAN
J CD
Verb i n d u n g eta b l i e rt werd e n konnte. Wen n
http ://esp32 ::k »
··· EJ tr l d a s d e r Fa l l i st, ruft m a n m i t e i n e m beliebi
g e n Web- B rowser - es d a rf a u c h e i n e r a u f
H i e r i s t der E S P 3 2 ! e i n e m S m a rt p h o n e i m sel ben W L A N sein -
d i e A d resse http://esp32/ a u f. Die fü h rt zu
e i n e r s p a rta n i sc h e n Begrü ß u n g sseite. Auch
Der kleine Web-Server antwortet auf eine Anfrage. d i e Ad resse http://e s p 3 2/m a ke (Achtu n g :
<D esp32/ m a ke
und fü r alle a n d e re n Pfade ze igt d e r E S P 3 2
zu m i ndest e i n e ordent l i c h e Feh l e r m e l d u n g
a n . J e nac h Konfi g u ration des l o ka l e n N etz
werkes u n d d e s b e n u tzten C l i ents ka n n es Wa s s o l l i c h ma c h e n ?
n otwe n d i g s e i n , d i e Ad resse htt p://e s p 3 2 .
l oca l/ zu verwe n d e n . Sel bstverstä n d l i c h ist
d e r E S P 3 2 a u c h ü be r seine I P-Ad resse er
re i c h bar. Der ESP32-WebServer liefert Seiten auch an
Mit knapp 50 Zeilen Code wird d e r E S P 3 2 Smartphones.
n i cht n u r zu e i n e m v o l l we rt i g e n M i t g l i ed
eines a b g e s i c h e rten W LA N s, s o n d e r n ver
ric htet g l e ichzeitig s e i n e n D i e n st als Web
Server. Das Z u sa m m e n s p i e l d e r g u ten Hard in der 5 e t u p - F u n kt i o n mit der b e g i n - F u n k
wa re und d e r g uten Softwa re mac h e n das ;tti o n i n it ia l i s i e rt. D i e Za h l Ox43 ist d i e 12C
n i cht n u r m ö g l i c h , s o n d e r n sogar recht e i n Ad resse d e s S e n s o rs und die ka n n je nach Mit einem Breakout-Board lässt sich der
fac h . Prod u kt d u rchaus va riieren. HDC1 008 1eicht mit dem ESP32 verbinden.
Es ko m m t bei Sensoren fü r Luftfeuchtig
Web-Sensori k keit schon ma l vor, dass s i c h Feuchtig keit in
d e r Nähe des S e n s o rs a b la g e rt. Um d i e zu
P r i n zi p i e l l eig net s i c h d e r E S P 3 2 a l s kla s s i v e rda m pfe n , lassen s i c h ma n c h e S e n s o re n Werte fü r d i e Luftfeuchti g keit teilweise deut
scher Web-Server, d e r z u m B e i s p i e l HTM L aufheizen u n d d a s tut d i e F u n ktion d r y S e n - l ic h von d e r Rea l ität abwe i c h e n .
Seiten und Bilder vertei lt. Das kön n en a n d e re 5 o r . Der Vorga n g dau e rt ci rca 1 5 Seku nden,
Geräte aber besser u n d d i e Beso nderheit des das h e i ßt, das P rog ra m m g i bt d i e S e n s o r Kleine Sch ritte
ESP32 l i egt da rin, dass e r n i c h t nur a l s Web Daten erst nach d ieser Wa rteze it a u s . Wä h
Server ta ugt, sondern a u c h e i n M i krocontrol rend d e r Entwickl u n g e m pfi e h l t es sich Da n k der A rd u i n o - B i b l i o t h e k i st die Arbeit
l e r m it vielen i nteressanten S c h n ittste l l e n ist. da h e r, d i ese Zei l e a u s z u ko m m e ntieren, so m i t dem Sensor ein Leichtes und es ist eben
Er ist also gerade prädest i n i ert dazu, Sensor dass man nicht nach jedem N e u start 1 5 Se fa l l s ke i n g roßes P r o b l e m , die Daten im
Daten per Web-Sc h n ittste l l e zu v e rte i l e n k u n d e n la ng warten m u ss, bis etwas passiert. WLAN zu verte i l e n . Prinzi p i e l l g i n g e das mit
o d e r Geräte ü be r e i n e n Web-B rowser z u Die F u n kt i o n L o o p g i bt d i e S e n s o r- l n fo r den schon besc h riebenen Mecha n i s men,
steuern. mati o n e n m itte l s d e r F u n kt i o n e n r e a d T e m a b e r fü r d ieses P roj e kt w i rd d e r ESP32 in
E i n k l e i n es B e i s p i e l p roj e kt macht den p e r a t u r e u n d r e a d H u m i d i t y i m Seku nden einen Access P o i n t verwa n d e l t und es
ESP32 zu e i n e m Web-Se nsor und ste l lt a l l e n takt a u s . ko m mt eine neue WebServer- B i b l i othek zum
Geräten i m s e l b e n W L A N d i e a ktu e l l e Tem Der H DC 1 0 0 8 w i rd ü b r i g e n s v o m H e rstel E i n satz.
peratu r und d i e relative Luftfeuchtig keit zur l e r n i cht m e h r e m pfo h l e n u n d V e rg l e i c h s Die B i b l i othek h e i ßt ES PAsyncWebServer
Verfü g u n g . Das Proj ekt w i rd sch rittweise auf tests m i t a n d e ren Sensoren zeigen, dass d i e (https:// g i t h u b .com/m e-no-dev/ESPAsync-
gebaut, um d i e Ko m p l exität ü berscha u ba r zu
ha lten� Z u e rst w i rd d e r S e n s o r a u sg e l e s e n
u n d da n n werden d e s s e n Daten ü be r e i n e n
Web-Server vertei lt.
A l s ko m b i n i erter Sensor zum Erfassen der
Te m perat u r u nd der Luftfeuchtig keit ko m mt
d e r H D C 1 008 (http://www.ti.com/prod u ct/
h d c 1 008) z u m E i n satz. Der H DC 1 008 ko m
m u n iziert per 1 2 C u n d w i rd da h e r m i t v i e r
ESP32-Pi n s verb u n d e n . VCC ko m mt a n d e n
3,3V-Ansc h l u s s des ESP32 u n d G N D natü r l i c h
an G N D. Der SCL-A n s c h l u ss g e h ö rt a n G P IO
P i n 22" u n d SDA a n G P I O- P i n 2 1 .
Zum A u s l esen des Sensors d ient d i e Ada
fru it H D C 1 000- B i b l i ot h e k, d i e sich ü be r d e n
B i b l i otheksverwalter d e r Ard u i n o - I D E i n sta l
l i e r � n lässt. We i l d e r H DC 1 008 ko m pat i b e l
zu m H D C 1 0 0 0 i st, fu n kt i o n i e rt d i e B i b l i ot h e k
mit b e i d e n Sensoren.
Listing S e n s o rTest . i n o n u tzt den
HDC1 008, u m d i e Te m peratur u n d d i e relati
ve Luftfe u c h t i g keit zu messen und auf d e r
seriel len S c h n ittste l l e auszugeben. Dazu legt
das P rog ra m m a u f der g l o ba l e n Ebene e i n
Obj e kt d e r Klasse A d a f r u i t _H D C 1 0 0 0 m i t
dem Na men 5 e n 5 o r a n . Dieses Objekt w i rd So wird der ESP32 mit dem HDC1 008 verbunden.
(� : · 3 - A d a f r u i t_H D C 1 Ö O O s e n s o r = A d a f r u i t _H D C 1 0 0 0 C l ;
2
4
5 vo i d s e t up ( ) {
6 S e r i a l . be g i n ( 1 1 5 2 00 l ;
7
WebServer) u n d tut im Grunde dasselbe wie (https://g ithu b.com/me-no-dev/AsyncTCP) dev/AsyncTC P/a rch ive/ma ster.zi p) heru nter
die bisherige WebServer- B i b l iothek, das benötigt, die ebenfa l l s nicht i m B i b l iotheks und entpackt sie. Der Zu satz " -master " sol lte
hei ßt, sie i m p l ementiert das HTIP-P rotoko l l verwa lter a ufta ucht. Heide B i b l i ot h e ke n a u s beiden Date i n a m e n entfernt werd e n .
u n d ermög licht so d i e Kom m u n i kation m i t m ü ssen d a h e r m a n u e l l i n sta l l i e rt werde n . A n s c h l ießend öffnet m a n fü r jede der g e
Web-Ciients. ES PAsyncWebServer i st a ber A m ei nfa c h sten e r l e d i g t m a n d i es, i n d e m n a n nten B i b l i ot h e ke n e i n m a l den P u n kt
deutlich leistu ngsstä rker, wei l sie m e h rere m a n d i e B i b l iotheken a l s ZI P-Dateien herun " S ketch > B i b liothek einbi nden > ZIP-Bibl io
Anfragen para l le l beantworten ka n n u n d terlädt und ü b e r d e n M e n ü p u n kt .ZI P-Bi thek e i n b i nden " und wä h l t die jeweils u m be
a u sgeklügelte Mecha n i s m e n zur Vera rbei bliothek h i nzufügen " i n der Ard u i no-I D E i m n a n nte Datei a u s .
tung von Dateien hat. portiert. Listi n g WebH D C l 008. i n o i m plementiert
Zurzeit gehört sie noch nicht zum Liefer Dazu lädt man die Zip-Arch ive von ESPA einen vol lstä n d igen Web-Server, der a uf sei
u mfa ng der Ard u i no-I D E u n d ist n icht über syncWebServer (https://g ithu b.com/me-no nem eigenen WLAN-Access-Point a rbeitet
den B i b l iotheksverwa lter verfü g ba r. H i nzu dev/ESPAsyncWebServer/a rchive/master.zip) u n d a l len andere n Tei l n e h m ern im WLAN die
kommt, d a s s. s i e d i e B i b l i othe k AsyncTCP u n d AsyncTCP (https://g ith u b.com/me-no- Daten eines H DC l 008-Sensors zur Verfü
g u n g stel lt. Zwa r gewi nnt d i e Aufbereitu ng
der Sensor-Daten kei n e Desig n-Preise, a ber
Voreinstellungen X a n d i eser Stel le geht es erst einmal u m d ie
Einstelunoen Netzwerk rei ne Mach ba rkeit.
Der Code i m portiert a l l e benötigten Bi
--•JMK�
l�c:�� �--- wW
�oo�
no====================== -------� - 1
b l iotheken u n d defi n i ert dann Kon s.ta nten
� I
__
�.Wlii"IU1gell : 1- V I G coM6
0 Zt!ilem..mnern anzeigen I
0 Code-Faltu1g aktivieren Temperatur: 23 . 4 4 c Luftfeuchtigke it : 58 . 90 '
0 Code nach dem Hochladen Oberpo-üfen Temperatur: 23 . 42 c Luftfeuchtiqkej, t : 58 . 90 '
23 . 4 4 c 58 . 90 '
0 ExtemeO Editor verwenden
Temperatur : Luftfeuchtigke i t :
Temperatur: 23 . 42 c Luftfeuchtigke i t : 58 . 90 '
0 Kon1>ilieften Kern aggressiv zwischenspoiche Temperatur: 23 . 42 c Luftfeuchtigke it : 58 . 8 0 '
0 Bein Start nach Updates suchen Temperatur: 23 . 4 1 c Luftfeuchtigke i t : 58 . 8 0 '
23 . 4 1 c 58 . 70 '
0 Sketche beim Speichern auf die neue Dateierweiterung aktualisieren (.pde -> .ino)
Temperatur: Luftfeuchtigke i t :
Temperatur: 23 . 4 0 c Luftfeuchtigke i t : 58.70 '
0 Speichern beim überpr� oder Hochladen Temperatur : 23 . 38 c Luftfeuchtigke i t : 58 . 70 '
Temperatur: 23 . 38 c LuftfeuchtiQke it : 58.70 '
Zusätzliche Boardverwalter-I.Jlls : I•!Package_NicoHood_HoodLoader2_index.json,https://dl.espressif. com/dlfpackage_esp32_index.json l li:ll Temperatur: 23 . 4 0 c Luftfeuchtiglcei t : 58 . 61 '
Mehr Voreinstellungen können direkt in der Datei bearbeitet werden
C:���ta'j.ocaiWduino!S'pre�ences.txt
(nur bearbeiten , wenn Arduino nicht läuft)
0 Autosaol D Zeitstempel anzeigen
Den Sketchbook-Speicherort findet man in den Voreinstellungen. Der ESP32 kommt mit 12C-Sensoren prima zurecht..
�
M e i n ES P 3 2
a 0 1 # i n c l ude <Wi F i . h>
o ·
2 # i n c l ude <ESPAsyncWebServe r . h>
3 # i n c l u d e < A d a f r u i t _H D C \ O O O . h >
�
0
1 3 3 7 n et a 4
5 c ön s t c h a r* S S I D = " M e i n E S P3 2 " ;
0
6 c o n s t c h a r * P A S S W O R D = " t e s t pa s s w o r t " ;
? We l c o m e a 7
0
8 AsyncWebS erver s e r ve r ( 80 l ;
� N T R G a st a 9 Ada f r u i t _H D C 1 0 0 0 s e n s o r = A d a f r u i t_H D C 1 0 0 0 C l ;
0
10
11 voi d setup ( ) {
0
? NTR a 12 S e r i a l . be g i n C 1 1 5200 l ;
13
0
14 i f ( ! sensor . beg i n ( Ox43 ) )
';' F R ITZ i ß o x 7 4 9 0 a
15 S e r i a l . p r i n t l n ( " Ko n n t e T e m p e r a t u r s e n s o r n i c h t f i n d e n . " ) ;
0
16 return;
17 }
0
18 Seri a l . pr i n t l n ( "�ensor wi rd i n i t i a l i si ert . " l ;
Der ESP32 kann sein eigenes WLAN aufspannen. 19 sensor . d rySenso r C l ; · I I B r a u c h t 1 5 S�kunden !
0
20
21 W i F i . softAP ( S S I D, PASSWORD l ;
22 S e r i a l . p r i n t ( " I P-Ad r e s s e : " ) ;
dern es sind die Zugangsdaten fü r ein neues
23 Seri a l . pr i n t ln(Wi f i . softAPIPC l l ;
WLAN, das der ESP32 a ufspa nnen wird. Diese 24
Z u g a ngsdaten benötigen a l so später a l l e
· 25 s e r v e r . o n ( " l " , H T T P_G E T , [ J ( A s y n c W e b S e r v e r R e q u e s t * r e q u e s t )
C l i ents, d i e s i c h m i t dem ESP32 verbi n d e n 26 S t r i ng m e s s a g e = " < ! d o c t ype h t m l > \ n " ;
J
27 message += " <h t m l > \ n " ;
wollen. 28 m e s s� g e + = " < h e a d > \ n " ;
Bevor es so weit ist, werden a uf der g l o 29 message += " < t i t l e> E S P 3 2 T h e rmo�e t e r
balen Ebene zwei Obje kte d e r Klassen Hyg rome t e r< l t i t l e> \ n " ;
30 mes s a g e + = " < l h ead>\ n " ;
0
A s y n c W e b S e r v e r u n d A d a f r u i t _H D C 1 0 0 0 a n
31 m e s s a g e + = " < bo d y > \ n " ;
gelegt. Letztere wird wie s c h o n zuvor i n der · 32 message +� " < h 1 >Tempe r a t u r : ,
s e tu p - F u n ktion i n itialisiert. Dort erfolgt auch 0 33 m e s s a g e += S t r i ng C s e n so r . readTempera t u re ( ) , 2 l ;
d i e l n itia l i s i e r u n g des WLANs u n d diesmal 34 message + = " T 5 1 ; <1 h 1 >\ n " ;
35 message += " < h 1> L u f t f e u c h t i g k e i t : " ;
wird n icht die b e g i n - F u n ktion der W i F i -Kias 36 m e s s a g e + = S t r i n g ( s e n so r . r e a d H u m i d i t y ( ) , O l ;
se verwendet, sondern d i·e F u n ktion s o f t A P . 37 m e s s a g e + = " % < 1 h 1 > \ n� ;
Die sorgt dafü r, dass a u s dem ESP32 e i n Ac 38 m e s s a g e + = " <lbody> \ n " ;
39 message += "<lhtml>\n" ;
cess Point mit den ü bergebenen Z u g a ngs 40 r e q u e s t - > s e n d ( 2 0 0 ;, " t e x t l h t m l " , m e s s a g e l ;
daten wird. 41 });
Ansch ließend w i rd d i e I P-Ad resse des Ac 42
43 s e r ve r . beg i n O ;
cess Poi nts mit W i F i . s o f t A P I P a !J sgegeben.
44
Die i st ü brigens per Vore i n ste l l u n g 45
1 9 2 . 1 6 8 . 4 . 1 , so d a s s s i c h e i n ESP32, d e r 46 vo i d loopO { }
einen Access Point betrei bt, sch n e l l fi n d e n
lässt. D i e Ad resse lässt sich b e i Bed a rf leicht
ä ndern.
Wie die Klasse W e b S e r v e r a rbeitet d i e
Klasse A s y n c W e b S e r v e r mit Event-Hand lern n u r Daten gelesen werden u n d d a h e r a l so den HTTP-Status-Code, den Content
und ve rwen d et sog a r d ieselben F u n ktions kommt H T T P _G E T zum Einsatz. Type und den I n h a l t der Nach richt.
namen, u m die Event-H a n d l e r zu reg i strie Ferner e rwa rtet die o n - F u n ktion ebenfa l l s Der I n halt der Nach richt ist diesmal zwa r
ren . Die Parameter sind ganz ä h n lich, u nter e i n e a nonyme F u n ktion, d i e d i e eigentliche a uch e i n Text, a b e r er repräsentiert eine
scheiden sich a be r im Deta i l . Wie zuvor steht Arbeit ü bern i m mt. Al l e rd i n g s ist d i e a n o ny- HTM L-Seite. Die i st etwa s ko m p l exer u n d
der erste Para m eter fü r den Pfad, fü r den der . me F u n ktion in d iesem F a l l nicht para m eter wi rd d a h e r Zei l e fü r Zei l e m i t h i lfe der Zei
Event-Handler zustä ndig ist. l n d iesem Fa l l ist l os, sondern e rwa rtet e i n e n Zeiger a u f e i n chen kette me s s a g e a ufgebaut. Sonderlich
das der Pfad " /" . Objekt der Klasse A s y n c W e b S e r v e r R e q u e s t . kom p l iziert ist der I n halt der Seite nicht und
Der zweite Parameter ist neu und steht fü r Das ist notwendig, weil die Klasse A s y n c W e b der wesentliche Kunstgriff besteht darin, die
den . Typen d e r HTTP-Anfrage, d i e von d ie S e r v e r meh rere Anfragen g l eichzeitig vera r Sensor-Daten dyn a m i sch i n den Quelltext
sem Event- H a n d l e r bea rbeitet werden sol l . beiten ka n n u n d somit potenzi e l l m e h r a l s der Seite einzuba uen. So sieht der anfragen
HTTP defi n i e rt e i n e Reihe v o n Anfrage e i n O bjekt der Klasse A s y n c W e b S e r v e r R e de Cl ient i m m e r d e n a kt u e l l e n Sta nd der
Typen, die a l l e auf densel ben Pfad angewen q u e s t i m Speicher existiert. Der Poi nter zeigt Di nge. Wei l d i e f.ntwort a n den Cl ient eine
det werd en kö n nen, aber eine a n dere Be d a n n a uf das jewe i l s richtige. HTM L-Seite ist, m u ss d e r Content-Type auf
deutung haben. Für reg u l ä re Anfragen, d i e Wie bei der W e b Se r v e r - Kiasse w i rd das Er text/html gesetzt werden. Andernfa l l s würde
keinerlei Daten verä n dern, verwendet m a n gebnis der Anfrage mit der s e n d-Fu nktion a n der Cl ient led i g l ich den Q u e l l text der Seite
d e n Typen G ET. Z u m Lösc hen v o n Daten d e n C l ient gesendet. Dies m a l g e h ö rt d i e a nzeigen.
dient DELETE und Änderungen erfo l g e n F u n ktion z u r K l a s s e A s y n c W e b S e r v e r R e s e r v e r . b e g i n sta rtet d e n WebServer
ü ber PUT oder POST. l n d iesem F a l l s o l l e n q u e s t , e rwa rtet a ber dieselben Parameter, und ü bern i m mt die Beha n d l u ng der Anfra-
'= u :
tionsbetrieb dringend geändert werden! Seiten m ittlerweile keine g roße Hera u sforde
eJ u I » = Soba l d m a n m i t dem ESP32 verb u n d e n r u n g mehr. I n s besondere, weil es heute so
i st, befi n d et m a n sich i n d e s s e n N etz. D a s viele n ützl i c h e CSS-Fra meworks und Java
heißt zuerst e i n m a l , d a s s e s keinen I nternet Script-Bibliotheken g i bt.
zugang g i bt, d e n n der ESP32 ist ja n icht mit F ü r d i e Vi s u a l isierung von Daten ist das
"' ., d e m I nternet verb u n d e n . Das ei nzige Ziel, Projekt Canvas Gauges (https://ca nvas-g a u
"' "'
das m a n erreichen ka n n , ist der ESP32 sel bst ges.com/) s e h r i nteressa nt. Es ist frei verfüg
10 '0
bezi e h u n g sweise der Web-Server, der a u f bar, läuft i n so g ut wie a l len B rowsern u n d
0 0
d e m G e r ä t a u f A nfragen wa rtet. Wie o b e n bietet eine F ü l l e u n tersc h iedlicher Anzeige
bereits besch rieben la utet d i e I P-Ad resse p e r I n stru mente. Listi n g i n d ex.html zeigt, wie
ou•
I I Voreinste l l u n g 1 9 2 . 1 6 8 . 4 . 1 u n d so fü h rt d e r
Aufruf von http:/1 1 9 2 , 1 68.4. 1 / z u r HTM L
sich Tem perat u r und Luftfeuchtigkeit im
H a n d u m d rehen schick a nzeigen lassen.
Seite mit den a ktuellen Sensor-Daten. Die HTM L-Seite besteht i m Wesentlichen
Das macht schon mehr her als spröde E i n paar Zei l e n Code defi n ieren e i n en a u s zwei canvas-Eiementen fü r das Thermo
Textausgaben. Web-Server, der a u f seinem eigenen WLAN- meter und das Hygrometer. Beide Elemente
werden ü ber d a t a -Attribute konfig u riert und
die tatsächlichen Sensor-Werte gehören i n s
Attri but mit dem Namen d a t a - v a l u e . Mög
,J i ndex . h tm l
·
lich macht d ies die JavaScript-Bibl iothek des
Ca nvas-G a uges-Projekts, die i n der Datei
,...,
1 < ! doctype h t m l > gauge.min.js gespeichert ist und aus Gründen
2 <html> der Beq uemlichkeit ü ber das I nternet geladen
·""'
3 < h e a d> wird. I m finalen Projekt müssen a l so die I n hal
4 <t i t l e> E S P3 2 T h e rmome t e r I Hygrome t e r< / t i t l e>
0 te der data-va l ue-Attribute dyna misiert wer
5 </head>
6 <body> den u n d die JavaScri pt-Datei m u ss aus einer
"-.,
7 < c a nv a • i d= ' t h e rmome t e r ' anderen Quelle kom men, wei l der ESP32 -
8 d a t a - w i d t h= ' 1 00 '
,-_ und d a m it in der Regel auch der anfragende
9 dat a-he i g h t = ' 200 '
10 d a t a - t ype= ' l i n e a r-gauge ' C l ient - keine I nternet-Verbindung hat.
r·
11 d a t a -t i t l e= ' Tempe r a t u r ' Es ist natürlich nur die h a l be Miete, wen n
12 dat a-un i t s= ' T 5 1 ; ' das a l les auf dem PC gut lä uft, denn d i e er
"
13 d a t a -va l ue= ' 2 2 . 3 ' >
14 </canvas>
stel lten HTMLc, CSS- und JavaScript-Dateien
,....,
15 <ca nva s i d= ' hyg rome t e r ' lassen sich n icht ohne Weiteres auf den ESP32
16 d a t a -w i d t h = ' 200 ' kopieren, obwohl das Development-Board
r-. .
17 · data-he i g h t = ' 200 '
ü ber a u s reichend Flash-Speicher verfügt.
18 d a t a - t ype= ' r a d i a l - g a u g e '
,-.,
19 d a t a - t i t l e= ' Lu f t f e u c h t i g ke i t ' Sel bst wen n es so wä re, ·g ä be es keine offen
""
20 dat a-un i t s= ' % ' sichtliche Mög l i c h keit, sie von einem Pro
21 d a t a -v a l u e= ' 66 . 3 ' > g ra m m aus zu lesen. G l ücklicherweise g i bt es
,..,_
22 </canvas> ·
23 <s c r i pt s r c= ' h t t p : / / cdn . rawg i t . com/ M i khus/ canvas-gauges/ fü r beide Probleme einfache Lösungen.
g h - p a � e s fd o w n l o a d / 2 . 1 . 5 / a l l / g a � g e . m i n . j s ' > Der " Ard u i n o ESP32 F i lesystem U p loader "
0
24 </ s c r i pt> ( h t t p s : / /g i t h u b . c o m / m e - n o-d ev/a rd u i n o
.....,
25 </body>
esp32fs- p l u g i n ) erweitert d i e Ard u i no-I D E
26 </html>
u m d i e Mög l i c h keit, beliebige Dateien i n den
,-..
Flash-Speicher des ESP32 zu kopieren. Dazu
iJ �20
�� � 1� 1 0�1�
1 -� 2 :�
• WiFi101
Dropbox Mangier 1 8- 08 F i le fo ld er
nur ausgepackt u nd i n s tools-Verzeich n i s der
[iill' howto.txt
201 8- 1 1 - 1 0 1 2:08 Fi l e fo l d er
A rd u i no-l n sta l lation ko p i e rt werd e n . Nach ,_ OneDrive
201 8-09- 1 1 1 7: 35 TXT Fi l e 6 KB
einem N e u sta rt der IDE ta u c h t i m M e n ü � This PC
Werkzeug. H i lfe
j
Automatische Formatierung 'Strg+ T
Sketch archivieren
> 14
P a rtition Scheme: "Standard"
15 {
:
i t ( ! S P I H S . beqin ( true l )
>
Core Debug Level : " Keine" 10 Serial . print ln ( " Da 'te i s y s r.em konnte n i cht i n i t i a l i s i ert werden . .. )
> 18 "
Port
Boardinformationen holen
. . .. . . .. . . I
>
· �>
Programmer. "AVRISP mkll "
.. · . . . · . .
()
2 <html>
3 <head> Temperatur �
n
4
.. ..
< t i t l e> E S P 3 2 T h e rmome t e r Hygrome t e r</ t i t le> "' U '"
5 </h ead>
6 <body>
n
.
"' "'
7 < c a n v a s i d= 1 t h e rmome t e r 1
40 40
8 d a t a - w i d t h = 1 1 00 1
,0
9 "' "'
.
data-he i g h t = 1 200 1
(\ 1 1
10 d a t a - t ype= 1 L i n e a r-gaug e 1 " "
n
r e p l a c e V a r i a b l e mit dem N a m e n des
P latzhalters. Die F u n ktion l i efert den zu er
setzenden Wert zurück u n d der w i rd in d i e
Z e i c h e n kette, d i e d e n Datei- I n h a l t reprä
wei l sie noch Platzhalter fü r die Sensor-Werte perfekt zu %TEMPERATU RE% und % H U M I DI sentiert, geschrieben. Dabei w i rd d i e Datei
enthält. Praktischerweise u nterstützt d i e TY% in der Datei index.htm l . i m F l a s h-Speicher nicht verä n d e rt.
A s y n c W e b S e r v e r R e q u e s t -Kiasse d i e E rset Für die Ersetzung ruft A s y n c W e b S e r v e r R e Für einen fi n a l e n Test w i rd das Prog ra m m
zung von P l atzha ltern, die d u rch zwei P ro q u e s t fü r jeden Platzhalter eine F u n ktion auf, ü be rsetzt u n d a u f den E S P 3 2 geladen. Fer
zentzeichen eingera h mt werden. Das passt die man zuvor reg istrieren m uss. l n d iesem n e r m ü ssen d i e · dazugehörigen Dateien
ü be r d e n M en ü p u n kt Werkze u g e > ESP32
S ketch Data U pload i n d e n F l a s h-Speicher
kopiert werde n . Diesen Sch ritt d a rf m a n bei
späteren Ä n d e r u n g e n n icht vergessen,
(
2 #i nc lude <ESPAsyncWebServe r . h>
3 # i nc l ude < A d a f r u i t _H D C 1 0 0 0 . h >
c
4 # i nc l ude <SPI F F S . h>
5
(
6 const char* S S I D = " M e i n E S P32 " ;
7 const c h a r* PASSWORD = " t e s t pa s s wo r t " ;
c
8
9 AsyncWebServer s e r ve r ( 80 l ;
c
10 A d a f r u i t _H D C 1 0 0 0 s e n s o r = A d a f r u i t _H D C 1 0 0 0 < l ;
11
(
12 vo i d s e t u p ( ) {
13 S e r i a l . be g i n ( 1 1 5 2 00 l ;
c
14
15 i f ( ! SPI FFS .begi n ( t rue ) ) {
(
16 S e r i a l . p r i n t l n ( " Da t e i sys t em kon n t e n i c h t i n i t i a l i s i e r t werden . " ) ;
17 return;
(
18
19
(
20 if ( ! s e n s o r . be g i n ( Ox43 l l
21 S e r i a l . p r i n t l n ( " Ko n n t e T e m p e r a t u r s e n s o r n i c h t f i n d e n . " ) ;
(
22 return;
23
( 24
25
Seri a l . pr i n t l n ( " Sensor wi rd i n i t i a l i si e rt . " l ;
senso r . d rySenso r ( l ; / / Brau c h t 1 5 Sekunden !
c 26
27 Wi F i . softAP ( S S I D 1 PASSWOR D l ;
( 28 S e r i a l . p r i n t ( " I P-A d r e s s e : " l ;
29 S e r i a l . pr i nt l n ( W i F i . softAPI P( l l ;
( 30
31 s e r v e r . o n ( " / g a u g e . m i n . j s " , H T T P_G E T , [ J ( A s y n c W e b S e r v e r R e q u e s t * r e q u e s t l _ {
( 32 r e q u e s t -> s e n d ( S P I F F S , " / g a u g e . m i n . j s " l ;
33 });
( 34
35
( r e q u e s t - >. s e n d ( S P I F F S , " / i n d e x . h t m l " , S t r i n g ( l , f a l s e , r e p l a c e V a r i a b l e l ;
s e r v e r . o n ( " / " , H T T P_G E T , [ ] ( A s y n c W e b S e r v e r R e q u e s t * r e q u e s t l {
36
37 });
( 38
39 s e rve r . begi n < l ;
( 40
41
( 42 vo i d l o o p ( l 0
43
( 44 S t r i ng rep l a ceVa r i a b l e ( const S t r i ng& va r l {
(
45 i f ( va r == " H U M I D I T Y " l
46 r e t u r n Str i ng ( se n s o r . r e a d H um i d i t y ( l , O l ;
(
47
48
49
·
i f ( v a r = = " T EM P E RATU R E " l
return S t r i ng ( senso r . readTempe r a t u re < l , 2 l ;
return S t r i ng ( l ;
( 50
Smarte· Gadgets
@ heise shop
Bestellen S1e ganz emfach onhne unter shop.heise.de oder per E·Ma11 [email protected]
MijjM@i!!ffi!iightj
Strahlendblauer
Funkenflug
Was d i e Ko m m unikation m i t d e r A u ßenwelt angeht, ist d e r ESP32 ein
wa h res M ultitalent. Neben WLAN spricht e r nämlich a uch fli e ßend
Bluetooth, was i h n z u einer exzellenten Basis fü r viele I oT-Projekte macht.
von M a i k Schmidt
>
>
_
_
Disk drives
Display adapters
111
> - DVD/CD-ROM drives Hi e r bin i ch !
> At Human Interface Devices
�
> .. IDE ATA/ATAPI controllers Hie r bin i ch !
> lmagi n g devices
Hie r bin i ch !
(8
> Ei3 Keyboards
> Mice and other pointing devices Hie r bin i ch !
> r;J Monitors
> � Network a d apters
Hie r bin i ch !
> p Other devices
Hi e r bin i ch !
Portable Devices
Jii
v iji Ports (COM & LPD Hi e r bin i ch !
iii
Communications P ort (C O M l )
Hie r bin i ch !
ij
Silicon Labs CP21 0x USB to UARl Brid ge (COM6)
Standard Serial over Bluetooth link (COMS) Hi e r bin i ch !
jp Stan d ard Serial over Blu etooth link (COM7)
> r;::;:J Print queues Ausgaben funktionieren in PuTTY problemlos.
> D Processors
> S Sensors
> J Software devices
> (I Soun d, video and g ame controllers a u c h Nac h richten a n den E S P 3 2 s e n d e n .
· > � Storage controllers Listi ng Seria i B i u etoot h B i d i re c t i o na l . i n o l i est
> _ System devices
zum B e i s p i e l a l l e Daten, d i e ü be r die B l ue
> f
0 Autoscroll D Zeitstempel anzeigen
Universal Serial Bus controllers
tooth-Sc h n ittste l l e h e rei n k o m m e n u n d g i bt
sie d i rekt wieder auf der reg u l ä re n seriel l e n
S c h n ittste l l e a u s .
Windows erzeugt gleich zwei GOM-Ports für den Bluetooth-Nachrichten kann man auch im
U m zu sehen, wie d a s fu n kt i o n i ert, m u ss
ESP32. seriellen Monitor der Arduino-IDE lesen.
ma n zwei seri e l l e Te r m i na l s öffn e n . Den seri
e l l e n M o n itor öffnet ma n i n der Ard u i n o-I D E
wie gewo h nt fü r die d ra h tg e b u n d e n e
Gerät automatisch e i n e seri e l l e S c h n ittste l l e, F ä l l e n auch ein wenig ü be rtrieben, die ga nze
S c h n ittste l l e des E S P 3 2 . Pa ra l l e l öffnet man
ü ber die ma n mit dem Gerät ko m m u n izieren Ard u i n o - I D E n u r fü r den seriell e n Mon itor zu
PuTIY und ste l l t den COM-Port der B l ue
ka n n . U nter Windows fi ndet man im Ge räte i n sta l l ieren. S i n nv o l l e r i st es, e i n P rog ra m m
tooth-Sc h n ittste l l e ein. Alle Nac h ric hten, d i e
Manager nach der Kop p l u n g mit dem ESP32 w i e PuTIY (https://www.putty.o rg/) z u i n sta l
ma n da n n i m E i n ga befe n ster von PuTIY e i n
g l e ich zwei n e u e COM-Ports. D i e G r ü n d e l i eren, das g e na u fü r d i esen Zweck e rste l lt
g i bt, ersc h e i n e n sofo rt i m seri e l l e n Mon itor
dafü r s i n d tec h n i s c h e r Nat u r u n d fü r e rste w u rde. Neben d iversen a n d e ren P roto ko l l e n
d e r Ard u i n o - I D E .
Expe rim ente ist der erste COM-Port die rich u n terstützt PuTIY n ä m l i ch a u c h d i e seri e l l e
Mit der Kom m u n i kation i n b e i d e R i c h t u n
tige Wa h l . Kom m u n i kation u n d m a n ka n n s i e d i rekt
g e n l ä sst s i c h natü r l i c h e i n e M e n g e a n fa n
Jetzt benötigt ma n n u r n o c h e i n seriel les nach d e m Sta rt zusa m m e n m i t der seri e l l e n
g e n . Z u m B e i s p i e l ka n n d e r E S P 3 2 S e n sor
Term i nal, u m d i e Nac h richten des ESP32 zu S c h n ittste l l e auswä h l e n . Soba l d ma n d i e Ver
daten per F u n k ü bertra g e n . Der ESP32 ka n n
lesen bezi e h u n g sweise um i h m neue Nach b i n d u n g d u rc h e i n e n K l i c k a u f d e n O p e n
a b e r a u c h Ko m ma n d o s e m pfa n g e n , u n d
richten zu senden. Am e i nfachsten geht das Button g eöffnet hat, g i bt PuTIY m u nter d i e
L i st i n g B l u etoothSwitc h . i n o i m p l e m e nt i e rt
mit dem serie l l e n M o n itor der Ard u i n o - I D E . Nac h richten a u s, d i e p e r B l u etooth em pfa n
e i n e n pri m itiven Lichtschalter. E m pfä n g t der
Dort wä h l t m a n i m M e n ü Werkze uge > Port gen werd e n .
E S P 3 2 eine 1 , so schaltet e r d i e Stat u s - L E D
d i e seriel l e S c h n ittste l l e d e r B l u etooth-V e r
a u f d e m Dev e l o p e r- B oard e i n . S e n d et m a n
b i n d u n g a u s u n d s c h o n t r u d e l n d i e Nac h Vice Versa e i n e 0, schaltet er sie w i e d e r a u s .
richten e i n .
Da n k e i n e r weits i c h t i g e n S pezifi kat i o n
Al lzu komfo rtabel ist der seri e l l e Mon itor Das Ga nze fu n kt i o n i e rt auch a n d e r s h e r u m ,
u n d robuster I m plementierungen i n moder
der Ard u i n o - I D E n i c ht und es wäre i n v i e l e n d a s h e i ßt, ma n ka n n ü be r d i e S c h n ittste l l e
nen Betriebssystemen u nterscheidet sich der
Zug riff auf B l u etooth ka u m vom Zug riff auf
d ra h tg e b u n d e n e seri e l l e S c h n ittste l l e n . Der
Sg_eed
d u n gen i n beinahe jeder P rog ra m m ierspra
Keyboard
'
Serial line
Bell jcoMSI 1 19600 I
che, d e n n so g u t wie jede P rog ra m m ierspra
che ka n n auf seri e l l e S c h n ittste l l e n zug reifen.
Features
$·· Window
t...o nnect1on tyPe :
0 Ra� 0 Ieinet 0 Riog[n 0 �SH
. I @ Se[ial I Das geht a u c h s m a rter
. • . ...
p l e m e ntiert d a s Serial P o rt P rofi l e ( S P P ) . g i bt, bedeutet a l so n i cht, dass es in Z u ku nft hen. Profi le bilden eine H iera rchie und kön
S m a rtphones i m p l e m entieren oft e i n e a u c h kei ne geben wird. nen aus einem oder m e h reren Diensten be
ga nze R e i h e v o n P rofi l e n , wie z u m Beispiel Das Konze pt d e r Profi l e w u rde schon i n steh e n . Dienste wiederu m bestehen a u s
das Adva nced Audio D i stri bution P rofi l e d e n Anfä n g e n d e r Sta n d a rd i s i e r u n g d efi e i n e r o d e r meh reren C h a ra kteri sti ken . E i n e
(A2DP), d a s Head set P rofi l e ( H S P), d a s n i ert.- Weil a ber fü r BLE e i n e g a nze M e n g e C h a r a kteristi k setzt sich a u s verschiedenen
H a n d s F ree P rofi l e ( H F P) u n d d a s P h o n e n e u e r D i e n ste z u e rwa rten i st, s i e h t d e r Eigenschaften, e i n e m Wert u n d e i ner Liste
book Access Profi l e (PBAP). l n Kom b i nation B l u etöoth-Sta n d a rd dafü r e i n ü berg reife n von Deskri ptoren zusa m men.
ermög l ichen d iese Profi l e das beq ueme Te des Profi l m i t dem N a m e n G e n e r i c Attribute Die Eigenschaften einer C h a ra kteristi k de
lefo n ieren im Auto. P rofi l e (GATT; https://www.bl u etooth .com/ fi n ieren, a uf welche Weise C l ients a u f d i e
s pecificati o n s/gatt) vor. U nterh a l b d ieses C h a ra kterist i k z u g reifen kö n n e n . Beispiels
Profil zeigen P rofi l s kö n n e n H e rste l l e r fl exi be l weitere weise können manche Charakteristiken gele
Dienste (Services) defi n ieren. sen u n d/oder geschrieben werde n . Beim
S o g u t w i e a l l e P rofi l e s i n d o ptio n a l , a be r Die Liste d e r BLE-Dienste ist schon jetzt S c h reiben g i bt es zwei u ntersc h ied l i c h e
a l le Geräte m ü ssen das G e n e r i c Access P ro recht l a n g u n d vielfä ltig. A ngefa n g e n bei Spielarten, n ä m l ich ei ne, b e i der dem Cl ient
fi l e (GAP) i m p l e mentieren, d e n n das rea l i einem Dienst, der ü ber den a ktu e l l e n Lade eine Q u itt u n g ü berm itte lt w i rd ( " write re
siert d i e g r u n d legenden Z u g riffsmechan is zu sta nd der Batterie i n fo r m i e rt, bis h i n zu q uest "), und ei ne, bei der das n icht der F a l l
men und die Verwa l t u n g von Verb i n d u n einem Dienst, der konti n u ierlich den Bl utzu ist ( " write command " o d e r " write without re
g e n . Ü brigens l a s s e n s i c h P rofi l e per Soft ckerspiegel ü berwacht, ist schon eine ga nze sponse ") .
ware nachrüsten, was i n s beso ndere fü r den Menge d a bei. Ferner kö n n e n C l ients s i c h a utomatisch
ESP32 interessant ist. Dass es fü r besti m mte U m mit BLE-Diensten zu a rbeiten, i st es ü ber Verä nderu ng.e n des Wert�s einer Cha
Profi l e heute noch kei n e I m p l e mentieru n g wichtig, Profi l e und deren Aufba u zu verste- ra kteristi k i nformieren lassen. Die dazugehö
rigen Eigenschaften h e i ß e n N otifi kation
( " notify") u n d I n d i kation C,i n d icate " ). Eine No
tifi kation m u ss der Client n i c h t q u ittieren,
eine I n d i kation hi ngegen schon. Darüber hi
naus g i bt es noch eine ga nze Reihe weiterer
E1g e n schaften, wie zum Beispiel die B road
cast-Eigenschaft, d i e festlegt, dass der Wert
Profi l Dienst Charakteristik
e i n e r C h a ra kteristik a u c h via B roadcast be
ka nnt gegeben werden ka n n .
Zusätzlich zu d e n Eigenschaften speichert
d i e C h a ra kterist i k d e n tatsäc h l ichen Wert
u n d e i n e Liste opti o n a l e r Deskri ptoren, d i e
BLE-Profile haben eine hierarchische Struktur. d i e C h a ra kteristik noch weiter besc h reiben.
('
B l eSe rve r . i no
•
vice die Kurz- U U I D Ox 1 80F.
DEO
M E I N ESP32 M E I N ESP32
DEO ADVERTISER X
B4"E6.20 89 CF-F3
ADVERTISER
B4:E6:2D: B 9 : C F : F3 X
Unknown Service
U U I D : Ox1 800
A D D VA L U E P R I M ARY S E RV I C E
Unknown Service
U U I D : 4fafc20 1 -1 fb 5-459e-8fcc-c5c9c33 1
Save a s . . .
1 4b
P R I MARY S E RV I C E U U I D : 4fafc20 1 -1 fb5-459e-8fcc-c 5c9c33 1
Unknown Characteristic
1 4b
P R I M A RY S E RV I C E
P r o p e rt i e s : R EAD, W R I T E
Va l u e : ( Ox ) 48-6 1 -6C-6C-6 F-2C-20-4D-6
U U I D : beb 5483e-36e1 -4688-b7f5-ea07 ...
SAVE CANCEL SEND
P r o p e rt i e s : R EAD, W R I T E .
• •
Auch der Wert der Charakteristik stimmt. Neue Werte zu setzen ist auch kein Problem. Der neue Wert steht sofort zur Verfügung.
Spektru m u nter dem Namen MeinESP32 be N a m e n M e i n ESP32 a u ft a u c h e n . Die F u n ktion F u n kwe l l e n reitet. Ferner bieten s i e eine g e
ka n nt. Anschließend erzeugt sie einen neuen C o n n ect ve r b i n d et d i e A p p dann m i t dem n e r i s c h e B e n u tzu n g s s c h n ittste l l e, m i t d e r
Server und fü r den Server einen neuen Dienst. ESP32. Der n e u d efi n i e rte D i e n st trägt den s i c h z u m B e i s p i e l We rte b e l i e b i g e r Daten
Dem Dienst wird dabei die zuvor festgelegte Namen " U n known Service", weil seine U U I D typen lesen und s c h re i b e n l a s s e n .
U U I D zugewi ese n . Zu beachten ist h i e rbei, n i c h t z u d e n b e ka n nten Service- U U I Ds ge F ü r reg u läre Ben utzer u n d rea l e Anwen
dass die meisten F u n ktionen der BLE-Bibl io h ö rt. Ü ber d i e U U I D, d i e i m Prog ra m m verge d u n g e n t a u g e n A p p s wie n R F C o n n ect h i n
thek Zeiger auf Objekte zurückgeben. Bei ben wu rde, lässt er s i c h a be r trotzd e m e i n g e g e n n i c h t. H i e r m u s s s c h o n e i n e e i g e n e
spielsweise l iefert B L E D e v i c e : : c r e a t e S e r v e r wa n dfre i erke n n e n . Anwe n d u n g h e r u n d d a s ist d a n k a ktue l l er
einen Zeiger auf ein B L E s e r v e r -Objekt . E i n K l i c k auf den Dienst zeigt d i e C h a r a k Tec h n o l o g i e n nicht m e h r g a n z so ko m p l i
I m weiteren Ve rl a u f erzeugt d a s P ro terist i k des D i e n stes a n . A u c h s i e lässt s i c h z i e rt w i e n o c h v o r e i n p a a r J a h re n .
g r a m m e i n e C h a ra kte r i st i k m i t d e r zu A n ü be r d i e U U I D i d e n t ifizieren u n d hat d i e Zu e i n e m g uten u n d n ützl ichen C l ient g e
fa n g fe stg e l eg t e n U U I D u n d d e n S c h r e i b E i g e n s c h afte n Lesen ( R EAD) u n d S c h re i ben h ö rt a b e r a u c h e i n s i n nvo l l e r Server. Listi ng
u n d Lese- E i g e n s c h afte n . D i e C h a ra kte r i s t i k (WRITE) . Ein Klick a u f d e n k l e i n e n Pfe i l , der B l eServe r. i n o vera n sc h a u l icht zwa r g ut, wie
erhä l t den Wert " H a l lo, M a ke-Magazi n ! ". nach u nten zeigt, fö rdert d en a kt u e l l e n Wert man eigene C h a ra kteristi ken d efi n ieren
Sch l i e ß l i c h w i rd s owo h l d e r D i e nst a l s zutage. Mit dem lcon, dessen Pfe i l n a c h oben ka n n , a be r d i e gesendeten Daten s i n d pro
a u c h d e r Server gesta rtet. A b d i es e m M o wei st, lässt sich ein neuer Wert fest l e g e n . pri etä r u n d kö n n e n von Werkze u g e n wie
ment kö n n e n C l ients in d e r U m g e b u n g d e n D a z u m u s s m a n z u e rst d e n T y p des Werts nRF Co n n ect nur a n g ezeigt u n d n i cht i nter
neuen Dienst fi n d e n . Weil a l l d i ese Akt i o n e n a u swä h l e n , was in d i esem F a l l Text i st. Zwa r p retiert werd e n . D a h e r wä re e i n B LE-Server
i m H i n terg r u n d a u s g efü h rt werd e n , ka n n ka n n m a n d e n Wert a u c h in Form h exadezi h i lfre ich, der auf e i n e n der Sta nda rd-Dienste
sich d i e l o o p - F u n kt i o n sch lafe n l e g e n . mal kod i e rter Bytes ei n t i p p e n , a be r das ist der B l u etooth-S pezifi kation setzt.
Um d a s Prog ra m m zu testen, benötigt m a n schon etwa s u m stä n d l i c h . A l s Beispiel-Anwe n d u n g d rängt sich gera
einen BLE-Ciient u n d d a z u e i g n et s i c h e i n Hat m a n e i n e n n e u e n Wert e i n g egeben, dezu auf, d i e Werte eines H DC l 008-Sensors
Smartphone a m besten. A l l e rd i n g s feh l t noch w i rd e r d i re kt ü be rn o m m e n . Sch ritt fü r d ies m a l n icht per WLAN u n d HTIP, sondern
eine passende App und wäh rend der Entwick Sch ritt ka n n m a n sich so in e i n e m u n beka n n per B l u etooth Low E n e rgy zu vertei l e n .
l u n g ist es s i n nvo l l , einen generischen B l ue ten BLE-Dienst o rientieren oder a b e r p rüfen, Wen i g ü berrasc hend defi n i e rt der B l u etooth
tooth-Ciient zu verwenden, der m i n utiös da rü o b der e i g e n e D i e n st s i c h C l i e nts gegen ü be r Sta n d a rd bereits e i n e n Dienst fü r solche U m
ber Ausku n ft g i bt, was sich auf der Luftsch n itt g e n a u s o p räsentiert, wie es g e d a c h t war. weltse nsoren. Der Dienst hat den N a m e n En
stelle gerade so tut. Sowo h l u nter iOS a l s a u c h vironmental Sensing und d i e I D Ox 1 8 1 A. I n
u nter Android ist n R F Connect eine g ute Wa h l . Geht das au.ch in schön? nerha l b des D i e n stes g i bt es e i n e l a n g e Liste
Wichtig i s t e s , sowo h l Bluetooth a l s auch B L E m ö g l i c h e r Charakteristiken u n d d i e fü r Te m
i n d e n Einstel l u ngen d e s S m a rtphones zu a k Zu D e b u g g i n gzwecken s i n d A p p s w i e n R F pera t u r und Luftfe u c h t i g keit h a b e n die I Ds
tivieren, wen n das noch nicht geschehen i st. C o n n ect u n verzi c h t b a re H e l fe r, d e n n s i e Ox2A6E bezi e h u n g sweise Ox2A6F. Weitere
Sucht man i n der App nach Geräten i n der geben b i s a u fs B i t g e n a u d a r ü be r A u s ku nft, Sensoren lassen sich bei Bed a rf leicht nach
Umgebung, sol lte d e r E S P 3 2 u nter dem was in d e r nä heren U m g e b u n g g e r a d e d i e rüste n .
c
B LE-Sen sor, d e r d i e Daten eines HDCl 008-
Sensors konti n u ierlich a u s l iest und a n seine B l eSensor . i no
Umgebung sendet. Die Ü bertra g u n g erfolgt
mithi lfe des Sta n d a rd-Dienstes, so dass a l l e 1 # i n c l ude < BL E D e v i c e . h>
2 # i n c l ude. <BL E S e r v e r . h>
Clients, d i e dessen P rotoko l l e i m plementie
3 # i n c l ude <BLEUt i l s . h>
ren, die Daten verstehen kön n e n . 4 # i n c l ud& <BLE2902 . h>
D a s Prog ra m m i s t n icht ü bermäßig lang, 5 # i n c l ude < A d a f r u i t _H D C 1 0 0 0 . h >
n u tzt a ber einige n e u e F u n ktionen und r 6
7 A d a f r u i t_H D C 1 0 0 0 s e n s o r = A d a f r ui t_H D C 1 0 0 0 C l ;
F u n ktional itäte n . Der Anfa n g wirkt jedoch
8
vertra ut, denn d o rt werden nur alle benötig 9 B L E D e s c r i p t o r h u m i d i t y D e s c r i p t o r ( B L E U U I D C C u i n t 1 6_t l O x 2 9 0 1 l l ;
ten Bibl iotheken eingebunden und ein g loba 10 B L E D e s c r i p t o r t e m � e r a t u r e D e s c r i p t o r ( 8 L E U U I D ( ( u i n t 1 6_ t J O x 2 9 0 1 l l ;
les Objekt der Klasse A d a f r u i t ....: H D C 1 0 0 0 de 11
12 BLECha racteri sti c humi di tyCha racteri st i c (
fi niert, das zum Auslesen des HDCl 008-Sen
13 B L E U U I D ( ( u i n t 1 6_t l 0 x 2 A 6 F l ,
sors dient. 14 B L E C h a r a c t e r t s t i c : : P R O P E R T Y_R E A D I B L E C h a r a c t e r i s t i c : :
Dan n folgen weitere globale Variablen, die P R O P E R T Y_N O T I F Y l ;
g rößtentei l s zur Defi n ition der BLE-Chara kte 1 5 B L E C h a r a c t e r i s t i c t empe r a t u r e C h a r a c t e r i s t i c (
16 B L � U U I D ( ( u i n t 1 6_t l 0 x 2 A 6 E l ,
ristiken dienen. Die ersten beiden sind I n sta n
17 B L E C h a r a c t e r i s t i c : : P RO P E R T Y R E A D I B L E C h a r a c t . r i s t i c : :
zen der Klasse B L E D e s c r i p t o r. Sie werden im P R O P E R T Y_N O T I F Y l ;
-
-
ESP32-SENSOR ESP32-S E N S O R
ESP32-SENSOR ED ADVERTISER X >ED A DVERTISER X
DEO ADVERTISER
84 E6 20 89 CF F3 X 84 E6 20_ 8 9 C F · F 3 B4: E6: 2 D B9 : C F: F3
Generic Access
Temperature H um idity .!. _...
U U I D : Ox2A6E U U I D : Ox2A6F
U U I D : Oxl 800
P rop ert i e s : NOTIFY. READ P r o p e rt i e s : N OTI FY, READ
P R I M A RY S E RV I C E
Descrlptors:
.!. ..!.
Va l u e : 30.00%
Environmental Sensing Characteristic User Descriptors:
.!. ..!.
U U I D : Oxl 81 A Description
Ghara cteristic User
P R I MARY SERVl C E U U I D : Ox2901 .
.!.
Description
Cl ient Ghara cteristic Gonfiguration U U I D : Ox2901
U U I D : Ox2902 Va l u e : Luftfeu chte 0-1 00%
• •
U U I D : Ox2A6F U U I D : Ox2902
P rop ert i e s : N OTI FY, READ
nRF Connect erkennt den Environmentai nRF Connect kann auch die gesendeten Die Sensor-Daten zeigt nRF Connect
Sensing-Dienst auf dem ESP32 sofort. Charakteristiken i nterpretieren. ebenfalls an.
®a
ESS Sen s i ng Tem peratu re
H u m i d ity
ES M e a s .
Flags
S a m p l i n g Fu n c .
M e a s . Period
BLE Tool erkennt sofort, dass auf dem ESP32 der Beide Charakteristiken werden von BLE Tool B L E Tool kann n u r d i e Temperatur lesen, bereitet
Environmentai-Sensing-Dienst läuft. erkannt. sie aber nett auf.
so d a s s d i e Werte a u tomatisch a ktu a l i s i e rt h a be n , a u f der sie l a ufe n . A u s S i c h t der S i · s o n d e r s gut u n d e i nfa c h fu n kt i o n i ert d i es
werd e n . c h e r h e i t ist d i ese E i n s c h rä n ku n g n a c h vo l l m o m e ntan mit Goog les C h rome-Browser.
Es g i bt a u c h A p ps, wie z u m Beispiel B L E ziehbar, a be r es macht d i e Plattform fü r man Der zeigt u nter der URL ch rom e://bluetooth
Tool, die Sta n d a rd-Dienste etwas a n sprechen c h e h a rdwa re n a h e n Anwe n d u n g e n h ö c h st i nterna l s/ zum Beispiel m e h r I nfo rmati onen
der visua l i sieren kön n e n . BLE Tool spielt klag u nattra ktiv. ü be r B l u etooth-Ad a pter u n d -Geräte an, als
los mit dem ESP32 zusa m m e n und erke n nt Da n ke n swerterweise g i l t d iese E i n sc h rä n manch d e d i z i e rtes B l u etooth-To o l . Das g i l t
den Environmentai-Sensi ng-Dienst u n d seine k u n g n i c h t fü r B l u etooth, d e n n es g i bt d e n sowo h l fü r den Desktop a l s a u c h fü r die mo
beiden Chara kteristiken. Zurzeit ka n n d i e App Web B l u etooth-Sta n d a rd, den m e h rere b i l e Versi o n .
a ber nur die Tem peratur a nzeigen. B rowser bereits u nterstütze n . M itte l s Web Prinzi p i e l l sol lte W e b B l u etooth mit a l l en
B i u etooth ist es mög l i c h , per JavaScri pt mit G e räten fu n kt i o n i eren, die B l u etooth 4.0
M arke Eigenbau B l uetoot h - D i e n sten zu kom m u n izieren. Be- oder h ö h e r i m p l e m entieren. Die Web- B i ue-
Services: 3
GATI Connected: Connetted
-70
Services
Latest RSSI:
Services: 3
Serv•ce
Services
00001801 -0000-1 000-8000-0080Sf9b341b
Service li'lfo
Characterlstics
Charactenst1c
00002aOS-0000-1000-8000 0080Sf9b34fb
Chracterlstlc Info
Propertles �
tooth-S c h n ittste l l e ist e i n i g e r m a ß e n kom
Chrome gibt bereitwillig Auskunft über Bluetooth-Geräte in der Umgebung.
p a kt und Goog l e bietet i m N etz jede Menge
B e i s p i e l e , i n sbeso n d e re fü r B l u etooth Low
E n e rgy ( https://g o o g l e c h ro m e . g i t h u b.io/
loc::x.:.:.1:.c
8 1.::.
a.
____ __JI c
lox=-2::..:
•6.::.•. ____ __JI I Get Bluet�ot.h characteristic prope rties I Beispie l-Anwe n d u n g sol l konti n u ie r l i c h d i e
Te m peratu r-Werte a l s N otifi katio n e n vom
ESP32 e m pfangen und da rste l l e n . Als Ben ut
Live Output z u n g s s c h n ittste l l e d i e n e n eih Sta rt- und e i n
Stop-Button, u m den Em pfa n g der Werte z u
R e q u e s t i n g B l uetooth Dev i c e . , . .
starten bezi e h u n g sweise zu stoppen. U m d a s
C o n n e c t i n g t o GATT S e r v e r . . .
Gett i n g S e r v i c e . .. .
Beispiel mögl ichst ü bersichtlich zu gesta lten,
Gett i n g C h a r a c t e r i s t i c . . . zeigt es die Luftfeuchti g keit nicht a n .
> C h a r a c t e r i s t i c UUI D : 00002a6e - 0000 - 1000 - 8 000 - 00 8 0 5 f9b 34fb
Das ku rze Listi n g i n d ex. html defi niert d i e
> Broadc ast : false
> Read : true Oberfläche der Anwend u n g mit ei nfachsten
> Write w/o r e s po n s e : false M itte l n . Die a ktu e l l e Tem peratur steht i m Ele
> Write : false
ment mit der ID tem peratu re Lind die beiden
> Not ify : t rue
> I n d i c at e : false Butto n - E l e m e nte d i e n e n zum Starten u n d
> S i gned W r i t e : false Stoppen d e r Kom m u n i kation. Am Ende d e s
Aux i l i a r i e s :
> Queued W r i t e : false
Dokuments w i rd d i e Datei notifications.js ge
> Writable false
laden, die die eigentliche Arbeit erled igt.
Der JavaScri pt-Code besteht i m Wesentli
Mit den Google-Beispielen kann man auf den ESP32 zugreifen. chen a u s d rei F u n ktionen u n d einer g lobalen
P r o m i ses l ö s e n d i eses - u n d n o c h e i n p a a r
a n d ere P r o b l e m e - a u f e l eg a nte A rt u n d [j B lue toot h low En e rgy· Sens ;t X +
D X
23 . 74 noti f i c a t i o ns . js : 47
sel bsr w i e d e r e i n P r o m i s e -O bj e kt z u r ü c k. 0 2 3 . 73 notifi c a t i o n s . js : 47
D a h e r beko m mt a u c h t h e n potenzi e l l zwei 23 . 71 notifi c a t i o n s . js : 47
23 . 73 noti f i c a t i o n s . js : 47
E n d e d e r Ka skade d i e F u n ktion c a t c h u m d i e 23 . 74 noti f i c a t i on s . js : 47
23 . 74 n oti fications . js : 47
Die Ü bergabe der F u n ktionen e rfo l g t oft
23 . 73 noti f i c a t i o n s . js : 47
in Form e i n es La m b d a -A u s d r u c ks . Das ist
0 2 3 . 74 noti f i c a t i o n s . js : 47
e i n e beso n d e rs ko m p a kte S c h re i bweise zur Not i f ika t i on e n \o'lerden i g n o riert . noti f i c a t i o n s . js : 36
Defi n i t i o n einer a n o n y m e n F u n kt i o n , a l so
einer F u n ktion ohne Namen. E i n solcher Aus
d ru c k wi rd mit d e m = > -Operator e rzeugt. ! Console X
S c h l i e ß l i c h ist es noch wichtig zu wissen,
dass d e r R ü c kga bewert d e r a n onymen F u n k- Auf dem PC kann man BLE-Ciients bequem im Browser bauen.
( "_" ),
Ausdruck ü bergeben w i r d . Der ist n ä m l i c h a u fg e rufe n wird. Die w i rd weiter u nten noch in e i n e vorzeichenbehaftete 1 6 Bit-Za h l um
e i n U nterstrich weil d e r P a ra m eter i n d efi n i e rt. g ewa ndelt werd e n . D i e Va r i a b l e v a L u e i st
nerha l b des L a mbda -A us dr u cks n i c h t ver Vö l l i g analog a rbeitet . die F u n kt i o n vom Typ D a t a V i e w u n d solche Objekte ka p
wendet wird. a n S t o p B u t t o n C L i c k . Sie stoppt d e n N otifi ka- . sein den Zug riff auf e i n A r r a y B u f f e r -Objekt,
Zum Sc h l u ss w i rd mit d e r F u n kt i o n a d d t i o n s m e ch a n i s m u s u n d entfernt d i e Ca l l d a s i n JavaScript z u r Verwa l t u n g b i n ä rer
E v e n t L i s t e n e r noch e i n e Ca l l back- F u n ktion back-Fu n kt i o n wieder. Daten d ient. Dieses A r r a y B u f f e r -Objekt ent
bei der Tem pe ratu r-Charakteristik reg istriert. h a n d L e .N o t i f i c a t i a n s beko m mt a l s Para hält zwei Bytes, die wieder zu einer 1 6 Bit-Za h l
Dieser Aufruf sorgt dafü r, dass i m me r d a n n, meter e i n Ereig n i s mit.dem a ktu e l l e n Tem pe zusa m m e ngebaut- werden s o l l e n . Dabei h i lft
we n n sich der Wert d e r C h a ra kteri sti k geän ratu r-Wert ü bergeben. Der ist g e n a u so ko d i e F u n ktion g e t i n t 1 6 . Sie erhält den I n dex
dert hat, die F u n ktion h a n d L e N o t i f i ca t i a n s diert, wie es der Sta n d a rd vorsieht und muss der 1 6 Bit-Za h l im A r r a y B u f f e r und das Ar
g u ment t r u e l egt fest, in welcher Reihenfolge
d i e Bytes a bgelegt sind C,l ittle endia n").
A m �nde desProg ra m m s werden noch die
beiden Ca l l back- F u n ktionen fü r die Button s
mit den entsprechenden Button s verkn ü pft.
not i f i ca t i ons . j s
1 va r myC h a ra c t e r i s t i c ;
2 Klick m i c h !
3 · f u n c t i on on S t a r t Bu t tonC L i � k ( )
4 L e t serv i ceUu i d = Ox1 81 a ;
5 L e t c h a r a c t e r i s t i cUu i d = Ox2a6e; Der Vortei l von Web-Anwendüngen ist, dass
6 sie a u f so vielen P l attformen fu n ktionieren.
7 c o n s o L e . L o g ( ' .S u c h e n a c h B L u e t o o t h - G e r ä t e n . ' ) ; Die Datei i ndex.html ka n n m a n zum Beispiel
8 navi gator . b L uetoot h . requestDevi c e ( {f i L ters :
mit dem C h rome-Browser auf dem PC laden
[ { servi ces : [servi ceUu i d J } ] } )
9 . t h e n ( d e.v i c e = > {. u n d auf d e n Sta rt-Button klicke n . D a n n öffnet
10 c o n s o L e . L o g ( '. V e r b i n d u n g m i t d e m G A T T - S e r v e r . ' ) ; sich e i n Dia l og-Fenster, in d e m der B rowser
11 return devi ce . gatt . connect < l ;
(' 12 })
nach B l u etooth-Geräten in der N ä h e sucht.
13 · . t h e n ( s e r v e r => { Hat e r d e n ESP32 gefu n d e n , ka n n m a n i h n
14 c o n s o L e . L o g ( ' S u c h e d e n S e n s o r - D i e n s t. ' ) ; ko p pe l n u n d schon sol lten d i e Te m pe rat u r
15 r e t u r n s e rve r . ge t P r i ma ryServi c e ( s e r v i c e U u i d l ; Daten eintru d e l n . E i n Kl ick auf den Stop-But
16 })
17 . t h e n ( s e r v i ce => { ton beendet den . Date n reichtu m. Wen n man
18 conso L e . L og ( ' S u c h e d i e Tempe r a t u r- C h a r a k t e r i s t i k . ' ) ; noch d i e JilVaScri pt-Ko n s o l e ü be r das M e n ü
19 r e t u r n s e r v i c e . g e t C h a r a c t e r i s t i c ( c h a r a c t e r i s t i c Uu i d l ; Weitere Too l s > Entwicklertools öffnet, ka n n
20 })
m a n s i c h para l l e l a u c h n o c h d i e Log-Ausga
r 21 . t h e n ( c h a r a c t e r i s t i c => {
22 myC h a ra c t e r i s t i c = c h a r a c t e r i s t 1 c ; ben des Progra m m s a n sehen.
23 r e t u r n my C h a r a c t e r i s t i c . s t a r t N o t i f i c a t i on s ( l . t h e n (_ = > { Genauso fu n ktio n i e rt d i e Anwen d u n g im
24 c o n so L e . L og ( ' No t i f i ka t i o n e n w e r d e n e mp f a ng e n . ' ) ; C h rome-Browser auf dem S m a rtphone. A l l er-
25 myC h a r a c t e r i s t i c . a d d Eve � t l i s t e n � r
( ' c h a r a c t e r i s t i cva L uecha nged ' ,
26 hand L eNot i fi cat tons l ;
11 1!! 0 @
27 });
28 })
0
29 . ca t c h ( e r ro r => { conso L e . L og ( e r ro r l ; } ) ;
30 om e://b l uetooth-i ntern a l s
31
32 funct i on onStopBu� tonC L i c k ( )
33
34 m y C h a �a c t e r i s t i c . s t o p N o t i f i c a t i o n s ( )
i f (myCha racteri st i c ) { _ ESP32-SENSOR Dlsconnect ��
35 . then( => {
36 conso L e . Log ( ' No t i f i ka t i onen werden i g n o r i e r t . ' l ;
Status
37 ' my C h a r a c t e r i s t i c . r e m o v e E v e n t L i s t e n e r
( ' c h a r a c t e r i s t i cva Luechanged ' , · Name: ESP32·SENSOR
38 hand L eNot i f i ca t i on s l ;
Address: 84:E6:20:89:CF:F3
39 })
GATT Connected: Connected
40 . c a t c h ( e r r o r = > '{ c o n so L e . L og ( e r ro r l ; } ) ;
r 41 Latest RSSI: ·70
42 Services: 3
r 43
4 4 func t i on hand L eNot i f i ca t i ons( even t ) Services
45 L e t va L u e = event . t a rg e t . va L u e ;
46 const t = va Lue . get int 1 6 (0, t ruel 1 00 . 0 ;
47 conso L e . L og ( t l ;
4� documen t . querySe L e c t o r ( ' # t empe r a t u r e ' )
. i n n e r HTML = t + ' &#xOObO; C ' ;
49
50
5 1 d o c u m e n t . q u e r y S e L e c t o r ( ' # b t n_s t a r t ' l . a d d E v e n t l i s t e n e r
( ' c L i c k ' , onStartButtonC L i c k l ;
5 2 d o c u m e n t . q u e r y S e L e c t o r ( ' # b t n_s t o p ' l . a d d E v e n t l i s t e n e r
'""
( ' c L i c k ' , o n S t opBu t t onC L i c k l ;
Auch in der mobilen Version ist Chrome in Bezug
auf Bluetooth auf dem neuesten Stand.
:tps://maik�schmidt.de m
ten. Wä h rend der Entwickl u n g auf d�m Desk d u n g e n zu entwicke l n .
top ka n n m a n ü be r Dateien, d i e m a n l o ka l D a s bedeutet aber nicht a utomatisch, dass i
oder ü ber einen Web� Server, d e r a u f loca l h ost d i e U m setz u n g eigener Projekte e i n Kinder
l a u scht, g e l a d e n hat, bei n a h e beliebigen spiel i st. Wer versch i edene B l u etooth-Geräte
Code a usfü h re n . Das i st a u s Sicherheitsg rün im Einsatz hat, wei ß sicherlich, wie zickig man
den n icht erlau bt, wen n m a n die Dateien ü ber
a n d e re Q u e l l e n bezieht. Wer eine Web-A n
che davon ·sein können u n d wie zeita ufwen
dig und nervena ufreibend sich die Kop p l u n g
2 3.81 oc
wend ung, die auf B l u etooth zug reift, a n bietet, u n d Sync h ro n i sation zweier Geräte gesta lten
I II
m uss das daher per HTTPS t u n . ka n n . Daher i st es wichtig, sich vo r und wä h
I
D a r ü b e r h i n a u s m u ss d e r B l u etoot h - E i n rend der Entwickl u n g mit den richtigen Werk
s a t z d u rc h e i n e N utzer-A kti o n i n it i i ert wer zeugen a u szustatten u n d vertraut zu m achen. S t a rt St o p
den. ln der vorl iegende n Anwe n d u n g i st das Man ka n n gar n i cht g e n u g B h..i etooth
der Klick auf den Sta rt- B u tto n . Es ist a l so Apps auf dem S m a rt p h o n e h a b e n , w e n n
n i c h t e rl a u bt, s i c h d i rekt nach d e m Laden m a n seine 'eigenen I d een u m setzen w i l l u n d
einer Seite m it e i n e m G e rät zu verbi n d e n m a n sol lte j e d e n Wi nkel d e r Web B l u etooth
u n d Daten a u szuta u sc h e n . API z u m i n d est e i n m a l gesehen h a b e n . Fer
n e r schadet es n ic ht, e i n e n ti efe n B l i c k i n d i e
Spezifi kation zu we rfen u n d s i c h m i t d e n be
Fazit stehenden Diensten vertra ut zu machen. N u r
so ka n n m a n verh i n dern, d a s s m a n d a s Rad
W i e s o oft; wei ß d e r E S P 3 2 a u c h bei m u n nötiger Weise neu erfi n d et.
T h e m a B l u etooth zu ü be rze u g e n . Di� H a rd H a l bwegs e rfa h rene Entwickler fi nden i m
wa re u n d d i e Software s i n d sta b i l u n d b i e E S P 3 2 u ri d s e i n e r Software a b e r a l les, u m
ten a l l e s , was d a s E n tw i c k l e r h e rz beg e h rt. m a l a u f d i e S c h n e l l e e i n e n n e u e n GATT- Auch mobil funktioniert die Temperatur
Selten wa r es so leicht und prei swe rt, B l ue- C l i e n t oder -Server zu bauen. -dab Anwendung.
ISBN 97839600901 20
ISBN 97838649051 1 7
shop;heise.dellinux-maker
ftJI.N · shop.heise.de/smart-home-hacks
('
fUNc rtON ,
Signalerzeugung
mit dem ESP32
D e r ESP32 i s t e i n M e i ster d e r d ra h tlosen Ko m m unikation, aber e r be h e rrscht
a uch das klassische Mikrocont rolle r-Reperto i re. Unte r anderem kann e r analoge
Si gnale n icht nu r lesen, sond e rn a uch e rze u g en. Alles zum Artikel
I im Web unter
von M a i k Schmidt • make-magazin.de/x43f
_r
Baustei n e, d i e a n a l o g e I nfo rmati o n e n i n d i d e m , wie sch n e l l m a n das tut, ä n dert s i c h d i e
________________________ _J
g i t a l e u m wa n d e l n u n d u m g e ke h rt. S o l c h e F req uenz des e rzeugten S i g n a l s .
H e lfer hei ßen A n a l og -/D i g i ta l -Wa n d l e r (ADC; Viele Wel l enfo r m e n lassen sich p ro
An a log-/D igital Converter) bezi e h u n g sweise g ra m matisch sehr ei nfa c h erze u g e n . Listing
Dig ita l -/Ana log-Wa n d l e r ( DAC; D i g it a l -/ Ana Sawtoot h . i n o g e n eriert z u m Beispiel e i n e
(
(
log Converter) . Sägeza h n ku rve. D i e h e i ßt s o , w e i l sie e i n e m
Der E S P 3 2 beherrscht b e i d e D i szi p l i n e n S ä g e b l a tt a h n e l t u n d s i e ze i c h n et s i c h d a Sawtoot h . i no
g u t u n d er hebt s i c h i n s besondere bei d e r E r d u rch a u s, dass i h r S i g n a l konti n u ierlich l i nea r
( 1 vo i d s e t up ( ) { }
· c
zeug u n g a n a l o g e r S i g n a l e von d e r Ko n k u r · a n steigt u n d d a n n sch l a g a rt i g w i e d e r a u f 2
renz a b . Er hat n ä m l i c h g l eich zwei DACs m it den Anfa n g swert a bfä l lt. 3 vo i d Loop ( ) {
(
e i n e r Aufl ö s u n g von jewe i l s 8 Bit. Somit ka n n Das P rog ra m m erledigt den A n stieg der 4 f o r . ( u i n t 1 6_t i = 0 ; i <
256; i ++ )
d e r ESP32 a u f zwei Ka n ä l e n Spa n n u n g e n von Ku rve m i t h i lfe einer t o r -S c h l eife u n d g i bt
(
5 dacWri t e ( DAC1 , i l ;
0 bis 3,3V i n 256 Abstufu n g e n e rze u g e n . Ver Sch ritt fü r Sch ritt d i e Werte von 0 bis 255 ü ber 6
c
b u n d e n s i n d die DACs m it den G P I O- P i n s 25 d e n DAC auf Ka n a l 1 aus. D a n a c h sorgt d i e 7
u n d 26. L o o p-Fu n ktion dafü r, d a s s das S p i e l v o n vorne
beg i n nt. Mit einem Oszi l l oskop l ässt sich der c
Konstant gespannt typische Verlauf der Ku rve visual isieren.
.....
o·- •..
o .. .......
A u s g a be v o n A u d i o s i g n a l e n , vö l l i g a u s re i o .. c,.�-
o .-._._
o ..._. - 0
......
""'
chend. O • P-
0 • ..,_...,.
... .
o ,_
I n s be s o n d e re r e i c h t d i e Q u a l ität a u s, u m o .. ... .....
0 • · 0..0.'""
o o.., (J<l<
D • · --
g r u n d l e g e n d e S i g n a l e synthet i s c h e r M u s i k 0 • · """"' _..
Konservenwel len
Angespornt d u rc h d i ese e rsten Erfo l g e
Si neWi t hTab l e . i no ko m m t m a n sch n e l l a u f d i e I d ee, a u s dem
ESP32 e i n e n g ü n st i g e n F u n ktionsgenerator
r
u i n t 8_t W a v e F o r m [ S A M P L E � ] = { 0 1 ;
1 c o n s t u i n t 1 6_ t S A M P L E S = 3 6 0 ; zu b a u e n . Das ist ein Gerät, das period ische
2
S i g n a l e, wie z u m Beispiel Rechteck, Dreieck
3 u i n t 1 6_t p o s i t i o n 0 ,.
4 oder S i n us, erze ugt. Ferner lassen sich oft die
5 voi d setup ( ) { F req uenz und die A m p l itude des erzeugten
("
6 f o r ( u i n t 1 6_t = 0 ; i < S AM P L E S ; i + + ) { S i g n a l s e i n stel l e n .
7 Wave Form[ i J i n t ( 1 28 + 1 2 7 * s i n ( i * P I I 1 80 l l ;
8 A u c h w e n n d i e b i s h e ri g e n B e i s p i e l p ro
9 g ra m m e ü bersc h a u ba r s i n d und sich l e i c h t
10 auf a n d ere Wel l e nfo rmen ü bertragen lassen,
11 voi d loop ( ) {
h aben s i e ein p a a r g raviere n d e N a chte i l e,
12 d a c W r i t e ( DA C 1 , Wave Form [ pos i t i on++l l ;
13 po s i t i on % = S A M P L E S ; w e n n s i e i n e i n e m mög l i c h st g e n e r i s c h e n
14 F u n kt i o n s g e n e rator zu m E i n satz ko m m e n
sollen.
Z u e rst e i n m a l u ntersc h e i d e n s i e s i c h i n
d e r Geschwi n d i g keit, m i t d e r d a s S i g n a l er
zeugt w i rd . Wä h re n d d e r Sägeza h n s e i n e
A u s g a n g swerte mit a n n ä hernd u n g e b rems
ter Geschwi n d i g keit a n d e n DAC sendet,
m u ss s i c h d e r S i n u swel len-Generator d u rch
d i e träge s i n - F u n kt i o n u n d l a n g wierige
F l ießkomm a-Operationen q u ä len, bis er end
lich zu e i n e m Ergeb n i s kommt. I n s besondere
a u f e i n e m M i kroco n t ro l l e r wie d e m ESP32
schlagen s i c h s o l c h e U nte r schiede deutl i c h
i n d e r A n za h l d e r b e n ötigten C P U -Zykl e n
n i eder.
Ein weiteres P r o b le m ist die Anza h l der
Werte (Sa m p les), d i e z u r Erze u g u n g der un
tersc h i ed l i c h e n S i g n a l e verwe n d et werd e n .
Wä h rend es beim Sägeza h n n u r 256 sind, be
Eine Sinuskurve kann auch mit vorberechneten Werten erzeugt werden. nötigt d i e S i n u s k u rve 360. Um den Resso u r-
.I
5 vo i d s e t u p ( ) {
werd e n , be rec h n et m a n s i e e i n m a l zu A n
6 f o r ( u i n t 1 6_t i = 0 ; i < S A M P L E S ; i + + ) {
('
I
fa n g des Prog ra m m s u n d l e g t s i e i n e i n e r 7 u i n t 1 6_t d e g r e e = m a p ( i , 0 , 2 5 5 , 0 , 3 5 9 ) ;
sepa raten Ta be l l e fü r jede F u n ktion a b . Die 8 W a v e F or m [ i J = i n t ( 1 2 8 + 1 2 7 * s i n ( d e g r e e * P I I 1 8 0 l l ;
(' 9
Zug riffszeit auf d i e Ta b e l l e n e i nträge ist kon
("'
10
sta nt u n d so benötigt d i e Berec h n u n g eines 11
F u n ktion swerts fü r alle We l l e nfo r m e n d i esel ("'
12 vo i d L o p ( ) {
be Zeit. 13 d a c W r t e ( DA C 1 , Wave F o r m [ pos i t i on++J l ;
'"" 14 pos i t o n % = SAMPLES;
List i n g S i n eWithTa b l e . i n o d e m o n striert 15
das Prinzip a n h a n d d e r S i n us-F u n kt i o n . Das
[\
P rog ra m m d efi n i e rt eine Ko n st a n te fü r die
Anza h l d e r F u n kt i o n swerte, die berec h n et
u n d a u sgegeben werden so l l e n . l n d i esem
Fa l l s i n d d a s 360 Werte u n d daher w i rd e i n
Feld n a m e n s W a v e F o r m m i t a u s reichend P latz
a n g e l egt. Die Va r i a b l e p o s i t i o n d i e n t z u r
S p � i c h e r u n g d e r a ktu e l l e n Position i n n e r
h a l b des Feldes.
D i e F u n kt i o n s e t u p berec h n et die 360
Werte d e r S i n u s k u rve u n d s p e i c h e rt s i e im
F e l d W a v e F o r m . A n sc h l ießend m u s s d i e L o o p
F u n kt i o n d i e zuvor berec h n eten We rte n u r
noch konti n u i e r l i c h a u sgeben. Dazu wi rd d i e
Va riable p o s i t i o n b e i j e d e m Aufruf erhöht.
M i tte l s des M od o l o-Ope rators (%) w i rd ge
prüft, o b der a kt u e l l e We rt von S A M P L E S
d u rch 2 5 6 te i l b a r i st u n d gegebenenfa l l s a u f
0 z u r ü c kgesetzt. So werd e n d i e Werte i m
Feld W a v e F o r m i m m e r w i e d e r a u sgegeben. 256 Werte reichen völlig, um eine Sinuskurve darzustellen.
Obwo h l d i e P rog ra m m e SineWithTable.ino
u n d S i n e . i n o i m P r i n z i p d i eselben Werte a u s
geben; u ntersc heiden sich die erzeugten Sig
n a l e auf dem Oszi l l os ko p erheblich. Wä h rend vom Vorg ä n g e r nur im Wert d e r Ko n stanten Formenvielfa lt
bei der d i rekten Berec h n u n g u n g efä h r eine S A M P L E S und i n d e r s e t u p - F u n ktion. Die be
Schwi n g u n g zu sehen i st, s i n d es bei d e r ta rec h net statt 360 Werten n ä m l ich n u r noch B i s h e r h a b e n a l l e P rog ra m m e i h re Daten un
"
b e l l e n g estützte n Varia nte fa st fü nf. D a ra u s 2 5 6 . Trotzd e m i st die S i n u s - F o r m e l a n n ä g e b re m st m it der F u n ktion d a c W r i te a n den
fo l gt, d a s s d i e Berec h n u n g d e r S i n u s-We rte hernd d i e g l eiche. Sie ve rwe n d et den Schlei DAC gesendet. Für v i e l e Anwe n d u n g e n
d e n P rozess um d e n F a ktor F ü nf ve r l a n g fe n i n d ex a l l e rd i n g s n i cht mehr d i rekt, s o n re i c h t das a u s, a b e r es wä re s i n nvo l l , w e n n
s a m t . Es l o h n t sich a l so, d i e F u n ktion swerte dern d i e lokale Va ria b l e d e g r e e . m a n d i e F req uenz des S i g n a l s ä n d ern kö nn
vorzu berec h n e n . D i e wiederum bed ient sich d e r m a p - F u n k te. D a r ü ber h i n a u s wäre es a u c h h i lfreich,
A u f d iese Weise kö nnen period ische F u n k t i o n d e r A rd u i n o-Bi b l i ot h e k, m i t d e r m a n we n n man d i e S i g n a lfo r m wählen kön nte .
tionen mit maxi m a l e r Effizienz erzeugt wer e i n e n Wertebere i c h a u f e i n e n a n d eren a b List i n g WaveForms.ino i m p l e m entiert a l l das
den. Sie kö nnen sich a ber weiterhin in der An b i l d e n ka n n . l n d i e s e m Fa l l b i l d e t s i e d e n und macht aus dem E S P 3 2 e i n e n echten
za h l der Sampies u nterscheiden. Da m it w ü r Wert d e s S c h l eife n i n d ex proport i o n a l v o m F u n kt i o n s g e n erator. Das P rog_ra m m ka n n
den d i e dazu gehörenden S i g n a l e noch I n te rva l l 0 b i s 2 5 5 a uf d a s I nterva l l v o n 0 b i s v i e r vers c h i e d e n e We l l e nfo r m e n (Rechteck,
i m mer i n u ntersch ied licher Zeit e rzeugt wer 359 ab. S i n u s, Dreieck u n d Säg eza h n ) m i t konfi g u
d e n . Dieses Problem w i rd gel öst, i n dem d i e A u f d e m Oszi l l o s ko p s i n d j etzt n o c h rierbare r F req uenz erze u g e n .
Ta bellen mit den F u n ktion swerten a l l e d iesel m e h r P e r i o d e n d e r S i n u s k u rve zu s e h e n D a z u benutzt es d i e b i s h e r vorg este l lten
be G röße - zum Beispiel 256 - verwenden. u n d d a s ist l o g i s c h , d e n n z u r Erze u g u n g d e r Tec h n i ke n u n d d efi n i e rt zuerst e i n m a l e i n
Für S i g n a l fo r m e n w i e Rechteck, Dreieck Ku rve w e rd e n 1 04 We rte w e n i g e r ( 3 6 0 - p a a r Kon sta nten. M A X_W A V E_T Y P E S enthält
oder Sägeza h n ist d i e Anza h l d e r vorberech 256 = 1 04) a n d e n DAC g e s e n d et. Obwo h l d i e Anza h l d e r We l l e nfo rmen, d i e das P ro
neten Werte e i n igermaßen u n erheblich, a ber d i e G e n a u i g ke i t a u f d e m P a p i e r d e u t l i c h g ra m m e rze u g e n ka n n u n d S A M P L E S die An
e i n e S i n u s k u rve scheint z u n ä c hst a n d i e 360 g e r i n g e r a u sfä l l t, r e i c h t s i e fü r d i e m e i sten za h l der F u n ktion swerte, mit denen die ein
Grad g e b u n d e n zu sei n . Wie ka n n man d i ese A n we n d u n g e n a u s . Die Za h l 256 w u rd e ze l n e n Sign�le repräsentiert werd e n . ln
a l so auf 256 We rte ru nterrec h n e n ? d a b e i m e h r o d e r we n i g e r w i l l kü r l i c h g e M I C R O S_P E R_S A M P L E fi n d et m a n d i e Anzah l
List i n g S i n eWit h F ixedTa b l e . i n o zeigt, w i e wä h l t u n d i n v i e l e n F ä l l e n re i c h e n we n i g e r der M i kroseku n d e n , d i e m a n zwischen zwei
es g e h t . Das P rog ra m m u n tersc h e i det s i c h Werte. DAC-Sc h re i bvorg ä n g e n wa rten m u ss, d a m it
{ 0 } , I I S i ne
13 u i n t 8 t W a v e F o r m s [ M A X -W A V E - T Y P E S J [ S A M P L E S J { F u n kt i o n e n z u r Berec h n u n g d e r Rec hteck
14
u n d Dreieckku rven, a be r sie d ü rften leicht zu
15 { 0 }, I I Tri ang le
16 { 0 }, II Sawtooth ve rste h e n sei n . Die s e t u p -F u n kt i o n ruft
17 { 0 }, II Square l e d i g l i c h a l l e vier F u n ktionen a u f.
18 }; Vor d e r l o o p - F u n kt i o n werden noch zwei
19
20 weitere Kon stanten d efi n ie rt. .w a v e_t y p e legt
21 u i n t 1 6_t p o s i t i o n = 0 ; fest, we lches S i g n a l a u f d e m DAC l a n d et u n d
22 f r e q u e n c y besti m mt d i e F re q u e n z des S i g
23 v o i d . c a l c u l a t e_s q u a r e ( )
n a l s. Die l o o p - F u n ktion sel bst u ntersc hei det
24 f o r ( u i n t 1 6_ t i = 0 ; i < S A M P L E S ' 1 2 ; i + + )
25 Wave Forms[ SQUAREJ [ i J = 2 5 5 ; sich von den bisherigen n u r d u rc h . d e n Auf
26 W a v e F o r m s [ S Q U A R E J' [ S A M P L E S - i - 1 J = 0 ; ruf d e r F u n kt i o n d e l a y M i c r o s e c o n d s . Der
27 } '
sorgt d afü r, dass das Signal nicht m e h r u n ge
28
29 brem st, s o n d e r n mit der g ew ü n schten F re
30 q u e n z a u sgegeben wird. Die Konfi g u ration
31 v o i d c a l c u l a t e_t � i a n g l e ( ) { im Listi n g e rzeugt a l so e i n Sägeza h n-Sig n a l
32 u i n t 8_t v a l u e = 0 ; .
m i t e i n e r F req uenz v o n 1 O Hz.
Änderung
33 f o r ( u 1 n t 1 6_t i = 0 ; i < S A M P L E S I 2 ; i + + ) {
' D u rc h zwe i e r Ko nstanten l a s
s e n s i c h m i t d i esem P rog ra m m d i e E i g e n
34 W a v e fo r m s [ T R I A N G L E J [ i J = v a l u e ;
(' ' 35 W a v e F o r m s [ T R I A N G L E J [ S AM P L E S - i - 1 J = v a l u e ;
36 va lue += 2;
sch aften des e rzeugten S i g n a l s recht ei nfach
37
38 va r i i e r e n . A l l e rd i n g s m u ss dazu d a s P ro
39 . g ra m m jedes Mal neu ü be rsetzt und auf den
40 ESP32 gespielt werd e n . Sonderlich ko mforta
f o r ( u i n t 1 6_t i = 0 ; i < S A M P L E S ; i + + ) {
41 voi d ca l cu l ate sawtoot h ( ) {
42 bel ist das n icht.
43 W a v e F o r m� [ S A W T O Ö T H J [ i J = i ; E i n e s i n nvol l e Erweiterung wäre a l so eine
44 M ög l i c h keit z u r Ä n de r u n g der Werte von
45
w a v e_ t y p e u n d f r e q u e n c y von a u ßen. Das
46
47 kön nte zum Beispiel ü be r d i e serie l l e Sch n itt
f o r ( u i n t 1 6_� i = 0 ; i < S A M P L E S ; i + + ) {
48 vo i d ca l c u l a t e s i ne ( ) stel l e, per WLAN oder per B l u etooth erfolgen.
49
Den kba r wä re auch der E i n satz weiterer H a rd
50 u i n t 1 6_t d e g r e e = m a p ( i , 0 , 2 5 5 , 0 , 3 5 9 ) ;
51 WaveForms [ S I N E J [ i J = i n t ( 128 + 1 2 7 * s i n ( de g r e e * PI 1 8 0 )) ; wa re, wie zum Beispiel eines Potentiometers.
52 Pri nzi p i e l l s i n d solche E rweite r u n g e n kei n
53 P r o b l e m , a be r m a n m u s s d a b e i beachten,
54
d a s s zu sätzl i c h e r Code i n d e r l o o p - F u n kt i o n
55
56 voi d setup ( ) { s i c h a u f d a s Laufzeitverha lten a u swi r kt. Z u m
57 c a l c u l a t e_s q u a r e ( ) ; B e i s p i e l b e n ö t i g e n Z u g riffe a u f d i e seri e l l e
58 c a l c u l a t e_t r i a n g l e ( ) ; .
· S c h n ittste l l e verg l e i c h sweise v i e l Zeit, u n d
59 c a l c u l a t e_s a w t o o t h ( ) ;
60 c a l c u l a t e_s i n e ( ) ; d i e m ü sste b e i d e r Berech n u ng d e r Ve rzöge
61 r u n g m itte l s d e l a y M i c r o s e c o n d s b e r ü c k
62 s i c htigt werd e n . A n dernfa l l s hätte d a s S i g n a l
63
64 c o n s t W a v e T y p e s w a v e_t y p e = S A W T O O T H ; n i c h t m e h r d i e g ew ü n schte F req u e nz.
0
65 c o n s t u i n t 1 6_ t f r e q u e n c y = 1 0 ; Das w ü rd e a b e r n u r d a n n fu n kt i o n i eren,
(' 66 wen n d i e Laufzeit a l l e r Anwe i s u ngen, d i e in
67
der l o o p- F u n kt i o n zusätz l i c h zu d a c W r i t e
68 vo i d l o op ( ) {
69 d a c W r i t e ( D A C 1 , W a v e F o rm s [ w a v e_t yp e J [ po s i t i o n J ) ; a u s g efü h rt werd e n , ko nstant wä re. Das ist
n 70 pos i t i on++; höchst u n wa h rschei n l ic h u n d l ä sst sich zum
71 po s i t i on %= SAMPLE S ; . Beispiel fü r Code, d e r a u f d i e serie l l e Schn itte
72 d e l a y M i c r o s e c o n d s ( M I C R O S_P E R_S A M P L E f requency l ;
73 ste l l e zug reift, ka u m g a ra ntieren. Der Kön i g s
n weg wäre es da·her, das Senden der Daten i n
terru ptgesteuert oder per DMA zu erledigen .
Am schnel lsten
Alternativ zur Erze u g u n g einer Rechteckspan
nung per DAC ka n n m a n natü rlich auch ein
fach einen G P IO-Pi n s des ESP32 n utzen und
ei nfach seine Ausgangs level zwischen H i g h
u n d Low h i n u n d h e r schalten. Dabei erreicht
m a n F requenzen von k n a p p 4MHz. List i n g
Toog lePin.ino zeigt, wie es fu n ktioni ert.
Fazit
Die Dig ita l-/A n a l og -Wa n d l e r werten den
Das USB-Dszilloskop ist mit 4MHz bei der Darstellung schon überfordert.
ESP32 a l s Plattform noc h m a l deutlich auf, i n s
beso ndere weil s i.e so ei nfach zu bed ienen
s i n d . Zur Ausgabe von Audiosi g n a l e n reichen
sie a l le m a l und fü r d iesen Zwec k g i bt · es be
reits ausgefei l te B i b l iotheken (http://www.
xtron ical .com/the-dacaud io-l ibra ry-down load
and-insta l l atio n/) . Aber auch fü r viele a n d ere
Anwe n d u ngen, die auf a n a logen S i g n a l e n
basieren, sind s i e eine g roße H i lfe. -dab
c
c Togg l ePi n . i no
( 1 c o n s t u i n t 8_t T O G G L E_P I N = 2 5 ;
(
2
3 voi d setup ( ) {
c
4 p i n M o d e ( T O G G L E_P I N , O U T P U T ) ;
5
(
6
7 voi d loop ( ) {
8 d i g i t a l W r i t e ( T O G G L E_P I N , H I G H ) ;
( 9 d.i g i t a l W r i t e ( T 0 G G L E_P I N , L O W ) ;
10
(
Mit einem leistungsfähigeren Oszilloskop kann man die Signale genauer anzeigen.
HALL-S E N SO R �----- ----
Magnetfelder
ntessen
N icht n u r Fu nkwelle n d ressiert d e r ESP32 mit Leichtigkeit.
Dank eines e i n g eba uten Hall-Sen sors fü hlt e r sich a uch in
Magnetfeld ern sch n e l l h e i m isch .
von M a i k Schmidt
Alles z u m Artikel
I im Web unter
.... make-magaiin.de/xwpn
--
(
stro m d u rchfl o s s e n e n Leiter, der sich in Beim U m g a n g m it Neodym-Ma g n eten i s t 2 S e r i a l . be g in ( 1 1 5200 J ;
e i n e m M a g n etfe l d befi n d et. e i n e gewisse Vo rsicht ratsa m , d e n n s o l c h e 3
(
Das klingt n a c h d e m Physik-U nterricht in M a g n ete kön n e n m a g n etisierte Datenträger, 4
5 voi d loop ( ) {
c
d e r Sch u l e, a be r H a l l - S e n soren s i n d e i n e wie z u m B e i s p i e l M a g n etstreife n a u f EC 6 Seri a l . println(
p r a ktische A n g e l e g e n h e it, wen n m a n z u m oder Kred itka rten d u rc h a u s zerstören. Ferner ha l l Read < J J ;
c 8
7 de l ay ( 1 0D J ;
---_j
Beispiel konta ktlose u n d weitestg ehend ver sind die Mag n ete oft seh r klein und kö n ne n
s c h l e i ßfreie S c h a lter braucht. V i e l e M e n von Kl e i n ki n d e r n versc h l u c kt werd e n .
s c h e n ko m m e n bei n a h e täg l i c h m it H a l l-Sen F ü r erst� Exper i m e nte m i t d e m H a l l-Sen _r �
soren i n Berü h ru n g und m erken es gar nicht. sor ist es h i lfreich, d i e Messwerte im serie l l e n
Die Sensoren stecken u nter a n d erem oft i n P l otter d e r A rd u i n o- I D E zu betra c h t e n . D e r 1 00 M i kroseku n d e n e i n g e l egt. Bei
d e n G u rtsc h l össe_rn moderner Autos, u m zu verb i rgt s i c h h i nter d e m M e n ü Werkze uge > 1 000 Messungen s u m m iert sich die Gesa mt
erken nen, o b j e m a n d a n g e sc h n a l l t i st. A u c h Seriel l e r P l otter. Bei e i n e m e rsten Test wurde wa rtezeit so auf eine M i l l isekunde, was fü r die
zur Erke n n u ng von offenen Tü ren w e r d e n sie der H a l l-Sensor fü r d i e e rsten knapp 1 00 a u s meisten Anwen d u n g e n vernachlässigbar sein
gerne verwe n d et. g e g e b e n e n Werte i n R u h e g e l a ss e n . Da n n d ü rfte.
w u rd e e i n Neodym-1'0ag net b i s u n g efä h r Beso n d e rs zu beachte n ist ir_l der l o o p
E i ngeordnet z u m zwe i h u n d e rtsten Wert i n d i e N ä h e des F u n ktion der Datentyp d e r Va riablen va l u e .
Sensors g ebracht. Nach einer weiteren R u he Der m u ss so gewä h lt werden, d a ss es n icht
Wie d i e Berü h r u n g s s e n soren l ä sst s i c h d e r p h a se ka m der M a g n et noch e i n m a l i n u m zu einem Ü berlauf kommt.
H a l l - S e n s o r d e s E S P 3 2 m i t e i n e r e i nzigen g e ke h rter R i c h t u n g zum E i n satz. Lädt man das P rog ra m m a uf den ESP32
F u n kt i o n a u s l e s e n . ln d i esem Fall h e i ßt s i e Die Messdaten ergeben d u rc h a u s e i n e und w i e d e r h o l t d a s Experi m e n t mit e i n e m
h a l l R e a d . L i sti n g H a i i Se n s o r . i n o ruft d i e Rechteckku rve, a be r es g i bt e i n i g e A u s rei ßer. Neodym-Mag neten, d a n n e rg i bt sich e i n
F u n kt i o n a l l e 1 00 M i l l i se k u nd e n a u f u n d I n s be s o n d e re i st die Ku rve d u rchweg recht d e u t l i c h r u h i g e res B i l d i m seri e l l e n P l otter
sendet i h re n R ü c kg a bewert a n d i e s e ri e l l e · zittrig, obwo h l sich i n s b e s o n d ere d a n n , der Ard u i no-IDE. U n g efä h r bei Messwert 280
Schn ittste l le. w e n n kei n M a g n et i n der N ä h e i st, n ichts t u n wu rde der Mag net noch e i n m a l in derselben
Nachdem d a s P rog ra m m a u f d a s Deve sol lte. Das l ä sst sich a be r l e i c h t beheben. Ausrichtung a n den Sensor gebracht wie zu
lopm ent-Boa rd g e l a d e n wu rde, ka n n man i m Anfa n g . Diesmal wa r der A bsta nd zum Sen
seri e l l e n M o n itor s e h e n , we l c h e n Wert d e r M a g netisch u n d ·
s o r a l l e rd i n g s geringer und so fi e l e n d i e
H a l l - S e n s o r g e r a d e m i sst. N ä h e rt m a n s i c h Messwerte entsprechend höher a u s .
stro m li n i enförm i g
d e m Board m it e i n e m Mag neten, ka n n m a n
d i e Verä n d e r u n g i n d e n We rte n sofort sehen. Wie bei vielen Sensoren, ist e s a u c h beim H a l l Mag netl ichtscha lter
D i e Abstä n d e zwi s c h e n zwei bena c h b a rten S e n s o r des ESP32 s i n nvo l l , d i e Messwerte
Werten entsprec h e n d a bei u n g efä h r e i n e m nicht d i re kt zu i nterpretieren, sondern D u rch M i t verl ä s s l i c h e n S e n s o r-Daten i st es e i n
M i l l itesla (mT) . schn ittswerte über ku rze Zeiträ u m e zu erm it Leic htes, d e n H a l l-Sensor a l s konta kt losen
D e r verwe n d ete M a g n et m u ss a l l e rd i n g s tel n . Listi ng H a i i SensorAvg . i n o tut geriau das. Schalter ei nzu setzen . Das ku rze P rog ra m m i n
schon e i n igermaßen sta rk s e i n u n d d i e bes Statt d i e Messwerte d i rekt auf der serie l l e n �ist i n g H a i i Switc h . i n o schaltet d i e Status-LED
ten Effekte e rzi e l e n Neodym-M a g n ete. N eo S c h n itts t e l l e a u szugeben, w e r d e n jewe i l s des Entwickl u n g sboards ein, soba ld ein Mag
dym zä h l t zu den Seltenen Erden und w i rd 1 000 Werte a k ku m u l i e rt u n d a m E n d e d e r n et nah g e n u g am Boa rd i st. Entfe rnt m a n
zur H e rste l l u n g der d e rzeit stä rksten D a u e r D u rchsch n ittswert g e b i l d et. Zwi schen d e n d e n M a g neten, scha ltet d a s Prog ra m m d i e
mag neten verwe n d et. S o l c h e M a g nete ste- e i n ze l n e n Mess u ngen wi rd e i n e Pause von LED wieder a u s .
G coM6 0 X
3 00 . 0
oo o
: .
1 00 . 0
0.0
-100 . 0
Neodym-Magnete in vielen Formen und Größen . Die Hall-Sensor-Werte erscheinen manchmal etwas zittrig.
G coM6
u n d n icht u m dessen Vorzeichen.
0 . X
Sch l i e ß l i c h verg leicht das Pro g ra m m noch
30 0 . 0
d e n g e l es e n e n Wert m i t d e m Schwe l l wert
u n d schaltet d i e LED entweder e i n oder a u s .
oo
Der Schwel lwert m u s s a u f jeden A n w e n
: .0
d u n g'sfa l l a bgesti m m t werden, weil er m a ß
g e b l i c h vom e i n g esetzten Mag n eten u n d
10 0 . 0 d e r m i n i ma l e n D i sta nz z u m H a l l-Sensor
a b h ä ngt. Das ist beso n d e rs rel eva nt, we n n
d e r ESP32 i n e i n e m G e h ä u s e stec kt.
0 .0 N ä h e rt man s i c h dem .E S P 3 2-Board m i t
e i n e m M a g neten, n a c h d e m m a n das P ro
g ra m m a ufs Board g e l a d e n hat, w i rd d i e Sta-
-1 oo . o +--------1or-
o-----;-
oo
_ _____o
t-
1 o-----4;-o -------1
o- s oo 3
: tus-LED a b e i n e m besti m mten A bsta nd ein-
r==
li!� =
::::::=
:::::;roo =::::::=
::!!.aud ::::::""'
i .;,"j g e s c h a ltet. S o b a l d d e r M a g n et d iesen Ab-
L____:__________________�-------=====::::J
sta n d wieder ü bersch re itet, erl ischt die LED.
Die Sensor-Werte werden deutlich sauberer, wenn man sie aggregiert.
'
I rgendwas m it I nternet
E i n solcher Mag n etscha lter kön nte pri nzi pie l l
V
d a z u d i e n e n , offe n e T ü r e n o d e r F e n ster z u
,
Ha L L Swi t ch . i no erke n n e n . A u c h kö n nte m a n fests t e l l e n , ob
e i n Gegensta n d bewegt w u rde. Dazu m ü sste
1 c o n s t u i n t 8_t L E D_P I N = 2 ; m a n den Gegenstand l ed i g l ic h in der N ä h e
2 c o � s t u i n i8_t T H R E S H O L D = 4 0 ;
5 c o n s t u i n t 1 6_t S A M P L E S · = 1 0 Ö Ö ; des Sensors p latziere n u n d m i t einem Mag
4. neten verse h e n . We i l es Neodym-M a g n ete
5 i n t 1 6_t c l e � n H a l l R e a d ( ) { a u c h a l s Kle bestreife n g i bt, i st das gar n icht
6 i n t 3 2_t v a l u e = 0 ;
so schwierig.
7 f b r ( u i ri t 1 j t i = 0 ; i < S A M P L E S ; i ++ ) {
8 va l u e += ha l l Re a d < > ; Jedoch w ü rd e d e r Scha lter i n seiner jetzi
9 d e l a y M i c r o s ec o n d s ( 1 0 0 ) ; gen Form n icht viel n utzen, d e n n er müsste
10 }
d i e Info r m a t i o n d a rü ber, d a s s er a ktiviert
11 r et u r n v a l u e . I S A M P � E S ;
12 w u rde, ja noch i rgendwie weitergeben. Dazu
13 d rä n g e n s i c h die WLAN- F ä h i g keiten des
Cl
14 vo i d s e t u p ( ) { ESP32 g e radezu a uf. Das hei ßt, wa n n i m mer
15 S e ri a l . be g i n ( 1 1 5 2 00 > ;
(
16 d e r Schalter a ktiviert w i rd, soll e r e i n e Nach
' p i n M o d e ( L E D_P I N , O U T P U T ) ;
17 } richt senden.
18 Z u k l ä ren i st dann i m mer noch, woh i n der
19 v o i d' l o o p O {
ESP32 eine N a c h richt senden sol l . Beispiels
20 i f ( a bs ( c l eanHa l l Read ( ) ) > THRESHOLD)
21 d i g i t a l W r i t e ( L E D_PI N , H I G H ) ; weise kön nte e r eine E-M a i l oder eine SMS
22 e l se ü b e r einen ents p rec henden I nternet-Dienst
23 d i g i t a l W r i t e ( L E D_PI N , L O W ) ; s c h i c ke n . F ü r d iesen F a l l wä re das e i n e h a l b-
24
. wegs a kzepta b l e Lös u n g , a b e r we n n m a n
g l eichzeitig e i n e H i storie a l l e r Schalterbewe
-�---J g u n g e n fü h re n möchte, kom m t man d a m it
d e r E S P 3 2 a n d e re S e n s o r-Werte, w i e zu m
v I Themo ]AIIe V I Ithingspeakj
B e i s p i e l Tem pe ratu r-Daten s e n d e n sol l . D i e
'"'-k by -Worb .
stiften per S M S oder E-M a i l n u r w e n i g S i n n . ThingSpeak Communication Ubrary for Arduino, ESP8206 • EPS32Thing5peiik ( ht:tps://WVM".'thingspttllk.com ) is a n •na lytic IoT
pbltform service that allovs you to a g g regat., visualize and an•lyz• live data streams in the clou d .
E i n e weitere m ö g l i c h e Lös u n g des P ro �
b l e m s wä re die P rog ra m m ie r u n g e i n e r Web
·
Anwe n d u n g , die ü be r den Zusta n d des
Scha lters i n fo r m i e rt. Der ESP32 kön nte d a n n
i m F a l l e e i n e r Ä n d e r u n g e i n e Anfra g e a n Die ThingSpeak-Bibliothek kann über den Bibliotheksverwalter installiert werden.
d iese Web-Anwe n d u n g ste l l e n . A l lzu er
q u i c k l i c h ist d i ese Vorste l l u n g a be r n i c ht,
d e n n e i n e s o l c h e Web-Anwe n d u n g zu pro
g r a m m i e ren und z u betre i b e n ist a n stren
gend u n d zeitra u be n d .
Da n ken swerte r Weise g i bt es m itt l e rwe i l e
S i g n up T h i ngSpea k
v i e l e IoT- P i a ttfo r m e n , d i e a l l d iese P r o b l e m e
fo r
a u f e i n e n S c h l a g l ö s e n . I h r e i n z i g e r Zweck
, lt is free to sign up for ThingSpeak. Free accounts �ffer a fi.JIIy functional experience on ThingSpeak with Iimits on certain functionality.
ist es, Daten von I oT-Geräten zu sa m m e l n, Commercial users may sign Up for a time-limited free evaluation. To send'data faster to ThingSpej:tk o r to send more data, consider our paid
s i e a n zentra l e r Ste l l e zu r Verfü g u n g zu license options for commercia_l, academic, home and student usage.
ste l l e n und a n s p r e c h e n d a u fzu b e reite n . To start using ThingSpeakyou must create a new MathWorks account, or, click cancel and log i n using an existing Mat�Works account.
F e r n e r b i et e n s i e d i e M ö g l i c h keit, a u f bec
Create MathWor1<s Account
sti m mte M u ster in den Daten a ut o m a t i s c h
""' r- � �
zu rea g i e r e n . Em;�ll Address
� 1
Spea k ( http://t h i n g s pea k.com/). D i e P l att • . AND ANALYTICS
Location ___, c;JThlngSpeak· ,
[ Germany
.
fo rm ist po p u l ä r, fü r viele Anwen d u n g sfä l l e
koste n l o s u n d s i e w i rd v o n v i e l e n P ro g r a m
H � �· 9
MATLA B'
�·
FirstName
m i e ru m g e b u n g e n u nterstützt. A u c h fü r d i e
A rd u i n o-I D E g i bt es e i n e B i b l i o t h e k, d i e s i c h
! Mail<
o l ��
� .
S M A R T CONNECTID D E V I C E S
. �
Last Name
ü be r d e n B i b l i o t h e ksve rwa l t e r i n sta l l i e re n f Schmidt o l � ALGORITHM DEVHOPMENT
S E N S O R ANALYTICS
( C h a n n e l s ) t u n . D i e werd e n ü be r d i e F u n k
P.;l Export recent data MATLAB V1sL ac�;:at1 on
t i o n N e w C h a n n e l a n g e l egt. J e d e r Ka n a l
C h a n n e l Stats
beko m m t e i n e n N a m e n u n d e i n e Beschrei
bung. Ferner ka n n e r g l e ichzeitig b i s zu a c h t
vers c h ied e n e S e n s o r- D a t e n in Form so
Entries: 0
g e n a n nter F e l d e r ( � i e l d ) s a m m e l n . F ü r d e n
Mag netsc h a lter reicht e i n e i n z i g e s F e l d .
f1eld 1 Chart 13' 0 .f X
D a r ü b e r h i n a u s ka n n m a n j e d e n Ka n a l
m it e i n e r g a nzen Rei h e v o n Meta- I nfo r m a
Magnetschalter
t i o n e n Verse h e n . D a z u g e h ö re n u nter a n de
rem Li n ks a u f e i n e zum Ka n a l g e h ö re n d e
Webseite o d e r e i n G i t h u b- P roje kt. N ützl i c h
i s t d i e Mög l i c h keit, d a s l oT-G e rät m i t e i n e r
P o s i t i o n zu verse h e n , d e n n i n s be s o n d e re
fü r G e räte, d i e U mwelt-Daten a u fze i c h n e n ,
Date
ist d a s e i n e w i c h t i g e I nfo r m a t i o n . F ü r e i n e n ThingSpult.com
ersten Test-Ka n a l ka n n m a n d i e m e i st e n
Felder leer lassen. Schon ist der Kanal für den Magnetschalter angelegt.
Key.
Read Keys
• Read API Keys: Use this key to a\low other people to view your
API private channel feeds and charts. Click Generate New Read API
D i g ita ler Türwächter
Key to generate an additional read key forthe channel.
Key • Note: Use this field to enter Information ab�ut channel read
keys. For eiample, add notes to keep trackof users with acce�
l n e i n e m fi n a l e n P roje kt w e r d e n n u n a l l e
to you r channel. Fäden zusa m m e ng efü h rt Listing H a i i Se n so
Note r l oT. i n o i m p l e m e nt i e rt e i n e n d i g it a l e n Tü r
API Requests
wächter, d e r e i n e 1 an Th i n g Speak s e n d et,
Update a Channel Feed
wen n der M a g n etsc h a lter a ktiviert ( "Tür zu")
GEl https : //api . thingspe a k . corrt/ update �api_key=P787WXE JIJ
jj
Get a Channet Feed
-
Das Prog ra m m besteht i m Wesen t l i c h e n
GET
,,
https : / / a p i . thingspeak . c001/ c h a n n e l s /689841/feeds .
II I
g riff a u fs WLAN benötigt und d i e zweite re
C Add Visualizati ons C Add Widgets � Export recent data . präsentiert den Zu sta n d d e r i m a g i n ä ren Tü r.
A n der F u n kt i o n c l e a n H a l l R e a d hat sich
C h a n n e l Stats n i chts g eä n d ert. N e u i st h i ngegen d i e F u n k
i!.PR\!�.��,9,\![,�"1!�2
tion u p d a t e C h a n n e l . S i e sendet d e n a ktuel
-0 . 5 · -
20:24:30
- 2 0 : 2 4 :45 2 0 : 2 5 :00
A nfra g e n ab u n d reicht den Status-Code der
Anfrag e u n g efi ltert d u rc h . I m Prinzip ist d i e
Date
S c h n ittstel l e von Th i n g Speak e i n e sehr einfa
ThingSpeak.com
c h e Web-S c h n ittste l l e und es wäre problem
los m ö g l i c h , s i e a u c h d i rekt m i t h i lfe der WiFi
B i b l i ot h e k zu i m p l e m e ntieren. Die T h i n g
ThingSpeak bereitet die Schalterdaten ansprechend auf. Speak- B i b l iothek m a c h t es jedoch e i n wen i g
F u n ktionen, um m e h r a l s e i n e n Wert g le i c h
z e i t i g zu s c h r e i b e n . n H a l l S e n s o r loT . i n o
D i e s e t u p - F u n kt i o n b ietet a u c h ka u m
1 # i n c L u d e <W i F i . h >
Neues u n d i n itia l i si e rt h a u ptsä c h l i c h d i e seri 2 # i n c l ude " T h i ngSpea k . h "
c o n s \ u i n t 8_t L E D_P I N = 2 ;
elle Sch n ittstel l e, d a s WLAN und d e n Pin der 3
Status-LED. Die w i rd n ä m l ic h zu Debug g i n g 4
5 c o n s t u i n t 8_t T H R E S H O L D = 4 0 ;
Zwec ken i m m e r noch e i n - u n d a u sgesc h a l
6 c o n s t u i n t 1 6_t S � M P L E S = 1 0 0 0 ;
tet. N e u i st l ed i g l i c h d e r Aufruf v o n T h i n g 7 •
/'
31 S e r i a l . p r i n t l n ( " Ka n a l . kon n t e n i c h t a k t u a l i s i e r t w e r d e n : " +
V o r einem e rsten Test sol lte m a n d i e Web S t r i ng ( resu l t ) ) ;
Seite des T h i n g S pe a k- Ka n a l s a u frufe n , a u f 32 }
d e m d i e Anfra g e n d e s E S P 3 2 l a n d e n . Da n n 33
34
l ä d t m a n d a s P rog ra m m a u f d e n E S P 3 2 ,
35 voi d setup ( ) {
öffn et d e n seri e l l e n M o n itor u n d h ä l t e i n e n 36 S e r i a l , be g i n ( 1 1 5 2 00 ) ;
M a g n eten b e r e i t . N ä h e rt m a n s i c h d e m 37 p i n M o d e ( L E D_P I N , . O U T P U T ) ;
38 W i F i . m o d e ( W I F I_S T A ) ;
H a l l -S e n s o r m it d e m M a g n eten, s o l lte d ie s
39 T h i ngSpea k . beg i n (d i ent ) ;
i m seriel l e n M o n itor vermerkt werd e n . Ku rz 40 W i Fi . beg i n ( S S I D , P A S S WO R D ) ;
n a c h d e m d o rt d i e M e l d u n g erschei nt, d a s s 41
der Ka n a l a ktu a l i s i e rt w u rde, sol lte a u c h d i e 42 w li i l e ( W i F i . s t a t u s O ! = W L_C.O N N E C T E D ) {
43 d e l a y ( 5 0 0) ;
Webseite entsprec h e n d a n g e passt werd e n . 44 Seri al . p r i nt ( " . " ) ;
Entfe r n t m a n d e n M a g n eten n a c h e i n e r 45
Pause von m e h r a l s 1 5 Seku nden, w i rd e i n e 46 Seri a l . pr i nt ln ( " " ) ;
47 Seri a l . pr i n t f ( "Verbunden mi t % s . \n", S S I D) ;
weitere N a c h richt a n d e n Th i n g S pe a k- D i e n st
48 S e r i a l . p r i n t f ( " I P-Ad r e s s e : % s . \ n " ,
gesendet u n d d i e Webseite e r n e u t a kt u a l i W i F i . l o c a l i P ( ) . t ö S t r i n g ( ) . c_s t r ( ) ) ;
s i e rt. I st d i e P a u se zu ku rz, g i bt d e r D i e n s t n 49
den F e h lercode 40 1 zurück. 50
r. ' 5 1 v o i d l o o p ( ) {
Viel e i nfa c h e r ka n n d e r U m g a n g m i t e i n e r 52 boo l s w i t c h Ac t i va t ed = a bs ( c l ea n H a l l Read ( ) ) > T H R E S H O L D ;
(
I oT- P i attfo rm n i c h t sein u n d T h i n g S pea k bie (\ 53 i f ( sw i t c h A c t i v a t e d && ! i s C l os e d )
tet noch jede Menge weiterer M ög l ic h keiten. 54 d i g i t a l W r i t e ( L E D_P I N , H I G H ) ;
n 55 i sC losed = t rue;
Dass e l be gilt a l l e rd i n g s auch fü r die Ko n ku r
56 upda teChanne l ( 1 ) ;
t1
renz, wie z u m Beispiel Caye n n e (https://my 57 e l s e �f ( ! s w i t c h A c t i v a t e d & & i s C l o s ed ) {
d evices.co m/caye n n e/featu res/) o d e r A d a 58 d i g i t a l W r i t e ( L E D_P I N , L O W ) ;
t1 59 i sC losed = fa l se;
fru i t 1 0 ( https://i o.ad afr u it.com/) . D i e A u s
: -6 0 u p d a t e C h a n ne l ( O ) ;
wa h l ist riesig u n d s i c h e r l i c h ist fü r j e d e n n 6 .1
etwa s dabei. n . 62 }
Fazit
d a h e r ist e s beg rüßenswert, dass d e r ESP32 l n d i e Werkze u g kiste g e h ö re n heute aber
.
H a l l-Sensoren g e h ö re n zu d e n v i e l e n u n a utomatisch einen H a l l-Sensor m itbringt. a u c h I oT-Piattformen wie T h i n g S pea k, denn
'
sichtbare n H elfern, d i e d a s Leben ei nfa c h e r Beso n d e rs c h a rmant ist es, dass sich der sie m achen es e i nfa c h e r als je zuvor, Geräte
.
und sicherer m a c h e n . M a n c h moderne Tech S e n s o r s o l e i c h t a u s l e s e n l ä sst. Es ·besteht m i t dem I n te rnet u n d s o m i t mit dem Rest
n o l o g i e w i rd d u rc h s i e ü berha u pt e rst m ö g a l so A n l a s s zu r Hoffn u n g , dass n e u g i e r i g e cler Weit zu verb i n d e n . H i e r e röffn e n sich
l i c h . Trotzd em befi n d e n s i e s i c h l ä n g st n o c h B a s t l e r i h n fü r sich entdecken u n d i n i m me r gänzlich neue M ög l i c h keiten fü r spannende
n icht i n d e r Werkze u g k i ste a l l e r M a ke r u n d m e h r i n n ovativen P roje kten e i n setzen . Anwend u ng e n . -dab
Touch nte!
N icht n u r d i e d ra ht l osen Komm unikations m ittel d e s ESP32
sind topmodern. E r punktet a uch bei d en Eing a b e m e d i en
und b ringt e inen ganzen Satz an B e r ü h rungssensoren m it.
Alles z u m Artikel
I im Web unter
• make-magazin.de/xucu
c
Wie d e r N a m e schon sagt, rea g i e re n sol 2 S e r i a l . be g i n ( 1 1 5200 l ;
c h e S e n s o re n a u f Berü h ru n g , z u m B e i s p i e l 3 }
(
mit e i n e m F i n g e r. Dabei m u s s die Berü h r u n g 4
5 vo i d L oop ( ) {
c
n i cht s o n d e r l i c h sta rk s e i n u n d je n a c h Sen
6 Seri al .println
sor reicht e r sog a r schon a u s, wen n s i c h die ( t ouchRead ( T O l l ;
c
H a n d nur i n der Nähe a ufh ä lt. 7 de l a y ( 1 00 l ;
8
Das P r i n z i p h i nter den S e n s o r e n ist ver
g l eichsweise ei nfa c h . Der Sensor i st i m G r u n -' �----------------------�
d e e i n Ko n d e n sator, d e r e l e ktrische La d u n g
s p e i c h e r n ka n n . G e n a u g e n o m m e n b i l d et T7 27
Die verb leibenden acht Sensore n (TO u n d ----·--�--�
e i n Te i l d e s Sensors zusa m m e n m it d e r zu Ts ..... 33
T3-T9) l a s s e n s i c h a be r e i nfa c h i n e i g e n e n
berü h renden Oberfläche e i n e n Ko nden sator. T9 32
P roje kten e i n setzen . Wie b e i a l l e n Sensoren
Dessen tatsä c h l i c h e Ka pazität i st d a bei u ner
ist es fü r e rste Experi mente d a s Beste, e i n
h e b l i c h , we i l der S e n s o r l ed i g l i c h vers u c ht,
fa c h loszu legen u n d Daten a bzufra g e n . Lis A n s c h l ießend sieht m a n sich a n , wie sich die
Ä n d e r u n g e n in der Ka pazität zu e r ke n n e n .
t i n g TauchTest i n o tut genau das m i t h i lfe der Werte entwicke l n , we n n d e r Sensor a u s l öst.
Diese Ä n d e r u n g e n kö n n e n z u m B e i s p i e l
F u n ktion t o u c h R e a d . Das Prog ra m m g i bt die Statt l a n g wei l i g e Za h l e n ko l o n nen zu
d u rch e i n e n F i n g e r h e rvorg erufe n werd e n .
Werte des To u c h -Sensors TO, d e r m i t G P IO lesen, i st es h i lfreich, den seriel len Plotter der
Das fu n kt i o n i e rt desha l b, wei l d i e Ka pazi
P i n 4 ve rbunden i st, konti n u ierlich auf d e r se Ard u i n o-I D E ü ber den Men ü p u n kt Werkzeu
tät eines Ko n d e n sators n i c h t n u r d u rc h d i e
riel len S c h n ittst e l l e aus. Diesen Pin verbi n d et ge > Serie l l e r P l otte r zu a ktivieren. Der l iest
G röße u n d d e n A bsta n d d e r Ko n d e n sator
m a n zu Testzwecken d a h e r e rst e i n m a l m i t Za h l en, d i e auf der serie l l e n Schn ittste l l e an
p latten besti m m t wird. S i e h ä n g t a u c h vom
e i n e m Stück Draht bezi e h u n g sweise e i n e m ko m m e n , u n d stel lt sie g rafisch d a r.
Materi a l zwi s c h e n d e n P l atten a b, d e m
J u m pe r-Ka bel ( m a l e-fe m a l e ) . Obwo h l d e r Draht n i cht be r ü h rt wu rde,
sog e n a n nten D i e l e ktri k u m . We n n m a n d i e
Wie d i e meisten Sensoren m u s s m a n a u c h g a b es g l e i c h zu Anfa n g e i n e n d e u t l i c h e n
ses ersetzt bezi e h u n g sweise verä ndert, d a n n
To u c h -Sensoren ka l i b r i e re n . l n d i esem F a l l ku rzen Aussc h l a g n a c h u n t e n . Anson sten
ä n d ert s i c h a u c h d i e Kapazität d e s Ko n d e n
h e i ßt d a s, d a s s m a n d i e S e n s o rwerte zu l i efe rt der Sensor g l e i c h m ä ß i g e i n e n Wert
sators. l n d i esem Fa l l w i rd d i e Luft zwi schen
n ä c h st e i n m a l i m R u h ezusta n d beobachtet. von knapp u nter 80. A l s d e r D ra h t zwischen
d e n Elektrod en d u rc h d e n F i n g e r ersetzt und
d e r ist e i n ziem l i c h g utes D i e l e ktri kum, weil
e r viel Wasser enthält. (""',
Eigentlich ist d e r Effekt sog a r noch etwa s
s u bti l e r, d e n n d e r F i n g e r bee i n fl u sst d e n
� T ou c h S w i t c h . i n o
Ko n d e n sator bereits d a d u rc h , d a s s e r s i c h n
1 c o n s t u i n t 8_t T H R E S H O L D 20;
d u rch das e l e ktrische F e l d , d a s d e n Ko nden '
2 c o n s t u i n t 8 - t L E D�P I N = 2 '.
sator u m g i bt, bewegt. (""', 3
Eine Berü h r u n g ka n n desha l b sog a r d u rc h 4 boo l touc hedTO = false;
(""',
5 boo l touc hedT3 =
false;
Materi a l s c h i c hten h i n d u rch erka n n t werd e n .
6
So lassen sich berü h r u n g s e m pfi n d l i c h e 0
7 v o i d T O w a s A c t i va t e d ( )
Oberfl ä c h e n , wie zum Beispiel To u c h n
8 touchedTO = t rue;
9
Screens, entwicke l n , bei denen d e r eigentli
0
10
che Sensor n i c h t m e h r zu erken n e n ist A u c h 11 vo i d T3wasAc t i va t ed ( ) {
fü r e i nfa c h e re B e d i e n e l e m ente wie Ta ster 12 touchedT3 = t rue;
0
oder S c h iebereg l e r e i g n e n s i c h To uch-Sen 13
(""',
14
soren hervorra g e n d . 15 voi d setup ( ) {
(""', 16 S e r i a l . be g i n ( 1 1 5 2 00 l ;
17 p i n M o d e ( L E D_P I N , O U T P U T ) ;
Machen, machen! 18 touchAt t a c h l n t e r rupt ( TO, TOwasA c t i vated, THRESHOLD l ;
n
19 touchAt t a c h l n t e r rupt ( T3, T3wa sAc t i va t ed, THRESHOLD l ;
To uch-Sensore n s i n d e i n e n ützl i c h e S a c h e n 20
u n d e rfre u l i c h e r W e i s e hat der ESP32 g l eich 21
n 22 voi d Loop ( ) {
zeh n davo n . Leider s i n d sie n icht alle i m m e r
23 i f ( touchedTO){
n utzba r. So i st z u m Beispiel der G P I O - P i n 0, 24 touchedTO = fa l se ;
�
d e r fü r d e n To u c h - S e n s o r Tl zu stä n d i g i st, 25 Seri a l . pr i nt l n ( "Sensor TO" ) ;
auf den m e i sten Entwi c k l u n g s b o a r d s m it 0 26 d i g i t a l W r i t e ( L E D_P I N , H I G H ) ;
27
e i n e m D r u c ktaster verb u n d e n . l n de n P i n
0 28
out- D i a g ra m m e n d i es e r B o a r d s ta u c h t e r 29 ; f < t ouc hedT3 ) {
d a h e r zumeist g a r n icht a uf. Das m itgeliefe r (I 30 t o u c h edT3 = f a l s e ;
31 S e r i a l . p r i n t l n ( " S e n s o r T3 " ) ;
te Board b i l det da ke i n e A u s n a h me. Ä h n l i
n 32 d i g i t a l W r i t e ( L E D_P I N , L O W ) ;
ches g i l t fü r d e n Sensor T2, d e n d e r ESP32 a l s 33
Stra p p i n g - P i n z u m Erke n n e n v o n S ig n a l pe n 34
g e l n wä h re n d des Bootvo rga n g s verwen d et.
-
Da um en und Zeigefi n g e r genommen wu rde, N a c h d e m d i e s e t u p - F u n ktion d i e seri e l l e Das I nternet ist d a h e r vo l l von P roj ekten,
sa n k der Messwert sch l a g a rtig u nter 20 u n d S c h n ittste l l e i n it i a l i si e rt u n d d e n L E D - P i n i n die man zu m Beispiel mit Ta sten aus
wu rde konti n u i erlich n o c h etwa s kleiner. So d e n A u s g a bemod u s versetzt hat, reg istriert A l u - F o l i e o d e r m i t B a n a n e n bed ienen ka n n .
bald der Draht losgelassen wu rde, stieg der s i e d i e beiden Event- H a n d l e r m i t d e r F u n k Oft ko m m e n d a bei Krokod i l k l e m m e n zu m
Messwert sch lagartig wieder auf knapp u nter t i o n t o u c h A t t a c h i n t e r r u p t . D i e e rwa rtet E i n satz, u m d i e Berü h ru n g ssensoren mit den
80. a l s erstes A rg u m e n t den P i n des zu ü ber G P IO-P i n s zu verbi n d e n .
U m eine Berü h r u n g zuverlässig zu erken wachenden To u c h-Sensors. An zweiter Ste l l e E i n fi n a l e s P roj e kt n u tzt a be r e i n g a n z
nen, muss m a n also led i g l ich prüfen, ob der steht d i e F u n kt i o n , d i e a u sgefü h rt werden a n d eres Materi a l , d a s ü be r h e rvorra g e n d e
Rückga bewert der F u n kt i o n touchRead soll, we n n d e r S e n s o r a ktiviert w u rde. A m d i e l e ktrische E i g e n s c h aften verfügt, lecker
kleiner a l s ein Schwe l l wert, wie zu m Beispiel Sch l u s s ste ht d e r Schwe l l we rt, d e r u nter s c h m eckt u n d auch sonst e i n iges hermacht.
30, i st. Gegebenenfa l l s muss man d i esen sch ritten werd e n m u ss, u m den Sensor a us Die Rede ist von Wacke l p u d d i n g .
Wert je nach Sensor u n d U m gebu ngsbed i n zulösen. Wacke l p u d d i n g l ä sst sich l e i c h t herste l l e n
g u n g e n a n passen. D i e l o o p - F u n kt i o n ka n n s i c h nun d a ra u f u n d vera rbeiten u n d d i e n t i n d iesem F a l l a l s
'
bes c h rä n ken, d i e Booleschen va r i a b l e n a b A u s g a n g s p rod u kt fü r e i n Wa c ke l p u d d i n g
Ku rze U nterbrechung zufra g e n . We n n t o u c h e d T O d e n Wert t r u e Kiavier. Das K l a v i e r g i bt u ntersc h i e d l i c h e
h at, s c h a ltet d a s P rog ra m m d i e Status-LED Tö n e von s i c h , w e n n d e r P u d d i n g i n ver
Einen Sensor i m Code i m m er wieder d i rekt e i n . Hat t o u c h e d T 3 den Wert t r u e , w i rd d i e schiedenen Behä ltern m i t e i n e m F i n g e r be
a bzufra gen ist ke i n s o n d e r l i c h g uter St i l . LED a u sgescha ltet. rü h rt wird.
Schon bei wen i g e n Sensoren wi r d d a s P ro We n n m a n n u n das P rog ra m m auf d e n Wacke l p u d d i n g g i bt es i n verschiedenen
g ra m m u n ü bersicht l i c h und schwer wartbar. ESP32 l ä d t u n d d i e G P IO-Pi n s 4 u n d 1 5 m i t Formen u n d fü r schnelle Experimente eignen
Besser wä re e i n e re i g n i sgesteuerter Mecha Drähten verb i n d et, ka n n m a n d i e Status-LED sich I n stant-Pu lver recht g ut. Die brauchen
n i s m us, bei dem ein Eve nt- H a n d l e r a ufg eru d u rch Berü h ru n g e n mit den F i ngern e i n - und knapp zwei Stu nden, bis die Tasten fest genug
fen wi rd, we n n e i n To uch-Sensor a u s löst. Zu a u sschalten. Berü h rt m a n beide g l eichzeitig, sind, u n d sie lassen sich ei nfach dosieren u n d
d iesem Zweck g i bt es d i e F u n ktion t o u c h A t d a n n b l i n kt die LED. i n die verschiedensten Formen pressen.
t a c h I n t e r r u p t u n d List i n g Jo uchSwitc h . i n o Ü b r i g e n s m a g es verlockend e rsc h e i n e n , Für das vorliegende P roj e kt d ienen
zeigt, w i e sie ve rwe n d et w i r d . d i e LED d i rekt i n n e rh a l b d e r Eve nt- H a n d l e r S c h n a p s g l ä s e r a u s K u n ststoff a l s Ta ste n . Ein
Das P rog ra m m i m p l e m e n t i e rt e i n e n p r i e i n - u n d a u szuscha lte n . Das i s t jedoch kei n e Lötko l be n m i t e i n e r fe i n e n Spitze ist das per-
m itiven Lichtscha lte r. Es schaltet d i e Status g ute I d ee, d e n n d iese F u n ktionen werden i m
LED des Entwickl u n g sboards ein, we n n der F a l l e e i n e s l nterru pts a ufg erufe n u n d l nter
To uch-Sensor TO a ktiviert w u rd e u n d es rupt- H a n d l e r sol lten sich i m m e r auf ein M i n i Ein Terminaladapter für eine
scha ltet d i e LED a u s, wenn der To uch-Sensor m u m an A ktivität besc h rä n ke n . 3,5mm-Kiinkenbuchse erspart
T3 a u s l öst. das löten.
Zu Anfa n g werden Ko n stanten fü r d e n Schwabbeltasten
Sensor-Schwe l l wert u n d fü r d e n P i n der Sta
tus-LED defi n i e rt. Es fo l g e n zwei Boolesche Z u r Bed i e n u n g d e r To uch-Sensoren d ienten
Va riablen, d i e a nzeigen, ob d i e Sensoren TO bisher J u m per-Ka be l o d e r Drähte. Das ist
u n d T3 jewe i l s gerade a ktiv ( t r u e) oder zu Test- und Entwickl u n g szwecken a u s
i n a ktiv ( f a l s e ) sind. Diese beiden Va riablen reichend, macht a ber n icht viel h e r. E i n e der
werden i n den F u n kti o n e n T O W a s A c t i v a t e d i nteressa ntesten Eigen schaften d e r Sensoren
bezi e h u n g sweise T 3 W a s A c t i v a t e d a u f d e n i st es ja, dass s i e d u rc h viele Materia l i e n h i n
Wert t r u e gesetzt. Diese b e i d e n F u n ktionen d u rch fu n kt i o n i eren u n d n i cht d i re kt m i t
sollen also als Eve nt- H a n d l e r a g i e re n . e i n e m F i n g e r i n Konta kt ko m m e n m ü ssen.
c
Fertig-Prod u kten a u s d e m Kü h l re g a l des ö rt 4 c o n s t u i n t 8_t T H R E S H O L D = 1 5;
5
l i c h e n S u pe r m a r kts u n d s e l b stverstä n d l i c h
/
6 X T_D A C_A u d i o_C l a s s D a c A u d i o ( D A C 1 , 0 ) ;
a u c h i n u ntersc h i e d l i c h e n Fa rben u n d Ge-
n t 8- t S C O R E- C 5 [ J
7
{ };
n t 8- t S C O R E- D 5 [ ] } ,.
schmacksricht u n g e n . Der Fa ntasie sind h i e r 8 i N O T E_C 5 , S C O R E- E N D
{
n t 8- t } ,.
9 i N O T E_D 5 , S C O R E- E N D
ka u m G renzen gesetzt.
{
S C O R E-E N D } ,.
10 i S C O R E_ E 5 [ J N O T E_E 5 , S C O R E- E N D
Um d a s W a c ke l p u d d i n g - K i a v i e r zu rea l i {
S C O R E-G 5 [ ]
n t 8- t
} ,.
11 i S C O R E- F 5 [ ] N O T E_ F 5 ,
{
n t 8- t S C O R E -A 5 [ J S C O R E- E N D } ,.
s i eren, s i n d zwe i P r o b l e m e zu l ö s e n . Z u m 12 i n t 8- t N O T E_G 5 , S C O R E- E N D
{
n t 8- t S C O R E -8 5 [ ] } ,.
e i n e n m u s s d e r E S P 3 2 versch iedene. Tön e e r 13 i N O T E_A 5 ,
{
n t 8- t S C O R E- C 6 [ J } ,.
14 i N O T E_B 5 , S C O R E-E N D
zeu g e n . Darü ber h i n a u s m u ss es e i n e Mög 15 i { N O T.E..LC 6 , S C O R E -E N D
l i c h keit geben, u ntersch i ed l iche Eingaben zu 16
erke n n e n . Um das P roje kt e i nfach zu ha lten, 17 X T_M u s i c S c o r e_C l a s s C 5_N O T E ( S C O R E_C 5 , T E M P O_A L L E G R O ,
T E � P 6 _A L L E G R O ,
I N S i R U M E N T_P I A N O , 1 ) ;
u nterstützt das Klavier n u r die acht Tö n e
18 X T_M u s i c S c o r e_C l a s s D 5_N O T E C S C O R E_D 5 ,
e i n e r O ktave. A u ßerdem ste hen m e h r Sen so I N S T R U M E N T_P I A N O , ' 1 ) ;
ren j a a u c h n icht zur Ve rfü g u n g . 19 X T_M us i c S c o r e_C l a s s E 5_N O T E ( S C O R E_E 5 , T E M P O_A L L E G R O ,
r· I N S T R U M E N T_P I A N O , 1 ) ;
D i e A bfra g e d e r Berü h r u n g ss e n s o re n i st
20 XT_M u s i c S c o r e_C l a s s F 5_N O T E ( S C O R _f:_ F 5 , T E M P O_A L L E G R O ,
verg l e i c h sweise e i n fa c h . A u fwe n d i g e r ist I N S T R U M E N T_P I A N O , 1 ) ;
d i e E rze u g u n g a n s p re c h e n d e r Klänge. U r 21 X T_M u s i c S c o r e_C l a s s G 5_N O T E ( S C O R E_G 5 , T E M P O_� L L E G R O ,
sprü n g l ic h sol lte d a s P roje kt d i e Tö n e m ittel s I N S T R U M E N T_P I A N O , 1 J ;
22 X T_M u s i c S c o r e_C l a s s A 5_N O T E ( S C O R E_A 5 , T E M P O_A L L E G R O ,
C'
e i n e s P i ezo-S u m m e rs a u sg e b e n u n d dazu
I N S T R U M E N T_P IA N O , 1 ) ;
d i e t o n e - F u n kt i o n d e r A rd u i n o - U m g e b u n g 23 X T_M u s i c S c o r e_C l a s s B 5_N O T E ( S C O R E_B 5 , T E M P O_A L L E G R O ,
verwe n d e n . Die g i bt es a be r fü r d e n E S P 3 2 I N S T R U M E N T_P I A N O , 1 ) ;
24 X T_M u s i c S c o r e_C l a s s C 6_N O T E ( S C O R E_C 6 , T E M P O_A L L E G R O ,
noch n icht u n d so w u rd e e i n e a ltern ative Lö
I N S T R U M E N T_P I A N O , 1 ) ;
s u n g gewäh lt, die geri n gfü g i g ko m p l izierter 25
i st, a ber weita u s mehr Potenzi a l hat. 26 v o i. d s e t u p O {
Statt e i n e s S u m mers n u tzt das Wa ckel 27 S e r i a l . be g i n ( 1 1 5 2 DO > ;
2 8.
p u d d i n g -Kiavier n ä m l i c h eine 3 , 5 m m - Ki i n 29
ke n b u c h se, d i e s i c h d i re kt m it e i n e m Laut 30 vo i d loop ( ) {
s p re c h e r o d e r einem O h r h ö re r verb i n d e n 31 DacAudi o . Fi l lBuffer ( ) ;
32 p l a y_n o t e ( T O , C 5_N O T E ) ;
l ä sst. Solche Kl i n ke n buchsen g i bt es i n u n te r
33 p l a y_n o t e ( T 3 , D 5_N O T E ) ;
s c h i e d l i c h e n A u s p r ä g u n g e n , a be r i n d e r 34 p l a y_n o t e ( T 4 , E 5_N O T E ) ;
R e g e l �o m m e n s i e o h n e A n s c h l u s s d rä hte 35 p l a y_n o t e ( T 5 , F 5_N O T E ) ;
36 p l a y_n o t e < T 6 , G 5_N O T E ) ;
da her. Wer s i c h etwa i g e Löta rbeiten erspa
37 p l a y_n o t e ( T 7 , A 5_N O T E ) ; I
I
ren m öchte, g re ift am besten zu e i n e m 38 p l a y_n o t e ( T 8 , B 5_N O T E ) ;
koste n g ü n stigen u n d leicht wiederverwen d 39 p l a y_n o t e ( T 9 , C 6_N O T E ) ;
b a r e n Term i na l a d a pter. 40 } I
,.....
41 J I
Auf e i n e n Verstä rker w u rd e bewusst ver
' 42 v o i d p l a y_n o t e ( u i n t 1 6_t p i n , X T_M u s i c S c o r e_C l a s s & n o t e ) {
zichtet, weil es ei nfi3 c h e r i st, e i n e n O h r h ö re r 43 c o n s t u i n t 8_t v a l u e = t o u c h R e a d ( p i n ) ;
.I
I
o d e r e i n e n L a u t s p rec h e r m it e i n e m e i n g e 44 S e r i a l . pr i n t l n ( va l ue ) ;
45 if (va l u e < THRESHOLD ) {
bauten Verstärker zu verwe n d e n . Die g i bt es
46 i f ( note . P layi ng == f a l s e )
oft schon fü r k l e i n es G e l d u n d v i e l e b i eten 47 Da cAud i o . P l a y < ¬ e ) ;
I
einen ordentl i c h e n S o u n d . 48 d e l ay ( 1 00 ) ;
}
('
49
50
H a rd.w a re, Software, Wetwa re
----·-...J
51
Der Aufbau des Wackelpudding-Kiaviers wirkt wüst, ist aber ganz einfach.
Musikstücke m ü ssen als i n t 8 _t -Felder a n ge daten a n d e n DAC ü bertra g e n . A n s c h l ie g i n t n e n . Zuvor verb i n d et m a n d i e Kl i n ken
legt werd e n , deren l etztes E l e m e n t i m m e r ß e n d w i rd d i e F u n kt i o n p l a y_n ote fü r j e d e n b u c h se m i t Pin 25 u n d e i n e m Masse- P i n des
d i e Konstante S C O R E_E N D i st. S e n s o r u n d d e r zu m S e n s o r g e h ö r e n d e n ESP32. Die D rä hte a n d e n To uch-Sensor- P i n s
Die eigentl ichen M u s i kstücke werden a l s N ote a ufg erufe n . g e h ö re n i n d e n Wackelp u d d i n g . D a b e i sol lte
Objekte d e r Klasse X T_M u s i c S c o r e_C l a s s D i e F u n kt i o n p l a y _n o t e w i e d e r u m l i est man schon d a ra u f achten, die S c h n a ps g l ä ser
a n gelegt. Neben d e n N oten m u ss m a n dazu den Sensor aus und we n n e r a ktiv i st, prüft i n d e r m u s i ka l isch korrekten Reihe nfolge an
noch d i e Geschwi n d i g keit, d a s zu spielende sie m i t dem Attri but P l a y i n g, ob d i e zu sp ie z u o rd n e n .
I n strument u n d d i e Anza h l der Wied erh o l u n l e n d e Note gerade sct)on gespielt wird. N u r D u rc h e i nfa c h e Ä n d e r u n g e n ka n n m a n
gen a n g e b e n . l n d i esem Fa l l ist d i e Anza h l we n n d a s n i c h t d e r Fa l l i st, w i rd d i e N ote mit d e m I n st r u m e n t g ä n z l i c h a n d e re Tö n e e nt
d e r Wiederho l u n g e n g l e i c h 1 , wei l jede N ote d e r P l a y - F u n kt i o n g e s p i e l t u n d eine Pause locke n . Wei l d i e verwendete B i b l i othek WAV
bei e i n e m Taste n d ru c k n u r e i n m a l gespielt von 1 00 M i l l i s e ku n d e n e i n g e l egt. Auf d i ese Dateien a b s p i e l e n ka n n , lassen sich d i e Tas
werden so l l . G i bt m a n h i e r e i n e 0 a n , w i rd Weise werden die Ta sten e n t p re l lt, sodass ten mit b e l i e b i g e n K l a n g effe kte n verse h e n .
das M u s i kstü c k ü b rigens e n d l os wiederholt. d i e ihnen zugeord neten Tö n e n i c h t bei d e r So w i rd a u s d e m K l a v i e r z u m B e i s p i e l g a n z
Die s e t u p - F u n ktion i n itia l i siert nur die klei n sten Berü h ru n g meh rfach erkl i n g e n . sc h n e l l e i n D r u m-Com puter. D i e e i n z i g e
seri e l l e S c h n ittstel l e und d i e e i g e n t l i c h e Das ku rze Prog ra m m i st a l les, was benö Besc h rä n ku n g l i egt i n d e r Anza h l der Taste n .
M u s i k s p i e l t wortwört l i c h i n der l o o p - F u nk tigt wi rd, um das Wa c ke l p u d d i n g - Ki a v i e r
tion. Die ruft g l e i c h zu Anfa n g d i e F u n ktion z u m Leben zu erwecke n . Soba l d d e r C o d e Fazit
Fi l l B u f f e r des Objekts D a c A u d i o a uf. Da a u f dem Boa rd u n d d e r P u d d i n g o rd n u n gs
d u rch werden noch a u s ste h e n d e K l a n g - g e m ä ß verl<a be l t i st. ka n n d a s Konzert be- D i e To u c h-Sensoren s i n d e i n e fe i n e Sache,
u n d zwa r sowo h l wä h re n d d e r Entwi c kl u n g
a l s a u c h fü r fe rt i g e P roj e kte. Wä h re n d d e r
Entwi c k l u n g kö n n e n s i e z u m B e i s p i e l a l s
s c h n e l l e r E rsatz fü r D r u c ktaster h e r h a l t e n .
I m G e g e n s a tz zu d e n e n b e n öti g e n d i e
To u c h -S e n s o r e n n ä m l i c h ke i n B r e a d b o a r d
u n d ke i n e W i d e rstä n d e . E i n e i nfa c h e r D r a h t
g e n ü g t u n d s c h o n hat m a n e i n e s i m p l e Be
n utzu n g s s c h n ittste l l e.
So richtig schick u n d spannend werden die
Ber ü h r u n g ssen soren a be r erst. wen n sie i h re
Stä rken a u ss p i e l e n d ü rfen . Die l i egen g a n z
klar i n i n n ovativen F o r m e n der Benutzeri nter
a ktion _ _ Die helfe n n icht n u r bei der U m set
zung spaßiger P rojekte, sondern ermög l ichen
auch schicke u n d s u btile Bedienelemente fü r
Eine VIdeovorschau unter den links gibteinen Vorgeschmack auf das Projekt. ernsthafte Anwend u n g e n . -dab
Leserbriefe u n d Fragen zum Heft: i nfo@ m a ke-magazi n . d e Herausgeber: C h ristian H e ise, An s g ar Heise E i n e Haftu n g für d i e Richtigkeit d e r Veröffentlichungen
ka n n trotz sorgfältiger Prüfu n g d u rc h d i e Redaktion
Geschäftsfü h rer: Ansgar H e ise, Dr. Alfo n s Schräder
Die E-Mail-A dressen d e r Redakt e u re h a b e n d i e Form vom Herausgeber nicht ü b e r n o m m e n werde n . Kein Tei l
xx@m a ke- magazin.de oder xxx@ m a ke-magazin.de. Setzen Verlagsleiter: Dr. Alfo n s Schräder dieser P u b l i kation d a rf o h n e ausdrückliche schriftliche
" G e n e h m i g u n g des Verlags i n irgendeiner Form
Sie statt "xx" oder "xxx bitte d as Redakteurs-Kürzel e i n . Die
S te l l v . Verlagsleiter: D an i el Bachfe l d
K ü rzel fi n d e n Sie am Ende der Artikel und hier i m reproduziert oder u nter Verwen d u n g elektronischer
I m press u m . Anzeigenleitu n g : M i c h a e l H a n ke (- 1 67) System e verarbeitet, vervielfältigt oder verb reitet werden.
(verantwort l i c h fü r d e n Anzeigenteil), A l l e beschriebenen Projekte s i n d ausschließlich für den
privaten, n i c h t kom m e rz i e l l e n Gebrauch. M a ker Media
Chefredakteur: Da n i el Bachfe l d (dab) www.h e i se.de/med i ad aten/ma ke
GmbH behält sich alle N utzu n g srechte vor, sofern keine
(verantwortlich fü r d e n Textteil)
Leiter Vertrieb und Marketing: A n d re Lux (-299) a n d e re Lizenz fü r Software u n d Ha rdware expl izit
g e n a n nt ist.
Stellv. Chefreda kteur: Peter König (pek) Service Sonderdru cke: J u l i a C o n rades (- 1 56)
Druck: G o l d s c h m i d t G m b H , Josefstraße 35 , 49809 L i n g e n Für u n verlangt e i n g esandte M a n u s kri pte kann keine
Redaktion: H e i nz Behling ( h g b), H e lga H a n s e n (hch), Haftung ü b e r n o m m e n werd e n . Mi t Ü bergabe der
Vertrieb Einzelverkauf:
Ca rsten Meyer (cm), F l o r i a n Schäffer (fls), E l ke Schick (esk) M a n uskri pte und B i l d e r a n d i e Redaktion e rte i l t der
VU Verla g s u n i o n KG
Verfasser d e m Verlag d as Exklu sivrecht z u r Veröffent
Me ßberg 1 l i c h u n g . Honorierte Arbeiten g eh en in das Verfü g u n g s recht
Assistenz: S u s a n n e Cölle (suc), C h ristop h e r Trä n k m a n n
20086 H a m b u rg des Verlages ü ber. Sämtliche Veröffe n t l i c h u n g e n i n Make
(cht), M a rt i n Tri a d a n (mat)
Tel . : 040/3 0 1 9 1 800, Fax.: 040/3 0 1 9 1 45 1 800 erfo l g e n ohne Berücks i c h t i g u n g eines eventue l l e n
E-Ma i l : i nfo@verla g s u n io n . d e Patentsch utzes.
DTP-Produktion: Nicole J u d ith H o e h n e (Ltg.), Martina
I ntern et: www.ve r l a g s u n i'o n . d e
Bruns, M a rti na Fredrich, J ü rg e n Gonnermann, B i rgit G raff,
Angela H i l berg, Astrid Seifert, Dieter Wa h n e r Ware n n a m e n werd e n ohne Gewä h rleistung einer fre ien
Abo-Service:
Verwe n d u n g ben utzt.
Beste l l u n ge n , A d ressä n d e r u n g e n , Lieferproblerne usw.:
A r t Direction: M a rti n a B r u n s (J u n i o r Art Di rector)
Maker Media GmbH P u b l ished and d istributed by Maker Media G m b H under
Leserservice l i cense from Maker Media, l n c., U n ited States of America.
Layout-Konzept: Martina B r u n s
The 'Ma ke:' Irademark i s owned by Ma ker Media, lnc.
Postfach 24 69
D I E AUTO REN
D I ESES H E FTS
Maik Schmidt a rbeitet seit über 25 Jahren Daniel Bachfeld ist Chefredakteur beim
als Softwa reentwickler fü r m ittelstä nd ische Ma ke-Magazi n. Mit M i krocontrol lern
und Großunternehmen. Au ßerdem schreibt bastelt er seit 1 999. Er ist froh, dass ihm
er Buch kriti ken und Artikel fü r i nternationale das Arduino-Konzept nun viel Arbeit
Zeitsch riften u n d hat sel bst einige Bücher beim Aufb? U der Hardwa re und der
verfasst. U nter anderem ist er Autor des Entwickl ung der Softwa re spart.
Buchs ..Ard u i no: A Quick-Sta rt G u ide, 2nd Er freut sich über Projekteinreichu ngen
ed.", das bei The P ragmatic Bookshelf und Artikelideen von Lesern, die auf
erschienen ist u n d u nter dem Titel Grundlage dieses Hefts entsta nden sind:
.. Arduino - Ein schneller Einstieg in die [email protected]
Microcontroller-Entwickl ung" vom d p u n kt
Verlaq ins Deutsche ü bersetzt wu rde.
- - --
Siegrn ar J
Bre vier
M itt l e rwe i l e i st es kei n e Beso n d e r h e i t
m e h r, M i kroc o n t ro l l e r i n H o c h s pra
c h e n wie JavaScri pt o d e r Pyt h o n zu pro
Wo steckt er denn?
D i e Doku m e ntation bezeich net d e n BASIC
g ra m m i e r e n . D e r ESP32 b i l det ke i n e Aus I nterprete r a l s ROM-Konsole. Die w i rd i m m er
nahme u n d wird von P roj e kten wie Espru i n o dann gesta rtet, we n n d e r ESP32 beim Boo
(http://www.es p r u i n o . c o m/) oder M i c ro ten d e n Code im F l a s h-Spei c h e r nicht a u s
Pyt h o n (http://m i c ro pyt h o n . o rg/) vo l l u nter fü h.ren ka n n . l n d i esem M o m e n t ka n n m a n
stützt. s i c h m i t e i n e m seri e l l e n M o n itor ll] i t d e m
Etwas exot i s c h e r ist da sch o n d i e P ro ESP32 ver b i n d e n u n d d i e ROM-Konsole n ut
g r a m m i e rspra c h e BASIC, d i e h a u ptsä c h l i c h zen .
a u f d e n P I C- B o a r d s seh r b e l i e bt i s t . A u f a n U m d a s BAS I C zu n utze n, m ü sste m a n a l s o
d e re n P l a ttfo r m e n i st s i e zwa r oft verfü g b a r, n i cht-a u sfü h rbaren C o d e i n s F l a s h sch re i ben.
fü h rt a be r e h e r e i n Sch atte n d a s e i n . Es g i bt a l lerd i n g s einen kleinen Trick, der den
We n n a b e r e i n B A S I C - I n t e r p reter a u f Zugang z u m I nterpreter verei nfacht. Der
'
einem M i kroco n t ro l l e r l ä u ft, dann ist ESP32 l a n d et n ä m l i c h a u c h i n der ROM-Kon
es m e i stens Ti ny BASIC (https://e n . w i ki s o l e, we n n man d e n G P I O- P I N 1 2 a u f H I G H
ped ia .org/w i ki/Ti ny_BAS IC) oder e i n e I m p l e setzt u n d d e n ESP32 bootet. Dazu verb i n d et
m e n t i e r u n g , d i e a u f T i n y BAS I C b a s i e rt. Das m a n den G P I O - P i n 1 2 u n d den 3,3V- P i n m i t
l i egt d a ra n , d a s s d i ese Vers i o n ext rem spa r e i n e m J u m per-Ka be l (fe m a l e-fe m a l e) u n d
s a m m i t d e m S p e i c h e r e i n es Rec h n ers u m d r ü c kt den Reset- Knopf. E i n einzelner Draht aktiviert d i e ROM-Konsole.
geht. A n sc h l i e ße n d verb i n d et m a n s i c h m i t
I nteressa nterweise hat die Firma E s p res e i n e m serie l l e n M o n itor, wie z u m B e i s p i e l g r ü ßt die ROM-Konsole mit e i n e m l a p i d a ren
sif e i n e n Tiny BASIC-I nterpreter ins ROM des PuTIY, m i t d e m E S P 3 2 u n d d r ü c kt d i e Re Prompt ( > ) .
ESP32 i nteg riert und i h n a nfa n g s m e h r o d e r t u r n -Taste. Die F e h l e r m e l d u n g en, die zuvor
we n i g e r ve rsteckt bezi e h u n g sw e i s e n i c h t a n g ezeigt w u rd e n , ka n n man g etrost i g no Erste Sch ritte
d o k u m e nt i e rt. S e i t e r a be r zufä l l i g entd eckt riere n . Sie besagen ledig l ich, dass der ESP32
worden i st, g i bt es a u c h e i n e k n a p p e n icht a u f d e n F l a s h-Speicher zug reifen ka n n . Wen n man so gar n i cht weiter weiß, schadet
Besc h re i b u n g i n d e r offi zie l l e n D o k u m e n Wichtig i st, d a s s m a n den seri e l l e n M o n i es n i e, ei nfach m a l u m H i lfe zu bitte n. G i bt
tati o n ( https://d ocs.espress if.co m/proj ects/ tor so e i n stellt, dass er a m E n d e e i n e r ü be r m a n in der Ko nsole das Ko m m a ndo h e L p ein,
es p - i d fI e n / l a t e s t/a p i g u i d e s / r o m co n so I e . tragenen Zei l e n u r e i n Lin efeed u n d kei n Car l i stet d e r I nterpreter a l l e Befe h l e auf, die er
htm l ) . riage-Retu rn sendet. Hat a l les geklappt, d a n n versteht. Daru nter ist a u c h der Befe h l a b o u t
t;� . Window
.
, .... �peararnce 121 Llse backgrol!ll'ld oolol!lr to erase screern l e wieder an die Zeile 1 0 ü berg i bt. D ? m it er
ß . Ccmnection
d e n Zei l e n n u m m ern w i rd s c h n e l l u n über
.
Urne disciplirne optiorns. sichtlich.
Local echo :
L . senal . . Damit m a n d a s P rogra m m stoppen ka n n ,
0 A.!rt o
m u s s m a n es erst e i n m a l sta rten u n d das ge
@ Force ,o rn 0 Force off
schieht mit dem Befe h l r u n . We n n man sich
Local line edit irng : a n d e r Ausgabe satt gesehen hat, hält m a n
O A.rt o @ Force on 0 Force off d a s P rog ra m m a n , i n d e m m a n Strg-C u n d
d a n a c h d i e Return-Taste d r ü ckt. Die Ausgabe
R.emote�orntrolled printing
des Progra m m s l ä uft wä h renddessen weiter.
Zwi schen die Zei l e n 1 0 und 20 ka n n m a n
So sollte die PuTTV-Konfiguration für die Arbeit m it der ROM-Konsole aussehen.
j etzt n o c h weitere Anwe i s u n g e n e i n sc h ie
ben, indem man eine Zei l e n n u m m e r zwi
schen 11 und 19 wä h lt. Zum Beispiel ka n n
m a n m i t h i lfe d e s Sch l ü sselwortes r e m wie
fo lgt e i n e Ko m m e nta rze i l e ei nfü g e n :
preter n icht zwischen G roß- u n d K l e i n s c h rei wä h l t werd e n u n d _m a n sol lte zwi s c h e n zwei Weil es fü r d i e Reg i ster-Ad ressen kei n e Ko n
bung u n d fü h rt jeden Befe h l sofort a u s . Un- benac h b a rten Zei len g e n ü g e n d Absta n d las- sta nten g i bt, muss man die Ad resse des
\ p o k e_b l i n k . b a s \ 1 0 b l i nk . ba s
\ 10 '
B l i n ke r \ 1 0 IODlR 2,1
(' (' 3 0
20 POKE &H3 F F44020, 4 20 FOR A=1 TO 1 0
30 POKE &H3 Ff44004, 4 lOSET 2,1
40 D E LAY 200 40 D E LA Y 200
r 50 POKE &H3 F F44004, 0 50 lOSET 2,0
60 D E LAY 200 60 D E LAY 200
c 70 GOTO 30 r , 7 0 'N E X T A
( ('
@ heise shop
U mgebung. fü r 200 M i l l i s e k u n d e n w i e d e r a u sgeht. Mit
der n e x t -Anwei s u n g beg i n nt die nächste Ite d e n E S P 3 2 i n i h re n P rod u kten e i n setzen Fazit
ration der f o r-Sc h l eife. und die i h re G e h e i m n i s s e v o r den A u g e n
Lässt m a n d a s P ro g ra m m im I nterpreter d e r Ö ffe n t l i c h keit verbergen wo l l e n , ka n n D i e ROM-Ko n s o l e i n k l u sive BASIC-I nterpre
l a ufen, d a n n verh ä lt es sich exa kt so, wie d i e d a s e i n echtes P ro b l e m sei n . ter e r sc h e i n t z u n ä c h s t wie e i n Easter- E g g
p o k e -Va ria nte. A l l e rd i n g s i st d e r Q u e l ltext E s p ressif ist s i c h dessen bewusst u n d h a t d e r E s p ressif- E n twi c k l e r u n d verm u t l i c h wa r
u m Lä n g e n l e s b a re r. d a h e r e i n e e i n fa c h e Mög l i c h ke i t g e s c h af s i e a u c h so g e d a c h t . Trotz d e m ist s i e e i n e
Das Trio der 1 0- F u n kt i o n e n w i rd ko m fe n , d e n B A S I C - I n t e r fiJ rete r a bz u s c h a l t e n . n ützl i c h e E i n ri c h t u n g u n d e r l a u bt u nter a n
p l ett i e rt d u rc h d e n Befe h l i o g e t . Da m i t D a z u m u s s m a n l ed i g l i c h e i n e besti m mte d e re m d i e P rog ra m m i e r u n g des E S P 3 2 g a n z
l ä sst s i c h d e r We rt, d e r g e r a d e a n e i n e m eFuse des E S P 3 2 d u rc h b re n n e n lassen. o h n e I D E.
G P I O - P i n a n l iegt, a u s l e s e n . D i e fo l g e n d e n I m Werkze u g e s p e f u s e . p y (https://g i t h u b . Zwa r ka n n man die so e rste l l ten P ro
Anweisu n g e n g e b e n z u m B e i s p i e l d e n a ktu com/espress if/es ptool/wi ki/espefu se) n e n nt g r a m m e n i c h t a u f d e m Boa rd s p e i c h e r n ,
ellen We rt von G P I O � P i n 0 a u s, nachdem d e r E s p ressif d i ese S i c h e r u n g C O N S O L E_ D E B U G_ a be r m a n ka n n s i e beq u e m i m Co py-/Paste
P i n i n den E i n g a be m o d u s versetzt wu rde: D I S A B L E. Ve rfa h re n vom PC auf den E S P 3 2 ko pieren.
IODIR 0,0 A kt u e l l e Vers i o n e n d e s E S P - I D F l a s s e n Da m it e i g net sich die Ko n s o l e h e rvorra
PRINT IOGET < O l d i ese S i c h e r u n g g r u n d sätz l i c h d u rc h b r e n gend, um neue Sensoren oder Aktaren p ro
n e n , so d a s s n a c h d e m Ü be rsetze n u n d Auf toty p i s c h a u sz u p r o b ie r e n .
s p i e l e n e i n e s Prog ra m m s d e r B A S I C - I nter D i e Ve rs u c h u n g l i egt na he, d e n BAS I C - I n
Ist das denn sicher? p reter a u f d e m E S P 3 2 n i c h t mehr erre i c h b a r t e r p reter i n e i g e n e P rog ra m m e e i nzu bet
i st. W e r d a s ve r h i n d e r n m ö c hte, m u s s d i e te n . Das ist a be r zum e i n e n n i c h t o h n e Wei
Der u n g es c h ü tzte l e s e n d e u n d s c h re i b e n d e e F u s e z u v o r m itte l s e s p e f u s e . p y vor d e m teres m ö g l i c h und zu m a n d e re n ist es n i cht
Zug riff a u f d e n S p e i c h e r d e s E S P 3 2 d ü rfte S c h re i bz u g riff sch ütze n . A l l e rd i n g s ist a u c h s o n d e r l i c h s i n nvo l l , we i l d e r I nterprete r o h
den m e i sten S i c h e r h e itsexperten einen d i eser E i n g riff u n u m ke h rba r, d a s. h e i ßt, d a n e h i n n u r 4 KB bea n s p ru c ht. Wer a l so tat
S c h a u e r ü ber d e n R ü cken j a g e n . M i tte l s des n a c h ka n n d e r BASIC-I nterpreter n i e w i e d e r s ä c h l i c h BAS I C -Progra m m e a u sfü h ren möch
p e e k - Befe h l s ließe s i c h s c h l i e ß l i c h d e r I n h a l t a bg e s c h a l tet w e rd e n . D i e A rd u i n o - I D E i s t te, s o l lte l i e be r e i n e n e i g e n e n I n terpreter
des g e s a m t e n S p e i c h ers a u f d i e s e ri e l l e n i c h t so i n v a s i v w i e d a s E S P- I D F u n d l ä sst e i n b i n d e n , sel bst we n n es ebenfa l l s ein Tiny
S c h n ittste l l e s c h re i b e n . F ü r H e rste l l e r, d i e die e F u ses in R u he. BAS I C ist. -dab
- ·�: :
Persistence o f Vision nutzt d i e
• • •
für eine Stelle mit bis zu
-· i ! . -!i
. ! ;: �· Trägheit d e s Auges u n d gaukelt
-· · • ..
zehn Zeichen einer LED-Ni drei entscheidende Teile zum
dem Betrachter ein dreidimensi-
.
Bau Ihres eigenen Multitools:
.. . ... ... - ·
!'
xie-Anzeige, wie sie i n der
!MI' ·-
Bi l d vor, obwohl s i c h nur
. -·. Make 4/201 8 vorgestellt die Schrittmotorsteuerung mit
. . ein Streifen mit LEDs bewegt.
wurde. Die Platinen sind CPU, die Kontrollpult-Platine und
Mit diesem umfangreichen die Step-Encoder-Piatine. Im
über die Stiftleisten anreih- ,_._"..
Bausatz holen Sie sich die Komplettpaket sparen!
bar. Je zwei der RGB- LEDs beleuchten eine Ziffer - die
beeindruckende Illusion nach
Farbe wird in der Software auf dem Arduino eingestellt.
Hause.
Tesla-Spule ODROID-GO
Mit diesem Bausatz entdecken Sie die Weit von M i t diesem Bausatz emulieren S i e auf Basis eines
Tesla und erzeugen selbst eine ungefährliche ESP32-Moduls nicht nur Spiel e - Klassiker, sondern
Hochspannung die am Drahtende der großen programmieren auch in der Arduino- Entwicklungs
Spule einen Lichtbogen erzeugt. Mit allen umgebung.
benötigten Teilen und Anleitung online.
shop.heise.de/odroid
shop.heise.de/makey-bausatz shop.heise.de/make-teehase
Ab einem Einkaufswert von 1 5€ und für Heise Medien- und Maker Media-Abonnenten
sind alle Produkte versandkostenfrei . Preisänderungen vorbehalten.
2 x M a ke te ste n u n d 6 € s p a re n !
Ihre Vorteile:
./ GRATIS dazu: Arduino Nano ./ NEU: Jetzt auch im Browser lesen!
./ Zugriff auf Online-Artikel-Archiv* ./ Zusätzlich digital über iOS oder Android lesen
Für nur 15,60 Euro statt 21,80 Euro.