Leseprobe-Sensoren am Raspberry Pi 2

Page 1

Florian Schäffer

Dieses Buch richtet sich an jeden, der seinen Raspberry Pi 2 mit dem aktuellen Windows 10 IoT Core betreiben will. Wie das geht, zeigt der Autor mit dem Entwicklungssystem Visual Studio und Visual Basic als Programmiersprache.

Die Funktionsweise und Beschaltung der einzelnen Sensoren wird ausführlich erklärt und ihre Verwendung durch die gut dokumentierten Visual Basic-Beispielprogramme leicht nachvollziehbar gemacht.

SHARE

Elektor-Verlag GmbH 52072 Aachen www.elektor.de

Als Einstieg in die Materie wird in diesem Buch auf das auch bei Elektor erhältliche 37 Module umfassende Sensor-Kit zurückgegriffen. In diesem populären Set sind die Sensoren auf einer kleinen Platine montiert und mit Steckverbindern ausgestattet, was den Anschluss via Breadboard oder Drahtbrücken vereinfacht. Mit den auch für Einsteiger einfach anzuwendenden Sensor-Modulen lassen sich schnell erste Erfolge erzielen, ohne dass man groß in die Materie der Elektronik einsteigen muss.

Alle Beispielprogramme gratis auf www.elektor.de

DESIGN

ISBN 978-3-89576-308-3

Inzwischen gibt es eine große Auswahl an kleinen SensorModulen, die problemlos an den RPi 2 Mod. B angeschlossen werden können – auch wenn sie mitunter für andere Systeme beworben werden, wie etwa für den Arduino. Nicht ohne Grund: Einplatinencomputer sind ohne zusätzliche Peripherie für Elektroniker ziemlich nutzlos. Sie stellen zwar die Rechenleistung und ein Betriebssystem bereit, können aber so gut wie gar nicht mit ihrer Umgebung kommunizieren. Damit ein Computer auch Einfluss auf seine Umwelt nehmen kann, sind Sensoren und Aktoren erforderlich, die von einer Software gesteuert werden, die man selber erstellen kann.

SENSOREN AM RASPBERRY Pi 2

Diplom-Informatiker Florian Schäffer verfügt über langjährige Erfahrung als Dozent und in der praktischen Entwicklung von Hardund Softwarelösungen für die Fahrzeugdiagnose und im Bereich Mikrocontroller und Embedded-Systeme. Seine Sachbücher werden seit über 15 Jahren von Einsteigern und Profis als verlässliche Informationsquelle genutzt.

SENSOREN AM RASPBERRY Pi 2

SENSOREN AM RASPBERRY Pi 2

MIT WINDOWS 10 IoT CORE UND VISUAL BASIC

FLORIAN SCHÄFFER

MIT WINDOWS 10 IoT CORE UND VISUAL BASIC

Florian Schäffer LEARN

DESIGN

SHARE

LEARN

LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESI ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● S GN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DES ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ●


Sensoren am Raspberry Pi 2 Mit Windows 10 IoT Core und Visual Basic

● Von Florian Schäffer

an Elektor Publication LEARN

Sensoren am Raspberry PI.indd 3

DESIGN

SHARE

18-01-16 09:55


© 2016: Elektor Verlag GmbH, Aachen.

Alle Rechte vorbehalten.

1. Auflage 2016

Die in diesem Buch veröffentlichten Beiträge, insbesondere alle Aufsätze und Artikel sowie alle Entwürfe, Pläne, Zeichnungen und Illustrationen sind urheberrechtlich geschützt. Ihre auch auszugsweise Vervielfältigung und Verbreitung ist grundsätzlich nur mit vorheriger schriftlicher Zustimmung des Herausgebers gestattet. Die Informationen im vorliegenden Buch werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Die in diesem Buch erwähnten Soft- und Hardwarebezeichnungen können auch dann eingetragene Warenzeichen sein, wenn darauf nicht besonders hingewiesen wird. Sie gehören dem jeweiligen Warenzeicheninhaber und unterliegen gesetzlichen Bestimmungen. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autor können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für die Mitteilung eventueller Fehler sind Verlag und Autor dankbar. Koordination: Rolf Hähle Korrektorat: Kurt Diedrich, Alsdorf Umschlaggestaltung: Elektor, Aachen Satz und Aufmachung: D-Vision, Julian van den Berg | Oss (NL) Druck: WILCO, Amersfoort (NL) Printed in the Netherlands

ISBN 978-3-89576-308-3

Elektor-Verlag GmbH, Aachen www.elektor.de 149001-1/D

Elektor is part of EIM, the world’s leading source of essential technical information and electronics products for pro engineers, electronics designers, and the companies seeking to engage them. Each day, our international team develops and delivers high-quality content - via a variety of media channels (e.g., magazines, video, digital media, and social media) in several languages - relating to electronics design and DIY electronics. www.elektor.com

LEARN

Sensoren am Raspberry PI.indd 4

DESIGN

SHARE

18-01-16 09:55


Inhalt

Inhalt Inhalt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.1. Laptop oder Einplatinencomputer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2.Das Sensoren-Kit für den ersten Einstieg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3. Hard- und Softwareentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2. Start mit dem Raspberry Pi 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1. Überblick Raspberry Pi 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1. Der Quad-Core ARM Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.2. Was ist wo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.3.Blitzdings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2. Was Sie benötigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.1. Gehäuse und ESD-Schutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.2. Spannungsversorgung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2.3. Speicherkarte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2.4. USB-Hub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.5. Maus und Tastatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.6. Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.2.7. Netzwerkverbindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.2.8. Lautsprecher oder Kopfhörer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.9. Zusätzliche Spannungsquelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.3. Hardware Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4. GPIO-Anschlüsse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4.1. Spannungsversorgung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.4.2. Frei nutzbare I/O-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.4.3. Reservierte I/O-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.4.4. Kontakt zur Umwelt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5. Windows 10-Bootdisk erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.6. Erste Schritte mit dem Windows 10 IoT Core . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.6.1. Der Windows IoT Core Watcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

●5

Sensoren am Raspberry PI.indd 5

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

2.6.2. Network Share . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.6.3. Raspberry Pi 2 per Webbrowser steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.6.4. Die PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.6.5. Komfortables Dateimanagement per FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3. Visual Studio 2015 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.1. Download und Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2. Visual Studio Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.3. „Hello world“ auf dem PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.3.1. Textfeld erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.3.2 Schaltfläche hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.3.3. Anwendung ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.3.4. Auf Ereignis reagieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.4. „Hello world“ auf dem Raspberry Pi 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.4.1. App testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.4.2. App installieren und automatisch starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.5. MySQL-Datenbank per App ansteuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.5.1. MySQL-Datenbank einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.5.2 App erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.5.3. MySQL-Zugriff implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 3.6. Rpi2 als Webserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.6.1. Hardware-Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.6.2. Der Quellcode für die App und Funktionsprinzip . . . . . . . . . . . . . . . . . . . . . . . 86 3.6.3 Zugriff auf die App im lokalen Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 3.6.4. Zugriff per WWW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.6.5. Ein Blick auf den Quellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4. Die 37 Sensoren kennenlernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.1. KY-001 - 1-Wire Temperatursensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.2. KY-002 - Erschütterungsschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 4.3. KY-003 - Analoger Magnetfeld-/Hall-Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.4. KY-004 - Kurzhubtaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.5. KY-005 - IR-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

