Make: ESP32 SPECIAL inkl. ESP32 NodeMCU Entwicklerboard [2019-1, 1 ed.]

Highlights dieser Ausgabe: * ESP-Grundlagen erklärt * Software schnell einrichten * Hardware-Funktionen verstehen * ESP

1,268 221 28MB

German Pages 68 Year 2019

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Make: ESP32 SPECIAL inkl. ESP32 NodeMCU Entwicklerboard [2019-1, 1 ed.]

Table of contents :
4 Schnelleinstieg:
10
18
30
44
50
56
Das Beste zweier Welten
Hardware:
Hardware-Interna
WLAN:
50 Türsensor mit Cloud-Anbindung
Flinker Funkwellenreiter
Bluetooth:
Durch die KombinatiOn des integrierten Hall�ensors mit externen
Strahlendblauer Funkenflug
Funktionsgenerator:
Magneten wird der ESP32 zur Cloud-fähigen Fernüberwachung
von Türen und Fenstern.
Signalerzeugung mit dem ESP2
Hall-Sensor:
Magnetfelder messen
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
ESP32 ThermomE X
+
D
-
... {9�1
.
»
Tasten überflüssig. Acht Puddingbecher dienen als Tastatur für
das Jelly-Piano, dessen Töne der Mikrocontroller intern erzeugt.
Temperatur
""
40 i

Citation preview

c't

2 3 P S E A�L� :=::: := � - �g ��--- - - --- s P e :::=:=:=:c =-=--1 G ru n d i �

• •



!

t



Software schnell einrichten

Hardware-Funktionen verstehen ESP32 ins WLAN bringen Per Bluetooth Daten austauschen



• •



Digital-Analog-Wandler steuern

Touch-Eingänge auslesen Hallsensoren nutz�n BASIC-Interpreter freischalten

PROJEKTE

Mini-Webserver mit Temperaturmessung • Bluetooth-Sensoren • Funktionsgenerator • Piano mit Toucheingabe • Türüberwachung

-·-·······----··-

2019 €24,95 =,.... 0 - ......

=ll"\ _o-

-� =N

=�

-ll"\

iiiiiöiii� --Cl =o �0' =..-



www.make-magazin.de

Arduino-Projekte für Fortgeschrittene:

Digital als PDF

Auch erhältlich: Teil 1 für Einsteiger

pROJEKTE �..:=:;:.��u:e.�er

Hardware



·-

l'J Heise

www.make-magazin.de

Inhalt 4 Schnelleinstieg: 10 18 30 44 50 56

Das Beste zweier Welten

Hardware:

Hardware-Interna

WLAN:

50 Türsensor mit Cloud-Anbindung

Flinker Funkwellenreiter

Bluetooth:

Durch die KombinatiOn des integrierten Hall�ensors mit externen

Strahlendblauer Funkenflug

Funktionsgenerator:

Magneten wird der ESP32 zur Cloud-fähigen Fernüberwachung von Türen und Fenstern.

Signalerzeugung mit dem ESP2

Hall-Sensor:

Magnetfelder messen

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 ESP32 ThermomE X

+

D

-

... {9�1

.

»

Tasten überflüssig. Acht Puddingbecher dienen als Tastatur für das Jelly-Piano, dessen Töne der Mikrocontroller intern erzeugt.

Temperatur

""

40 i< ·.

Luftfeuchti ;

·

it

80

18 ESP32 als WLAN-Server

4 4 Funktionsgenerator

Mit wenigen Zeilen Code wird der ESP32 zum

Dank seiner zwei Digital-/Analog-Konverter kann der ESP32 Sinus-,

Webserver, der per WLAN die aktuelle Temperatur

Dreieck-, Sägezahn- und Rechtecksignale bis in den Kilohertz­

und Luftfeuchtigkeit im Browser anzeigt.

Bereich erzeugen, die sich für Experimente nutzen lassen.

Make: ESP32 special 20 1 9 l

3

SCHNELLEINSTlEG

�-

DasBeste zweier Welten Wer a u f d en ESP32 setzt, ko m m t nicht nur in d en Genu s s leistungssta rke r

Alles zum Artikel

I im Web unter . • make-magazin.de/xrtn

und g ünst i g e r Ha rdwa re, sond e rn kann a uch von d e r int u i tiven Ard u ino­

Entwicklung sumgebung p rofitieren. von Maik Schmidt

Z

ESP8266 gibt

es

U nte r

Andocken

u r P rog ra m mieru n g des E S P 3 2 u nd des

N e b e n d e r E ntwick l u n g mitt e l s C/C++ a u f Basis d e s I oT Deve l o p m e n t F r a m ew o r k

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

vie l e A l t e r n a tive n .

man,

Bevor ei n ESP32-Board mit der Ard uino-I D E

bevo r

das

B o a rd

angeschlossen

w u rde1d a s Kom m a nd o L s I d e v I t t y . * ei n.

verbu nden wird, muss e s a n den P C ode r den

(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

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 u nd neuer Softwa re ve rsorgen ka n n . Wie a l l e

d a s Ko m m a nd o e r n e u t a u s . Der Ei ntrag, d e r 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­

U S B-Geräte ben ötigen die Boards ein e n Be­ triebssystem-Treiber. ln dies. e m F a l l fü r den

den a l l e. nic ht u nd zum E rfo l g des E S P 3 2 u nd d e s E SP8266 hat m a ß g e b lich, beig etra­

CP2102"Chip des H e rstel lers Si L a b, derdie se­ rielle K o m m u ni kation erledigt.

g a r BAS I C zu prog ra m mi e r e n . Sonderlich

ei n stei g e rfre undlich

sind

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­

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

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­

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/

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, 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

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

n e u hi n zu g e ko m m e n i s t , ve rweist a u f d a s 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 ­

usso sei n . Ä h n li c h lä u ft e s u n ter m a cO S . N ur gibt man hier d a s . Ko m m a nd o LIS

l d e v l c u.*

ei n , bevor u nd n a c hdem man d a s Boa rd a n·

g e s tö p s e l t hat. Typi s c h e rwei s e h ei ß t der 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 .

Her mit der

b ridge-vcp-d rivers) gi bt es i h n bei B eda rf 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

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

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

ändern.

scheinen.

Möglich keiten. F ü r Windows s t e h t zum Bei-

41 Make: ESP32 special 201 9

nach

der

IDE!

A rduiilo- I D E

des

Betriebssystem

bietet

A rduino-P rojekts u nterschied li c h e '

s piel neben ei n e m klassisc h e n S et u p a u c h ei ne Z I P-Datei zu r Verfü g u n g . Die m u s s m a n l edi g lich a u s pa c ken, o h n e die Anwend u n g zLi

i n s ta l lieren.

IDE

koste n l o s

D a r ü ber im

hi n a u s i s t die

Microsoft

App

Sto re

(https://www.microsoft.com/de-de/p/a rduino­ ide/9n b l g g h4rsd8) erhältlic h . F ü r macOS u nd Li n ux stehen a u f der Ard ui no-Seite ebenfa l l s I n sta l l ationspa kete bereit. Der erste Sta rt der A rd ui n o- I D E ist nicht s o nderlich s p e ktaku lä r, denn die S oftwa re wi rkt etwa s s c h li c h t . Den o b e re n B e rei c h dominieren ei n e M e n ü l eiste m i t s e c h s g ro­ ßen K n ö pfe n u nd ei n Text-Editor. I m u nte­ ren Berei c h gibt es ei n e n Bereic h fü r A u s g a­ ben der I D E. Die sec h s Knöpfe bieten s c h n e l l e n Z u g riff auf die wichtig sten Kom m a ndos. G a n z lin ks 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 Q u e l l texte, die im a kt u e l l e n Fenster g eöffnet sind, ü be rsetzt u nd auf Syntaxfe h l e r ü be r­ 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­ fen ster vermerkt. Ei ne ä h n li c h e F u n ktio n bietet der zweite Kno pf. A l l e rdi n g s ü be rsetzt er das a ktue l l e P rog ra m m nic h t n u r, sondern ü be rträgt e s



-

Geräte-Manager

Datei

Aktion

Ansicht

D

X

?

$J •IrEli� I 6 1Iill i [J;1 1 lt X @ v



� Akkus Ii Anschlüsse (COM .& lPT) i Silicon Labs CP210x USB to UART Bridge (COM3) > . aJ Audio, Video und Gamecontroller >

DESKTOP- 18D6BMQ

v

)

Audioeingänge und -ausgänge

> =Computer

> >

li=i!

,3

Druckwarteschlangen

DVD/OD-ROM-Laufwerke

> jjW Eingabegeräte (Human Interface Devices) )

>

>

>

>

>

>

>

>

>

>

>

Grafikkarten

"" IDE ATA!ATAPI-Controller

fl

_

Laufwerke Mäuse und andere Zeigegeräte

- Monitore

.

C Prozessoren I Softwa > ; 1 1 0 } d e l a y C 1 000 l ; 11

4.2 u n d B l u etooth Low E n e rgy (BLE). Band­ breite u n d Geschwi n d i g keit rei c h e n fü r Audio-Strea m s u n d nach der rei n e n F a kten­ lage sol lte die A n ste u e r u n g von A u d io­ Headsets oder d i e Rea l i s i e r u n g eines B l ue­ tooth-Lautsprechers fu n kt i o n ieren. Es · g i bt e i n paa r v i e l versprec h e n d e P rojekte i m

ßen ganzen Za hlen u n d d a bei m ü ssen d iese Zahlen u nter a nderem m u ltipl iziert werden. 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

Steueru n g m it i h rem S m a rtphone ü berneh­ men u n d a u shebe l n . Versc h l ü ssel u n g i s t heutzutag e b e i jedwe­ der öffentl ichen Kom m u n i kation e i n M u s s u n d das sol lte m a n a u c h bei H o b by-Projek­ ten im H i nterkopf haben. Sta rke kryptog rac fische Algorithmen ste l l e n aber sel bst fü r e i n e verg leich sweise l e i stu n g s sta rke C P U , w i e sie auf dem E S P 3 2 i h ren Dienst verrich­

Netz, a ber d i e F i rmwa re scheint noch nicht h u n dertprozentig a usgereift zu s e i n . A l ler­ d i n g s gab es hier i n l etzter Zeit g roße Fort­ sch ritte. Bei a l l den d ra ht l o s e n F u n k-Tech no l o­ g ien ka n n m a n d e n Ethernet Media Access Contro l l er (MAC) auf dem ESP32 schon m a l sch n e l l ü berse h e n . Tatsäc h l i c h ka n n s i c h der C h i p darü ber mit e i n e m ka belgebunde­ n e n LAN verb i n d e n . S c h l i e ß l i c h h a t der ESP32 noch einen Contro l l e r fü r d e n CAN­ B u s (Contro l l e r Area N etwork), d e r in der

tet, eine g roße Hera u sforderung d a r. Da ist es u mso erfreulicher, dass der ESP32 ein paa r n ützl iche Helfer an Bord hat, die i h m die stu­ pide Rec h nerei abnehmen. 1 Bei der sym m etrischen Versc h l üssel u n g g reift i h m beispielsweise e i n AES-Besch l e u ­ n iger u nter d i e A r m e . Der Adva nced Encryp­ tion Sta ndard (AES) gehört zu den wichtigs­ ten sym m etrischen Versc h l üssel u n g sa l g o­ rith m e n u n d d e r ESP32 kom m t m i t S c h l üs­ seln der Lä nge 1 28, 1 92 u n d 256 Bit klar. Sym m etrische Versc h l ü ssel u n g sa lgorith­ men h a ben e in e ga nze Menge Vorteile. Sie s i n d schnell, einfach zu i m plementieren, ein­ fach zu versteh e n u n d ziemlich sicher. I h r g rößtes Problem i st d i e Vertei l u n g d er

Auto-I n d u strie weit verbreitet i st. N icht wen i g e N utzer d ü rften sich fü r einen ESP32 entscheiden, wei l er mit WLAN und B l u etooth zwei wichtige Technologien zur d rahtlosen Kom m u n i kation zu e i n e m g ü nstigen P r e i s a n bietet. F ü r viele Anwen­ dungsfelder, wie zum Beispiel bei der Heim­

Sch l üssel, d e n n zwei Partner, d i e i m Gehei­

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 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­

Gehei m n i skrämerei

Bei der ganzen F u n kerei darf m a n heutzuta­ nen sich jedoch beide Partner auf e i n e n 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 Augen verlieren. Das woh l ige Gefü h l des Er­ a bgehört wird ? finderstolzes ist schnell verflogen, wen n ner­ U m d i eses Problem zu lösen, werden bei 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 sellen die eigens entwickelte G a ragentorasym m etrische Verfa h ren, w i e z u m Beispiel ·

ROM

(vertra uenswü rd i g)

Flash

·

BootROM und eFUSE

Secure Boot sorgt für sichere Projekte.

16 I Make: ESP32 special 201 9

Software Bootloader

----

Anwend u n g

Zah l e n mit einer Lä nge von bis zu 4096 Bits. Auf d ieser Basis l ässt sich der RSA-Aigorith­ mus mit a u s reichend g roßen Schl üssel längen i m plementieren u n d eine solche I m plemen­ tieru n g gehört auch zur Standard-Bi bliothek. i n der Absicheru ng von Kom m u n i kations­ systemen s p i e l e n n i c ht nur Versch l ü sse­ l u ngsa lgorith men eine wichtige Rolle, denn sel bst ü ber einen versch l ü sselten Ka n a l kön­ nem kom p rom ittierte Doku mente und Infor­ mationen ü bertragen werde n . Um die l nte­ g riÜit u n d Authentizität von I nformationen zu g ewä hrleisten, kom m e n kryptag rafische Hash-F u n ktionen z u m Einsatz. Sie helfen bei der Berec h n u n g von sicheren Prüfs u m m e n u n d b e i der Erste l l u n g d i g italer Sig naturen. Es g i bt e i n ige solcher H a s h -F u n ktionen, a be r d i e derzeit wichtigsten sta m men aus der S H A-Fa m i l i e (Secu re Hash Algorith m). I n s besondere g elten heute S H A-256, S H A384 u n d S H A-5 1 2 noch a l s sicher u n d kom­ men i n vielen Kontexten zum E i nsatz. F ü r a l l e d rei bietet der ESP32 e i n e H a rdwa re-Be­ schleu n i g u n g . Das gilt a u c h fü r den Algorith­ mus S H A- 1 , der n icht mehr als sicher gilt u n d verm utlich n u r a u s Gründen der Kom patibi­ l ität a n g e boten wird .

Würfeleien Viele La ien ü berrascht zunächst, dass d e r Zu­ fa l l i n der Kryptog rafie eine g roße Rolle spielt. G ute Zufa l l sza h len bilden a ber d i e Basis fü r d i e Sicherheit vieler Verfa h ren. Auf determi­ n i stischen Masc h i n e n ist es sehr schwer bis u n mö g l ich, wirkl ich zufä l l i g e Za h l e n zu �r­ 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 . tatsächlich zufä l l i g erzeugt werden. Diese Quellen echten Zufa l l s sind das Rau­ schen i n den WLAN- und B l u etooth-Date n . Wie bei a l len F u n km e d i e n fa l le n h ier jede 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 d i e Geschwi n d i g keit, m i t der n e u e Zufa l l s-

c h a n i s m u s spendiert. Der ste l l t sicher, dass weder der Bootload er noch der Code der An­ wend u ng i m Flash manipul iert wurden. Die Sicherheit des System s basiert darauf, dass der eFuse-Speicher des ESP32 so konfi­ g u riert werden ka n n, dass ein Auslesen und

za hlen erzeugt werden, a l s auch die Q u a l ität der Zufa l lsza h len ist ersta u n l ich hoch. Listi ng Ra n d om N u m bers . i n o zeigt, wie d i e Zufa l l sza h l e n a u sgelesen werd e n kön­ nen. Die F u n ktion e s p_ r a n d o m O g i bt e i n e Zufa l lsza h l zwischen 0 u n d 4.294.967.295 z u ­

rück. S o l c h g roße Werte sind eher u n ha n d ­ . Beschreiben per Softwa re u n möglich wird . lich und d i e F u n ktion r a n d o m C l stutzt sie auf W e i l a u c h d a s R O M n icht verä ndert werden · ka n n, gelten alle Schl üssel, die i m eFuse ge­ einen vorgegebenen Wertebereich zu recht. speichert werden und der Boot-Code i m ROM Ü berg i bt man der F u n ktion nur einen Wert, als vertra u enswürd ig. so l iefert sie Zufa l l sza h l e n zwischen 0 u n d Der Mecha n i s m u s z u r Ü berprüfu ng der d e m ü bergebenen Wert m i n u s 1 . D a s hei ßt, Anwend u ng u n d des Bootloaders a rbeitet in r a n d o m c 1 0 l g i bt W e rte zwischen 0 u n d 9 zu­ zwei Sch ritten u n d das Boot-ROM prüft zu­ rück. Analog g i bt r a n d o m C 1 0 , 2 0 ) Zufa l ls­ erst d i e I n teg rität des Softwa re-Bootloaders. za hlen i m Bereich von 1 0 bis 1 9 zurück. Wen n WLAN u n d B l u etooth a bgescha ltet We n n d iese P rüfu n g erfo l g reich wa r, steht fest, dass der Softwa re-Bootloader nicht ma­ sind, ist es mit der zufä l l igen Pracht natü rlich n i p u l iert wurde u n d das Boot-ROM fü h rt i h n a u s . Jetzt prüft d e r Softwa re-Bootloader d i e I n teg rität d e r Anwe n d u n g u n d fü h rt s i e nach erfo l g reicher Prüfu n g ebenfa l l s aus. Der ga nze Prozess ist kom p l ex, aber n icht sonderlich ko m p l iziert. I n s besond ere m u ss man d a ra u f achten, wie die verwen d eten S c h l üssel erzeugt und gespeichert werden. Wer a uf Basis des ESP32 m ö g l i c h st sichere

sofort vorbei. l n d i esem Fa l l l i efert der ESP32 n u r noch Pseudozufa l l sza h len u n d d i e s o l l ­ t e n niemals Grund lage fü r ernsthafte krypta­ g rafische Anwe n d u ngen sei n . Sie s i n d a ber nicht völ l i g n utzlos u n d können zu m Beispiel in Spielen verwendet werden.

Noch sicherer

H a rdwa re prod uzieren w i l l , kommt um ein i ntensives Stu d i u m der Doku mentation nicht heru m . Secu re Boot fu n ktio n i e rt ü brigens o h n e versch l üsselten F l ash-Speicher u n d u mge­ keh rt, a ber es ist e m pfeh l e n swert. beides zu a ktivieren.

Fazit Der ESP32 i s t ein kom plexes, a ber attraktives Biest. Gemessen an dem, was dieser kleine Chip so bietet, wi rken der Ard u i n o Uno und auch der ESP8266 geradezu winzig. Die Firma Espressif hat die Limits des ESP8266 ganz klar identifiziert und i n fast a l len P u n kten ausge­ merzt. Ledigl ich bei der Qual ität der Software und bei der Doku mentation g i bt es noch ein paar Defizite. Nicht n u r die leistungssta rke CPU, die vie­ len Schn ittstel len und Sensoren, sondern auch die a usgefeilten Sicherheitsfu n ktionen machen den ESP32 zu einer perfekten Spiel­ wiese fü r Bastler und g leichzeitig zu einer ernstzu nehmenden Plattform fü r kommerziel­ le Prod u kte.

-dab

