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 ●