●6

Sensoren am Raspberry PI.indd 6

18-01-16 09:55


Chapter Number ● Chapter Name

4.6. KY-006 - Passiver Buzzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.7. KY-008 - Rote Laserdiode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 4.8. KY-009 - SMD RGB-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 4.9. KY-010 - IR-Gabellichtschranke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 4.10. KY-011 - 2-Farben-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 4.11. KY-012 - Aktiver Buzzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.12. KY-013 - Analoger Temperatursensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 4.13. KY-015 - Digitaler Temperatur- und Luftfeuchtigkeitssensor . . . . . . . . . . . . . . 113 4.14. KY-016 - RGB-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 4.15. KY-017 - Quecksilberschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 4.16. KY-018 - Analoger Fotowiderstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 4.17. KY-019 - Relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.18. KY-020 - Lageabhängiger Schalter mit Kugel . . . . . . . . . . . . . . . . . . . . . . . . . 118 4.19. KY-021 - Reedschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 4.20. KY-022 - IR-Empfänger/Decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 4.21. KY-023 - Analoger Joystick mit Drucktaster . . . . . . . . . . . . . . . . . . . . . . . . . . 120 4.22. KY-024 - Magnetfeld-/Hall-Sensor mit Komparator . . . . . . . . . . . . . . . . . . . . . 121 4.23. KY-025 - Reed-Schalter mit Komparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 4.24. KY-026 - IR-Sensor mit Komparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.25. KY-027 - LED und Quecksilberschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.26. KY-028 - Analoger Temperatursensor mit Komparator . . . . . . . . . . . . . . . . . . 125 4.27. KY-029 - Kleine 2-Farben-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.28. KY-031 - Schock-Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.29. KY-033 - IR-Reflexlichtschranke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 4.30. KY-034 - Farbwechsel-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 4.31. KY-035 - Magnetfeld-/Hall-Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 4.32. KY-036 - Berührungssensor mit Komparator,

mittlerer Anschlussdraht absichtlich um das Gehäuse gebogen . . . . . . 130

4.33. KY-037 - Mikrofon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.34. KY-038 - Mikrofon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 4.35. KY-039 - Fingerkuppenherzschlagfühler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

●7

Sensoren am Raspberry PI.indd 7

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

4.36. KY-040 – Dreh-Encoder mit Drucktaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 5. Taster und Schalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 5.1. Pull-Up und Pull-Down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 5.2. Tastenprellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 5.3. Einfache Tasteneingaben: Pull-Down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 5.4. Einfache Tasteneingaben: Pull-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 5.5. Schaltzustände als Ereignis behandeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 5.6. Links oder rechts herum? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 5.7. Sensoren mit Komparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 6. Digitale Ausgänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.1. Ausgangstreiber mit Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.2. LED Ein- und Ausschalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 6.3. Pulsweitenmodulation zur Helligkeitssteuerung . . . . . . . . . . . . . . . . . . . . . . . . 156 6.4. Relais für hohe Belastungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 6.5. Sound und Warntöne erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 7. Analoge Eingänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 7.1. Analog/Digital-Wandler mit SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 7.2. Dämmerungsschalter und Magnetfeldstärke . . . . . . . . . . . . . . . . . . . . . . . . . . 164 7.3. Temperaturmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 7.4. Zwei A/D-Wandler-Kanäle für den Joystick . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

●8

Sensoren am Raspberry PI.indd 8

18-01-16 09:55


Einleitung • 1.2.Das Sensoren-Kit für den ersten Einstieg

Einleitung Seit einigen Jahren erfreuen sich Mikrocontroller einer neu erwachten Beliebtheit. Galten sie früher noch als kompliziert und nur etwas für versierte Elektroniker und Assemblerprogrammierer, hat sich die Wahrnehmung inzwischen verschoben. Im Zuge des Maker-Trends, haben auch Kleinstcomputer einen neuen Aufschwung erfahren. Zwar verrichten noch immer komplexe Controller ihren Dienst, doch erleichtern die inzwischen auf dem Markt erhältlichen Fertigboards, Erweiterungen und Entwicklungsumgebungen den Einstieg für Anfänger fast jeden Alters. Während der Arduino auf einem relativ einfachen (aber dennoch mächtigen) Mikrocontroller basiert, nutzen Boards wie der Raspberry Pi 2 oder der Beaglebone einen ARM Cortex Prozessor, der wesentlich komplexer ist, dafür aber auch gleich Peripherie wie USB, Netzwerk, Speicherkarten und Displays unterstützt. Vor allem die Netzwerkfunktionalität hat es vielen Anwendern angetan. Geprägt wird die Euphorie vom Stichwort „Internet der Dinge“ („Internet of Things“, IoT). Damit wird allgemein gemeint, dass es mit diesen Kleinstcomputern (oder noch kleineren Spezialentwicklungen) möglich sein soll, so gut wie jedes Gerät mit dem Internet zu verbinden. Von dort kann es dann aus der Ferne gesteuert werden, um Prozesse zu überwachen oder Daten zu liefern. Ob das wirklich wünschenswert ist und in wie weit dabei der Datenschutz eventuell auf der Strecke bleibt oder doch wenigstens stark unterminiert wird, soll hier außen vor bleiben. 1.1. Laptop oder Einplatinencomputer?

Wenn Sie denken, dass es mit dem Kauf eines etwa 35 Euro kostenden Raspberry Pi 2 Boards getan ist, dann werden Sie wohl leider eine Enttäuschung erleben. Will man mit dem Einplatinencomputer praktisch arbeiten und entwickeln, kommt schnell eine Einkaufsliste für Zubehör zusammen, die den Preis deutlich nach oben schraubt – und da sind dann noch nicht einmal die Sensoren etc. enthalten, um die es in diesem Buch eigentlich gehen wird. Kritisch hinterfragt ist die Überlegung, sich einfach einen billigen Laptop (gebraucht) zu kaufen, dann gar nicht so abwegig. Für 200 Euro gibt es bereits einfachste Modelle. Diese beinhalten weit mehr an Ausstattung, als sie an einen Raspberry Pi 2 je anbauen können: Bildschirm, Tastatur, Speichermedium, Kamera, Netzwerkanschlüsse, Netzteil, Akku usw. sind dabei. Auf dem Laptop könnten Sie dann mehr oder weniger jedes beliebige Betriebssystem installieren und auf diesem arbeiten und Software entwickeln. Um in Kontakt mit der Außenwelt zu treten, gibt es preiswerte I/O-Boards als (einzig zusätzlich notwendige) Erweiterung. Gegenüber einem Einplatinencomputer weist der Laptop allerdings den Nachteil auf, dass er relativ klobig ist. Vor allem dann, wenn die bei der Entwicklung hilfreichen Zubehörteile wie Tastatur, Maus, Monitor usw. entfernt werden können, sobald der Computer seiner (autarken) Aufgabenerfüllung übergeben wird. 1.2.Das Sensoren-Kit für den ersten Einstieg