Die bisher vorgestel lten Verfa h ren z u r Versch l üsselung kom men a l l e auf Anwendu ngs­ ebene zum Tragen. Das ist fü r einige Szena­ rien a ber bereits zu spät, denn d i e Anwen­ dung l iegt ja i n der Regel unverschl üsselt im Flash-Speicher und ka n n ohne g roßen Auf­ wand inspiziert werden. Desha l b bietet der ESP32 Sicherheitsfu n k­ tionen an, die auf viel n ied rigerer Ebene g rei­ fen. Beispielsweise ka n n er die I n h a lte des an­ geschlossenen Flash-Speichers verschlüsseln. Die Verschl üssel u n g erfolgt via AES-256 und der Mecha nismus ist verg leichsweise ei nfach. Mittels eines speziellen Kommandos wird der

SPI-Schnittstellen

Flash-Speicher mit einem neuen I n halt ü ber­

12C-Schnittstellen

sch rieben und g leichzeitig verschl üsselt. Den Sch l ü ssel ka n n .der Anwender vorgeben oder vor dem Sch reibvorgang erzeugen lassen . . l n beiden F ä l l e n wird der Sch l ü ssel · i m i nternen eFu se-Speicher d e s ESP32 fü r a l l e Ewig keit gespeichert. Startet man d e n ESP32 und die gespeicherte Anwe n d u ng, so ent­

125-Schnittstel len

4

UART-SchnittStellen CAN 2.0-Schnittstel len '

·

sch l üsselt das Gerät tra nspa rent a l l e Daten mithi lfe des ei ngebran nten Schl üssels. An­ greifer, die versuchen, den Flash-Baustein aus­ zu lesen, sehen n u r Date n m ü l l u n d an den Sch l ü ssel i m eFuse-Speicher kom m e n sie nicht hera n . Wer i m Besitz des Sch l ü ssels ist, kan n nicht nur den I n halt des Flash-Speichers lesen, son­ dern ihn auch mit neuen I n h a lten ü berschrei­ ben. Dieses Verfa h ren ist nicht narrensicher, bietet aber a u s reichend Sicherheit, u m den Großteil potenzieller Ang reifer a bzuwehren. A l l das wa r den Entwicklern bei Espressif noch i m mer nicht sicher genug und so haben sie dem ESP32 noch einen Sec u re Boot-Me-

I m direkten Vergleich hat der ESP32 gegenüber dem ESP8266 und dem Arduino Uno die Nase vorn.

M a ke: ESP32 special 201 9 l

17

WLA N �-·------------

Flinker Funkwellenreiter Ein Kille r-Feature d e s ESP32 ist gewiss

. WLAN, d enn sowo hl bei m Preis als auch bei der Leistung hängt e r d iesbezü glich d i e Konkurrenz locke r ab. M i t Leichti gkeit wi rd e r zum Client o d e r S e rver im h e i m ischen Netz und ko m mt p roblemlos mit allen gäng igen Sicherheitsve rfa h ren zurecht. von Ma i k Schmidt

I

Alles ;zum Artikel im Web unter

... make-magazin.de/xmBv

1 8 1 Make: ESP32 specia l 201 9

---·

--

--

W

LAN (Wi reless Loca l Area Netwo rk) ist l ä ngst e i n e Sta nda rd-Tec h n o l o g i e u n d d i e meisten N utzer versc hwenden ka u m einen Geda n ken a n d i e Kom p l exität d e r Me­ chi m i s m e n , die e i n e sta b i l e u n d s i c h ere d ra h t l ose Verbi n d u n g ü berha u pt m ö g l i c h machen. Da n ken swerte rweise versteckt d e r E S P 3 2 d i e Deta i l s weitestg e h e n d h i nter einer ei nfachen Fassade. Trotzd e m h i lft es bei der Entwickl u n g von Proj e kten, zu m i n ­ 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­ stehen.

I rgendwer zu sehen? Bevor m a n sich m i t einem WLAN verbindet, ist es ratsam, zunächst nach a l l e n Netzwer­ ken in der Umgebung zu suchen. Eine erfolg­ reiche Suche ste l l t s i c h e r, dass d i e WLAN­ Hardwa re des ESP32 ordentlich fu n ktioniert u n d fü r e i n e n solchen Test benötigt m a n kei nerlei Zugan gsdaten. Sel bstverstä n d l ich m u ss dazu m i ndeste n s e i n WLAN i n Reich­ weite sein. D a n k der W i F i - B i b l iothek ist e i n Netzwerk-Scan recht ei nfach u n d Listi n g ScanWLAN.ino zeigt, wie es geht. Das Prog ra m m sucht nach a l l e n d ra ht­ losen Netzwerken, die es fi n d e n ka n n u n d g i bt s i e d a n n auf der serie l l e n S chn ittstel le a u s . Dazu b i n det es in der ersten Zei l e d i e WiFi-Bibl iothek e i n u n d i n itia l i s i e rt i n d e r s e t u p-Funktion die serielle Schn ittstelle. i n der l o o p - F u n ktion l iefert der Aufruf von w i F i . � c a n N e t w o r k s ( ) d i e Anza h l der gefu n­ denen Netzwe rke zurück. W u rd e kei n s ge­ fu nden, g i bt das Progra m m eine entspre­ chende M el d ung a u s u nd versucht es nach fü nf Sekunden noch e i n m a l . Andernfa l l s g i bt es die Anza h l u n d anschl ießend die wichtigs-. ten Eigenschaften der gefundenen Netzwer­ ke in tabe l l a rischer Form ü ber d i e seri e l l e Schn ittstel l e a u s . D e n Kopf der Ta belle erzeugen d rei Auf­ rufe der F u n ktion s e r i a l . p r i n t l n. Die Aus­ gabe der Netzw e rkeigenschaften ü bern i m mt eine f o r -Sch leife, d i e d rei Aufrufe der F u n k­ tion S e r i a l . p r i n t f enthält. Hie r m u ss m a n etwas g e n a u e r h i n sehen, d e n n p r i n t l n u n d p r i n t f s e h e n sich rec ht ä h n l ich, verha lten

sich a ber sehr u nterschied l ic h . Wä h rend p r i n t l n e i n e n ü bergebenen Wert u nverä ndert a u s g i bt, ka n n p r i n t f i h n vor d e r Ausgabe format.i eren. Beispiel sweise ka n n die F u n ktion dafü r sorgen, dass e i n Wert i m mer mit e i n e r m i n i malen o d e r einer maxi malen. Anza h l a n Zeichen a u sgegeben wird. Dazu muss m a n der F u n ktion als erstes Arg u ment einen Fo rmat-String ü bergeben. Der besch rei bt, wie d i e nachfo l g e n d e n Werte d a rgeste l l t werd en s o l l e n . Das wi rkt auf den . ersten B l i c k etwa s kryptisch, w i rd aber sch n e l l zu einem Helfer, den m a n n icht mehr m issen möchte.

S c a nWLAN . i no ' '

0

. I r:·