Dieses Buch richtet sich an jene Leser, die sich für einen Raspberry Pi 2 entschieden haben und auf diesem das Mitte 2015 neu veröffentlichte Windows 10 IoT Core betreiben wollen. Inzwischen gibt es eine große Auswahl an kleinen Modulen, die an den Einplatinencomputer angeschlossen werden können. Ohne diese sind die meisten Systeme nämlich noch ziemlich nutzlos. Sie stellen zwar die Rechenleistung und ein Betriebssystem bereit, können aber nur marginal mit der Umwelt kommunizieren (z. B. über das Internet). Damit der Computer

●9

Sensoren am Raspberry PI.indd 9

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

auch Einfluss auf seine Umwelt nehmen kann, sind Sensoren und Aktoren erforderlich, die von einer Software, die man auch selber erstellen kann oder muss, gesteuert werden. Als Einstieg wird hier auf das 37 Module umfassende Sensor-Kit zurückgegriffen, welches für etwa 45…50,- Euro zu haben ist. In diesem Set sind viele Module, die für Einsteiger interessant und einfach anzuwenden sind, so dass schnell erste Erfolge erzielt werden können, ohne groß in die Materie der Elektronik einsteigen zu müssen.

Abbildung 1‑1: Teile im 37 Sensoren-Kit. Voraussetzung für das Studium dieses Buches sind Grundkenntnisse im Bereich Elektronik und beim Programmieren. Wenn Sie bereits Erfahrungen mit Visual Basic haben, ist dies hilfreich, allerdings keine Bedingung, denn auch andere Hochsprachen genügen für den Einstieg. Visual Basic wurde als Programmiersprache gewählt, weil das Programmieren damit relativ einfach ist – auch wenn Sprachen wie C (oder C++ bzw. C#) oder JavaScript kaum anspruchsvoller sind, solange keine Sprachspezifischen Feinheiten zum Einsatz kommen. Für die erzeugte Anwendung ist es völlig belanglos, in welcher Programmiersprache sie erstellt wurde. Der Compiler, der aus dem Sourcecode ausführbare Maschinenbefehle generiert, liefert in allen Fällen annähernd gleichwertige Ergebnisse, die sich bei der Laufzeit und in Bezug auf die Möglichkeiten nicht unterscheiden. Von MicrosoftPress gibt es „Microsoft Visual Basic 2010 – Das Entwicklerbuch“ (ISBN: 978-3-86645-535-1) als kostenloses PDF-Download (http://www.‌edv-buchversand.de/‌mspress-edvbv/‌url.asp?cnt=mspress_vb2010). Hier finden Sie eine Einführung in die Programmiersprache und die Benutzeroberfläche von VisualStudio, die weit über das hinausgeht, was in diesem Buch benötigt wird oder wofür Platz vorhanden sein kann. Ebenfalls sehr praktisch ist der Snipet Converter (http://codeconverter.sharpdevelop.net/SnippetConverter.aspx). Viele Beispiele für neue Techniken gibt es im Internet nur für die Programmiersprachen C# und C++. Auf dieser Webseite können Sie Code von einer Programmiersprache in eine andere Übersetzen. Das ist vor allem dann hilfreich, wenn es sich um eine spezielle Syntax einer anderen

● 10

Sensoren am Raspberry PI.indd 10

18-01-16 09:55


2. Start mit dem Raspberry Pi 2 • 2.1.1. Der Quad-Core ARM Prozessor

2. Start mit dem Raspberry Pi 2 Der Raspberry Pi 2 an sich benötigt einiges an zusätzlicher Hardware, um ihn in Betrieb zu nehmen, einzurichten und später zu betreiben. Einige der Geräte sind nur erforderlich um das System einzurichten und zu entwickeln, andere Teile sind auch beim späteren Betrieb notwendig. Meistens wird es sich nicht lohnen, ein Starterkit zu kaufen, in dem ein Sammelsurium an vermeintlich sinnvollen externen Geräten angeboten wird. In Ihrer Bastelkiste werden Sie sicher das eine oder andere Teil finden, das sie abstauben und wieder verwenden können. Neben der erforderlichen Hardwareausstattung benötigen Sie auch noch ein Betriebssystem und eine Entwicklungsumgebung. Ohne kann der Raspberry Pi 2 nicht viel machen, denn auf der Platine befindet sich zwar viel Hardware aber keinerlei Software. Erst durch ein Betriebssystem hauchen Sie der Elektronik auch Leben ein. Das Betriebssystem müssen Sie auf dem Raspberry Pi 2 installieren und die Entwicklungsumgebung auf einem PC. 2.1. Überblick Raspberry Pi 2

Als erstes lohnt es sich, einen kurzen Blick auf den Raspberry Pi 2 zu werfen, um ihn ein wenig kennenzulernen. In der Verpackung der Platine befindet sich ja nicht gerade viel an Informationen und wenn Sie noch nie mit einem Single Board Computer (SBC) gearbeitet haben, stehen Sie vielleicht etwas ratlos vor der Hardware. 2.1.1. Der Quad-Core ARM Prozessor

Basis für die aktuelle Version des Raspberry ist ein ARM Cortex-A7 Prozessor der Firma Broadcom mit der Bezeichnung BCM2836. Die Firma ARM stellt selber keine Prozessoren her, sondern entwickelt nur das Design der Mikroprozessoren, welches dann als Lizenzprodukt an Prozessorfertiger verkauft wird. Der Prozessorhersteller kann dann das lizenzierte Design übernehmen und um eigene Erweiterungen und Funktionen ergänzen. Der BCM2836 verfügt über vier Kerne (Quad-Core) und wird mit 900 MHz Takt betrieben. Ein Datenblatt ist derzeit nicht verfügbar, so dass man mit der Dokumentation zum BCM2835 vorlieb nehmen muss. Dieser kann aber in vielen Punkten nicht mit dem BCM2836 verglichen werden, da er lediglich über einen Kern der älteren ARMv6 Architektur verfügt. Mehrkernprozessoren sind vor allem deswegen entwickelt worden, weil eine einfache Steigerung der Taktrate kaum noch sinnvoll möglich ist, ohne erhebliche technische Probleme zu bekommen. Jeder einzelne Kern stellt dabei einen vollständigen Hauptprozessor mit all seinen notwendigen Ressourcen dar. Etwas vereinfachend kann man sagen, dass sich bei einem Vierkernprozessor vier Mikrocontroller in einem Gehäuse integriert sind. Dies ist technisch relativ einfach und preiswert realisierbar. Die Leistung des Systems wird dabei allerdings nur in der Theorie vervierfacht, denn Zugriffe auf den Arbeitsspeicher, der nur einmal vorhanden ist, bremsen das System aus. Auch sind viele Programme nicht gut geeignet, um parallelisiert ausgeführt zu werden. Als einfaches Beispiel kann hierfür folgende Aufgabe betrachtet werden: a = b + c + d * e Ein Prozessorkern kann die Rechnung b+c ausführen. Ein anderer die Multiplikation. Dies kann parallel abgearbeitet werden. Allerdings kann erst dann weitergerechnet werden,

● 13

Sensoren am Raspberry PI.indd 13

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

wenn beide Teilergebnisse verfügbar sind. Zwei der Kerne sind also gar nicht involviert und tragen nichts zur Leistungssteigerung bei. Es handelt sich dabei allerdings nur um ein einfaches Beispiel, denn bei komplexen Rechnungen versuchen hoch spezialisierte Systeme das Zwischenergebnis gewissermaßen zu erraten und dann schon weiter zu rechnen, ohne dass das tatsächliche Zwischenergebnis bekannt ist. In der Praxis werden Sie keinerlei Rücksicht auf die Architektur nehmen können und müssen. Die von Ihnen benutzte Entwicklungsund Laufzeitumgebung wird sich um alle notwendigen und sinnvollen Optimierungen kümmern. Zudem muss man sich selber auch ehrlicherweise eingestehen, dass man nur sehr selten die verfügbare Leistung wirklich benötigt. Erst bei aufwendigen Grafikberechnungen und Multimediaanwendungen kann es sein, dass Sie an die Leistungsgrenzen des Systems kommen. Für einfache Sensorprojekte würde ein Kern und eine Taktrate von etwa 6 MHz völlig ausreichen. Der Prozessor verfügt gemäß der System-on-a-Chip (SoC) Idee über die wichtigsten Schnittstellen direkt auf dem Chip: • HDMI Videosignalausgang • Composite Videoausgang • Audioausgang (PCM, Puls-Code-Modulation) • Massenspeichercontroller für Speicherkarte • USB (Universal Serial Bus) • UART (Universal Asynchronous Receiver Transmitter: serielle Datenübertragung) • SPI (Serial Peripheral Interface) • I²C (Inter-Integrated Circuit) bzw. TWI (Two Wire Interface) • Universelle Ein-Ausgabeanschlüsse, GPIO (General Purpose Input/Output, I/O) • Kameraeingang (CSI, Camera Serial Interface gemäß MIPI- (Mobile Industry Processor Interface) Allianz) • Displayausgang (DSI, Display Serial Interface) Weil keine Ethernet-Netzwerkfunktion vorhanden ist, und um mehrere USB Ports zu unterstützen, wurde der Prozessor um den USB/LAN-Controller LAN9514 von Microchip ergänzt. Die 1024 MB Arbeitsspeicher (SDRAM, Synchronous Dynamic Random Access Memory) sind in Form eines SDRAM Chips vom Typ EDB8132B4PB-8D-F (256 Mbit x 32 Bit) auf der Unterseite der Platine verbaut. Die Grafikeinheit (GPU, Graphics Processing Unit) des Prozessors nutzt das SDRAM mit, so dass nicht der gesamte Speicher frei verfügbar ist. 2.1.2. Was ist wo

Die Abbildungen zeigen Ihnen, wo sich auf der Platine welche Schnittstellen und Hardwaregruppen befinden.

● 14

Sensoren am Raspberry PI.indd 14

18-01-16 09:55


3. Visual Studio 2015 • 3.1. Download und Installation

3. Visual Studio 2015 Für die Softwareentwicklung wird die aktuelle Version 2015 von Visual Studio benötigt. Diese lässt sich mit einigen Extras erweitern, die dann die Entwicklung von universellen UWP-Apps ermöglichen, die auf PCs, Smartphones und eben auch auf dem Raspberry Pi 2 laufen: die Windows Universal App Development Tools. Weitere Erweiterungen stellen dann den Zugriff auf die speziellen Funktionen des Einplatinencomputers bereit. Die Community-Ausgabe von Visual Studio bekommen Sie kostenlos und genügt, um privat und in kleinen Firmen (kommerzielle) Produkte zu entwickeln. Die kostenpflichtigen Versionen bieten zwar ein paar Funktionen mehr, diese benötigen aber nur wenige Profientwickler. Der Hauptunterschied liegt in der Lizenzpolitik: kostenpflichtige Versionen sind für Firmen mit vielen Entwicklern und Millionenschweren Umsätzen. Praktisch an Visual Studio ist, dass ein und dieselbe Entwicklungsumgebung für mehrere Programmiersprachen (C++, C#, JavaScript, Python, Visual Basic) benutzt werden kann. 3.1. Download und Installation

Die Downloadmöglichkeit für die Installationssoftware (ca. 3 MB) finden Sie unter https://www.visualstudio.com/de-de bzw. direkt: https://go.microsoft.com/fwlink/?LinkId=532606. Der Installer benötigt anschließend eine Internetverbindung, da die notwendigen Dateien noch herunter geladen werden müssen. Sie können stattdessen auch eine komplette (deutschsprachige) ISO-Datei downloaden (ca. 3 GB), und dann mit Hilfe dieser eine Offline-Installation durchführen: https://go.microsoft.com/fwlink/?LinkId=615448). Wenn Sie die ISO-Datei gespeichert haben, können Sie diese wieder mit einem Doppelklick im Explorer als CD-Laufwerk mounten und dann dort das Setup vs_community.exe starten. Legen Sie ggf. einen Installationspfad fest und wählen Sie die Funktion Benutzerdefiniert, um weitere eigenen Anpassungen vorzunehmen. Aktivieren Sie bei der Funktionsauswahl unbedingt die Option Entwicklertools für universelle Windows-Apps.

Abbildung 3‑1: Erforderliche zusätzliche Programmfunktionen.

● 51

Sensoren am Raspberry PI.indd 51

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

Nach der Installation können Sie Visual Studio testweise einmal starten. Sie werden aufgefordert, sich bei Microsoft anzumelden – das ist nicht erforderlich und Sie können dies mit Klick auf Jetzt nicht, vielleicht später überspringen. Die Wahl eines Farbschemas im nächsten Schritt, bleibt Ihrem Geschmack überlassen. Sie benötigen dann noch die Windows IoT Core Project Templates, die Sie am einfachsten auf der Webseite https://visualstudiogallery.msdn.microsoft.com/06507e74-41cf-47b2b7fe-8a2624202d36 downloaden. Klicken Sie für die Installation nach dem Download doppelt auf den Dateinamen WindowsIoTCoreProjectTemplates.vsix. Damit Sie universelle Apps entwickeln können, muss nun noch Windows in den Entwicklermodus versetzt werden. Andernfalls erhalten Sie später einen entsprechenden Hinweis in Visual Studio beim Erzeugen eines neuen Projekts. 1. Öffnen Sie die Systemsteuerung: Start/Einstellungen und wechseln Sie in die Rubrik Update und Sicherheit.

Abbildung 3‑2: Systemsteuerung/Einstellungen. 2.

Wechseln Sie in die Kategorie Für Entwickler und aktivieren Sie die Option Entwicklermodus.

Abbildung 3‑3: Wechseln Sie in den Entwicklermodus.

● 52

Sensoren am Raspberry PI.indd 52

18-01-16 09:55


4. Die 37 Sensoren kennenlernen

4. Die 37 Sensoren kennenlernen In der Sortiments-Box befinden sich 37 unterschiedliche Module, wobei es von einem Modul zwei Platinen gibt, also 38 Platinen enthalten sind. Einige Bauteile sind in identischer oder funktional ähnlicher Form auf mehreren Baugruppen vorhanden. Besitzen Sie ein Sortiment von einem anderen Anbieter, kann es sein, dass dieses abweichend von dem hier gezeigten zusammengestellt wurde. Neben den hier besprochenen Sensoren gibt es auch noch zahlreiche weitere im Angebot. Es gibt kein einheitliches Bezeichnungsschema für die Sensoren und im Grunde auch keine vorgeschriebene Beschaltung. Es ist zwar sehr wahrscheinlich, dass auch Ihre vom gleichen (Billig-) Hersteller stammen, doch sollten Sie vor der Verwendung immer prüfen, ob der Aufbau bei Ihnen dem hier gezeigten entspricht.

Abbildung 4‑1: Inhalt des 37-Sensoren-Kit. Für alle Module gilt, dass sie gängige elektronische Bauelemente benutzen, die Sie auch bei jedem gut sortierten Elektronikhändler bekommen können. Kennen Sie also die Beschaltung des Bauteils und dessen Kenndaten, können Sie auf die Platinen verzichten und das Bauteil direkt in einer eigenen Schaltung verwenden. Aufgrund der Massenproduktion kann es aber dennoch sein, dass ein Modul preiswerter von einem chinesischen Anbieter verkauft wird, als ein einzelnes Bauteil hierzulande kostet. Das liegt natürlich auch an der Umgehung von Umsatz- und Einfuhrsteuern. Diese Übersicht soll Ihnen einen kurzen Referenzüberblick bieten, um zu sehen, welches Modul welche Funktion bietet. Die verwendeten Namen entsprechen denen, die im Web (und auch hier im Buch) üblicherweise für die Baugruppen benutzt werden, so dass Sie ggf. leichter weitere Informationen finden können. Die nachfolgende Tabelle zeigt die Position der Module in den Sortimentsfächern.

● 103

Sensoren am Raspberry PI.indd 103

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

KY-023

KY-026

KY-016

KY-039

KY-027

KY-003

KY-019

KY-024

KY-009

KY-034

KY-017

KY-001

KY-038

KY-036

KY-011

KY-008

KY-020

KY-013

KY-037

KY-028

KY-029

KY-004

KY-018

KY-005

KY-033

KY-012

KY-025

KY-002

KY-015

KY-022

IR-08H

KY-006

KY-021

KY-040

KY-035

KY-031 KY-010

Tabelle 4‑1: Position der Sensormodule im Sortimentkasten. Bei vielen Modulen sind Bauteile mit relativ langen Anschlussdrähten bestückt worden. Vor der Verwendung müssen Sie kontrollieren, ob sich die Drähte nicht berühren, weil sie verbogen sind. Andernfalls kommt es zu einem Kurzschluss, der das Bauteil beschädigen kann oder zu Fehlfunktionen führt. Bei vielen Modulen ist auf der Platine aufgedruckt, wie die Anschlussstifte belegt sind. Oft finden Sie dort mindestens ein Minuszeichen („-“) für Masse (Ground, GND) und ein „S“ für Sensor.

Abbildung 4‑2: Warnung vor Gefahren. Einige der Module können für Mensch und Umwelt gefährlich sein und wurden in dieser Aufstellung hier mit entsprechenden Gefahrenzeichen versehen. Diese Bauteile sind nicht für Kinder geeignet und bei der Nutzung achten Sie bitte unbedingt auf die Sicherheitshinweise, die bei der Detailbeschreibung stehen und die im Allgemeinen im Umgang mit diesen Gefahrenquellen gelten.

● 104

Sensoren am Raspberry PI.indd 104

18-01-16 09:55


5. Taster und Schalter • 5.1. Pull-Up und Pull-Down

5. Taster und Schalter Digitale Signale auszuwerten, ist mit dem Raspberry Pi 2 denkbar einfach. Ein Schalter oder Taster kennt nur zwei Zustände: er ist entweder geöffnet oder geschlossen. Je nach dem, ob er auf der einen Seite mit Masse (GND) oder der Versorgungsspannung (VCC) verbunden ist, signalisiert er dann dem Controller einen entsprechenden Spannungspegel im geschlossenen Zustand. Technisch gesehen spielt es keine Rolle, ob der Schalter gegen Masse oder VCC schaltet. Lediglich im Programm muss das Signal entsprechend interpretiert werden.

VCC S1

MC

S2

MC

Abbildung 5‑1: Taster S1 gegen VCC und S2 gegen Masse geschaltet. 5.1. Pull-Up und Pull-Down

Das Problem bei dieser einfachen Beschaltung ist, dass der geöffnete Schalterzustand elektrotechnisch nicht definiert ist. Im offenen Zustand hängt der Anschluss des Mikrocontrollers (MC) gewissermaßen in der Luft. Welcher Signalpegel dann an ihm anliegt ist nicht definiert. Im Programm kann daher der offene Zustand nicht sicher vom geschlossenen unterschieden werden, denn es kann durchaus sein, dass der in der Luft hängende Anschluss sich wie mit Masse oder VCC verbunden verhält. Dem wirkt man mit einem Pull-Up- oder Pull-Down-Widerstand entgegen.

● 135

Sensoren am Raspberry PI.indd 135

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

VCC

VCC

10k

S1

MC

MC

10k

S2

Abbildung 5‑2: Pull-Down- und Pull-Up-Widerstand. Der Widerstand wird in den meisten Fällen mit etwa 10 kΩ dimensioniert. Als Pull-Down-Widerstand zieht er den Eingang des Mikrocontrollers gegen Masse, so dass der Signalpegel bei geöffnetem Schalter definitiv 0 V beträgt. Wird der Schalter geschlossen, liegt der Eingang an VCC. Ein kleiner Strom fließt zwar über den Widerstand nach Masse, dies kann aber vernachlässigt werden. Ebenso verhält es sich mit dem Pull-Up-Widerstand: er zieht den Eingang auf VCC solange der Schalter offen ist. Bei geschlossenem Schalter liegt der Eingang an Masse. Auf einigen der Sensormodule sind solche Widerstände bereits verbaut. Fehlt der Widerstand, müssen Sie ihn zusätzlich anbringen. 5.2. Tastenprellen

Ein weiteres Problem bei mechanischen Schaltern ist deren Neigung bei Betätigung zu prellen. Wenn Sie den Schalter (oder Taster) von einem Zustand in den anderen bewegen, wird der Kontakt nicht störungsfrei geöffnet oder geschlossen. Statt des sofortigen elektrischen Kontaktes ruft die Betätigung des Schalters kurzzeitig ein mehrfaches Schließen und Öffnen des Kontakts hervor. Im Alltag sieht man dieses Prellen nicht, weil das menschliche Auge zu träge ist und weil die Geräte sowieso nicht schlagartig ihre volle Leistung erbringen (bspw. Glühbirne und Lichtschalter). Ein Mikrocontroller ist aber schnell genug, um diese Impulse unterscheiden zu können. Anstatt dann einen Tastendruck zu erkennen, registriert das Programm mehrere und verhält sich ggf. unerwartet.

● 136

Sensoren am Raspberry PI.indd 136

18-01-16 09:55


6. Digitale Ausgänge • 6.1. Ausgangstreiber mit Transistor

6. Digitale Ausgänge Jeder I/O-Pin kann als Eingang oder als Ausgang benutzt werden. Während der Betrieb als Signaleingang relativ unkompliziert ist, ist die Nutzung in die andere Richtung nicht ohne Vorüberlegungen möglich. Das Hauptproblem ist, wie bereits angesprochen wurde, dass der ARM-Prozessor nicht in der Lage ist, Lasten zu treiben, die im Durchschnitt pro Pin bei mehr als 2 mA liegen. Das reicht gerade einmal für Low-Current LEDs. Wenn Sie nicht wissen, ob Ihre LED den Ausgang mit ca. 20 mA (Standard-LED) oder nur 2 mA belastet, gehen Sie lieber von der höheren Stromaufnahme aus oder messen Sie diese vorher an einer anderen Spannungsquelle nach. Auch andere Lasten wie ein Relais oder ein Signaltongeber, benötigen meistens mehr Strom. Es ist also grundsätzlich ratsam, den Ausgang erst an einen Treiber anzuschließen und darüber die eigentliche Last zu steuern. 6.1. Ausgangstreiber mit Transistor

Es gibt verschiedene Möglichkeiten, wie ein Ausgangstreiber aufgebaut werden kann. Die Wahl hängt vor allem vom Einsatzzweck und der vorgesehenen Last ab. Für höhere Lasten ab ca. 500 mA, größere Spannungen (mehr als 5 V) oder auch sehr schnell wechselnden Signalzuständen gibt es jeweils passende Lösungen. Hier soll lediglich eine einfache Variante vorgestellt werden, die für alle Sensormodule aus dem Set ausreicht.

CB E Abbildung 6‑1: Pinout BC337/BC547, Ansicht von unten. Die zwei universellen Transistortypen BC547 und BC337 eignen sich gut. Der BC547 kann bis zu 200 mA treiben und der BC337 an die 800 mA. Der Signalausgang des Raspberry Pi 2 wird über einen Vorwiderstand von 1 kΩ an die Basis (B) des Transistors angeschlossen. Die Last wird dann zwischen einer externen Spannungsquelle, die bis zu 40 V betragen kann, und dem Kollektor (C) angeschlossen. Solange die Strombelastung nicht die zulässigen Werte für die 3,3 V bzw. 5 V Spannungspins am GPIO-Anschluss überschreitet, können Sie die Spannung von dort abgreifen. Ansonsten ist eine zusätzliche Spannungsquelle erforderlich. Am Emitter (E) werden die Masse des Raspberry Pi 2 und der Spannungsquelle zusammengefasst.

● 153

Sensoren am Raspberry PI.indd 153

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

VCC

LAST

2

Signal

1

R1 1k

C T1 B E

3

BC547 BC337

Abbildung 6‑2: Universeller einfacher Ausgangstreiber. Um die nachfolgenden Abbildungen zum Anschluss der Module und des Transistortreibers übersichtlicher zu gestalten, wird die Schaltung in Zukunft nicht mehr im Detail gezeigt. Es werden nur die drei nummerierten Anschlüsse der grau hinterlegten Fläche im Bild gezeigt. 6.2. LED Ein- und Ausschalten

Das Hello World-Projekt der Mikrocontroller Hardwaresteuerung ist eine blinkende LED. Im ersten Beispiel soll die RGB-LED auf Modul KY-016 über einen Button auf der Benutzeroberfläche angesteuert werden. Welche der drei LEDs auf dem Modul Sie nutzen, ist beliebig. Der Vorwiderstand ist geeignet, um die LEDs an 5 V zu betreiben.

● 154

Sensoren am Raspberry PI.indd 154

18-01-16 09:55


7. Analoge Eingänge • 7.1. Analog/Digital-Wandler mit SPI

7. Analoge Eingänge Verändert ein Sensor seinen Widerstand in Abhängigkeit der Messgröße, kann dies nicht direkt vom Raspberry Pi 2 ausgewertet werden. Mit dem variablen Widerstandswert kann die Größe einer Spannung verändert werden. Ein Analog/Digital-Wandler der diese Spannungsänderung registrieren kann, ist beim Pi schlichtweg nicht vorgesehen. Allerdings kann er mit einem einfachen Wandler-IC extern nachgerüstet werden und dann eröffnen sich viele neue Möglichkeiten. 7.1. Analog/Digital-Wandler mit SPI

Von Microchip gibt es den MCP3208, der einen 12-Bit A/D-Wandler mit acht Kanälen und ein SPI- Interface in einem sechzehnpoligen Gehäuse beinhaltet. Für eigene Experimente auf dem Steckboard ist es praktisch, dass es ihn in der Bauform DIL/PDIP gibt und auch als SMD-Variante, so dass er später in einem eigenen Platinenlayout ggf. weniger Platz beansprucht. 1

16

VDD

CH1

2

15

VREF

CH2

3

14

AGND

CH3

4

13

CLK

12

MISO/DOUT

11

MOSI/DIN

10

/CS

9

DGND

CH4

5

CH5

6

CH6

7

CH7

8

MCP3208

CHO

Abbildung 7‑1: Pinout MCP3208. Die Beschaltung des Bausteins ist denkbar einfach, da keinerlei externe Bauteile zusätzlich erforderlich sind und er mit einer Spannung im Bereich von 2,7…5,5 V arbeiten kann. Wichtig ist nur, dass die Spannung, die in einen Digitalwert konvertiert werden soll, auf keinen Fall die Betriebsspannung überschreiten darf. Mit seinen acht Kanälen kann der Wandler bis zu acht Analogwerte parallel erfassen und das Ergebnis auf Anfrage an den Master senden. Neben der reinen Versorgungsspannung, die an VDD und DGND angelegt wird, gibt es noch die Möglichkeit, eine Referenzspannung an VREF und AGND anzulegen, die dann für die Konvertierung benutzt wird. Das kann genutzt werden, wenn eine hochgenaue Referenzquelle vorliegt und benötigt wird. In der Praxis genügt es aber vollauf, die beiden Pins mit der Versorgungsspannung zu verbinden. Bei SPI handelt es sich um ein Bussystem speziell für Peripheriebausteine mit Bustakt und zwei Leitungen für die Daten. Jeder Teilnehmer (Slave) wird vom Busmaster (üblicherweise dem Mikrocontroller) mit einem Takt versorgt (Clock, CLK). Über die Datenleitung MOSI (Master Out Slave In) und MISO (Master In Slave Out) werden die Daten ausgetauscht. Jeder Slave besitzt einen Eingang für Chipselect (CS) bzw. Chip-Enable (CE). Der Master aktiviert den gewünschten Slave über die ihm zugeordnete CS-Leitung und kommuniziert dann mit ihm. Der Raspberry Pi 2 unterstützt allerdings nur zwei Leitungen für das Chipselect: an Pin 24 und 26, so dass nur zwei Slaves genutzt werden können. Es gibt kein einheitliches Protokoll für die Kommunikation, so dass die Abfolge der Signale, die vom Master generiert werden müssen, abhängig vom angesprochenen Slave ist. Es

● 163

Sensoren am Raspberry PI.indd 163

18-01-16 09:55


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

haben sich allerdings vier Modi etabliert, die sich über die zwei Parameter CPOL (Clock Polarity) und CPHA (Clock Phase) definieren: Mode

CPOL

CPHA

0

0

0

1

0

1

2

1

0

3

1

1

Tabelle 7‑1: SPI Modi. Der MCP3208 arbeitet im Mode 0, was später im Sourcecode für die App angegeben wird. 7.2. Dämmerungsschalter und Magnetfeldstärke

Für den Einstieg in die A/D-Erfassung soll ein Dämmerungsschalter mit dem Fotowiderstand auf Modul KY-018 entstehen. Da sich auf dem Modul bereits ein Festwiderstand befindet, kann einfach ein Spannungsteiler realisiert werden, dessen Mittelabgriff als Spannungswert an den A/D-Wandler geführt wird.

Abbildung 7‑2: Beschaltung des MCP3208 und KY-018.

● 164

Sensoren am Raspberry PI.indd 164

18-01-16 09:55


Index

Index Symbols 1-Wire Datenprotokoll

Chipselect 105

Class

163 22

78S05

28

CLK

163

192.168.0.xxx

40

Clock

163

Clock Phase

164

Clock Polarity

164

A A3144

106

Cmdlets

45

Abgreifklemmen

34

command-lets

45

administrator

41

Compiler

10

A/D-Wandler Analaog-Digital-Wandler

11, 163 163

compilieren Composite

61 14, 24

Analog-Digital-Wandler

11

Computermaus

23

App

12

Connector/Net

78

Application

12

Converter

10

Arduino ARM Async ATA-Kabel Audio

9 9, 13, 68

Cortex Cortex-A7

139

CPHA

164

32

CPOL

164

24, 27

CPU

Ausgang

153

CR

Ausgangstreiber

153

Crossover

Ausschalten

45

CS

A/V-Buchse

27

CSI

B Basis Bauteile BC337

9 13

62 101 25 163 14

D 153 11 153

Dallas 1-Wire Datenprotokoll

105

Dämmerungsschalter

164

Dateimanager

41

BCM2836

13

Datenbank

72

Benutzername

41

Datenblätter

11

DC/DC-Wandler

28

Berührungssensor Betriebssystem

130 21, 34

DDNS

Bildschirmauflösung

46

DebounceTimeout

Bootdisk

34

Debug-Ausgaben

Breadboard

32

Debug-Modus

Broadcom

13

Delay

Browser

95

Desktop

Button

61

DHCP

Buzzer

108, 112, 162

C Camera Serial Interface

14

97 151 84 62 140 39 26

DHT11

114

DHT21

114

DHT22

114

DLL

78

CE

163

DNS

97

Chip-Enable

163

Domain

98

● 175

Sensoren am Raspberry PI.indd 175

18-01-16 09:56


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic Domain Name Service

97

Gefrierpunkt

169

Drehencoder

133

General Purpose Input/Output

Drehgeber

133

GET

100

Drehimpulsgeber

144

GND

31, 104

DS18B20

105

GPIO

15, 29

Dynamic Host Configuration Protocol

26

GPIO-Controller

Dynamic Link Library

78

GPU

Dynamisches DNS

97

Graphics Processing Unit Ground

29

139 14 14 30, 104

E Echtzeituhr

39

H

EDB8132B4PB-8D-F

14

HAL501

EEPROM

31

Hall-Sensor

EE-SX1103

111

ElectroStatic Discharge

19

Hardware Attached on Top HAT

Elektretkondensatormikrofonkapsel

131

HDMI

Elektretmikrofon

132

High-Aktiv

Emitter

153

HTML

Encoder

133

HTTP

Epitaxial Darlington NPN Transistor

130

HTTP-Header

Ereignishandler

64

Erschütterungsschalter

105

121, 129 106, 121, 129 31 31 14, 24 140 86 42 101

HttpServer

87

Hub

26

Erweiterungen

55

Hypertext Markup Language

86

ESD

19

Hyper Text Transfer Protocol

42

Ethernet

14, 25

Eventhandler Extensible Application Markup Language

143 56

I I²C IDE-Kabel

F

14, 31 32

Infrarot

119 107

Fernseher

24

Infrarot-LED

Festspannungsregler

28

Inter-Integrated Circuit

14

FFC/FPC

15

Internet

85

File Transfer Protocol

46

Internet der Dinge

132

Internet of Things

Fingerkuppenherzschlagfühler Firewall

96

Internet Protocol

9 9 26

Flammenerkennung

123

Internet Service Provider

Formular

100

Interruptbehandlung

141

Interrupt Request

141

Forwarding Fotowiderstand FrameRate Freilaufdiode FTP

96 116 62 117 46

G Gabellichtschranke

110

Gefahr

104

IoT IP-Adresse

95

9 25, 40, 94

IR-Empfänger

119

IR-LED

107

IR-Lichtschranke

132

IRQ

141

ISP

95

● 176

Sensoren am Raspberry PI.indd 176

18-01-16 09:56


7. Analoge Eingänge • 7.4. Zwei A/D-Wandler-Kanäle für den Joystick J Java Java Runtime Environment Joystick

Mehrkernprozessor

13

12

Meta-Tag

99

12

MicroSD

120

JRE

12

Minuszeichen minwinpc MIPI

K

MISO

Kathode

159

Mobile Industry Processor Interface

Kern

13

Monitor

Klinkenbuchse

27

MOSI

15 104 40 14 163 14 24 163

Kollektor

153

MS-DOS

43

Komparator

149

MySQL

72

Kondensator

137 N

L

NEC-Standard Negativ Temperature Coefficient

LAMP

72

LAN

96

Network Share

LAN9514

14

Netzbrummen

Laptop

9

Laserdiode Lautsprecher

109 27

LDR

116

LED

16, 31, 110, 111, 126, 128, 153, 156

LED, RGB

114

Leerzeichen

100

Leuchtdiode

16

LF LF 33 CV

Netzwerk

26 41

NOOBS NTC

Oberfläche

101

Ohmsches Gesetz

28

Operating System

Linienverfolgung

127

Oszilloskop

Luftfeuchtigkeit

37 113, 125

O

OS

Low-Current LED

25, 95

Netzwerklaufwerk

116

Local Area Network

41 151

Netzwerkhub

Light Dependent Resistor Linux

119 113, 125

56 156 21 21, 34 160

37 96 31, 153 114

P Passwort Patchkabel PCM

M

45 26 14, 119

phpMyAdmin

72

MAC Adresse

41

Portnummer

94

MAC-Filtering

25

Portnummer 8080

Magnet Magnetfeldsensor

118 106, 121, 129

42

Potentiometer

171

Poti

172

Masse

30, 104

Master

163

Master In Slave Out

163

Programmiersprache

Master Out Slave In

163

Provider

95

23

Prozess

143

Maus MCP3208

163

PowerShell Prellen, Taste

p@ssw0rd

43 136 10

41

● 177

Sensoren am Raspberry PI.indd 177

18-01-16 09:56


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic Pull-Down

135

Siedepunkt

Pull-Up

135

Signalgeber 112

169

Pull-Up-Widerstand, intern

141

Single Board Computer

Puls-Code-Modulation

119

Slave 163

Pulsweitenmodulation

157

Snipet Converter

PWM

157

Snubber 117

13 10

SoC 14 Q Quad-Core Quecksilberschalter

Spannung 20 13

Spannungspegel 135

115, 124

Spannungsregler 28 Spannungsteiler 172

R Radio-Button

Speicherkarte 15 100

SPI

14, 31, 163

Raspberry Pi 2

9, 13

SQL 72

RC5-Standard

119

SSL 84

RC-Glied

137

Standard-LED 153

39

Steckboard 32

Real Time Clock Rechte Reedschalter Reflexlichtschranke Relais

77

Steckbrücken 33

118, 122

Steuerelemente 61

127

Stiftleiste 29

117, 161

Strom 20

Release-Modus

62

Structured Query Language

Reset

17

Sub-Domain 98

RJ45

15

Summer

Router

96

Suppressordiode 20

RTC

39

Synchronous Dynamic Random

RUN

17

Access Memory

72 108, 112

14

System-on-a-Chip 14 S SBC

13

T

Schalter

135

Task

Schalter, Kugel

118

Tastatur 23

143, 160

Schaltfläche

61

Tastenprellen 136

Schaltnetzteil

28

Taster

107, 135

Schmitt-Trigger

137

Temperaturbeiwert 113

Schock-Sensor

126

Temperatursensor

105, 113

Schrift

67

Textblock 59

SDHC

22

Textbox 59

SDRAM

14

Tiefpassfilter 137

SD Speicherkarte

15

Time-Server 39

SDXC

22

ToggleSwitch 138

Secure Digital Memory Card

21

TP-Kabel 25

SenseBox Sensor Sensor-Kit Serial Peripheral Interface

71 104 10 14, 31

Transistor 153 TWI Twisted Pair Two Wire Interface

14, 31 25 14, 31

● 178

Sensoren am Raspberry PI.indd 178

18-01-16 09:56


Index U U16 17 UART

14, 31

Universal Asynchronous Receiver Transmitter 14 Universal Serial Bus

14

Universal Windows Platform

12

Unterbrechungsanforderung 141 USB

14, 21

USB-Hub

21, 23

USB-Microbuchse 20 UWP 12 V vbCrLf 99 VCC 135 Verschlüsselung 84 Versorgungsspannung 135 Video 24 Visual Studio

51

Visual Studio 2015

12

Vorwiderstand 156 W WAN 96 Webbrowser 86 Weiterleitung 96 Wide Area Network Widerstand

96 135, 156

Windows 10 IoT Core

9

Windows IoT Core Project Templates

52

Windows IoT Core Watcher

39

Windows IoT Core Watcher Application

35

Windows IoT Extensions for the UWP

55

WinSCP 46 Wireless Local Area Network

25

WLAN 25 World Wide Web

85

WWW 85 X x64 67 x86 67 XAML 56 Z Zeit 39

● 179

Sensoren am Raspberry PI.indd 179

18-01-16 09:56


Sensoren am Raspberry Pi 2 - Mit Windows 10 IoT Core und Visual Basic

â—? 180

Sensoren am Raspberry PI.indd 180

18-01-16 09:56


Florian Schäffer

Dieses Buch richtet sich an jeden, der seinen Raspberry Pi 2 mit dem aktuellen Windows 10 IoT Core betreiben will. Wie das geht, zeigt der Autor mit dem Entwicklungssystem Visual Studio und Visual Basic als Programmiersprache.

Die Funktionsweise und Beschaltung der einzelnen Sensoren wird ausführlich erklärt und ihre Verwendung durch die gut dokumentierten Visual Basic-Beispielprogramme leicht nachvollziehbar gemacht.

SHARE

Elektor-Verlag GmbH 52072 Aachen www.elektor.de

Als Einstieg in die Materie wird in diesem Buch auf das auch bei Elektor erhältliche 37 Module umfassende Sensor-Kit zurückgegriffen. In diesem populären Set sind die Sensoren auf einer kleinen Platine montiert und mit Steckverbindern ausgestattet, was den Anschluss via Breadboard oder Drahtbrücken vereinfacht. Mit den auch für Einsteiger einfach anzuwendenden Sensor-Modulen lassen sich schnell erste Erfolge erzielen, ohne dass man groß in die Materie der Elektronik einsteigen muss.

Alle Beispielprogramme gratis auf www.elektor.de

DESIGN

ISBN 978-3-89576-308-3

Inzwischen gibt es eine große Auswahl an kleinen SensorModulen, die problemlos an den RPi 2 Mod. B angeschlossen werden können – auch wenn sie mitunter für andere Systeme beworben werden, wie etwa für den Arduino. Nicht ohne Grund: Einplatinencomputer sind ohne zusätzliche Peripherie für Elektroniker ziemlich nutzlos. Sie stellen zwar die Rechenleistung und ein Betriebssystem bereit, können aber so gut wie gar nicht mit ihrer Umgebung kommunizieren. Damit ein Computer auch Einfluss auf seine Umwelt nehmen kann, sind Sensoren und Aktoren erforderlich, die von einer Software gesteuert werden, die man selber erstellen kann.

SENSOREN AM RASPBERRY Pi 2

Diplom-Informatiker Florian Schäffer verfügt über langjährige Erfahrung als Dozent und in der praktischen Entwicklung von Hardund Softwarelösungen für die Fahrzeugdiagnose und im Bereich Mikrocontroller und Embedded-Systeme. Seine Sachbücher werden seit über 15 Jahren von Einsteigern und Profis als verlässliche Informationsquelle genutzt.

SENSOREN AM RASPBERRY Pi 2

SENSOREN AM RASPBERRY Pi 2

MIT WINDOWS 10 IoT CORE UND VISUAL BASIC

FLORIAN SCHÄFFER

MIT WINDOWS 10 IoT CORE UND VISUAL BASIC

Florian Schäffer LEARN

DESIGN

SHARE

LEARN

LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESI ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● S GN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DES ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ● SHARE ● LEARN ● DESIGN ●


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.