('/

c�

,, ....... -

,.... �.

� ,,!



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

\.__

18

r

19 20 21 22

r

�.

0, .� '·

\' "'

("' \' r ('\

0 · r

(�\

# i n c l ude vo i d s e t up ( ) { S e r i a l . be g i n ( 1 1 5 2 00 ) ;

vo i d loop ( ) { Seri a l . pr i nt l n ( "Suche läuft . " ) ; 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 ( ) ;

'

i f ( n == 0 ) { 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 . " ) ; e lse { Seri a l . print(n); S e r i a l . p r i n t l n ( " N e t z w e r ke i n S i c h t . " ) ; S e r i a l . p r i n t l n < " --------�------------------------+------+----_ _ _ .;.. _ _ _ _ _ _ _ " ) ; Seri a l . pr i nt ln(" SSID I RSSI I AUTH MO D E "); S e r i a l . p r i n t l n ( " - - - - - - - - � - - - - -� - - - - - - - - - � - - - - - - - - + - - - - - - + - - � - - -- - - - - - - - - - " ) ; f o r < u i n t 8_t i = 0 ; i < n ; i + + ) { Seri a l . p r i n t f ( " %32 . 32s I " W i F i . S S I D ( i ) . c- s t r ( ) ) ; Seri a l . pr i n t f ( "%4d W i F i . RSS I ( i ) ) ; Seri a l . printf( "%1 5s\n", a u t h M o d e T o T e x t ( W i F i . e n c r y p t i o n T y p e ( i ) ) . c_s t r ( ) ) ; }

I ",

,

23 24 Seri a l . println( " " ) ; 25 de l a y ( 5000 > ; 26 27 } 28 2 9 S t r i n g a u t h M o d e T o T e x t ( � i f i _a u t h_m o d e_t a u t h M o d e ) { 30 . swi t c h ( a uthMode ) { 31 c a s e W I F I _A U T H_O P E N : r e t u r n " O f f e n" ; 32 33 c a s e W I F I _A U T H_W E P : 34 return "WEP"; c a s e W I F I _A U T H_W P A _P S K : 35 36 r e t u r n " WPA PSK" ; . c a s e W I F I _A U T H_W P A 2_P S K : 37 r e t u r n " W P A 2 P S K "; 38 . c a s e W I F I _A U T H_W P A_W P A 2_P S K : 39 r e t u r n " W PA / WPA2 PSK" ; 40 41 c a s e W I F I _A U T H_W P A 2_E N T E R P R I S E : r et u r n " W P A 2 E N T E R P R I S E " ; 42 c a s e W I F I _A U T H_M A f : 43 r e t u r n "MAX " ; 44 45 defaul t : return " Unbekann t " ; 46 47 } 48

Die erste Anwei s u n g i n nerh a l b der f o r ­ Schleife g i bt d i e S S I D (Service Set ldentifier), a l so den N a m e n des Netzwerks a u s . Den l ie­

fert die F u n ktion w i F i . ss I D zurück und er­ wa rtet a l s Arg u ment d e n I ndex des Netzes, dessen N a m e gewünscht w i rd . Die p r i n t f ­ Anwei s u n g fo rmatiert d e n N a m e n rechts­ b ü n d i g mit exa kt 3 2 Zeichen. So lang d a rf e i n e S S I D n ä m l ich maxi m a l s e i n . Wei l w i F i . ss I o ein O bj e kt der Klasse S t r i n g z u r ü c k l i efert, w i rd die F u n kt i o n c _ s t r a ufg erufe n . Die ermög l icht d e n Zu­ g riff a u f d i e inte rne Repräsentation der Zei­ c h a r * , w i e e r von c h e n kette als c o n s t p r i n t f erwa rtet wird. Die n ä c h ste Anwei s u n g g i bt m i t h i lfe von Wi F i . R S S I die RSSI (Received Signal Strength

l n d ication), a l so d i e S i g n a l stä rke des Netzes, a u s . Der RSSI-Wert ist eigentlich relativ u n d h a t kei ne E i n h eit. We n n m a n a ber d i e Ei­ genschaften des z u g r u n d e l iegenden Gerä­ tes ke n n t, ka n n man die RSSI i n der Ein heit dBm (Dezi bel M i l l iwatt) a u sdrücken. Genau das tut d i e F u n ktion w i F i . R ss I u n d es g i lt: Je g rößer der Rückga bewert, u m so stärker ist das S i g n a l . Bei negativen Za h len ist das S i g n a l d a h e r u m s o stä rker, je n ä h e r es an der 0 l iegt. Z u l etzt erm itte lt das Prog ra m m m itte l s W i F i . e n c r y p t i o n T y p e e i n e weitere wichti­ g e E i g e n s c h aft eines jeden WLAN-Netzes, n ä m l ich die verwendete Authentifizierungs­ methode. Vor der A u s g a be wandelt d i e H i l fstu n ktion a u t h M o d e T o T e x t den n u m me-

Make: ESP32 special 201 9 1

19

W LAN I�------------------------------1$1 COM6

II

Suche l äuft .

5

X

0

lietzwerl:e in Sicht. •

-----------·-·---·----..,.- - - - - - - -- - - - -

SSID

Senden

+- - - - -+-------------I

RSS I

l

AU!H !!ODE

-----·-·---------------------------+-----+-------------!ITR Gast I

-7 2

I

NTR

I

-7 4

I

liPA2 PSK

1 3 37net

I

-77

I

liPA2 PSK

liPA2 PSK

1 3 3 7net

I

-83

1.

liPA2 PSK

lie l come

I

-83

I

liPA2 PSK

terscheiden zu kön nen, g i bt es noch die BSS I D (Base Service Set I D), e i n e 48-Bit-Za hl, die den­ selben Konventionen gehorcht wie· MAC­

INeue Zeile

0 A!JtDscroll D Zeitst=pel anzegen

wird a l l e fü nf Seku nden a ktu a l isiert und ent­ hält a l l e Netzwerke, die auch der heimische PC oder das Smartphone anzeigen. Zu jeder SSID enthält die Ta bel l e die a ktu­ elle Signaistä rke und die verwendete Authen­ tifizierungsmethode. Dabei ka n n es passieren, dass manche SSIDs meh rfach erscheinen, wei l s i e zum Beispiel v o n mehre ren Routern bezie­ h u n g sweise Repeatern verwendet werden. U m die Netzwerke eindeutig voneinander u n­

Ad ressen (Media Access Control). Diese I nfor­

Das erste Programm stellt die drahtlosen Netzwerke in der Umgebung übersichtlich im seriellen

mation ka n n .bei Bed a rf ebenfa l l s über die WiFi-Bibl iothek ermittelt werden.

Monitor dar.

Ich b i n d ri n !

rischen E n u m e rationstypen i n einen lesba­ ren Text um.

sucht u n d n icht versucht, sich m it einem zu verbinden, sol lte er i n jeder Umgebung, in der m i ndestens ein d ra htloses Netzwerk i n Reich­

Es geht los Jetzt ist es an der Zeit, das Progra m m endlich

weite ist, fu n ktionieren. Schon ku rz nachdem man den seriellen Monitor i n der Ard u i no-IDE geöffnet hat, er­

Nach d iesem ersten Test, der sicherstel lt, dass die WLAN- F u n ktionen prinzipiell richtig a rbeiten, wi rd es Zeit fü r ein u mfa ng rei­ c h e res Beisp i e l . Listi n g M i n iWebServer.ino macht den ESP32 zu einem kleinen Web-Ser­

auf das ESP32-Boa rd zu laden und auszupro­ bieren. Wei l der Code n u r nach Netzwerken

scheint eine Ta belle mit den Eigenschaften a l ler gefu ndenen Netzwerke. Diese Ta bel le

ver, der a uf Anfragen eines Web-Browsers 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 geben I nformationen ü ber die seriel l e Sch nittstel l e aus. Manch­

m a l sind es Meldungen ü ber den a ktuellen Sta nd des Program m s und oft sin d es Messdaten, die i n ei nem festen Format ercscheinen sollen. ' Die Formatierung von Daten ist mit der herkö m m l ichen zei­ chenketten-F u n ktion oft etwas friemelig. Daher bietet d ie s e r i a L -Kiasse die p r i n t f - F u n ktion (print formatted) a n , die es i n d ieser oder ä h n licher Form schon seit m e h r a l s 5 0 Jahren g i bt. p r ; n t f gibt eine Liste von Werten aus u n d erwartet neben den Werten einen Formatstring, der deren Formatierung beschreibt. Der Format-String enthält einen Platzhalter für jeden Wert, der

Jeder Platzha lter beginnt mit einem Prozentzeichen u n d muss den Typen des Parameters enthalten. Ein s steht beispielsweise für einen String urid ein'd fü r eine vorzeichen behaftete Ga nzzah L Zusätzlich zum Typen kön n e n noch e i n e Mindestlänge, eine Maxim a l l äng\'!, die Anza h l der Nachkom mastellen u n d Optionen zu m Au ffj.i l l.e n leerer Ausgabefelder angegeben werden. Damit lassen si

< E S Pm DN S . h>

const ch�r* S S I D = " S S I D e i n t ragen"; c o n s t c h ci r * P A S S W O R D = " P a s s w o � t e i n t r a g e n " ; WebServer serve r ( 8 0 l ; vo i d s e t up ( ) { S e r i a l . be g i n ( 1 1 5 2 00 l ; W i F i . m o d e ( W I F I _S T A l ; Wi F i . begi n ( SS I D ; PASSWORD l ; w h i l e ( W i F i . s t a t u s ( ) ! = W L_C O N N E C T E D ) d e l a y ( 5 00 l ; Seri a l . pr i nt < " . " l ; } Seri a l . pr i nt ln ( " " l ; S e r i a l .pr l n t f ( "V� rbunden m i t %s . \n", S S I D l ; S e r i a l . p r i n t f ( " I P- A d r e s s e : % s . \ n " , W i F i . l o c a l i P ( ) . t o S t r i � g ( ) . c_s t r ( ) ) ; i f ( M D N S . b e g i n ( " e� p3 2 " } ) { S e r i a l . p r i nt l n < " MDNS-Respond e r g e s t a r t e t . " ) ; s e r ve r . �n ( " / " , h a n d l e R o6 t ) ; s e r ve r . on ( " /ma ke " , [ ] ( ) { s e r �e r . send ( 200, " t ex t / p l a i n " , "Was so l l i c h m a c h e n ? " ) ; }); s e r ve r . onNot Found ( ha nd l eNot Found l ; serve r . beg i n ( ) ; S e r i a l . pr i n t l n ( " HTTP-Server gestartet . " ) ;

voi d loop ( ) { s e r ve r . h a nd l eC l i en t ( ) ;

v o i d h a n d l e R o o t1 ) { s e rve r . se�d ( 200, " t ext / p l a i n " , " H i e r i s t d e r ESP32 ! " l ;

vo i d h a nd l eNot Found ( ) { S t r i n g m e s s a g e = " P f a d. · , me•s a g e += s e r ve r . u r i < l ; message += " wurde n i c h t gefunden . \n " ; s e r v e r . s e n d < 4 0 4 , " t e x t /p l a i n " , m e s s a g e l ; }

ke n nt. S c h ö n e r Wä re es, wen n m a n d e m E S P 3 2 e i n e n e i g e n e n N a m e n i m N etz geben kön nte, u nter dem a n d e re Geräte ihn errei­ c h e n kön n e n . Für d iesen Zweck g i bt es das m D N S-P roto ko l l ( M u lticast D o m a i n N a m e System}, m i t d e m s i c h i n k l e i n e n N etzwer­ ken N a m e n o h n e e i n e n l o ka l e n N a m e-Ser­ ver a ufl ösen l a ssen . G e n a u d a s erledigt d i e M D N s -Kiasse u n d deren b e g i n - F u n ktion m a c h t d e n E S P 3 2 i m N etz i n diesem Beispiel u nter d e m N a m e n " esp32 " b e ka n nt. Sel bstverstä n d l ic h ka n n m a n d e m G e rä t e i n e n a n d e ren N a m e n

·

g e b e n u n d wer m e h rere G e räte betrei bt, sol lte sich e i n vern ü nftiges N a m ensschema ü berlegen, u m nicht i rgendwa n n d i e Ü ber­ sicht zu verlieren.

Wo ist das Web? Ab d iesem Zeitpu n kt i s t d e r ESP32 m i t dem WLAN verb u n d e n und u nter dem Namen " esp32 " erre i c h ba r. Al l e rd i n g s tut er noch

n icht das, was m a n von e i n e m Web-Server erwa rtet, das hei ßt, er bea ntwortet kei n e

M a ke: ESP32 special 20 1 9 1

21

W LAN �I------------------------------@.

@.

(@...

i � u

'---:-g-:-=·.

_ . _ ·

--'

- - - - - ---

;

ccess

"'/

/_

__

/

/ /

Point--------,

Station

Station

Station

�·�

i

II

HTIP-Anfragen. Dieses Ma n ko lässt sich a ber mit wenige_n Handg riffen beheben. Gleich zu Anfa n g des Progra m m s w u rd e 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 N a m e n s e r v e r defi n ie rt. D ieses Objekt ü bern i m mt d i e gesamte Ko m m u n i kation m i t dem Web-Browser und muss entspre­ chend konfi g u riert werd e n . Die WebServer-Kiasse fo lgt e i n e m recht modernen Entw u rf u n d u n terstützt d i e Re­ g i strieru n g von Event- H a n d l e r n . Das s i n d F u n ktionen, d i e i m Fa l l e besti m mter Ereig­ n i sse a ufgerufen werd e n und s i e kö n n e n

c::::::J

Access

R o o t a ufgerufe n .

D i e s e F u n ktion besteht n u r a u s e i n e r e i n ­ zigen A n we i s u n g , n ä m l ic h d e m A ufruf d e r F u n ktion s e n d , d i e d rei Para m eter erwa rtet. Der e rste P a r a m eter ist d e r HTIP-Status­ Code, d e r a n d e n Web-Browser g e s e n d et wird. D i e 200 steht fü r O K, d a s h e i ßt, d i e Vera rbeitu n g d e r A n fra g e v e r l i ef erfo l g ­ rei c h . Der zweite P a ra m eter e n t h ä l t d e n Content-Type u n d besc h rei bt, w e l c h e s For­ mat d i e A n twort hat. l n d i esem Fa l l i st es t e x t I p l a i n , a l so enthält d i e Antwort g a nz

ord i n ä ren Text. Der d ritte P a ra m eter enthält d e n I n halt der Antwort. F ü r Eve nt- H a n d l e r, d i e so k u rz s i n d wie h a n d l e R o o t , lohnt es sich ka u m , eine eige­ ne F u n ktion zu d efi n ieren. Das g i lt ebenso fü r d e n zweiten Event- H a n d l e r, der sich um

'

D

. II

X Senden

Verbunden mit 1 3 3 7net . IP-Adre s s e :

1 92 . 1 6 8 . 1 7 8 . 7 5 .

MDNS-Responder gestarte t . HTTP-Server qe starte t .

Der ESP32 hat Kontakt mit dem heimischen WLAN-Router.

J CD

X

H i e r i s t der E S P 3 2 !

Der kleine Web-Server antwortet auf eine Anfrage.

22 1 Make: ESP32 special 20 1 9

�-

http ://esp32

--- -



-

-

-

lfrr.

-- - -- - - - - -- -- -

l

Der ESP32 arbeitet als WLAN-Access-Point.

-

.

·-- -- -

Station

G coM6 I

Point

u n d i n ei n e m B rowser d i e URL http://esp32/ 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 ­

u nter a n d erem m i t d e r F u n kt i o n o n a n d a s WebServer-Objekt a n ge h ä ngt werd e n . Die Anwei s u n g s e r v e r . o n ( "/'' , h a n d ­ 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 : Wen n e i n Web-Browser n a c h d e m Pfa d / " " fra gt, d a n n rufe d i e F u n ktion h a n d l e R o o t a uf. Das h e i ßt, we n n d a s Prog ra m m l ä uft

..

:: 1 �� 1·

GI

Station

Der ESP32 funktioniert prima als Station i n einem WLAN.

-

-

··· EJ tr l

D

::k

»

.

I

"

d e n Pfa d / m a ke kü m me rt. Der w i rd d a h e r m i t e i n e r a n onymen F u n ktion defi n iert. 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 neue Erweiter u n g der Progra m m i ersprache C++ u n d sie s i n d g e ra d e i n solchen Situatio­ n e n sehr pra kt i s c h . Die Ko n stru kt i o n [ J < l d efi n iert e i n e n a m e n l ose F u n ktion o h n e Pa­ ra m eter und die Defi n ition der F u n ktion er­ fol g t g leich a n s c h l ießend u n d wie gewo h nt i n geschweiften K l a m m e r n . Das s i e h t a u f den ersten B l i c k w ü s t a u s, d i e n t a ber letzten Endes der Lesba rkeit und befreit Entwickler von der lästigen Aufga be, sich stä n d i g neue Namen fü r d i e Event- H a n d l e r a u szuden ke n . Die bisherigen Event- H a n d l e r h a ben sich um die B e h a n d l u n g fest defi n ie rter Pfa d e 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 C l i ent e i n e n Pfa d a n fragt, fü r d e n kei n Event- H a n d l e r festgelegt w u rde? l n d i esem 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 ­ 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 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 . Z u m S c h l u ss ruft d i e s e t u p - Fu n kt i o n s e r v e r . b e g i n a uf u n d der Web-Server war­ 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 . 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 m a n z u e rst e i n m a l prüfen, o b d i e WLAN­ Verb i n d u n g eta b l i e rt werd e n konnte. Wen n 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 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 d i e Ad resse http://e s p 3 2/m a ke (Achtu n g :

Am E n d e d e r Ad resse ste ht ke i n S c h rä g ­ stri c h ! ) s o l lte e i n s i n nv o l les E rg e b n i s l i efe rn 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 n otwe n d i g s e i n , d i e Ad resse htt p://e s p 3 2 .

� ®

\ n " ; message += " \ n " ; m e s s� g e + = " < h e a d > \ n " ; message += " < t i t l e> E S P 3 2 T h e rmo�e t e r Hyg rome t e r< l t i t l e> \ n " ; mes s a g e + = " < l h ead>\ n " ; m e s s a g e + = " < bo d y > \ n " ; message +� " < h 1 >Tempe r a t u r : , m e s s a g e += S t r i ng C s e n so r . readTempera t u re ( ) , 2 l ; message + = " T 5 1 ; \ n " ; < h 1> L u f t f e u c h t i g k e i t : " ; message += " 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 ; m e s s a g e + = " % < 1 h 1 > \ n� ; m e s s a g e + = " \ n " ; message += "\n" ; 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 ; });

30 31 · 32 33 34 35 36 37 38 39 40 41 42 s e r ve r . beg i n O ; 43 44 45 46 vo i d loopO { }

n u r Daten gelesen werden u n d d a h e r kommt H T T P _G E T zum Einsatz. Ferner e rwa rtet die o n - F u n ktion ebenfa l l s e i n e a nonyme F u n ktion, d i e d i e eigentliche

a l so den HTTP-Status-Code, den Content­ Type und den I n h a l t der Nach richt. Der I n halt der Nach richt ist diesmal zwa r 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 Event-Handler zustä ndig ist. l n d iesem Fa l l ist das der Pfad " /" .

. me F u n ktion in d iesem F a l l nicht para m eter­ l os, sondern e rwa rtet e i n e n Zeiger a u f e i n Objekt der Klasse A s y n c W e b S e r v e r R e q u e s t .

wi rd d a h e r Zei l e fü r Zei l e m i t h i lfe der Zei­ chen kette me s s a g e a ufgebaut. Sonderlich kom p l iziert ist der I n halt der Seite nicht und

Das ist notwendig, weil die Klasse A s y n c W e b ­ S e r v e r meh rere Anfragen g l eichzeitig vera r­ beiten ka n n u n d somit potenzi e l l m e h r a l s e i n O bjekt der Klasse A s y n c W e b S e r v e r R e ­

der wesentliche Kunstgriff besteht darin, die Sensor-Daten dyn a m i sch i n den Quelltext der Seite einzuba uen. So sieht der anfragen­ de Cl ient i m m e r d e n a kt u e l l e n Sta nd der Di nge. Wei l d i e f.ntwort a n den Cl ient eine HTM L-Seite ist, m u ss d e r Content-Type auf text/html gesetzt werden. Andernfa l l s würde

Der zweite Parameter ist neu und steht fü r den . Typen d e r HTTP-Anfrage, d i e von d ie­ sem Event- H a n d l e r bea rbeitet werden sol l . HTTP defi n i e rt e i n e Reihe v o n Anfrage­ Typen, die a l l e auf densel ben Pfad angewen­ det werd en kö n nen, aber eine a n dere Be­ deutung haben. Für reg u l ä re Anfragen, d i e keinerlei Daten verä n dern, verwendet m a n d e n Typen G ET. Z u m Lösc hen v o n Daten dient DELETE und Änderungen erfo l g e n ü ber PUT oder POST. l n d iesem F a l l s o l l e n

q u e s t i m Speicher existiert. Der Poi nter zeigt d a n n a uf das jewe i l s richtige. Wie bei der W e b Se r v e r - Kiasse w i rd das Er­ gebnis der Anfrage mit der s e n d-Fu nktion a n

d e n C l ient gesendet. Dies m a l g e h ö rt d i e 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 ­ q u e s t , e rwa rtet a ber dieselben Parameter,

der Cl ient led i g l ich den Q u e l l text der Seite a nzeigen. s e r v e r . b e g i n sta rtet d e n WebServer und ü bern i m mt die Beha n d l u ng der Anfra-

M a ke: ESP32 special 201 9 l

25

WLAN

�--

0 ®

..

·

. . .

·

.

.

. . .. . . .. . .

Dateien lassen sich einfach per Plug-in auf den ESP32 laden.

Make: ESP32 special 201 9 l

I 27

WLAN

c

WebH D C 1 008 / P ro i ndex . h tm l

2 () 3

4 < t i t l e> E S P 3 2 T h e rmome t e r Hygrome t e r n 5

6

n 7 < c a n v a s i d= 1 t h e rmome t e r 1 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 10 d a t a - t ype= 1 L i n e a r-gaug e 1 (\ 1 1 data-t i t le= 1 Tempera tur 1 12 data-un i t 5= 1 ͍ 1 ; 1 ("...� 13 d a t a -va l ue= 1 % T E M P E R A T U R E % 1 > 14

(' ' 15

22 < / c a nvas> n 23 < s c r i p t s r c = 1 g a u g e·. m i n . j s 1 >

n ' 24 25

2 6 '< / h t m l > ('

Temperatur

..

"' "

Fa l l ist es die F u n kt i o n r e p l a c e V a r i a b l e . F ü r jeden P l atzha lter e rfo l g t e i n Aufruf von

Einsatz daheim odedn kleinen NetzWer­ ken gedacht. ln diesem Szenario teilen sich a lle Nettteilnehmer einen gemeinsa­ men Sch lüssel mit einer Länge von 256

im Wesentl ichen d rei Verfa h ren zur Absi­ cheru ng: WEP (Wired Equ iva lent Privacy);

g

281 Make: ESP32 special 201 9

·

Es ist oft d i e Rede davon, wie l e i stu n g ssta rk die H a rdwa re des ESP32 i st, aber erst wenn m a n d i e WLAN-Fä h i g keiten des Geräts a u s­ p r o b i e rt, beko m m � m a n e i n g utes Gefü h l dafü r, wa s wirklich i n d e m Winzl i n g steckt.

Teilnehmer i m WLAN somit einen eigenen Sch lüssel hat, ist das Abhören u nter­ einander nicht möglich, auch wenn a l le den g leich.en PSK verwenden.

lange g i lt WEP als u nsicher und sol lte nicht mehr verwendet werden. Viel bes­ ser sieht die Lage bei WPA auch n iCht aus und sel bst WPA2 ist n icht unangreifba r. •Noch scheint zumi ndest WPA2 ausrei­ ' chend sicher zu sein u n d es ist das beste Verfa h ren, das der Sta ndard derzeit bie­ tet., Wie bei fast a l len Verfa h ren zur Zu- · gan skontrolle entscheidet nicht zuleti:t

Fazit

Bit. Jeder Tei l nehmer leitet zur Absiehe� ­ rung der eigenen Komm u n i kation yon diesem Schlüssel einen Scll l ü ssel 'mit einer Länge von 1 28 Bit ab. Weil jeder

WPA (Wi-Fi Proteeted Access) und WPA2 (Wi-Fi Proteeted Access Version 2). Schon

, Für das Enterpri se-Verfah ren benötigt

man 'Zusätz!ich einEm ·separaten Aut henti� 'fi zierungsserver, den in der·Regel n ur g rö· ß�re Ü nternehmen betreiben. ·

,

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ä­ sentiert, geschrieben. Dabei w i rd d i e Datei i m F l a s h-Speicher nicht verä n d e rt. Für einen fi n a l e n Test w i rd das Prog ra m m ü be rsetzt u n d a u f den E S P 3 2 geladen. Fer­ 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, sonst d rohen lange Debug-Sitzu ngen. Die h ier verwen d eten Tec h n i ken zeigen ü b r i g e n s n u r einen k l e i n e n Aussc h n itt der M ög l i c h keiten, die die AsyncWebServer­ B i b l iothek b i etet. S i e ka n n noch seh r viel m e h r, u n d e i n gena ues Stud i u m der Doku­ m e ntation l i efert gewiss Ideen fü r neue Pro­ j e kte.

WPA und WPA2 g i bt es jeweils i n zwei Auspräg u ngen. Die erste heißt Personai oder PSK (Pre-Sha red Key) u n d ist für den

Seit der ersten WLAN-Spezifikation gab es

"'

"

Smartphone aus.

die Qualität der verwendeten Passwörter über die Sicherheit des Gesamtsystems.

Daten, die ü ber die Luftschnittstelle wa n­ dern, verschlüsselt werden.

.

"'

40

So sieht die fertige Webseite auf dem

WL·A N·SI C H E RH E I T Die meisten Netze d ü rften vor u nbefug­ tem Zugang gesch ützt sein und fü r die­ sen Schutz g i bt es unterschiedl iche Pro­ tokol le. Die sichern n icht n u r den Zugang, sondern sorgen auch dafü r, dass a lle

.

40

perfekt zu %TEMPERATU RE% und % H U M I DI­ TY% in der Datei index.htm l . Für die Ersetzung ruft A s y n c W e b S e r v e r R e ­ q u e s t fü r jeden Platzhalter eine F u n ktion auf, die man zuvor reg istrieren m uss. l n d iesem

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­ zung von P l atzha ltern, die d u rch zwei P ro­ zentzeichen eingera h mt werden. Das passt

..

"'

n

wei l sie noch Platzhalter fü r die Sensor-Werte enthält. Praktischerweise u nterstützt d i e



"' U '"

':

M ü h e l o s ve r b i n d et e r s i c h mit a l l e m , was sich so a n WLANs fi n d et und h a t d a r ü ber hinaus g e n u g Reserven, u m noch s i n nvol l e D i n g e zu t u n . H i nzu kom m t, d a s s d i e entsprechenden B i b l iotheke n es l e i c h t m a c h e n , a n spruchs­ vo l l e Anwend u n g e n i n n e rh a l b kü rzester Zeit zu e rste l l e n . D r a h t l o s e I oT-P rojekte waren noch nie so ei nfach u n d g ü n stig zu haben. --dab

(. (

( (

c

(

c c (

c

( (

(

(

(

c

( ( ( ( (

( (

( (

( (

(

(

WebH D C 1 008Pro . i no 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

#i nc lude #i nc lude # i nc l ude # i nc l ude

< A d a f r u i t _H D C 1 0 0 0 . h >

const char* S S I D = " M e i n E S P32 " ; const c h a r* PASSWORD = " t e s t pa s s wo r t " ; AsyncWebServer s e r ve r ( 80 l ; 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 ; vo i d s e t u p ( ) { S e r i a l . be g i n ( 1 1 5 2 00 l ; i f ( ! SPI FFS .begi n ( t rue ) ) { 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 . " ) ; return;

if

( ! s e n s o r . be g i n ( Ox43 l l 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 . " ) ; return;

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 ! Wi F i . softAP ( S S I D 1 PASSWOR D l ; S e r i a l . p r i n t ( " I P-A d r e s s e : " l ; S e r i a l . pr i nt l n ( W i F i . softAPI P( l l ; 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 _ { 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 ; }); 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 { 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 rve r . begi n < l ; vo i d l o o p ( l 0 S t r i ng rep l a ceVa r i a b l e ( const S t r i ng& va r l { i f ( va r == " H U M I D I T Y " l 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 ; 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 ;

·

Smarte· Gadgets

Bestellen S1e ganz emfach onhne unter shop.heise.de oder per E·Ma11 [email protected]

@ heise shop MijjM@i!!ffi!iightj Make: ESP32 speciai 20 1 9 1

29

I

BLU ETOOTH I---

---

-

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

Alles zum Artikel

I im Web unter • make-magazin.de/xa4r

30 I Make: ESP32 special 20 1 9

G

enau wie WLAN h i lft B l u etooth bei d e r d rahtlosen Kom m u n i kation zwischen Ge­

S e r i a L B L ue t oot h . i no

räten. Wäh rend WLAN i n erster Linie als Ü ber­

tra g u n g stech n i k fü r beliebige D i e n ste u n d P rotoko l l e d i e nt, w u rde B l u etooth fü r e i n e Vielza h l ko n kreter Anwend u ngen konzi piert. Vorneh m l ich geht es bei Bl uetooth darum, Ka­ belverbi n d u n g e n zwi schen Geräten d u rc h F u n kverbi n d u n g e n zu e rsetze n . Das betrifft u nter a" nderem Tastaturen, Mäu se, Kopfh örer, La utsprec her oder S ma rtp hones. Der ESP32 u nterstützt den B l u etooth-Sta n dard i n d e r Version 4.2, was nicht zuletzt bedeutet, dass er prinzipiell mit a l l e n zuvor genan nten Gerä­

"

" " !1

" ·'""

('

1 2 3 4 5 6 7 8 9 10 11 12

# i n c l ude " B l uetoothSe r i a l . h " B l u e t oo t h S e r i a l b l u e t oot h ; vo i d s e t u p ( ) { b l ue t oo t h . be g i n i " E SP32" l ;

vo i d L oop ( ) { b l u e t o o th . p r i n t l n i " H i e r b i n i c h ! " ) ; d e l a y 1 1 00D l ;

te-Typen ko m tn u n izieren ka n n . D e r aktu e l l e B l u etooth-Sta n dard zerfä l l t

d e n . Dabei ist es v ö l l i g ega l , u m we l c h e Ge­

g rob i n zwei Tei le, die s i c h stark voneinander

räte es sich ha n d e lt, sola n g e sie e i n e B l u e­

u nterscheiden. Auf der einen Seite g i bt es das

toot h - E i n h e i t ha ben u n d a u f d i e seriel l e

klassische Bluetooth, das zur Ko p p l u n g zweier

S c h n ittste l l e zug reifen kö n n e n .

Geräte d i ent, d i e lan gfristig u n d ü be r ku rze

Listi ng Seria i B i u etooth .ino verwandelt d e n

Dista nzen m iteina n d e r ko m m u n iziere n . Ge­

ESP32 i n e i n B l u etooth-Gerät, d a s Nach ri c h­

brä u c h l i c h e Anwe n d u n g e n s i n d d i e F re i­

ten ü be r e i n e d ra h t l ose seriel l e S c h n ittste l l e

spreche i n richtung im Auto oder d i e d rahtlose

vertei lt. Dazu b i n det das P rog ra m m zunächst

Ü bertra g u n g von M u s i k vom Smart p h o n e

d i e B l u etoothSeria i - B i b l iothek e i n u n d d efi­

zum Ko pfh örer. Bei d i esen Anwe n d u n g e n

n i e rt e i n g l o ba l e s O bj e kt d e r Klasse B l u e ­

sind S e n d e r u n d E m pfänger permanent a ktiv

t o o t h S e r i a l m i t d e m Na m e n b l u e t o o t h .

u n d benötigen e i n e Menge Energie, um d i e

Dieses O bj e kt i n itia l isiert d i e s e t u p-F u n ktion m itte l s d e r F u n ktion b e g i n u n d ü berg i bt i h r

Kom m u n i kation aufrechtzuhalten. Da r ü b e r h i na u s g i bt es aber auch B l ue­

da bei d i e Z e i c h e n kette E S P 3 2 . Das i s t d e r

tooth Low Energy ( B LE), das s pezi e l l die Be­

Na me, u nter d e m d e r ESP32 erschei nt, we n n

Der ESP32 erscheint als ei n ganz normales

d ü rfn isse

m a n nac h B l u etooth-Geräten i n d e r U m ge­

Bluetooth-Gerät.

von

I oT-G e räten

( I nternet

of

Th i n g s) adressiert. B L E e i g n et sich z u m Bei­

bung sucht.

spiel hervorragend fü r m o b i l e Sensoren, d i e

Die L o o p - F u n kt i o n g i bt a n s c h l i e ß e n d i m

i h re Daten a n a l l e E m pfä n g e r i n d e r näheren

Seku n d e nta kt e i n e n Text a u f d e r seri e l l e n

U m g e b u n g senden. Ebenso ermög l i c h t BLE

B l uetooth-Sc h n ittste l l e aus. Das i s t genauso

O rt u n g und Nav i gation i n n e r ha l b v o n Ge­

e i n fach, wie d i e Au sgabe ü be r die herkö m m ­

bä uden.

l i c h e seri e l l e S c h n ittstel l e, d e r Text w i rd a b e r

B l u etooth-Geräte m ü ssen

n icht beide

per F u n k ü bertragen.

Te i l e des Sta n dards i m p l e m e n t i e r e n . Das hei ßt, es g i bt Geräte, d i e n u r d i e klassische

Gegenüber·

Va riant� oder nur B L E a n biete n . V i e l e Geräte i m p l e mentieren aber beides u n d der ESP32

Jetzt feh l t noch e i n E m pfä n g e r u n d dazu eig­

gehört dazu . Für beide Formen d e r Ko m m u ­

n et sich jedes Gerät, das e i n e seri e l l e S c h n itt­

n i kation g i bt es e i n e V i e l za h l u nters c h i ed­

ste l l e v ia B l u etooth eta b l ieren kan n u n d ü ber

l icher E i n satzmög l i c h keiten.

e i n seriel les Term i na l ve rfü gt. P r i n z i p i e l l geht das a l s o z u m Beispiel mit fast a l l e n PCs und

Kabellos a uf Draht E i n e d e r einfach sten u n d s i n nv o l l sten Anwen­

S ma rt p h o n es. Es g i bt tatsä c h l i c h recht g ute seri e l l e Ter­ m i na l s fü r Smartphones u n d s i e lassen sich

d u n gen des klassischen B l u etooth i st der Auf­

i n der Regel e i n fach bed i e n e n . Die A n d roid­

bau einer d rahtlosen .seriellen Verbi n d u n g . U r­

A p p Serial B l u etooth Te rm i na l (https://play.

sprünglich wu rde B l u etooth sogar entwickelt,

g o o g l e . c o m /sto re/a p ps/deta i l s ? i d =d e . ka i _

um e i n e RS23 2-Sc h n ittste l l e o h n e Ka bel zu

m o r i c h .se rial_b l u etoot h_te r m i na l )

rea l isieren. P rog ra m mtec h n isch fu n kt i o n i e rt

beispielsweise o h n e g roßen S c h n i c kschnack

ko m m t

d iese Schn ittste l l e sowo h l a u s Sicht des

da h e r und ze i g t die M e l d u n g e n d e s ESP32

Cl ients als auch a u s der Sicht des Servers wie

a n , soba l d man das G e rät gekoppelt hat.

eine d rahtgebundene, aber sie kommt o h n e

Wichtig ist nat ü r l i c h , zuvor d i e B l u etooth­

eine phys i ka l ische Verb i n d u n g aus. Erfre u l icherweise ist d i e seri e l l e Ko m m u ­

F u n kt i o n des Smart p h o n e s a u c h zu a kti­ vieren.

n i kation Bestandteil d e r B l u etooth-S pezifi ka­

Selbstve rstä n d l ich fu n ktioni ert d i e seri e l l e

tion u n d so g i bt es B i b l i ot h e ke n , wie z u m

Kom m u n i kation auch auf d e m PC oder d e m

Beispiel B l u etooth Serial, d i e es k i n d e r l e i c h t

M a c . M o d e r n e Betriebssyste m e erste l l e n

Smartphone-Terminals sind unverzichtbare

machen, zwei Geräte m iteina n d e r zu v e r b i n -

nä m l i c h b e i m Ko ppe l n mit e i n e m B l u etooth-

Helfer bei der Bluetooth-Entwicklung.

Ma ke: ESP32 special 20 1 9 1

31

B LU ETOOTH �

1�-------· G coMs

Oevi ce M an ager

File

Action

>

_

>

-

>

_

At

>



View

Help

111

Disk drives Display adapters

Hi e r bin i ch !

DVD/CD-ROM drives Human Interface Devices

> .. IDE ATA/ATAPI controllers >

(8

Hie r bin i ch !

lmagi n g devices

Hie r bin i ch !

Mice and other pointing devices

Hie r bin i ch !

Network a d apters

Hie r bin i ch !

> Ei3 Keyboards >

> r;J Monitors

� p

> >

iji

v

Hi e r bin i ch !

Other devices Portable Devices

Jii iii ij

Ports (COM

jp

& LPD

Hi e r bin i ch !

Communications P ort (C O M l ) Silicon Labs CP21 0x USB to

Hie r bin i ch !

UARl Brid ge (COM6)

Hi e r bin i ch !

Standard Serial over Bluetooth link (COMS)

Stan d ard Serial over Blu etooth link (COM7)

> r;::;:J Print queues >

D

>

>

J (I �

>

f

Ausgaben funktionieren in PuTTY problemlos.

Processors

> S Sensors

·

> >

_

Software devices

a u c h Nac h richten a n den E S P 3 2 s e n d e n . 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

Soun d, video and g ame controllers Storage controllers 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­

0 Autoscroll D Zeitstempel anzeigen

Universal Serial Bus controllers

Windows erzeugt gleich zwei GOM-Ports für den

Bluetooth-Nachrichten kann man auch im

ESP32.

seriellen Monitor der Arduino-IDE lesen.

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 . U m zu sehen, wie d a s fu n kt i o n i ert, m u ss 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

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

ü 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

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

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­

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

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

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

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

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

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­

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 ­

richten zu senden. Am e i nfachsten geht das

Button g eöffnet hat, g i bt PuTIY m u nter d i e

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 ­

Dort wä h l t m a n i m M e n ü Werkze uge

>

Port

gen werd e n .

fü r

die

d ra h tg e b u n d e n e

PuTIY und ste l l t den COM-Port der B l ue­ tooth-Sc h n ittste l l e ein. Alle Nac h ric hten, d i e ma n da n n i m E i n ga befe n ster von PuTIY e i n ­ g i bt, ersc h e i n e n sofo rt i m seri e l l e n Mon itor d e r Ard u i n o - I D E . Mit der Kom m u n i kation i n b e i d e R i c h t u n ­ 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 ­ 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­ daten per F u n k ü bertra g e n . Der ESP32 ka n 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 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 e i n e n pri m itiven Lichtschalter. E m pfä n g t der 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

Vice Versa

richten e i n .

gewo h nt

S c h n ittste l l e des E S P 3 2 . Pa ra l l e l öffnet man

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­ 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 ­

wie

e i n e 0, schaltet er sie w i e d e r a u s .

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 ,

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

Da n k e i n e r weits i c h t i g e n S pezifi kat i o n u n d robuster I m plementierungen i n moder­ nen Betriebssystemen u nterscheidet sich der Zug riff auf B l u etooth ka u m vom Zug riff auf



?

P uTTY Confi g, u rati on

Category: �?· Session : . ... logging r? ·· Tenninal

Keyboard

'

Bell Features $·· Window . • . ...

I

Basic options, for your Pu TTY session Specify the destination you want to connect to Sg_eed Serial line

jcoMSI

1 19600

t...o nnect1on tyPe : 0 Ra� 0 Ieinet 0 Riog[n 0 �SH .

PuTTY kommt gut mit seriellen Verbindungen zurecht.

32 1 Make: ESP32 special 201 9

X

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 ESP32 wird so im Ha n d u m d rehen zu e i n e m vo l l we rt i g e n B l u etooth-Gerät, d a s s i c h auf vielfä ltige Weise e i n setzen l ä sst. Nat ü r l i c h m u ss die Kom m u n i kation n i cht ü be r e i n serielles Te r m i na l erfo l g e n . Das geht genauso g u t m i t sel bst entwickelten Anwen­ d u n gen i n beinahe jeder P rog ra m m ierspra­

I

I @ Se[ial 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.

Das geht a u c h s m a rter Da s kla s s i s c h e B l u etooth fu n kt i o n i ert a u f d e m ESP32 p r i ma, aber fü r v i e l e l oT-Anwen-

d u n gen ist B l u etooth Low Energy ( B LE) deut­ l i c h besser geeig net. Das l i egt z u m e i n e n a m

S e r i a L B L ue t oot hBi d i rect i ona l . i no

geringen Stro mverbra u c h , a b e r a u c h a n d e r Art u n d Wei se, w i e d i e Kom m u n i kation bei BLE a bgewickelt wird. Wä h rend i n d e r klassi­ schen Va riante G e räte gekoppelt werden m ü ssen und i m m e r nur ü be r e i n e Point-to­ Poi nt-Verb i n d u n g ko m m u n izieren kö n n e n ,

·'"'

ermög l i c h t B L E B road cast-Na c h richten u n d

r

Mesh-N etzwe rke. Opti m i ert w u rd e B L E fü r

.�

das s c h n e l le Verse n d e n u n d E m pfa n g e n klei.­ n e r Date n pa kete ü be r D i sta nzen b i s zu 40 Mete rn. B LE-Geräte benöti gen kei n e perma nente u n d energ i e h u n g rige Verbi n d u n g . Sie s c h la­ fen die m e i ste Zeit ü ber und kom m u n izieren nur bei Beda rf. Für Fitness-Tracker, medizi n i ­ sche Anwe n d u n g e n o d e r v i e l e G e räte z u r Hei mauto mati s i e r u n g i s t d a s idea l , d e n n s i e m ü ssen n i c h t u n e ntwegt a u f Send u n g se i n

r

,..., r

r

('"' -,...,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

# i n c l ude " B l uetoothSe r i a l . h � ' B l u e t oot h S e r i a L b l ue t oot h ; v o i d s_e t u p ( l { S e r i a l . be g i n ( 1 1 5 2 00 l ; i f ( ! b l ue t oot h . beg i n ( " E SP32" l l S e r i a l . p r i n t l n ( " B l ue t oo t h kon n t e n i c h t a k t i v i e r t w e r d e n . " ) ; e lse { Se r i a L . p r i n t L n ( " D e r ES P 3 2 k a n n g .e k o. p p e L t w er d e n . " ) ;

vo i d Loo p ( ) { w h i L e ( b l ue t oo t h . ava i L a b l e ( ) ) S e r i a l . w r i t e ( b l u e t oo t h . rea d ( l l ; } delay(20 l ;

u n d kö n n e n so s e h r la nge von e i n e r Kno pf­

?

ze l l e ze h ren. Die vielfältigen Anwe n d u n g s m ög l i c h kei­ ten mac h e n es n otwe n d i g , Date nfo rmate u n d Protoko l l e weitestg e h e n d zu sta n dardi­ sieren, aber trotzd em noch genug Ra u m fü r Neu entwickl u n g e n zu la ssen. Das geschieht bei BLE mit relativ ei nfachen M itte l n , d i e im Deta i l aber e i n i germaßen ko m p l ex s i n d . Erfre u l i c h i st, d a s s d i e Bete i l igten e i n e r BLE-Ko m m u n i kation n u r Server o d e r C l ients sein kö n n e n . Wä h re n d B L E-Server i h re U m ­ g e b u n g i n reg e l mä ß i g e n Abstä n d e n be­ scha l l en u n d ü b e r i h re Existenz i nfo r m i e ren, suchen BLE-Ciients u m g e ke h rt nach B L E-Ser­ vern, m i t d e n e n s i e s p i e l e n kö n n e n . Haben sie wa s I n te ressa ntes gefu n d e n , ba u e n sie eine Verbi n d u n g a u f, um mehr I nfo rmatio­ nen zu beko m m e n .

�ategory:

t;J· Session



'····

logging

Terminal .

! --

Keyboard

!-- · Bell �---- Features

l$J -- Winclow ! .. 1\ppearance ! --· Bernaviour ! ... Translatiorn !---- Selectionr

...

L Cdlours

EI· Conrnectiorn

!---· Data ! --· Proxy

Profi l e suchen Doch w i e ka n n e i n C l i e n t festste l l en, o b e i n best i m mter Server ü be r ha u pt i n teressa n te I nfo rmat i o n e n a n bietet u n d ob d e r C l i e n t ü berha u pt i n d e r Lag e i st, d i ese zu ve rste­ hen? Beispielsweise kön nte eine Smartphone­ App ja nach Fitness-Trackern i n d e r U m g e­

X

!--·

Te'lnet

!-- · Rloginr

$ - SS H L ... sernal

I

Qpticms. corntrnllirng the �ermirnal emulation

Set vaMol!ls termirnal optiorns

I

0 Aurto wrap mode irnitially on 0 D EC Girigin Mode irnitially orn

O· lmplicit OR. in every LF

0 lmplicit LF in every C:R. -0 Use baCkgrol!lncl colour to erase screen D Ernable blirlkinrg te)l[ .Ans.w erback to

!Pl!ITTY

"E:

Une clisciplinre optiorns Local ·echo :

0 1\m.o

@ Force on

0 Force off

0 Aurto

@ Force orn

0 Force off

Local line eclitinrg

Remote�ontrnlled printing

Damit man in PuTTY auch etwas sehen kann, muss man ein paar Einstellungen ändern.

b u n g s u c h e n . D i e A p p wä re in d i es e m Fa l l der C l i e n t u n d d e r Fitness-Tracker d e r Server. Wie kö n n en die beiden sich erste l l e n, dass sie d i eselbe S p ra c h e sprechen und Daten a u s­ ta u s c h e n kö n n e n ? S i c h e r l i c h wä re es n i cht h i lfreich, wen n jeder Fitn ess-Tracker d i e a k­ t u e l l e P u l sfreq uenz in seiner eigenen Kodier u n g senden wü rde.

·

"

Die Lös u n g des Prob l e m s s i n d d i e B l uetoot h - P rofi l e . Dav o n g i bt es gleich m e h re re Dutze n d u n d s i e l e g e n fest, ü be r we l c h e Fä­ h i g keiten e i n G e rät verfü gt. Mä u s e u n d Tas­ tat u re n i m p l e m e n t i e r e n z u m B e i s p i e l das H u ma n I n te rface Dev i c e P rofi l e ( H I D) , u n d wer ei n e seri e l l e S c h n ittste l l e a n b i etet, i m -

Hier kommunizieren zwei serielle Terminals über Bluetooth miteinander.

Make: ESP32 special 201 9

l 33

�---- -----

B LU ETOOTH

B lüeToot h S w i t c h . i no

B L U ETOOTH U NT E R L I N UX

#i nc lude "BluetoothSer i a l . h" c o n s t u i n t 8_t L E D_P l �

=

2;

B l uetoot h Se r i a l b l uetoot h ; vo i d s e t up ( ) { p i n M o d e ( L E D_P I N , O U T P U T ) ; S e r i a l . be g i n ( 1 1 520D l ; i f ( ! b l uetoot h . beg i n ( " ESP32 " l l S e r i a l . p r i n t l n ( " B l u e t o o t h k o n n t e n i c h t a- k t i v i e r t w e r d e n . " ) ; e l se { S e r i a l . p r i n t l n ( " D e r E S P 3 2 k a n n g e k o p p el t w e r d e n . " ) ; ·

voi d L oopO { w h i l e ( b l ue t oot h . ava i l a b l e ( ) ) c o n s t i n t c = b l u e t oo t h . r e a d < l ; Seri a l . wri t e ( c l ; i f ( c = = '· 1 ' l { d i g i t a l W r i t e ( L E D_P I N , H I G H l ; e l se i f ( c = = ' D ' l { d i g i t a L W r i t e ( L E D_P i N , L O W l ;

Verbindung mit 9600 Baud auf der Schn ittstelle /dev/rfcom m 1 a ufba uen.

·

p l e m e ntiert d a s Serial P o rt P rofi l e ( S P P ) . S m a rtphones i m p l e m entieren oft e i n e ga nze R e i h e v o n P rofi l e n , wie z u m Beispiel das Adva nced Audio D i stri bution P rofi l e (A2DP), d a s Head set P rofi l e ( H S P), d a s 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­ book Access Profi l e (PBAP). l n Kom b i nation ermög l ichen d iese Profi l e das beq ueme Te­ lefo n ieren im Auto.

Profil zeigen 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 a l le Geräte m ü ssen das G e n e r i c Access P ro­ fi l e (GAP) i m p l e mentieren, d e n n das rea l i ­ siert d i e g r u n d legenden Z u g riffsmechan is­ men und die Verwa l t u n g von Verb i n d u n ­ g e n . Ü brigens l a s s e n s i c h P rofi l e per Soft­ ware nachrüsten, was i n s beso ndere fü r den ESP32 interessant ist. Dass es fü r besti m mte Profi l e heute noch kei n e I m p l e mentieru n g

Dienst

BLE-Profile haben eine hierarchische Struktur.

341 Make: ESP32 special 201 9

rf comm connec t 1 u u : v v : w w : x x : y y : z.z Z eine seriel le

Die Beispiele mit BLE i n Chrome fu n k­ tionierten bei u n s leider nicht.

d e l a y ( 20 l ;

Profi l

Auch u nter Linux ka n n man per Bl ue­ tooth mit dem ESP32 seriell Daten aus­ tauschen, a l lerdings ist dazu mehr Handarbeit nötig. U nter U b u ntu 1 6.04 gelang es, den ESP32 zu koppel n. Al ler­ dings fragt Linux u nter Umstä nden nach einer Pin, die man auf dem. ESP32 eingeben soll. Ignorieren Sie die Auf­ forderu ng und klicken ei nfach auf "Fortfa h ren". Anschließend können Sie ü ber das Tool rfcom m per s u d o

g i bt, bedeutet a l so n i cht, dass es in Z u ku nft a u c h kei ne geben wird. Das Konze pt d e r Profi l e w u rde schon i n 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­ n i ert.- Weil a ber fü r BLE e i n e g a nze M e n g 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 B l u etöoth-Sta n d a rd dafü r e i n ü berg reife n ­ des Profi l m i t dem N a m e n G e n e r i c Attribute P rofi l e (GATT; https://www.bl u etooth .com/ s pecificati o n s/gatt) vor. U nterh a l b d ieses P rofi l s kö n n e n H e rste l l e r fl exi be l weitere Dienste (Services) defi n ieren. Die Liste d e r BLE-Dienste ist schon jetzt recht l a n g u n d vielfä ltig. A ngefa n g e n bei einem Dienst, der ü ber den a ktu e l l e n Lade­ zu sta nd der Batterie i n fo r m i e rt, bis h i n zu einem Dienst, der konti n u ierlich den Bl utzu­ ckerspiegel ü berwacht, ist schon eine ga nze Menge d a bei. U m mit BLE-Diensten zu a rbeiten, i st es wichtig, Profi l e und deren Aufba u zu verste-

Charakteristik

hen. Profi le bilden eine H iera rchie und kön­ nen aus einem oder m e h reren Diensten be­ steh e n . Dienste wiederu m bestehen a u s e i n e r o d e r meh reren C h a ra kteri sti ken . E i n e C h a r a kteristi k setzt sich a u s verschiedenen Eigenschaften, e i n e m Wert u n d e i ner Liste von Deskri ptoren zusa m men. Die Eigenschaften einer C h a ra kteristi k de­ fi n ieren, a uf welche Weise C l ients a u f d i e C h a ra kterist i k z u g reifen kö n n e n . Beispiels­ weise können manche Charakteristiken gele­ sen u n d/oder geschrieben werde n . Beim S c h reiben g i bt es zwei u ntersc h ied l i c h e Spielarten, n ä m l ich ei ne, b e i der dem Cl ient eine Q u itt u n g ü berm itte lt w i rd ( " write re­ q uest "), und ei ne, bei der das n icht der F a l l ist ( " write command " o d e r " write without re­ sponse ") . Ferner kö n n e n C l ients s i c h a utomatisch ü ber Verä nderu ng.e n des Wert�s einer Cha­ 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 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 d i e C h a ra kteristik noch weiter besc h reiben.

Bei spielsweise kö n n e n De�kri ptoren Werte­ bereiche ei nsch rä n ken oder Ausga beforma­ te defi n ieren. Das klingt a l les h a l bwegs kom p l iziert, ist i h der P raxis aber ganz ei nfa ch . Kon kret defi­ n iert der B l u etooth-Sta n d a rd im GATT-Profi l z u m Beispiel e i n e n Dienst n a m e n s " Battery Service " fü r d e n Ladezu sta nd der Batterie. Die Chara kteristik des Dienstes hat die Lese­ Eigenschaft u n d optional die N otify-Eigen­ schaft. Der D i e n st l i efert e i n e n vorzeichen­ losen 8-Bit-Wert zwischen Oo/o u n d 1 00%, der den Ladezusta nd der Batterie repräsentiert.

I m Dsc h u ngel zu rechtli nden Schon heute g i bt e s e i n e g roße Anza h l a n Diensten, Cha ra kteristiken u n d Deskri ptoren, und in Zukunft werden gewiss noch ein paar h i nz u kommen. Damit Cl ients sch n e l l u n d sicher feststellen kön nen, ob ein Server einen bestim mten Dienst a n bietet, haben alle Bl ue­ tooth-Entitäten nicht n u r einen Namen, son­ dern werden darü ber h i n a u s auch m it einer U U I D ( U n iversa lly U n ique ldentifier) versehen. Eine U U I D ist eine Za h l mit 1 28 Bit, a l so 1 6 Bytes. Diese Za hlen können mithi lfe d iverser Algorithmen erzeugt werden und kön nen fü r viele Anwendu ngsfä l l e a l s eindeutig betrach­ tet werden. Zwa r ist es d u'rchaus möglich, dass ein und d ieselbe UUID zwei mal erzeugt wird, aber dieser Fa l l ist eher unwa h rschein­ lich u n d fü r viele Anwend ungen auch n icht releva nt. Da rgestellt werden U U I Ds in der Regel a l s Hexadezi malza h len m i t 3 2 Ste l l e n . Z u r Ver­ besserung der Lesbarkeit hat sich das Schema 8-4-4-4- 1 2 d u rchgesetzt und so sieht eine typische UUID wie folgt aus: 1 23e4567-e89b1 2d3-a456-426655440000. ln dieser Da rstel­ l u ng benötigt die U U I D wegen der Bindestri­ che 36 Zeichen. Zur Erze u g u n g von U U I Ds g i bt es jede Menge Tools auf der Komma ndozeile oder in Form von I nternet-Diensten. Auch bieten die meisten Prog ra m m iersprachen B i b l i otheken zur Generierung von U U I Ds an. Wer a l so einen neuen B l uetooth-Dienst entwickelt, ka n n sich sch nel l und kosten los die dazu benötigten U U I Ds·besorgen. Der Bl uetooth-Sta ndard verwendet zur Identifizierung von Diensten u n d Cha ra kteris­ tiken ü brigens U U I Ds, die n u r 1 6 Bits l a n g s i n d . D a s macht die Spezifi kation etwas ü ber­ sichtlicher und es verei nfacht auch die Identi­ fizierung von Sta nda rd-Diensten fü r C l ients und Server. Beispielsweise hat der Battery Ser­ vice die Kurz- U U I D Ox 1 80F.



(' 0

('

r,

(' .�

('(' r

c r '\ 0

1 # i n c l ude 2 3 c o n s t c h a r * S E R V I C E_U U I D = " 4 f a f c 2 0 1 - 1 f b 5 - 4 5 9 e - 8 f c c - c 5 c 9 c 3 3 1 9 1 4 b " ; 4 c o n s t c h a r * t H A R A C T E R I S T I C_U U I D = '' b e b 5 4 8 3 e - 3 6 e 1 - 4 6 8 8 - b 7 f 5 ea07361 b26a 8 " ; 5 6 vo i d s e t up ( ) { 7 BLEDevi c e : : i n i t ( "Me i nESP32 " l ; 8 B L ES e r v e r * s e r v e r = B L E D e v i c e : : c r e a t e S e r v e r ( J ; 9 B L E S e r v i c e * s e r v i c e = s e r v e r - > c r e a t e S e r v i c e ( SE R V I C E_U U I D l ; 10 B L E 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 = s e r v i ce-> cr e a t e 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_U U I D , 11 12 B L E C h a r a c t e r i 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 : : P R O P E R T Y_W R I T E l ; 13 c h a r a c t e r i s t i c - > s e t V a l u e ( " -H a l l o , M a k e - M a g a z i n ! " ) ; 14 s e r v i c e -> s t a r t < > ; 15 s e r v e r -> s t a r t Adv e r t i s i n g ( ) ; 16 17 1 8 vo i d Loop ( ) { d e l a y ( 2000 l ; 19 20

B L E-Server. D e r defi n i e rt e i n e n n e u e n D i e n st i n kl u s ive e i n e r C h a ra kte ristik u n d bietet i h n C l ients i n der U mg e b u n g a n . D a s P rog ra m m b i ndet d i e B L E Device- Bi­ b l iothek e i n, d i e a l les bietet, u m B L E-Server

Auf der g lobalen Ebene defi n iert das Pro­ g ra m m zwei Ko nstanten fü r die U U I D des Die nstes und der Chara kteristik. Diese U U I Ds kö n nen beliebig gewä h l t werden, wei l der Dienst kei n Sta n d a rd-Dienst ist u n d auch

und C l ients i n vielen verschiedenen A u s p rä­ g u ngen zu schreiben. Erfre u l ic h e rweise fi n­ d e n sich dazu auch e i n i g e B e i s p i e l e i n der Ard u i no- I DE.

kei ne Sta nda rd-Cha ra kteristik verwendet. Die eigentliche Arbeit fi ndet i n der s e t u p­ F u n ktion statt und sie macht mit der Funktion B L E D e v i c e : : i n i t den ESP32 i m Bluetooth-

!9 l11 tllJ 0 ($) 11 !'J'l Devices DEO

ADVERTISER

CONNEC ... BO N D EO

* . � ... 45 % . 1 0: 5 6

{9 l! LUJ 0 1!!1 ($)

M E I N ESP32 B4:E6:2D: B 9: C F: F3

CLIENT

X

SERVER

Generic Attribute

'"

D evices

D I S C O N N ECT

)ED

ADVERTISER

:e

;t . � .•

45 % . 1 0: 56

D ISCON N ECT M E I N ESP32 B4: E6: 2D: B9: C F: F3

. X

• •

P R I MARY S E RV I C E

U U I D : Ox1 801

P R I M A RY S E RV I C E

Generic Access

Generic Access

P R I M A RY SERV I C E

U U I D : Ox1 800

U U I D : Ox1 800

Unknown Service

P R I M A RY S E R V I C E

U U I D : 4fafc201 -1 fb5-459e-8fcc-c5c9c331

Unknown Service U U I D: 4fafc201 -1 fb5-459e-8fcc-c5c9c33 1 1 4b

1 4b

P R I MARY SERV I C E

Un�nown Characteristic

P R I MARY S E RV I C E

..!. .!..

U U I D: beb5483e-36e1 -4688-b7f5-ea 07 ... P roperti es : READ, WRITE



Hat's gefun kt? Nach der ga nzen Theorie i m p l ementiert Lis­ t in g BleServer. i n o m i t wenig Aufwa nd e i n e n

I

B l eSe rve r . i no



n R F Connect findet BLE-Dienste in der

Die eigens definierte Charakteristik sieht exakt

Umgebung zuverlässig.

so aus, wie sie definiert wurde.

Make: ESP32 specia l 201 9 l

35

I

BLU ETOOTH I-ß:J m A o I!! e = DEO

··

Oevices

ADVERTISER

CONNEC ... B O N D EO

- -· · -· · - .

-

--

----

(9

* . � .. . 45 % . 1 o : 5 6 D ISCO N N ECT M E I N ESP32 B4"E6.20 89 CF-F3

CLIENT

1

· - - --

Write value

N EW

Hallo

U U I D : Ox1 800 P R I MARY S E RV I C E

Unknown Service

TE . .

LOA D

I!!

I& 11

D evices

DEO

X

SERVER

0

a

ADVERTISER

CONN EC . .. BONbEb

* � . . 42 % ..;. 1 1 :22 D ISCON N ECT M E I N ESP32 B4:E6:2D: B 9 : C F : F3

CLI ENT

1

X

S E RV E R

l t\ JIVIJ-\ t\ T V C. f'\ l71 v 11T" C:l" E___

Generic Access U U I D : Ox1 800

A D D VA L U E

U U I D : 4fafc20 1 -1 fb 5-459e-8fcc-c5c9c33 1

1 4b P R I MARY S E RV I C E

Unknown Characteristic

P R I M ARY S E RV I C E

Unknown Service

Save a s . . .

U U I D : 4fafc20 1 -1 fb5-459e-8fcc-c 5c9c33 1

1 4b

U U I D : beb5483e-3 6e1 -4688-b7f5-ea07 .. . 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 1 -6B-65-2D-4D-61 -67-6 1 -7 A-69-6E-21 ,

Advanced SAVE

V

CANCEL

SEND

" H a l lo, M a ke-Magazi n ! "

P R I M A RY S E RV I C E

_!_ _!_

Unknown Characteristic

U U I D : beb 5483e-36e1 -4688-b7f5-ea07 ... P r o p e rt i e s : R EAD, W R I T E

.

Va l u e : ( Ox ) 48-61 -6C-6C-6F, " H a l lo"



• 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

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,

Namen " U n known Service", weil seine U U I D n i c h t z u d e n b e ka n nten Service- U U I Ds ge­

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 einen Zeiger auf ein B L E s e r v e r -Objekt .

wa n dfre i erke n n e n . E i n K l i c k auf den Dienst zeigt d i e C h a r a k­

F ü r reg u läre Ben utzer u n d rea l e Anwen­

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 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 ­ 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 .

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

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 B l eServe r. i n o vera n sc h a u l icht zwa r g ut, wie

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

erhä l t den Wert " H a l lo, M a ke-Magazi n ! ". 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

nach u nten zeigt, fö rdert d en a kt u e l l e n Wert

man

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 .

eigene

C h a ra kteristi ken

d efi n ieren

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 d ies m a l n icht per WLAN u n d HTIP, sondern

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

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ü­ ber Ausku n ft g i bt, was sich auf der Luftsch n itt­

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­

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­ vironmental Sensing und d i e I D Ox 1 8 1 A. I n­

stelle gerade so tut. Sowo h l u nter iOS a l s a u c h u nter Android ist n R F Connect eine g ute Wa h l . Wichtig i s t e s , sowo h l Bluetooth a l s auch B L E

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 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 .

36 1 Make: ESP32 special 20 1 9

Listing BleSensor.i n o i m pl ementiert einen B LE-Sen sor, d e r d i e Daten eines HDCl 008Sensors konti n u ierlich a u s l iest und a n seine Umgebung sendet. Die Ü bertra g u n g erfolgt mithi lfe des Sta n d a rd-Dienstes, so dass a l l e Clients, d i e dessen P rotoko l l e i m plementie­ ren, die Daten verstehen kön n e n . D a s Prog ra m m i s t n icht ü bermäßig lang, n u tzt a ber einige n e u e F u n ktionen und

("

c

r

F u n ktional itäte n . Der Anfa n g wirkt jedoch vertra ut, denn d o rt werden nur alle benötig­ ten Bibl iotheken eingebunden und ein g loba­ les Objekt der Klasse A d a f r u i t ....: H D C 1 0 0 0 de­ fi niert, das zum Auslesen des HDCl 008-Sen­ sors dient. Dan n folgen weitere globale Variablen, die g rößtentei l s zur Defi n ition der BLE-Chara kte­ ristiken dienen. Die ersten beiden sind I n sta n­ zen der Klasse B L E D e s c r i p t o r. Sie werden im weiteren Verla uf verwendet, u m die Charakte­ ristiken mit textuellen Beschreibungen zu ver­ sehen, die der Cl ient den Benutzern anzeigen ka n n . Dazu sieht der Sta ndard die I D Ox290 1 vor, die zur Konstru ktion der beiden Objekte verwendet wird. Al lerdings kan n die Kurzform der U U I D nicht d i rekt verwendet werden, son­ dern muss m it dem Ma kro B L E U U I D in d i e richtige F o r m gebracht werden. Die zwei Objekte der Klasse B L E C h a r a c t e ­ r i s t i c werden auf ä h n l iche Weise konstru­ iert, d ienen a ber e i n e m g ä nzlich a n d e ren Zweck. Sie werden zur Defi n ition der Chara k­ teristiken des Dienstes benötigt u n d enthal­ ten spä�er neben den Deskriptoren auch die I nformationen über d i e Tem perat u r u n d die Luftfeuchti g keit. Der Sta nd a rd sieht fü r d i e Tem peratur d i e I D Ox2A6E u n d fü r die Luft­ feuchtigkeit die ID Ox2A6F vor. Zusätzlich zur U U I D muss die Chara kteristi k a ber auch fest­ legen, auf welcheWeise Clients auf die Daten zug reifen können. l n d iesem Fall ist das lesend oder per Notifi kation möglich.

C a l l backs Die Boolesche Va riable b l e C l i e n t C o n n e c t e d zeigt den a ktu e l l e n Verbi n d u ngsstatus a n . Wen n d e r ESP32 gerade m i t einem Client ver­ bunden ist, hat sie den Wert t r u e , sonst den

Wert l a l s e. Das fu n ktioniert n icht a utoma­ tisch, sondern muss mithi lfe von CaH back­ F u n ktionen erledigt werden. Die defi n iert die Klasse M y S e r v e r Ca l l ba c ks, die von der Klas­ se B L E S e r v e r C a l l B a c k s a bgeleitet wird. Die Klasse enthält die Fu n ktionen o n C o n ­ n e c t u n d o n D i s c o n n e c t , d i e i m me r d a n n a ufgerufen werden, w e n n e i n e Verbi n d u n g miteinem Cl ient hergeste l l t bezi e h u n g swei­ se a bgebaut w u rde. Sie setzen den Wert der Va ria blen b l e C l i e n t C o n n e c t e d entspre­ chend. Beide F u n ktionen erha lten einen Zei­ ger auf das B L E S e r v e r-Objekt, das die Ver­ b i n d u n g a u f- bezieh u ng sweise abgebaut

('

'

B l eSensor . i no 1 2 3 4 5 6 7 8 9 10 11 12 13 14

# i n c l ude # i n c l ude. # i n c l ude # i n c l ud& # i n c l ude

< BL E D e v i c e . h>

< A d a f r u i t _H D C 1 0 0 0 . h >

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 ;

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 ; 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 ;

BLECha racteri sti c humi di tyCha racteri st i c ( B L E U U I D ( ( u i n t 1 6_t l 0 x 2 A 6 F l , 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 : : P R O P E R T Y_N O T I F Y l ; 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 , 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 : : 17 P R O P E R T Y_N O T I F Y l ; 18 1 9 b o o l b l e C l i e n t C o n n ec t e d fa lse; 20 2 1 c l a s s MyServerCa llbacks pub l i c BLEServe rCa l lbacks 22 v o i d o n C o n n e c t ( B L E S e r v e r * s e r v e rl { 23 b l eC l i ent Connec t ed = t rue; 24 }; 25 26 vo i d o n D i sconne c t ( B L E S e rver* s e r ve r ) 27 b l eC l i ent Connec t ed = fa l se ; 28 29 }; 30 3 1 voi d s e t up ( ) { 32 S e r i a l . be g i n ( 1 1 5200 ) � 33 i f ( ! s e n s o r � b e g in ( O x 4 3 ) ) { 34 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 . " ) ; 35 I / return; 36 37 Seri a l . pr i n t l n ( "Sensor wi rd i n i t i a l i si e rt . " l ; 38 I I s e n s o r . d r y S e n s o r O ; ·1 1 B r a u c h t 1 5 S e k u n d e n ! 39 B L E D e v i c e : : i n i t ( " E S P3 2- S E N S O R " l ; 40 41 BLESe rve r* server = BLEDevi ce : : c reateServer C l ; 42 s e r v e r -> s e t C a l l b a c k s ( n e w M y S e r v e r C a l l b a c k s C l l ; 43 B L E S e r v i c e * s e r v i c e = s e r v e r -> \ c r e a t e S e r v i c e ( B L E U U I D ( ( u i n t 1 6_ t l O x 1 8 1 A l l ; 44 45 h um 1 d i t y D e s c r i p t o r . s&tVa l u e ( " Lu f t f e u c h t e 0- 1 0 0% " ) ; . 46 humi d i tyCha racte r i s t i c . addDescri ptorC&humi di tyDescr i ptor l ; 47 h u mi d i t y Ch a r a c t e r i s t i c . a d d D e s � r i p t o r ( n e w B L E 2 9 0 2 C l l ; 48 s e r v i c e�>a d d C h a r a c t e r i s t i c C & h um i d i � y C h a r a c t e r i s t i c l ; 49 50 t empe r a t u r e D e s c r i p t o r . s e t Va l u e ( " Tempe r a t u r -40- 1 2 5 ' C " l ; 51 t e m p e r a t u r e C h a r a c t e r i s t i c . a d d D e s c r i p t o r < & t e m pe r a t u r e D e s c r i p t o r l ; . 52 t empe r a t u r e C h a ra c t e r i s t i c . a d d D e s c r i p t o r ( ne� B L E 2 90 2 C l l ; 53 s e r v i c e - > a·d d C h a . r a c t e r i s t i c ( & t e m p e r a t u r e C h a r a c t e r i s t i c ) ; 54 55 s e r v i c e-> i t a r t ( l ; 56 s e r v e r -> s t a r t A d v e r t i s i n g C l ; 57 } 58 5 9 vo i d loop ( ) { 60 i f ( b l e C l i ent Conne c t e d l 61 c o n s t u i n t 1 6_t h u m i d i t y = 5 0 ; 62 � o n s t i n t 1 6_t t e m p e r a t u re = 5 0 ; _ 63. h u m i d i t y C h a r a c t e r i s t i c . s e t V a l u e ( ( u i n t 8_t * l & h u m i d i t y , Z l ; 64 humi d i t yC h a r a c t e r i s t i c . no t i f y C l ; t e m p e r a t u r e C h a r a c t e r i s t i c . s e t V � l u e ( ( u i n t 8_t * l & t e m p e r a t u r e , Z l ; 65 66 tempera tureCharacte r i st i c . no t i fy� l ; 67 d e l ay C 500 l ; 68 69 }

Make: ESP32 special 201 9 1

37

B LU ETOOTH

�---------

hat. F ü r d e n vorl i e g e n d e n Anwe n d u n g sfa l l

e rfa h re n . Der Text ka n n frei gewä h l t werd e n

zwei Bytes, die eine vorzeichenbehaftete u n d

wird d ieser Para m eter a be r n icht benötigt.

u n d m u s s d a h e r n i cht u n be d i n g t s i n n vo l l e

eine vorzeichen l ose Za h l repräsentieren, vers­

Damit d e r g a nze Mecha n i s m u s fu n ktio­ n ie rt, m u s s noch e i n O bj e kt d e r Klasse M y ­ bei m

ServerCa l lbacks

e n t s p rec h e n d e n

I nfo r m a t i o n e n e n t h a l t e n . Der zweite Deskri ptor h a t d i e I D Ox2902

e n d et. Die Klasse 8 L E c h a r a c t e r i s t i c hat daher eine s e t V a L u e - F u n ktion, d i e neben

und die ste ht fü r C l i e n t C h a ra cte ristic Co nfi­

einem u i n t 8_ t -Zeiger auch noch d i e Anza h l der zu ü bertragenden Bytes erwa rtet.

8 L E s e r v e r-Objekt reg i striert werd e n . D a r u m

g u ration (CCCD). Mit d i esem Deskriptor hat

k ü m m ert sich d i e s e t u p - F u n ktion, d i e a be r

der C l i e n t d i e M ög l i c h keit, das S e n d eve r h a l ­

erst e i n m a l d i e serie l l e Sc h n ittste l l e u n d den

ten des Servers zu ste u e r n . I m vo r l i e g e n d e n

dafü r, d a s s d i e n e u e n We rte a u c h ü be r d i e

H D C 1 008-Sensor i n it i a l i s ie rt. H i e r g i bt es kei­

F a l l ka n n d e r S e rver Sen s o r-Daten ü be r d e n

Luftsc h n ittste l l e beka n n t gemacht werd e n .

nerlei U ntersch iede zu r WLAN -Va ria nte u n d

N otifikati o n s m e c h a n i s m u s a n e i n e n ve r­

w i e a u c h d o rt e m pfie h l t es s i c h , den Aufruf

b u n d e n e n C l i e n t verte i l e n . Wei l d i eses Ver­

der F u n kt i o n d r y S e n s o r wä h re n d der Ent­

ha lten, bei dem pote n z i e l l v i e l e Datenpa ke­

wickl u n g a u szukommentieren.

te g e s e n d et werden, fü r m a n c h e C l ients u n ­

Nur geringe U ntersc h i ede g i bt es bei der l n it i a l i s i e r u n g d e r B l u etooth-Ko m m u n i kati­ o n . Dies m a l o p e r i e rt d e r ESP32 u nter dem N a m e n E S P 3 2 - S E N S O R und w i e a n g e k ü n ­ d i g t w i rd d a s Obj e kt d e r Klasse M y s e r v e r ­

c a L L b a c k s bei m B L E-Server reg i striert. A n ­

sch l i e ß e n d w i rd e i n

D i e n st m i t d e r I D

Ox1 8 1 A ( E n v i ro n m e nta l S e n s i n g ) e rze ugt.

S c hl i e ß l i c h

sorgt

die

n otify- F u n kt i o n

Ein erster B l i c k D a s P r o g ra m m i st n i c h t a l lzu l a n g u n d tut

erwü n s c h t i st, l ä sst es s i c h ü be r d e n CCCD

im G r u n d e auch n i c h t s S p e kta k u l ä res u n d

e i n - u n d a u ss c h a l t e n .

d o c h i s t d i e i m p l izite Ko m p l exität h o c h .

N a c h d e m d i e beiden Chara kteristiken kon­

fi g u riert w u rden, sta rtet die � e t u p - F u n ktion sowo h l den Dienst a l s auch den Server.

Die L o o p- F u n ktion trägt jetzt n u r noch i n reg e l m ä ß i g e n A bstä nden d i e a ktu e l l e n Sen­

Bevor man a l so einen passenden C l ient b a u t, ist es ratsa m, m i t g e n e ri s c h e n Werk­ ze u g e n , w i e z u m B e i s p i e l n R F C o n n ect, s i c h e rzuste l l e n , dass a u c h die richtigen Bits ·

ü be rtra g e n werd e n .

sor-Daten in die C h a ra kteristiken ein. Dazu

Das ist sc h n e l l erledigt u n d nachdem m a n

Dem D i e n st s e l bst w e r d e n d a n n zwei

prüft sie z u n ä c h st, ob ü berha u pt ein C l i e n t

s i c h m i t d e m G e rät n a m e n s ESP32-SENSOR

C h a r a kteristiken - eine fü r d i e Te m pe ratu r

mit dem Server verbu nden i st. Ist dies der F a l l ,

verb u n d e n hat, zeigt nRF Con nect a n , dass

u n d e i n e fü r d i e Luftfe u c h t i g keit - zugewie­

l iest sie d i e Sensor-Daten aus, m u lt i p l iziert sie

es d e n Environmental S e n s i n g -D i e n st gefu n ­

sen. Die C h a r a kteristiken entha lten wieder­

m i t 1 00 u n d weist s i e Va ria b l e n vom Typ

d e n h a t . We n n m a n d e n d u rc h e i n e n K l i c k

um jewe i l s zwei Deskri pto ren. Der erste De­

u i n t 1 6_ t

zu.

expa n d i e rt, ersc h e i n e n d i e C h a ra kteristi ken

skriptor ist vom Typ Ox290 1 ( C h a racteristic

Dabei werden etwa ige N a c h ko m maste l l e n

fü r die Tem pe rat u r und die Luftfeuchtigkeit.

User Descri pti o n ) und besc h re i bt d e n I n h a l t

a bgesc h n itten .

bezi e h u n g sweise

i n t 1 6_ t

Die C h a ra kteristiken s e l bst lassen s i c h

des S e n s o rwerts etwa s g e n a u e r . Z u m B e i ­

D i e s e Form der Aufbereitung ist n otwen­

w e i t e r a ufkl a p pen u n d so ka n n m a n d i e

s p i e l kö n n e n C l i e n t s fü r d e n Te m peratu r­

dig, wei l d i e Messwerte gemäß der Spezifi ka­

zuvor festgelegten Besch rei b u n g e n a u s d e n

We rt den Text " Te m peratu r -40- 1 2 5 °(" a n ­ ze i g e n . D a m i t kö n n e n N u tze r etwas m e h r

tion i n exa kt d iesem Format ü bertragen wer­

Deskri ptoren u n d d i e a ktu e l l e n Sensorwe rte

den m ü ssen. Das hei ßt, sowo h l die Tem pera­

lesen. Es g i bt sog a r e i n lcon, mit dem sich der

ü be r d e n S e n s o r u n d s e i n e E i g e n s c h afte n

tur a l s a uc h die Luftfeuchtig keit jewe i l s a l s

Notifi kat i o n s m e c h a n i s m u s a ktivieren l ä s st,

II

®

= DEO

Devices ADVERTISER

CONNEC ... B O N D EO

:t



ED

® D evices A DVERTISER

CONNEC ...

SERVER

:t

B O N D EO - -- - · ·



C h a r a c t e r i s t i c UUI D : > Broadc ast : > Read :

> Write w/o r e s po n s e :

> Write :

00002a6e - 0000 - 1000 - 8 000 - 00 8 0 5 f9b 34fb false true false false

> Not ify :

t rue

> S i gned W r i t e :

false

> I n d i c at e :

Aux i l i a r i e s :

> Queued W r i t e : > Writable

false false false

starten bezi e h u n g sweise zu stoppen. U m d a s Beispiel mögl ichst ü bersichtlich zu gesta lten, zeigt es die Luftfeuchti g keit nicht a n . Das ku rze Listi n g i n d ex. html defi niert d i e Oberfläche der Anwend u n g mit ei nfachsten M itte l n . Die a ktu e l l e Tem peratur steht i m Ele­ ment mit der ID tem peratu re Lind die beiden Butto n - E l e m e nte d i e n e n zum Starten u n d Stoppen d e r Kom m u n i kation. Am Ende d e s Dokuments w i rd d i e Datei notifications.js ge­ 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.

40 I Make: ESP32 special 20 1 9

chen a u s d rei F u n ktionen u n d einer g lobalen

Va riablen n a m e n s m y C h a r a c t e r i s t i c , in der d i e Tem peratu r-C h a r a kterist i k gespeichert

i ndex . htm l

wird. Die F u n ktion a n s t a r t B u t t o n C l i c k w i rd a ufg e rufen, we n n d e r Sta rt-Button a ktiviert

1 < l doctype h t m l > 2 3

4 < t i t l e > B l u e t o o t h L 'o w E n e r g y - S e n s o r < / t i t l e > 5 6

7

O . O &#xOObD ; C < / p> 8 < b u t t o n i d = " b t n_s t a r t " > S t a r t < / b u t t o n > 9 10 < b u t t o n i d = " b t n_s t o p " > S t o p < / b u t t o n > 11 < s c r i p t s r c = " n o t i f i c a t i o n s . j s " > < / s c ri p t > 12 < / body> 1 3

wird. Sie defi n i ert zwei Va riablen fü r die U U I Ds des Environmental Sensing-Dienstes u n d der Tem peratu r-C h a ra kteristi k. Da n n sucht sie nach B l u etooth-Geräten i n der Nähe. I m Browser ka pseit d a s O bj e kt n a v i g a ­ t o r . b l u e t o o t h d e n B l u etooth-Ad a pter des

Rec h n e rs.

Die

F u n kt i o n

request Devi ce

sucht n a c h Geräten, d i e besti m mte Krite rien erfü l l e n . l n d i esem Fa l l sucht sie n a c h Gerä­ ten, d i e den Service m i t d e r I D Ox 1 8 1 A a n bie­ ten. Die F u n ktion ka n n a be r auch ri ach vielen a n d e re n Krite r i e n , w i e z u m Beispiel d e m N a m e n des Geräts, fi lte r n .

tion a utomatisch a l s A rg u ment a n d i e F u n k­

sucht nach e i n e m B l u etooth-Gerät, das den

Das w i r kli c h beso n d e re a n d e r F u n ktio n

tion des fo l g e n d e n t h e n-Aufrufs ü bergeben

Environmental S e n s i n g - D i e n st a n bietet. Hat

r e q u e s t D e v i c e i st d e r Typ i h res R ü c kg a be­

wird. Das bedeutet i m kon krete n F a l l , dass

es ein s o l c h e s gefu n d e n , verb i n d et es s i c h mit dem GATI-Server a u f d e m Gerät u n d be­

wertes. Sie l i efert n ä m l i c h e i n P ro m i se-Ob­

das D e v i c e -Obj e kt, d a s von r e q u e s t D e v i c e

jekt zurück und das ist ein M u ster, d a s sich in ' m o d e r n e m Javas cri pt-Code bewä h rt hat.

gefu n den wu rde, automatisch a n das nach­

sorgt sich d o rt e i n e Referenz auf den Sen sor­

fol g e n d e t h en ü bergeben w i rd . Der La m bda­

D i e n st. Bei d i esem e rfra g t d a s P rog ra m m

W e i l viele F u n kt i o n s a ufrufe i n JavaScript asynchron, a l so paral i e l zum H a u ptfl u s s des

Ausdruck des n a c hfo l g e n d e n t h e n l iefert ein

d a n n d i e Charakteristi k d e s Te m peratu r-Sen­

Objekt der Server-Klasse zurück u n d das w i rd

sors u n d weist sie der g l o b a l e n Va r i a b l e n m y C h a r a c t e r i s t i c zu.

P rog ra m ms, e rfo l g e n , hat man frü h e r oft

d a n n w i e d e r u m a n d e n fo l g e n d e n Aufruf

Ca l l back- F u n kt i o n e n verwe n d et u n d d i ese

von t h e n ü bergeben und so weiter. Es d a u ­

Da n n sta rtet d a s Prog ra m m den Notifi ka­

a n a n d ere F u n kt i o n e n weitergereicht Das

e r t e i n e n Mome nt, bis ma'n sich a n d iesen Sti l

tionsmecha n i s m u s u n d h i e r passiert noch

fu n kt i o n i e rte bei e i nfa c h e n Ko ntro l lfl ü s s e n

gewö h n t hat, a be r er fi ndet i m m er m e h r Ver­

etwa s Beso nderes. I n nerha l b eines t h e n -Auf­

noch e i n i g e r m a ß e n g ut, a rtete bei h a l bwegs

breitu n g u n d hat v i e l e Vorte i l e geg e n ü be r

rufs e rfo l g t e i n weiterer t h e n -Aufruf auf

ko m p l exen P rog ra m m e n a be r sch n e l l a u s

d e m a lten S p a g h etti-Code.

e i n e m neuen Promise-Objekt Das i st vö l l ig

u n d w u rde s e h r u n ü bersichtl i c h .

Versp rechen 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

P r i n z i p der Prom ises

l e g i t i m , sol lte a be r n u r m a ßvo l l e i n g esetzt

d u rc h d r u n g e n hat, l iest sich d e r Code g a n z

We n n

werd e n . Beme rken swert ist noch der N a m e

e i nfa c h . D i e F u n ktion o n S t a r t B u t t o n C l i c k

des Parameters, der a n den i n neren Lambda-

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

W e i s e . E i n P r o m i se-Obj e kt ka pseit n ä m l i c h



e i n e zu e r l e d i g e n d e Aufg a b e u n d zwei F u n k­ t i o n e n . We n n d i e Aufg a be e rfo l g re i c h e r l e­ digt werd e n ko n n te, w i rd d i e e rste F u n ktion

B

lue

-7

man

toot

h

C

das

CD Datei I

[0 6)

0

Network

Filter

-tl

Heb B luetooth is experime n t a l on t h i s platform .

M e m ory

Oefa ult I evei s

Ve r b i n d u n g mit dem GATT - S e rver . S tJ c h e d e n S e n s o r - Die n s t . S u c h e d i e Tempe ratur - C h arakt e r i s t ik . Notifikation e n werden empfa n ge n .

e i n e Methode d e r P r o m i s e -Klasse u n d l iefert

0 2 3 . 73

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

23 . 74 23 . 71

0 2 3 . 73 0 2 3 . 74 23 . 73

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

Beha n d l u n g von F e h l e r n kü m m e rt.

X

. md

not ificat ions . j s : 7

noti f i c a t i o n s . js

: 29

See h t t p� github . c om/ not if ic a t i ons . j� n o t i f i c a t i o n s . js n oti f i c a t ions . js

: 10

: 14

n ot i f i c a t i o ns . j�

notifi c at i o n s . j� noti f i c a t i o ns . j s : 47

noti f i c a t i o ns . js : 47

notifi c a t i o n s . js

: 47

notifi c a t i o n s . js : 47

noti f i c a t i o ns . j� noti f i c at ions . js : 47 noti f i c a t i o n s . js : 47

noti f i c a t i on s . js : 47

noti f i c a t i o n s . js : 47

23 . 73

noti f i c a t i o n s . js : 47

0 2 3 . 74

Not i f ika t i on e n \o'lerden i g n o riert .

·

not i f i c ations . jB

23 . 73

23 . 74

Die Ü bergabe der F u n ktionen e rfo l g t oft

»



See h t t P.2..!..ll g� notifications . jtl

WebBlue toothCG /\-i e b • b l1.1etooth /b lob/g iJ.:.�glli.!.!r! P-1 erne n t a t ion - s t a t u s . rnd

b ra u c h von P r o m i ses, was man sch n e l l an

X

{. 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 . ' ) ; 11 return devi ce . gatt . connect < l ; 12 }) · . t h e n ( s e r v e r => { 13 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. ' ) ; 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 ; 16 }) 17 . t h e n ( s e r v i ce => { 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 . ' ) ; 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 ; 20 }) 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 ; 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 (_ = > { 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 . ' ) ; 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 ; 27 }); }) 28 29 . ca t c h ( e r ro r => { conso L e . L og ( e r ro r l ; } ) ; 30 31 32 funct i on onStopBu� tonC L i c k ( ) 33 i f (myCha racteri st i c ) { 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 ( ) 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 ; 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 ' , · 38 hand L eNot i f i ca t i on s l ; 39 }) 40 . c a t c h ( e r r o r = > '{ c o n so L e . L og ( e r ro r l ; } ) ; 41 42 43 4 4 func t i on hand L eNot i f i ca t i ons( even t ) 45 L e t va L u e = event . t a rg e t . va L u e ; const t = va Lue . get int 1 6 (0, t ruel 46 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 ;

mit den entsprechenden Button s verkn ü pft.

Klick m i c h ! Der Vortei l von Web-Anwendüngen ist, dass sie a u f so vielen P l attformen fu n ktionieren. Die Datei i ndex.html ka n n m a n zum Beispiel mit dem C h rome-Browser auf dem PC laden u n d auf d e n Sta rt-Button klicke n . D a n n öffnet sich e i n Dia l og-Fenster, in d e m der B rowser nach B l u etooth-Geräten in der N ä h e sucht. Hat e r d e n ESP32 gefu n d e n , ka n n m a n i h n ko p pe l n u n d schon sol lten d i e Te m pe rat u r­ Daten eintru d e l n . E i n Kl ick auf den Stop-But­ ton beendet den . Date n reichtu m. Wen n man noch d i e JilVaScri pt-Ko n s o l e ü be r das M e n ü Weitere Too l s

>

Entwicklertools öffnet, ka n n

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­ ben des Progra m m s a n sehen. Genauso fu n ktio n i e rt d i e Anwen d u n g im C h rome-Browser auf dem S m a rtphone. A l l er-

11 1!! 0 @ om e://b l uetooth-i ntern a l s

_

ESP32-SENSOR

Dlsconnect

��

Status Name: Address:

ESP32·SENSOR 84:E6:20:89:CF:F3

GATT Connected: Latest RSSI: Services:

Connected

·70

3

Services

Auch in der mobilen Version ist Chrome in Bezug auf Bluetooth auf dem neuesten Stand.

4 2 1 Make: ESP32 special 201 9

0

d i n g s g i bt es noch e i n paar Dinge zu beach­

tooth- o d e r B l u etooth- Low- E n e rgy-Anwen­

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

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

spiel i st. Wer versch i edene B l u etooth-Geräte

hat, bei n a h e beliebigen

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

che davon ·sein können u n d wie zeita ufwen­

a n d e re Q u e l l e n bezieht. Wer eine Web-A n­

dig und nervena ufreibend sich die Kop p l u n g

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

m uss das daher per HTTPS t u n .

ka n n . Daher i st es wichtig, sich vo r und wä h­

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­ den. ln der vorl iegende n Anwe n d u n g i st das

zeugen a u szustatten u n d vertraut zu m achen. 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­

:t '?' .oll

i

68 % 11 1 3:06

:tps://maik�schmidt.de

m

2 3.81 oc

I

S t a rt

II

St o p

I

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­ stehenden Diensten vertra ut zu machen. N u r

Fazit

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.

Anwendung.

-dab

Lesestoff für Maker Peter A. Henning

Aaron Newcomb

Linux für Maker Raspbian - das Betriebssystem des

Raspberry Pi richtig verstehen und effektiv

SmartHorne Hacks

bedarfsgerechte Lösungen zu entwickeln.

und entdecken Sie Neues!

shop;heise.dellinux-maker

ISBN 97839600901 20 · shop.heise.de/smart-home-hacks

ftJI.N

Gordon F. Williams

Charles Platt

Make: Elektronik Eine unterhaltsame Einführung für Maker,

Kids und Bastler - die Elektronik entdecken und ihre Gesetze durch beeindruckende

Experimente v�rstehen.

· ISBN 9783864903687

shop.heise.de/make-elektronik

Machen Sie aus Ihrem Haus oder Ihrer

Wohnung ein SmartHome! Lernen Sie, rnit Hausautomationssystemen individuelle .

nutzen. Entwickeln Sie Ihre Projekte weiter

ISBN 97838649051 1 7

SmartHorne Hacks

Maker-Projekte mit

JavaScript Mit Esprulno und JavaScript aus Atftilpobjekten lrrtelligente Maschinenbauen

Maker-Projekte mit JavaScript

Mit Espruino und JavaScript aus Alltagsobjekten intelligente Maschinen bauen - perfekt

geeignet für Einsteiger und für fortgeschrittene

Maker.

ISBN .9783960090779

shop.heise.de/maker-projekte

('

Diese und mehr s p annende Bücher ab 1 5 € p ortofrei unter shop.heise.de/buecher

@ heise shop

t... AG �

1 25

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. von

M a i k Schmidt

441 Make: ESP32 specia l 201 9

Alles zum Artikel

I im Web unter • make-magazin.de/x43f

S

el bst in e i n e r Weit, d i e i m m e r m e h r von

ste l l t und auch h e ute n o c h kö n n e n s i c h M u ­

d i g italen Tech n o l o g i e n a b hä ngt, s p i e l e n

s i ke r fü r d i ese s e h r s pezi e l l e K l a n g a rt b e ­ g e i stern.

a n a loge S i g n a l e weite rh i n e i n e g roße R o l l e . Das w i rd s i c h verm u t l i c h a u c h n i e ä n d e r n , weil d i e meisten physika l i schen P h ä n o m e n e,

(

Zähne zeigen

wie zum Beispiel d e r Sc h a l l , a n a log s i n d .

(

F ü r v i e l e A n w e n d u n g e n m ü ssen M i kro­

U m d e m ESP32 s o l c h e We l l e nfo rmen z u ent­

contro l l e r d a h e r a n a l og e Daten vera rbeiten

locken, muss man d e n DAC mit den Werten

oder e rze u g e n kö n n e n . Dazu b r a u c h e n sie

der entsprec h e n d e n Ku rve füttern. J e nach­

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

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 . Viele

H e lfer hei ßen A n a l og -/D i g i ta l -Wa n d l e r (ADC;

Wel l enfo r m e n

lassen

sich

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 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 ­ d u rch a u s, dass i h r S i g n a l konti n u ierlich l i nea r

g u t u n d er hebt s i c h i n s besondere bei d e r E r­ 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­ renz a b . Er hat n ä m l i c h g l eich zwei DACs m it

·

('

1 vo i d s e t up ( ) { 2 dacWr i t e ( DAC1 , 255 ) ; 3 4 5 vo i d Loop ( ) { }

(

_r

_J

______ __ __ __ __ __ ________

p ro­

An a log-/D igital Converter) bezi e h u n g sweise

Der E S P 3 2 beherrscht b e i d e D i szi p l i n e n

Constant . i no

(

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 den Anfa n g swert a bfä l lt.

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

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

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

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

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 (

(

c

Sawtoot h . i no 1 vo i d s e t up ( ) { } 2 3 vo i d Loop ( ) { 4 f o r . ( u i n t 1 6_t i = 0 ; i < 256; i ++ ) 5 dacWri t e ( DAC1 , i l ; 6 7

c

typische Verlauf der Ku rve visual isieren.

Konstant gespannt List i n g Consta n t . i n o d ü rfte d i e M i n i m a lversion eines P rog ra m m s sein, das den DAC a u f

d e m E S P 3 2 verwe n d et. i n fü nf Ze i l e n C o d e

setzt es d e n A u s g a n g swert des DAC a u f Ka n a l 1 ( G P I O - P i n 25) a uf den Maxima lwert

2 5 5 . Dazu n utzt es d i e F u n kt i o n d a c W r i t e u n d d i e Konstante D A C 1 . D i e Spa n n u n g , d i e a m G P I O - P i n 25 a n ­ l i egt, w e n n m a n d a s Prog ra m m a u f d e n E S P 3 2 l ä dt, beträgt c i rca 3,2V. Das i s t etwa s wen iger, a l s d i e erwa rteten 3,3V. U m g e ke h rt l i egt d i e A u s g a n g s s pa n n u n g knapp ü be r OV, wenn m a n e i n e 0 an DAC 1 sendet. Die a n a­ loge Weit ist e b e n n i c ht so dete r m i n istisch wie d i e d i g it a l e und hier m u s s man F ü nfe schon m a l gerade sein lassen. Sowo h l bei der E rze u g u n g als auch bei d e r Mess u n g e i n es S i g n a l s ka n n e i n iges sch iefgehen u n d etwa i­ ge F e h l e r s u m m ieren s i c h schnell a uf.

Eine Sägezahnkurve ist schnell erzeugt.

Das g i l t a u c h fü r d i e Abstufu n g des S i g n a l s . R e i n t h e o retisch s o l lte s i c h d i e S p a n ­ n u n g i n S c h ritten von 3 , 2V/2 5 6

=

1 2,5mV

verä n d e r n l a s s e n . i n d e r P ra x i s i st d a s Ver­ ha lten der DACs auf dem E S P 3 2 a be r n i c h t g a n z so l i near. D i e Q u a l ität ist d e n n o c h fü r viele Anwen d u ngen, wie zum Beispiel d i e 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 ­ chend. 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 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

o:; .,..

0"1 •-.. o••·­ Q l. Oro' to•,.. D • •.,

o-�

0•··­ o·o .. ....... o .. c,.�o .-._._ o ..._. ""' ­ O • P0 • ..,_...,. o ,_ o .. ... ..... 0 • · 0..0.'"" o o.., (J

Serie l l e r P l otte r zu a ktivieren. Der l iest

Obwo h l d e r Draht n i cht be r ü h rt wu rde,

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

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

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

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

(""', � n

(""', (""',

0 n 0

0 (""',

(""', n n n � 0 0

(I n n

T ou c h S w i t c h . i n o 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

20; c o n s t u i n t 8_t T H R E S H O L D ' c o n s t u i n t 8 - t L E D�P I N = 2 '. boo l touc hedTO boo l touc hedT3

= =

false; false;

v o i d T O w a s A c t i va t e d ( ) touchedTO = t rue; vo i d T3wasAc t i va t ed ( ) { touchedT3 = t rue; voi d setup ( ) { S e r i a l . be g i n ( 1 1 5 2 00 l ; p i n M o d e ( L E D_P I N , O U T P U T ) ; touchAt t a c h l n t e r rupt ( TO, TOwasA c t i vated, THRESHOLD l ; touchAt t a c h l n t e r rupt ( T3, T3wa sAc t i va t ed, THRESHOLD l ; voi d Loop ( ) { i f ( touchedTO){ touchedTO = fa l se ; Seri a l . pr i nt l n ( "Sensor TO" ) ; d i g i t a l W r i t e ( L E D_P I N , H I G H ) ; ; f < t ouc hedT3 ) { t o u c h edT3 = f a l s e ; S e r i a l . p r i n t l n ( " S e n s o r T3 " ) ; d i g i t a l W r i t e ( L E D_P I N , L O W ) ;

Make: ESP32 special 20 1 9 l

57

B E R Ü H R U N GSS E N SO R E N

Aktive Lautsprecher müssen nicht u nbedingt aus dem Elektronik-Handel kommen. Mit Instant-Pulver sind die Klavier� Tasten in knapp zwei Stunden fertig.

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

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

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

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 .

80.

Das I nternet ist d a h e r vo l l von P roj ekten, man

zu m

Beispiel

mit

Ta sten

aus

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

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.

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 ' bes c h rä n ken, d i e Booleschen va r i a b l e n a b­

Rückga bewert

der

F u n kt i o n

Wacke l p u d d i n g l ä sst sich l e i c h t herste l l e n u n d vera rbeiten u n d d i e n t i n d iesem F a l l a l s 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 . Schon bei wen i g e n Sensoren wi r d d a s P ro­

LED a u sgescha ltet.

rü h rt wird.

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 zeigt, w i e sie ve rwe n d et w i r d .

Ü b r i g e n s m a g es verlockend e rsc h e i n e n , 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

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

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­

Für

das

vorliegende

P roj e kt

d ienen

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 Lötko l be n m i t e i n e r fe i n e n Spitze ist das per-

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 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

Schwabbeltasten 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

i n a ktiv ( f a l s e ) sind. Diese beiden Va riablen

zu Test- und

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

( t r u e)

oder

Entwickl u n g szwecken a u s­

reichend, macht a ber n icht viel h e r. E i n e der

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.

58 1 Make: ESP32 special 201 9

fekte Werkzeug, u m Löcher fü r d i e J u m pe r­ Ka bel in d i e G l ä sc h e n zu p i e ksen, n a c h d e m d e r I n h a l t fest geworden i st. N a d e l n o d e r Ä h n l iches e i g n e n s i c h n i cht so g ut, w e i l d a s

u

J e l lyPi ano . i no

erke n n e n . Um das P roje kt e i nfach zu ha lten,

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

u nterstützt das Klavier n u r die acht Tö n e

18

Material sch n e l l s p l ittert. Das Ga nze fu n kt i o n i e rt a u t h p r i m a m i t Fertig-Prod u kten a u s d e m Kü h l re g a l des ö rt­

/

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

c

a u c h i n u ntersc h i e d l i c h e n Fa rben u n d Geschmacksricht u n g e n . Der Fa ntasie sind h i e r ka u m G renzen gesetzt. 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 i eren, s i n d zwe i P r o b l e m e zu l ö s e n . Z u m

e i n e n m u s s d e r E S P 3 2 versch iedene. Tön e e r­ zeu g e n . Darü ber h i n a u s m u ss es e i n e Mög­ l i c h keit geben, u ntersch i ed l iche Eingaben zu

e i n e r O ktave. A u ßerdem ste hen m e h r Sen so­ ren j a a u c h n icht zur Ve rfü g u n g . 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

19 r·

20

verg l e i c h sweise e i n fa c h . A u fwe n d i g e r ist 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­ sprü n g l ic h sol lte d a s P roje kt d i e Tö n e m ittel s 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 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

21

C'

verwe n d e n . Die g i bt es a be r fü r d e n E S P 3 2 s u n g gewäh lt, die geri n gfü g i g ko m p l izierter i st, a ber weita u s mehr Potenzi a l hat. Statt e i n e s S u m mers n u tzt das Wa ckel­ p u d d i n g -Kiavier n ä m l i c h eine 3 , 5 m m - Ki i n ­ 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­ s p re c h e r o d e r einem O h r h ö re r verb i n d e n l ä sst. Solche Kl i n ke n buchsen g i bt es i n u n te r­ 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 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 da her. Wer s i c h etwa i g e Löta rbeiten erspa­ ren m öchte, g re ift am besten zu e i n e m koste n g ü n stigen u n d leicht wiederverwen d ­ Auf e i n e n Verstä rker w u rd e bewusst ver­ zichtet, weil es ei nfi3 c h e r i st, e i n e n O h r h ö re r

,..... '

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­ bauten Verstärker zu verwe n d e n . Die g i bt es 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 einen ordentl i c h e n S o u n d .

H a rd.w a re, Software, Wetwa re

23 24

noch n icht u n d so w u rd e e i n e a ltern ative Lö­

b a r e n Term i na l a d a pter.

22

('

25 26 27 2 8. 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

# i n c l ud e "Mus i c D ef i n i t i on s . h " ; # i n c l u d e " X T_D A C_A u d i o . h " ; c o n s t u i n t 8_t T H R E S H O L D

=

1 5;

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 ) ; i i i i i i i i

n t 8- t n t 8- t n t 8- t n t 8- t n t 8- t n t 8- t n t 8- t n t 8- t

S C O R E- C 5 [ J S C O R E- D 5 [ ] S C O R E_ E 5 [ J S C O R E- F 5 [ ] S C O R E-G 5 [ ] S C O R E -A 5 [ J S C O R E -8 5 [ ] S C O R E- C 6 [ J

{ { { { { { { {

N O T E_C 5 , N O T E_D 5 , N O T E_E 5 , N O T E_ F 5 , N O T E_G 5 , N O T E_A 5 , N O T E_B 5 , N O T.E..LC 6 ,

S C O R E- E N D S C O R E- E N D S C O R E- E N D S C O R E-E N D S C O R E- E N D S C O R E- E N D S C O R E-E N D S C O R E -E N D

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 , I N S i R U M E N T_P I A N O , 1 ) ; 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 , I N S T R U M E N T_P I A N O , ' 1 ) ; 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 , I N S T R U M E N T_P I A N O , 1 ) ; 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 , I N S T R U M E N T_P I A N O , 1 ) ; 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 , I N S T R U M E N T_P I A N O , 1 J ; 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 , I N S T R U M E N T_P IA N O , 1 ) ; 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 , I N S T R U M E N T_P I A N O , 1 ) ; 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 , I N S T R U M E N T_P I A N O , 1 ) ;

}; } ,. } ,. } ,. } ,. } ,. } ,. } ,.

T E M P O_A L L E G R O , T E � P 6 _A L L E G R O , T E M P O_A L L E G R O , T E M P O_A L L E G R O , T E M P O_� L L E G R O , T E M P O_A L L E G R O , T E M P O_A L L E G R O , T E M P O_A L L E G R O ,

v o i. d s e t u p O { S e r i a l . be g i n ( 1 1 5 2 DO > ; vo i d loop ( ) { DacAudi o . Fi l lBuffer ( ) ; p l a y_n o t e ( T O , C 5_N O T E ) ; p l a y_n o t e ( T 3 , D 5_N O T E ) ; p l a y_n o t e ( T 4 , E 5_N O T E ) ; p l a y_n o t e ( T 5 , F 5_N O T E ) ; p l a y_n o t e < T 6 , G 5_N O T E ) ; p l a y_n o t e ( T 7 , A 5_N O T E ) ; p l a y_n o t e ( T 8 , B 5_N O T E ) ; p l a y_n o t e ( T 9 , C 6_N O T E ) ; }

I

I

I

I

J

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 ) { 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 ) ; S e r i a l . pr i n t l n ( va l ue ) ; if (va l u e < THRESHOLD ) { i f ( note . P layi ng == f a l s e ) Da cAud i o . P l a y < ¬ e ) ; d e l ay ( 1 00 ) ; }

.I

I I

----·-...J

Soba l d d i e H a rdwa re steht, m u ss d e r ESP32 fü r jeden Touch-Sensor noch u ntersch iedliche Tö n e e rzeugen und dazu e i g n e n sich d i e

ten ka n n s i e a u c h WAV-Date i e n a bs p i e l e n .

verwendet werden s o l l u n d d i e Nummer des

Dig ita l -An a l og-Wa n d l e r (DAC) hervorragend.

A l l e rd i n g s ist i h re S c h n ittstel l e ste l l enweise

zu verwendenden Timers. Die B i b l iothek er­

etwa s e i g e n wi l l ig .

zeugt die Klänge n ä m l i c h i nterru ptgesteuert

Die e i g e n t l i c h e K l a n g e rze u g u n g ü be r­ n i m mt

die

Bibl iothek

XT_DAC_A u d i o

D a s List i n g J e l l y P i a n o . i n o b i n det z u n ä c h st

( h t t p ://www .xtro n i ca l . c o m /t h e - d a c a u d i o ­

d i e z u r B i b l i ot h e k g e h ö r e n d e n Date i e n e i n

l i b ra ry-dow n l oa d -a n d - i n sta l l at i o n/). Deren

und

d efi n i e rt

eine

Ko n stante

fü r

den

im H i nterg rund. Es fo l g e n a c h t Vari a b l e n , welche d i e zu spielenden Tö n e defi n ieren. P r i n z i p i e l l sol lte

Z i p-Arc h i v l ä sst s i c h n a c h d e m H e r u nter­

Schwe l l we rt d e r To uch-Sensoren. D a n n w i rd

es mög l i c h sein, die Tö n e d i re kt a bzuspielen,

l a d e n ü be r d e n B i b l i ot h e ksve rwa lter d e r

e i n O bj e kt d e r Klasse X T _D A C_A u d i o_c l a s s

a be r d i e Dokumentation d e r B i b l iothek i st

Ard u i n o-IDE i n sta l l ieren.

a n g e l egt, d a s s i c h u m d i e Kom m u n i kation

d iesbezü g l ic h sehr s pä r l i c h . Des h a l b werden

Der F u n kt i o n s u m fa n g d e r B i b l i o t h e k ist

m it d e m DAC kü m m e rt. A l s A r g u mente

die Va r i a b l e n in Form von M u s i kstücken

recht g roß und n e b e n d iversen l n stru m e n -

beko m m t es d i e P i n - N u m m e r des DACs, der

defi n i e rt, d i e nur eine N ote lang sind. Diese

Make: ESP32 special 201 9 l

59

BERÜ H RUNGSSENSOREN

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 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

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

d i e Konstante S C O R E_E N D i st. Die eigentl ichen M u s i kstücke werden a l s

b u c h se m i t Pin 25 u n d e i n e m Masse- P i n des

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 das M u s i kstü c k ü b rigens e n d l os wiederholt.

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 .

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

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

Die

s e t u p - F u n ktion i n itia l i siert nur die

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ö­

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

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 ) .

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­

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

Erste Sch ritte

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­

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 . htm l ) .

tragenen Zei l e n u r e i n Lin efeed u n d kei n Car­ riage-Retu rn sendet. Hat a l les geklappt, d a n n

m a n in der Ko nsole das Ko m m a ndo h e L p ein,

l i stet d e r I nterpreter a l l e Befe h l e auf, die er versteht. Daru nter ist a u c h der Befe h l a b o u t

BEVOR · E I N E SICHERUNG DURCH BRENNT N e u e re Vers i o n e n des ESP­ IDF h a be n d i e u n a ngeneh­ m e E i g e n h eit, e i n e d e r Sich e r u n g e n (eFu se) i m ESP32 d u rc h b r e n n e n zu l a s s e n , wen n n e u e Softwa re

tomatisch m i t d e m e s p t o o L (https://g it­

Ansch l ießend m u s s m a n m i t e s p e f u s e . p y

h u b.com/e s p ressif/espto o l ) i n sta l l iert wird.

d e n Schreibsch utz fü r d i e S i c h e r u n g mit

Das ist e i n e Sa m m l u n g von Prog ra m m en,

dem N a m e n C O N S O L E_D E B U G_D I S A B L E

d i e im täg l ic h e n U m g a n g m i t d e m ESP32

a ktiviere n : .

g roßen N utze n stiftet. Alle Prog ra m m e s i n d i n d e r Progra m m ierspra c h e Pyt h o n (https://www.pyt h o n .org/} gesch rieben

e s p e f u s e . py -po r t w r i t e_p r o t e c t_e f u s e C O N S O L E_D E B U G_D I S A B L E

a ufs Board ge­

u n d fu n kt i o n i eren sowo h l mit Pyt h o n 2.7

spielt w i rd . So­

a l s a u c h mit Pyt h o n 3 .4.

Der Parameter port- n a m e m u ss d u rc h den

Wer d i e ESP- I DF-Tool c h a i n i n stal l iert hat,

werden, mit der das ESP32-Board verbun­

bald d iese Sichening d u rc h g e b ra n n t i st, ka n n m a n n icht m e h r a u f d i e ROM-Ko n s o l e u n d i h re n BAS I C -I nterp rete r z u g reife n . D a m i t w ä r e es dann nicht mehr m ö g l i c h , d i e Beispiele a u s diesem Arti kel nachzuvo l lzi e h e n . Es g i bt a be r e i n e ei nfa c h e Mög l i c h keit, die S i c h e r u n g vor d e m D u rc h bren n e n zu sch ütze n . Wer a l·so später noch Z u g riff auf d i e ROM-Ko n s o l e h a be n möc hte, sol lte d ies u n bed i ngt t u n ! Z u r Ma n i p u l at i o n d e r eFuses bietet Espres­ sif das Werkzeu g e s p e f u s e . py an, das a u -

Namen der serie l l e n Schn ittste l l e ersetzt

hat mit g roßer Wa h rsch e i n l i c h keit a u c h

d e n i st. H ä ngt das Boa rd bei s p i e l sweise

einen Python-l nterpreter. Das g i lt i nsbeson­

u nter Windows a n Port COM6, d a n n l a utet

dere fü r die M i nGW- I n sta l lation u nter Win­

die Anwei s u n g :

d ows. Mit d e m Python-Pa ketmanager p ; p

e s p e f u s e . p y - p o r t C O M 6 w r i t e_p r o ­ t e c t_e f u s e C O N S O L E_D E B U G_ D I S A B L E

ka n n m a n e s p t oo L wie folgt i n sta l l ieren: p i p i ns t a l l e s p t o o l Auf m a n c h e n U m g eb u n g e n , u nter a nd e­ rem u nter M i n GW, fü h rt d i eser Befe h l zu e i n e m F e h l er. Dort ka n n m a n a lternativ das fol g e n d e Ko m ma n d o verwe n d e n : p y t h o n -m p i p i n s t a l � e s p t oo l

Wei l d i e Auswi rku n g e n des Ko m ma n dos u n u m kehrbar s i n d , m u s s man die Aktion bestätigen, indem man d a s Wort B U R N (al les i n Großbuchsta ben) e i n g i bt. A n ­ s c h l ießend ka n n d i e ROM-Ko n s o l e n i e m e h r deaktiviert werd e n .

Ma ke: ESP32 specia l 201 9 1

63

BASIC I

t----------------

P uiiTV Reconfi:gri!J ra,tt oA

!i

?

X

sen, d a m it m a n bei Bed a rf noch e i n paar Zei­ l e n e i n s c h i e ben ka n n . Der fo l g e n d e K l a s s i ke r g i bt d e n Text

Category: l1 · · Sessiorn L . Logging

I

..

�aG;.illeM · > · Keyb oard ! . Bell ! L . Features ... ..

t;� . Window .

, .... �peararnce , .... Beha'lll i ol!lr

, . .. Translation ' ... Se1ectiorn : , . . Colol!lrs ß . Ccmnection L . senal '

.

. .

Options corntrolling the tennirna1 eml!llatiorn

I

Set v a rio lJis. tenninal options

121 A.!rto wrap mode irnifial!Y orn D D EC Orig in Mode irnitial!Y orn D lmplicit OR in every l.JF D lmplicit ILF 1in every OR 121 Llse backgrol!ll'ld oolol!lr to erase screern D Enable lllirnkirng text AAswerback to "" E: PuTTY

I

Urne disciplirne optiorns. Local echo : @ Force ,o rn 0 A.!rt o Local line edit irng : @ Force on O A.rt o

" " H a l lo, M a ke-Magazi n ! so l a n g e a u s, bis m a n d a s Progra m m stoppt: 1 0 PRINT Ha l lo, Make-Magaz i n ! 2 0 GOTO 1 0

l n Zei l e 1 0 g i bt d a s Prog ra m m d e n ge­ w ü n schten Text m i t d e m pr i n t - Befe h l a u s . D i e g o t o-Anwe i s u n g i n Zei l e 20 i st e i n e u n ­

b e d i ngte S p r u n g a nwe i s u n g , d i e d i e Ko ntrol­

l e wieder an die Zeile 1 0 ü berg i bt. D ? m it er­ g i bt sich e i n e E n d l ossch l eife, d i e nichts a n d e­ res tut, a l s i m m e r d iesel be Nach richt a u szu­

I

geben. B e n a n nte Prog ra m m p u n kte (Labels) ke n n t T i n y BAS I C n i cht und die Arbeit mit 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­ sichtlich. Damit m a n d a s P rogra m m stoppen ka n n ,

0 Force off 0 Force off

m u s s m a n es erst e i n m a l sta rten u n d das ge­ schieht mit dem Befe h l r u n . We n n man sich a n d e r Ausgabe satt gesehen hat, hält m a n 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.

So sollte die PuTTV-Konfiguration für die Arbeit m it der ROM-Konsole aussehen.

Zwi schen die Zei l e n 1 0 und 20 ka n n m a n 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 : 11

REM Zurück zum Anfang

Den Q u e l l text d e s Prog ra m m s fö rdert d a s l i s t -Ko m m a n d o zutage u n d fü r das a ktue l l e

Prog ra m m s i e h t e r so a u s : 1 0 PRINT H a l lo, Make-Maga z i n ! 1 1 REM ZURüCK ZUM AN FANG 20 GOTO 1 0

Der I n terpreter g i bt S c h l ü sselwörter u n d Ko m m e nta re i m m e r i n G ro ß b u c h staben a u s . A n s o n sten sieht d e r C o d e g e n a u s o a u s, wie er e i n g egeben w u rde. We n n m a n g e n u g von s e i n e m P rog ra m m hat, ka n n man es mit n e w löschen u n d e i n neues e i n g e b e n .

H a c ken wie in den Achtzigern Soba l d m a n m it d e n g r u n d legenden Eigen­

Die erste Begegnung mit der ROM-Konsole ist wenig spektakulär.

sch aften d e s I n te r p reters vertra ut i st, ka n n

und der g i bt e i n paar I nfo rmationen ü ber den

beka n nte Befe h l e q u itt i e rt e r m it e i n e m

I nterpreter aus. Die Konsole i st offenbar eine

" What?" u n d u n vo l l stä n d i g e Anwei s u n g e n m it d e r M e l d u n g " H ow? " .

Erweiterung

von

TinyBasic

Plus

( https:/I

githu b.com/Bieullama/Ti nyBasicPius) u n d Es­

Wie bei d e n m e i sten BAS I C - D i a l e kten

pressif hat d ieser Variante den Namen " ESP32 ROM Basic " gegeben. Dass dem Basic 32.532

ka n n m a n a u c h m i t dem ESP32-BAS I C nicht

Bytes a n H a u ptspeicher z u r Verfü g u n g ste­

g a nze P rog ra m m e entwicke l n , i n d e m m a n

hen, wei ß der m e m-Befe h l zu berichten.

d e n A n we i s u n g e n Zei l e n n u m m e r n vora n ­

nur e i n ze l n e

Befe h l e a bsetze n, s o n d e r n

m a n s i c h fortg esch ritten e n Themen zuwen­ d e n . Ä ltere Sem ester e r i n n e r n sich gewiss n o c h an die Peek- und P o ke-Befe h l e, m i t d e n e n m a n Speichera d ressen a u s l esen u n d besc h reiben ko n n te. Die fu n ktionieren a u c h a u f d e m ESP32. D i e fo l g e n d e A n we i s u n g g i bt z u m Bei­ spiel d e n I n h a lt d e s U A RT_DATE- Reg i sters d e r serie l l e n S c h n ittste l l e UARTO a u s :

Bei der E i n g a be u ntersc h e i d et d e r I nter­

stel lt. Die N u m merieru ng ka n n d a be i frei g e ­

PHEX PEEKC&h 3 F F40078 J

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

64 1 Make: ESP32 special 201 9

\

p o k e_b l i n k . b a s

\ \

(' r c

\

10 20 30 40 50 60 70

\

1 0

b l i nk . ba s

\

' B l i n ke r POKE &H3 F F44020, 4 POKE &H3 Ff44004, 4 D E LAY 200 POKE &H3 F F44004, 0 D E LAY 200 GOTO 30

1 0 IODlR 2,1 20 FOR A=1 TO 1 0 (' 3 0 lOSET 2,1 40 D E LA Y 200 lOSET 2,0 50 60 D E LAY 200 r , 7 0 'N E X T A

(

(' --""'·

U A RT_DATE- R e g i sters d ire kt a n g e b e n . l n

Vö l l ig a n a l o g schaltet Zei l e 30 d i e LED e i n ,

d i esem F a l l ist d a s d i e H exadezi m a l-Za h l

i n d e m i m Reg i ster G P I O_O U T_R E G das Bit fü r

3 F F400 78. S o l c h e Za h l e n beg i n n e n i n T i n y BAS I C m i t dem P räfix " &h " . Der p e e k - Befe h l l i est den Speicher- I n h a l t a n d e r Ad resse a u s

den G P I O - P i n 2 g esetzt wird. D a m i t w i rd d e r

u n d g i bt i h n . a l s 3 2 - B it-Za h l zu rück. D i ese Za h l w i rd dann wiederu m m i t h i lfe d e r p h e x ­

P i n i n d e n Zusta n d H I G H versetzt u n d d i e Status-LED l e u c h tet. S o m i t e n t s p r i c h t d i ese

Anweisung dem Aufruf von d i g i ta L W r i te < 2 , H I G H l i n d e r A rd u i n o- I DE.

F u n ktion a l s hexadezi m a l e Za h l a u sgegeben.

Der Del ay-Befe h l wa rtet 200 M i l l i s e k u n ­

Solche Ad ressen m u ss man sich ü be r die

den l a n g u n d d e r a n s c h l ießende p o k e -Befe h l

M e m o ry Map im Date n b l att (https ://www. e s p ressif.com/sites/defa u l t/ fi l es/d o c u m e n

s c h a l tet d i e Stat u s c L E D w i e d e r a u s. N a c h . e i n e r wei teren P a u se sorgt d i e g o to-Anwei­

tatio n/es p32_data s h eet_en .pdf) u n d d i e Be­

s u n g d afü r, dass das g a nze S p i e l von vorn

s c h re i b u n g e n der Reg ister i m Tec h n ical Re­

beg i n nt.

fe rence M a n u a l (https://www.es p ressif.com/

Statt das Prog ra m m m ü h s a m in de n I nter­

s i tes/defa u l t/fi l e s/d o c u m e n t a t i o n /e s p 3 2_

p reter zu tippen, ka n n man es a u c h in e i n e n

tec h n ica l_referen ce_m a n u a l_e n .pdf) zusam­ m e n s u c h e n . L e i d e r ist d i e D o k u m entat i o n

beliebigen Text- Editor l a d e n u n d m ittel s der

n icht a l lzu ü p p i g .

nen in das Fenster des serie l l e n M o n itors ko­

Das Geg e n st ü c k zu p e e k h e i ßt p o k e u n d m i t d iesem Befe h l ka n n m a n Speicher- I n ha l ­

normalen Ko p i e rene u n d Ei nfü g e n -Operatio­ p i e r e n . Der r u n - Befe h l sta rtet d a n n d a s g roße B l i n ke n .

t e verä n d e r n . We i l d e r E S P 3 2 m i t m e m o ryc

We i l d a s H a ntieren m i t festen Ad ressen

m a p ped 10 arbe itet, a l s o S p e i c h e ra d ressen

u n d e i n ze l n e n B its m ü h s a m und fe h l era nfä l ­

a u f H a rdwa re-Reg i ster a b b i l d et, wi rken sich solche Ä n d e r u n g e n oft auf das Verhalten der

l i g i st, hat Espressif s e i n e r BASI C-Va ria nte e i n

B a u stei n e i m ESP32 a u s . Beispielsweise ka n n

Z u g riff a u f d i e G P I O- P i n s vere i n fa c h e n . Wie

m a n d u rc h Verä n d e r u n g d e r Werte a n d e n

s i e fu n kt i o n i e re n zeigt L i st i n g i o_b l i n k.bas,

richtigen S p e i c h e ra d ressen G P I O - P i n s e i n ­

das d i e Status-LED zeh n M a l b l i n ke n l ä sst.

p a a r Befe h l e s p e n d i e rt, d i e z u m i n d est d e n

u n d a u sschalten. Listing po ke_b l i n k.bas de­

Die e rste Anwe i s u n g im Prog ra m m n utzt

m o n striert d a s und l ä sst die Status-l.'ED des

d e n i od i r - Befe h l , d e r ko ntro l l i e rt, ob e i n

Entwickl u n g s bo a rd s b l i n ke n .

G P I O - P i n e i n E i n g a n g o d e r e i n A u s g a n g ist.

Das P rog ra m m beg i n n t m i t e i n e r Ko m �

Dazu ü be rg i bt man die N u m m e r des P i n s

m e n t a rze i l e, d i e d i e s m a l n i cht m i t d e m

und eine 1, wenn er ein Ausgang sein soll.

Sch l ü sselwo rt r e m, s o n d e r n m i t e i n e m Apo­

Andernfa l l s e i n e 0. l n d iesem Fa l l m a c h t d e r

stroph e i n g e l eitet wird. Das i st eine a lterna­

Befe h l d e n G P I O- P i n 2 z u m Ausga n g .

tive Sch reibweise fü r Ko m m e ntare.

l n Zeile 20 beg i n nt e i n e f o r-Sc h l eife, d i e

Ze i l e 20 b e n utzt den p o k e - Befe h l , u m d a s Reg i ster G P I O_ E N A B L E_ R E G

ZU

i n BAS I C i m m e r e i n e Zä h l s c h l eife i st, a l so v o n

beschrei­

e i n e m Anfa n g swert b i s zu e i n e m E n d we rt

ben. D i e s e s Reg i st e r k o n t ro l l i e rt, w e l c h e r

zä h lt. H ie r zä h l t die S c h l eife von 1 b i s 1 0 u n d

G P I O- P i n e i n A u s g a be- P i n i st. l n d i esem Fa l l

weist d e r Va r i a b l e n A d e n jewe i l i g e n S c h l e i ­

sol l e s P i n 2 s e i n , w e i l d e r m it d e r Status-LED

fen i ndex zu. Va r i a b l e n m ü ssen i n BASIC ü b r i ­

d e s B o a r d s verb u n d e n i st. Dazu muss der

g e n s n i c h t d e k l a r i e rt werd e n u n d kö n n e n

Wert 4 a n d i e Reg i ster-Ad resse g e s c h r i e b e n

jeden beliebigen Wert a n ne h m e n .

werd e n , w e i l d a s Reg i st e r 3 2 B i t s b r e i t i s t u n d j e d e s d i e s e r B i t s fü r e i n e n d e r G P I O ­ P i n s 0-3 1 steht. G P I O - P i n 2 w i rd a l so d u rc h

l n d e r S c h l e ife setzt d a s P rog ra m m d e n

G P I O - P i n 2 a u f den Wert H I G H u n d s c h a l tet d a m it d i e Statu s - L E D e i n . Dazu d i e n t d i e

d a s d ritte B i t reprä s e n t i e rt u n d wen n m a n

i o s e t -Anwei s u n g . Die erwa rtet d i e N u m me r

d a s a u f 1 setzt, e rg i bt d a s d e n Wert 4. Dieser Befe h l ist a l so ,d a s Ä q u i va l e n t z u r A n w e i ­

des G P I O- P i n s u n d entwed e r d e n Wert 1

sung p i n Mod e ( 2 , U mgebung.

Tools . fli r M a ker

O U T P U T > i n d e r A rd u i no­

( H I G H ) o d e r 0 ( LOW) . N a c h �e i n e r ku rzen Pause sorgt i o s e t d a n n dafü r, dass das Licht 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

M a ke: ESP32 special 20 1 9 l

65

@ heise shop

BASIC �···-

Fans von Tiny BASIC finden auch auf dem Arduino eine Version.

Das BASIC gibt gern ein wenig über sich preis,

Fazit

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

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 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­

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

Lässt m a n d a s P ro g ra m m im I nterpreter l a ufen, d a n n verh ä lt es sich exa kt so, wie d i e 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 u m Lä n g e n l e s b a re r.

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

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 o h n e I D E.

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

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 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 .

E S P 3 2 d u rc h b re n n e n

lassen.

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

Ist das denn sicher?

Da m it e i g net sich die Ko n s o l e h e rvorra­

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 ­

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

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 ­

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­

m e i sten

S i c h e r h e itsexperten

n e h i n n u r 4 KB bea n s p ru c ht. Wer a l so tat­

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.

66 1 Make: ESP32 special 20 1 9

-dab

Fü r M a ker! Bauprojekte und Zubehör Make:



..;::;,, i. .(( · ·i •== - ·�: :



. ! ;:

.

• -· i ! . -!i -· · • .. . !' .. . ... ... - · �·

.

!MI'

-·.

·-

shop.heise.de/gadgets

LED-Nixie Platine

•·



MaXYposi-Proj ekt haben Sie

M i t d e m Komplett-Bundle zum

Persistence o f Vision nutzt d i e

für eine Stelle mit bis zu

Trägheit d e s Auges u n d gaukelt

zehn Zeichen einer LED-Ni­

drei entscheidende Teile zum

dem Betrachter ein dreidimensi-

xie-Anzeige, wie sie i n der

Bau Ihres eigenen Multitools:

Bi l d vor, obwohl s i c h nur

Make 4/201 8 vorgestellt

.

MaXYposi-Bundle

M i n i POV-Giobus

Komplett bestückte Platine

die Schrittmotorsteuerung mit

ein Streifen mit LEDs bewegt.

wurde. Die Platinen sind

über die Stiftleisten anreih- ,_._"..

bar. Je zwei der RGB- LEDs beleuchten eine Ziffer - die

CPU, die Kontrollpult-Platine und

Mit diesem umfangreichen

die Step-Encoder-Piatine. Im

Bausatz holen Sie sich die

Komplettpaket sparen!

beeindruckende Illusion nach

Farbe wird in der Software auf dem Arduino eingestellt.

Hause.

shop.heise.de/max y posi-bundle

shop.heise.de/pov-globus

shop.heise.de/nixie-platine

VAR IOBOT

Calliope m i n i

Bausätze

Alle können coden -

Make NanoSynth

und das m it ganz viel

Der SAM2695 von

Die krabbelnden Monster

Spaß! Mit wenigen

zum Löten oder Zusam­

Klicks können auf einem

m enstecken ermöglichen einen spielerischen Einstieg in die Weit der Elektronik und Robotik.

DREAM ist ein mehr­ sti mmiger M I D I -Wavetable -Synthesizer m it

angeschlossenen Rech­

Effekteingang auf 5 x 5 Q uadratmillimetern und

ner eigene Programme

bietet volle Polyphonie mit 1 28 GM-Standardinstru­

für den M icroprozessor entworfen werden , die den

rii e nten, verschiedenen Drumkits und Effekten .

Calliope m i n i zum Leben erwecken.

Vorgestellt i n Make 1 / 1 8 !

Ausgestattet mit Sensoren und Schaltern, i m Handumdrehen zusammengebaut,

Auch erhältlich : Gase oder Starter-Set!

erhältl ich in mehreren Farben !

shop.heise.de/calliope

shop.heise.de/variobot

shop.heise.de/make-s y nth

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

Makey Lötba usatz

Make : Teatimer "Teeodohr"

Das blinkende Maker- Faire-Maskottchen

Teeodohr überwacht die Ziehzeit I h res Heiss­

Makey ist ein H i ngucke r und auch der ideale

getränks zwischen 3 und 12 M inuten auf die

Einstieg für die ersten eigenen Löterfahrungen.

Sekunde genau, sobald Sie ihm die Karotte ins

Die konturgefräste Platine kommt zusammen

Pfötchen drücken. Kompletter Bausatz ohne

mit Zubehör u n d Leuchtdioden, die den Ein­

Batterie und Lötzin n .

druck e i nes pulsierenden Herzens erwecken .

Jetzt n e u m i t Schalter!

Nachproduktion läuft. Jetzt vorbestellen !

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 die Laufzeit des Angebotes.

Jetzt bestellen:

Für nur 15,60 Euro statt 21,80 Euro.

make-magazi n.de/miniabo