ISBN 978-3-89576-317-5
Elektor-Verlag GmbH 52072 Aachen www.elektor.de
Inzwischen gibt es eine große Auswahl an Sensor-Modulen, die an den Arduino angeschlossen werden können. Als Einstieg in die faszinierende Welt der Sensorik 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 beeindruckende Erfolge erzielen, ohne dass man tief in die Materie der Elektronik eintauchen muss. Eine kurze Einführung in die Grundlagen der Nutzung des Arduinos und die Entwicklungsumgebung ebnen den Weg für Einsteiger. Die Funktionsweise und Beschaltung der einzelnen Sensoren wird ausführlich erklärt und ihre Verwendung durch die gut dokumentierten Beispielprogramme leicht nachvollziehbar gemacht. Die Arduino-Programme (auch Sketche genannt) werden dabei mit der Arduino IDE in der Programmiersprache C/C++ erstellt.
SENSOREN AM ARDUINO
●
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.
Mit einem Arduino ohne zusätzliche Elektronik kann man nicht viel anfangen. Dieses Buch richtet sich an jeden, der seinem Arduino-UNO-Board mit Hilfe von zahlreichen Sensoren Leben einhauchen möchte. Wie das geht, zeigt der Autor Schritt für Schritt mit zahlreichen Abbildungen, und das in einer leicht verständlichen Sprache.
SENSOREN AM ARDUINO
FLORIAN SCHÄFFER
Florian Schäffer
MIT SENSOREN DEN ARDUINO ZUM LEBEN ERWECKEN
SHARE
SENSOREN AM ARDUINO
DESIGN
MIT SENSOREN DEN ARDUINO ZUM LEBEN ERWECKEN
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 ● DESIG RN ● 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 SIGN ● 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 ● DESI RN ● 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
COVER Sensoren_am_Arduino.indd All Pages
17-05-16 11:00
Sensoren am Arduino
● Florian Schäffer
an Elektor Publication LEARN
Sensoren am Arduino 160415.indd 3
DESIGN
SHARE
13-05-16 10:08
●
© 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. 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-317-5
Elektor-Verlag GmbH, Aachen www.elektor.de
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 Arduino 160415.indd 4
DESIGN
SHARE
13-05-16 10:08
Inhalt
Inhalt Inhalt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Kapitel 1 • Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.1 Das Sensoren-Kit für den ersten Einstieg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Laptop oder Einplatinencomputer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.3 Hard- und Softwareentwicklung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Kapitel 2 • Start mit dem Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1 Überblick Arduino Uno Revision 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.1.1. Der ATmega328 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.2. Anschlüsse beim ATmega328 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.1.3. Speicher des ATmega und Bootloader beim Arduino . . . . . . . . . . . . . . . . . . . . 19 2.1.4. Der USB-Seriell Konverter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.1.5 Was ist wo beim Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2 Inbetriebnahme des Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3 Zusätzliche Spannungsquelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.4 Die I/O-Anschlüsse auf der Platine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.4.1 Spannungsversorgung und Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.4.2 Analoge Eingänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.4.3 I/O-Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.4.4 Kontakt zur Umwelt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.5 Die Arduino Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.5.1 Konfiguration der IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.5.2 Ergebnis des Compilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 2.6 Erste Schritte mit dem Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.6.1 Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.6.2 Hello World Quellcode- und Speicheranalyse . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.6.3 Datenausgabe an den PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 2.6.4. Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Kapitel 3 • Kennenlernen der 37 Sensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.1 KY-001 - 1-Wire Temperatursensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.2 KY-002 - Erschütterungsschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
●5
Sensoren am Arduino 160415.indd 5
13-05-16 10:08
Sensoren am Arduino
3.3 KY-003 - Analoger Magnetfeld-/Hall-Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.4 KY-004 - Kurzhubtaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.5 KY-005 - IR-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.6 KY-006 - Passiver Buzzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.7 KY-008 - Rote Laserdiode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.8 KY-009 - SMD RGB-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.9 KY-010 - IR-Gabellichtschranke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 3.10 KY-011 - 2-Farben-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.11 KY-012 - Aktiver Buzzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 3.12 KY-013 - Analoger Temperatursensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 3.13 KY-015 - Digitaler Temperatur- und Luftfeuchtigkeitssensor . . . . . . . . . . . . . . . . 73 3.14 KY-016 - RGB-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 3.15 KY-017 - Quecksilberschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 3.16 KY-018 - Analoger Fotowiderstand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3.17 KY-019 - Relais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.18 KY-020 - Lageabhängiger Schalter mit Kugel . . . . . . . . . . . . . . . . . . . . . . . . . . 78 3.19 KY-021 - Reedschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 3.20 KY-022 - IR-Empfänger/Decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 3.21 KY-023 - Analoger Joystick mit Drucktaster . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 3.22 KY-024 - Magnetfeld-/Hall-Sensor mit Komparator . . . . . . . . . . . . . . . . . . . . . . 82 3.23 KY-025 - Reed-Schalter mit Komparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.24 KY-026 - IR-Sensor mit Komparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 3.25 KY-027 - LED und Quecksilberschalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 3.26 KY-028 - Analoger Temperatursensor mit Komparator . . . . . . . . . . . . . . . . . . . . 86 3.27 KY-029 - Kleine 2-Farben-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 3.28 KY-031 - Schock-Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 3.29 KY-033 - IR-Reflexlichtschranke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 3.30 KY-034 - Farbwechsel-LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 3.31 KY-035 - Magnetfeld-/Hall-Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 3.32 KY-036 - Berührungssensor mit Komparator, . . . . . . . . . . . . . . . . . . . . . . . . . . 92 3.33 KY-037 - Mikrofon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
●6
Sensoren am Arduino 160415.indd 6
13-05-16 10:08
Inhalt 3.34 KY-038 - Mikrofon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 3.25 KY-039 - Fingerkuppenherzschlagfühler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 3.26 KY-040 - Drehencoder mit Drucktaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Kapitel 4 • Taster und Schalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.1 Pull-Up und Pull-Down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.2 Tastenprellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.3 Einfache Tasteneingaben: Pull-Down . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.4 Einfache Tasteneingaben: Pull-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.5 Schaltzustände als Ereignis behandeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.6 Links oder rechts herum? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 4.7 Sensoren mit Komparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Kapitel 5 • Digitale Ausgänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.1 Kleine Lasten direkt steuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.2 Ausgangstreiber mit Transistor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5.3 Laserdiode Ein- und Ausschalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 5.4 Pulsweitenmodulation zur Helligkeitssteuerung . . . . . . . . . . . . . . . . . . . . . . . . 119 5.5 Relais für hohe Belastungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.6 Sound und Warntöne erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Kapitel 6 • Analoge Eingänge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 6.1 Dämmerungsschalter und Magnetfeldstärke . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 6.2 Temperaturmessung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Kapitel 7 • Sensoren mit Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 7.1 Temperatur und Luftfeuchtigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 7.2 1-Wire Temperatursensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 7.3 Infrarotsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
●7
Sensoren am Arduino 160415.indd 7
13-05-16 10:08
Sensoren am Arduino Uno
â—?8
Sensoren am Arduino 160415.indd 8
13-05-16 10:08
Kapitel 1 • Einleitung
Kapitel 1 • Einleitung Seit einigen Jahren erfreuen sich Mikrocontroller einer neu erwachten Beliebtheit. Galten sie früher als kompliziert und als nur für versierte Elektroniker und Assemblerprogrammierer geeignet, hat sich die Wahrnehmung inzwischen verschoben. Im Zuge des Maker-Trends haben auch Kleinstcomputer einen neuen Aufschwung erfahren. Zwar sind es noch immer komplexe Controller, die zum Einsatz kommen, doch erleichtern die inzwischen auf dem Markt erhältlichen Fertigboards, Erweiterungen und Entwicklungsumgebungen den Einstieg für Anfänger fast jeden Alters. Unter dem Projektnamen Arduino wurde eine Experimentierplatine entwickelt, die mit einem handelsüblichen Mikrocontroller der Firma Atmel und einigen für den Betrieb notwendigen Komponenten bestückt wurde. Zudem wurde eine Entwicklungsumgebung (IDE, Integrated Development Environment) zur einfachen Programmierung erarbeitet. Hard- und Software sind im Sinne von Open Source quelloffen und können von jedem frei genutzt und weiterentwickelt werden. 1.1 Das Sensoren-Kit für den ersten Einstieg
Dieses Buch richtet sich an jene Leser, die sich für einen Arduino entschieden haben und auf diesem mit der Arduino IDE entwickeln möchten. Inzwischen gibt es eine große Auswahl an kleinen Modulen, die an den Einplatinencomputer angeschlossen werden können. Ohne zusätzliche Hardware als Ein- und/oder Ausgabegeräte sind die Arduinos nämlich noch ziemlich nutzlos. Sie stellen zwar die Rechenleistung bereit, können aber im Grunde nichts weiter machen. Damit der Controller auch Einfluss mit seiner Umwelt interagieren kann, sind Sensoren und Aktoren erforderlich, die von einer Software gesteuert werden, die man auch selber erstellen kann bzw. die man bisweilen selber erstellen muss. Als Einstieg wird hier auf das 37 Module umfassende Sensor-Kit zurückgegriffen, welches für etwa 45 bis 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 dass ein tiefes Eintauchen in die Materie der Elektronik erforderlich wäre.
●9
Sensoren am Arduino 160415.indd 9
13-05-16 10:08
Sensoren am Arduino
Abbildung 1‑1: Teile im 37 Sensoren-Kit Voraussetzung für das Studium dieses Buches sind Grundkenntnisse im Bereich der Elektronik und des Programmierens. Welche Programmiersprache sie beherrschen, spielt fast keine Rolle. Wichtig ist, dass Sie die Arbeitsweise von Programmen und die üblichen Kontrollstrukturen und Mechanismen kennen. Da die Arduino-Programme, die meistens als Sketch (deutsch: Entwurf, Skizze) bezeichnet werden, in der Arduino IDE mit (einer leicht modifizierten Form) der Programmiersprache C++ geschrieben werden, sind Kenntnisse dieser Sprache hilfreich. Online können Sie dazu beispielsweise die allgemeine Einführung „C von A bis Z“ (http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/) lesen, wenn Sie nach etwas Bestimmtem suchen oder Lücken füllen möchten. Die Sensor-Module, im Arduino-Slang als Shields (engl.: Schild/Aufsatz) bezeichnet, können fast alle direkt an einem Arduino angeschlossen werden, ohne dass zusätzliche elektrische Bauteile erforderlich sind. In einzelnen Fällen werden lediglich ein paar Widerstände benötigt, die hier dann als Vorwiderstand für Leuchtdioden dienen. Dank dieser kleinen Platinenmodule lassen sich sehr schnell und einfach die Möglichkeiten eines einfachen Arduinos in jede gewünschte Richtung erweitern. Für fast alle Aufgaben gibt es inzwischen fertige Shields und dazu passende Sketches. Dank der chinesischen Massenbilligproduktion sind fertig aufgebaute Module oft billiger, als wenn Sie hierzulande die Bauteile einzeln kaufen würden. Produkthaftung, Umweltaspekte, Fairness und Zoll bleiben bei derartigen Angeboten natürlich auf der Strecke. Ein weiterer Aspekt in diesem Zusammenhang ist der, dass es in der Welt der Arduinos zu einer cut&paste-Mentalität gekommen ist. Viele Anwender greifen einfach zu einem Shield und kopieren den dazugehörenden Sourcecode (Sketch). Das Ergebnis ist zwar eine mit wenig Aufwand funktionsfähige Anwendung, doch
● 10
Sensoren am Arduino 160415.indd 10
13-05-16 10:08
Kapitel 2 • Start mit dem Arduino
Kapitel 2 • Start mit dem Arduino Der Open Source-Gedanke führt leider auch zu einem erheblichen Problem: Seit Januar 2015 befinden sich die Gründergruppe der Arduinoplattform (Arduino LLC) und die Produzenten der offiziellen Arduinoboards (Arduino S.r.l.) in einem Rechtsstreit um die Inhaberschaft des Markenrechtes von Arduino. Derzeit (Anfang 2016) existieren zwei Webpräsenzen von Arduino: arduino.org (von der Arduino S.r.l.) sowie arduino.cc (von Arduino LLC). Auf diesen Webseiten werden verschiedene Varianten der Arduino IDE mit unterschiedlichen Versionsangaben zum Download angeboten. In diesem Buch wird die Version von arduino.cc verwendet. Bei der Hardware macht sich der Unterschied nicht so sehr bemerkbar. Lediglich der Preis ist in den letzten Jahren stark gefallen, wozu auch chinesische Billiganbieter beigetragen haben. Unter der neuen Marke Genuino wird in Zukunft vor allem Hardware (aber vermutlich auch Software) angeboten, die vom ursprünglichen ArduinoGründer entwickelt wurde. Inzwischen gibt es eine Vielzahl an Arduinos (siehe https://www.arduino.cc/en/Main/Products). Dabei handelt es sich immer um ein Entwicklungsboard, auf dem ein Mikrocontroller eines regulären Chipherstellers verbaut ist. Im Wesentlichen funktionieren die Grundelemente bei diesen Boards alle auf die gleiche Weise. Das Board wird mit dem PC verbunden, um das dort entwickelte Programm zu übertragen und ggf. auch mit Spannung zu versorgen. Auf dem Board befinden sich mehr oder weniger viele Anschlüsse (I/O, Input/Output, deutsch: Ein-/Ausgabe) für externe Hardware. Der wesentliche Unterschied liegt im verbauten Prozessor und dessen Kapazität sowie der Anzahl und Ausführung der I/O-Pins. In diesem Buch wird ausschließlich der Arduino Uno Rev. 3 verwendet. Diesen gibt es in zwei Ausführungen: Die Version DIL/PDIP (Dual In-line/Plastic Dual In-line Package) nutzt einen gesockelten ATmega328 mit 28 Pins, die SMD-Version greift auf den gleichen Typ im 32 Pin MLF/QFN (Micro Lead Frame/Quad Flat No Leads Package)-Gehäuse zurück. Die zusätzlich vorhandenen vier Pins bringen keinen weiteren Vorteil für den Arduino-Anwender – sehr wohl aber für solche Nutzer, die den ATmega direkt nutzen, da zwei weitere Analog-DigitalWandler-Eingänge vorhanden sind.
● 13
Sensoren am Arduino 160415.indd 13
13-05-16 10:08
Sensoren am Arduino
Abbildung 2‑2: Arduino Uno SMD-Edition (Bild: Clic17, Wikimedia Commons, CreativeCommons-Lizenz CC BY‑SA 4.0) Die Frage, ob Arduino ein Mikrocontroller ist, kann klar mit einem „Nein“ beantwortet werden. Es handelt sich lediglich um einen Gattungsnamen für verschiedene Entwicklungsboards. Der eigentliche Mikrocontroller ist der ATmega. Alles andere ist nur Beiwerk, um die Hardware bequem nutzen zu können und eine einfache Integration in die Softwareentwicklungsumgebung zu gewährleisten. Aus diesem Blickwinkel kann auch die immer wieder auftauchende Frage beantwortet werden, was denn besser sei: ein Arduino oder ein ATmega? Wenn Sie einen PC kaufen, dann fragen Sie auch nur zweitrangig, ob er von Dell, IBM/Lenovo, HP oder sonst wem stammt. Interessanter ist, welche CPU darin zum Einsatz kommt. Die CPU können Sie aber andererseits nicht ohne zusätzliche Hardware betreiben. Technisch gesehen könnten Sie jedoch hingehen und eine CPU kaufen und Ihren eigenen PC (Motherboard usw.) drumherum bauen. Beim ATmega ist das fast genauso: Der Chip ist immer der gleiche. Sie können ein fertiges Entwicklungsboard kaufen oder den Chip nehmen und selber etwas aufbauen. Das ist bei einem ATmega328 sogar extrem einfach: Sie benötigen lediglich eine Spannungsquelle (und eventuell einen kleinen Kondensator). Alles, was das Experimentierboard bietet, ist nur eine Erleichterung, aber keine Leistungssteigerung. 2.1 Überblick Arduino Uno Revision 3
Als Erstes lohnt es sich, einen kurzen Blick auf den Arduino Uno 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 ein wenig ratlos vor der Hardware. Wenn Sie sich erst noch einen Arduino Uno zulegen möchten, empfehle ich Ihnen, darauf
● 14
Sensoren am Arduino 160415.indd 14
13-05-16 10:08
Kapitel 3 • Kennenlernen der 37 Sensoren
Kapitel 3 • Kennenlernen der 37 Sensoren In der Sortiments-Box befinden sich 37 unterschiedliche Module, wobei es von einem der Module zwei Platinen gibt, also 38 Platinen enthalten sind. Einige Bauteile sind in identischer oder funktional ähnlicher Form auf mehreren Baugruppen vorhanden. Wenn Sie ein Sortiment von einem anderen Anbieter besitzen, kann es sein, dass dieses abweichend von dem hier gezeigten zusammengestellt wurde. Neben den in diesem Buch beschriebenen Sensoren sind auch noch zahlreiche weitere verfügbar. 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 3‑43: Inhalt des 37-Sensoren-Kit Für alle Module gilt, dass sie gängige elektronische Bauelemente nutzen, die Sie auch bei jedem gut sortierten Elektronikhändler erhalten können. Wenn Sie also die Beschaltung des Bauteils und dessen Kenndaten kennen, 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 vertrieben wird, als ein einzelnes Bauteil hierzulande kostet. Das liegt natürlich auch an der Umgehung von Umsatz- und Einfuhrsteuern. Im Folgenden erhalten Sie einen kurzen Überblick dazu, welches Modul welche Funktion bietet. Die verwendeten Namen entsprechen denen, die im Web (und auch hier im Buch) üblicherweise für die Baugruppen genutzt werden, so dass Sie ggf. leichter weitere Informationen finden können. Die nachfolgende Tabelle zeigt die Position der Module in den Sortimentsfächern.
● 59
Sensoren am Arduino 160415.indd 59
13-05-16 10:09
Sensoren am Arduino
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 sicherstellen, dass 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 3‑44: Warnung vor Gefahren Einige der Module können für Mensch und Umwelt gefährlich sein und wurden in der 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 angeführt sind und die im Allgemeinen für den Umgang mit diesen Gefahrenquellen gelten.
● 60
Sensoren am Arduino 160415.indd 60
13-05-16 10:09
Kapitel 4 • Taster und Schalter
Kapitel 4 • Taster und Schalter Das Auswerten von digitalen Signalen ist mit dem Arduino denkbar einfach. Ein Schalter oder Taster kennt nur zwei Zustände: Er ist entweder geöffnet oder geschlossen. Ob der Schalter dann mechanisch durch Drücken bzw. Verschieben einer Kugel etc. oder Lichteinfall auslöst, spielt keine Rolle. 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.
Abbildung 4‑119: Taster S1 ist gegen VCC und S2 gegen Masse geschaltet. 4.1 Pull-Up und Pull-Down
Das Problem bei dieser einfachen Beschaltung besteht darin, dass der Zustand des geöffneten Schalters elektrotechnisch nicht definiert ist. Bei offenem Schalter hängt der Anschluss des Mikrocontrollers 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 so verhält, als wäre er mit Masse oder VCC verbunden. Diesem Problem wird mit einem Pull-Up- oder Pull-Down-Widerstand begegnet.
● 97
Sensoren am Arduino 160415.indd 97
13-05-16 10:09
Sensoren am Arduino
Abbildung 4‑120: Pull-Down- und Pull-Up-Widerstand Der Widerstand wird in den meisten Fällen mit etwa 10 kΩ dimensioniert. Als Pull-DownWiderstand zieht er den Eingang des Mikrocontrollers gegen Masse, so dass der Signalpegel bei geöffnetem Schalter definitiv 0 V beträgt. Wenn der Schalter geschlossen wird, 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. Falls der Widerstand fehlt, müssen Sie ihn zusätzlich anbringen. 4.2 Tastenprellen
Ein weiteres Problem bei mechanischen Schaltern besteht in 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 Kontaktes 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.
● 98
Sensoren am Arduino 160415.indd 98
13-05-16 10:09
Kapitel 5 • Digitale Ausgänge
Kapitel 5 • Digitale Ausgänge Jeder I/O-Pin kann als Eingang oder als Ausgang genutzt werden. Während sich der Betrieb als Signaleingang relativ unkompliziert realisieren lässt, sind für die Nutzung in die andere Richtung einige Vorüberlegungen erforderlich. Das Hauptproblem besteht darin, dass sich die Ausgänge nicht beliebig hoch belasten lassen, sondern nur etwa 20 mA liefern können, wobei auch die Gesamtbelastung zu beachten ist. Lasten wie ein Relais oder ein Signaltongeber benötigen meistens mehr Strom. Es ist also ratsam, den Ausgang erst an einen Treiber anzuschließen und darüber die eigentliche Last zu steuern. 5.1 Kleine Lasten direkt steuern
Standard-Leuchtdioden (LED) benötigen ca. 20 mA Strom. Mit gerade einmal 2 mA kommen sogenannte Low-Current-LEDs aus, die allerdings auch weniger hell sind. Superhelle LEDs benötigen oft sehr viel mehr Strom, so dass sie nicht Bestandteil dieses Kapitels sein werden. LEDs dürfen auf keinen Fall direkt an eine Betriebsspannung angeschlossen werden. Es ist immer ein Vorwiderstand erforderlich, weil ansonsten der Strom (unendlich) groß werden kann, was die LED zerstört. Die Berechnung des Vorwiderstandes ist ganz einfach. Sie müssen dazu lediglich drei Werte kennen: • Die Spannung UVCC, an der die LED betrieben werden soll. Beim Arduino ist dies meistens 5 V. • Die Vorwärtsspannung VF der LED. Diese finden Sie im Datenblatt. Sie liegt bei Standard-LEDs bei etwa 2,2 V. • Den Vorwärtsstrom IF, den die LED verkraftet (s. o.). Im Datenblatt wird zwischen Peak- und Continuous-Vorwärtsstrom unterschieden. Beim ersten handelt es sich um den Strom, den die Diode bei kurzen Impulsen verkraftet. Dieser ist deutlich größer (ca. 100 mA), als der zweite Wert, der für Sie relevant ist. Auf den meisten Modulen sind keine Vorwiderstände verbaut, so dass Sie diese nicht direkt nutzen können, sondern immer noch einen Widerstand an einen der beiden Pins anschließen müssen.
Abbildung 5‑135: Die RGB-LED kann dank verbauter Vorwiderstände direkt am Arduino betrieben werden.
● 115
Sensoren am Arduino 160415.indd 115
13-05-16 10:09
Sensoren am Arduino
Im Grunde haben Sie schon immer dann eine LED an einem I/O-Pin betrieben, wenn Sie die auf dem Arduino-Board verbaute LED L angesteuert haben. Von daher ändert sich am Sketch auch nichts weiter als die Zuordnung des I/O-Pins. Auf dem Modul KY-016 mit der dreifarbigen RGB-LED sind die halbwegs passenden Vorwiderstände vorhanden, so dass sie dieses Modul direkt einsetzen können. 1
// RGB LED ansteuern
2 3
#define LEDR 4
4
#define LEDG 3
5
#define LEDB 2
6 7
void setup()
8
{
9
pinMode (LEDR, OUTPUT);
// LED an Ausgang
10
pinMode (LEDG, OUTPUT);
// LED an Ausgang
11
pinMode (LEDB, OUTPUT);
// LED an Ausgang
12
}
13 14
void loop()
15
{
16
uint8_t i;
17 18
while (1)
19
{
20
for (i = 1; i <= 7; i++)
21
{
// endlos... // 1..7
22
RGB (i);
// Farbwert ausgeben
23
delay (800);
// Verzoegerung
24
}
25 26
} }
27 28
void RGB (uint8_t color)
29
{
30 31 32 33
if (color & 1)
// Bit 1
digitalWrite (LEDR, HIGH); else digitalWrite (LEDR, LOW);
34 35 36 37 38
if (color & 2)
// Bit 2
digitalWrite (LEDG, HIGH); else digitalWrite (LEDG, LOW);
39 40
if (color & 4)
// Bit 3
● 116
Sensoren am Arduino 160415.indd 116
13-05-16 10:09
Kapitel 6 • Analoge Eingänge
Kapitel 6 • Analoge Eingänge Wenn ein Sensor seinen Widerstand in Abhängigkeit von der Messgröße ändert, kann dies nicht direkt vom Arduino ausgewertet werden. Mit dem variablen Widerstandswert lässt sich aber die Größe einer Spannung ändern. Der hierfür notwendige Analaog-Digital-Wandler ist beim ATmega vorhanden, so dass mit dem Arduino Uno bis zu sechs analoge Spannungen direkt gemessen werden können. 6.1 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 montiert werden. Analoge Signale können an den Eingängen A0 bis A5 gemessen werden. Dabei ist unbedingt darauf zu achten, dass die Spannung niemals größer wird als die Versorgungsspannung des ATmega (5 V beim Arduino Uno), weil ansonsten der Prozessor Schaden nehmen würde. Üblicherweise wird zu diesem Zweck ein unbelasteter Spannungsteiler berechnet. Da sich auf dem Modul bereits ein Festwiderstand befindet, lässt sich einfach ein Spannungsteiler realisieren, dessen Mittelabgriff als Spannungswert an den A/D-Wandler übertragen wird.
Abbildung 6‑143: Modul KY-018 am Analogeingang des Arduino Uno 1
// Analogen Messwert einlesen und seriell ausgeben
2 3
#define AIN A0
// Analoger Eingang
4 5
void setup()
6
{
7 8
Serial.begin (9600);
// Seriellen Port oeffnen
}
9 10 void loop() 11 { 12
uint16_t wert;
// 10 Bit A/D
13 14
while (1)
15
{
16
wert = analogRead (AIN);
17
Serial.print (“Helligkeit: “);
// Analogwert einlesen
● 123
Sensoren am Arduino 160415.indd 123
13-05-16 10:09
Sensoren am Arduino
18
Serial.print (wert);
19
Serial.print (“ - Spannung: “);
20
Serial.print (5 / 1024.0 * wert);
21
Serial.println (“ V”);
22 23
delay (500); }
24 }
Auf die analogen Eingangspins kann mit A0 bis A5 oder auch mit 0 bis 5 zugegriffen werden. Von analogRead() werden immer die analogen Eingänge genutzt. Da die Eingänge auch mittels digitalWrite() als Ausgang verwendet werden können und in diesem Fall die Unterscheidung zwischen den analogen und digitalen Pins nur durch das vorangestellte „A“ erfolgen kann, ist es ratsam, den Buchstaben immer entsprechend mit anzugeben. Wie im Code zu sehen ist, muss nicht zusätzlich mit pinMode() ein Anschluss für analoge Eingänge eingerichtet zu werden. Der interne A/D-Wandler besitzt eine Auflösung von 10 Bit, womit Messwerte von 0 bis 1.023 möglich sind. Welche Messwerte tatsächlich geliefert werden, hängt vom Spannungsteiler ab und davon, inwieweit die Spannung am Eingang von 0 V bis 5 V variiert. Der A/D-Wert stellt nur einen Messwert für die Spannung dar und ist einheitenlos. Um die äquivalente Spannung zu bestimmen, muss die Referenzspannung (in dem Fall 5 V) durch die Auflösung dividiert und dann mit dem A/D-Wert multipliziert werden. Damit bei der Division von 5/1024 kein cast auf einen Integer erfolgt (dies würde 0 ergeben), wird der Dezimalpunkt mit 0 angegeben („1024.0“), so dass mit ca. 0,0048 weitergerechnet wird. Weil der Analog-DigitalWandler ohnehin pro Wandlung etwa 100 µs benötigt, wird die Wiederholung des Messvorgangs etwas verzögert.
Abbildung 6‑144: Messwerte für den Fotowiderstand bei viel Lichteinfall, wird der Wert klein. Die Referenzspannung für die Analogwandlung ist standardmäßig identisch mit der Betriebsspannung. Bei anderen Arduinos kann sie auch 3,3 V betragen. Mit analogReference() haben Sie die Möglichkeit, eine andere Referenzspannung anzugeben. Der ATmega328 kennt
● 124
Sensoren am Arduino 160415.indd 124
13-05-16 10:09
Kapitel 7 • Sensoren mit Protokoll
Kapitel 7 • Sensoren mit Protokoll Im Gegensatz zu den bisherigen Modulen liefern diese Sensoren kein digitales oder analoges Messsignal, sondern werden über ein (einfaches) Kommunikationsprotokoll angesprochen. Um einen Wert zu erhalten, muss ein Befehl an den Sensor gesendet und die Antwort ausgewertet werden. Einige Sensoren nutzen Standard-Protokolle, während bei anderen die Hersteller eigene Wege gehen. Angenehmerweise haben sich bereits zahlreiche andere Programmierer mit den Sensoren beschäftigt, so dass diverse Bibliotheken zur Verfügungen stehen, die den Einsatz sehr einfach gestalten. 7.1 Temperatur und Luftfeuchtigkeit
Auf dem Modul KY-015 befindet sich der praktische Sensor vom Typ DHT11. Das proprietäre Protokoll ist zwar einfach, birgt aber die Tücke, dass ein relativ präzises Timing eingehalten werden muss. Exemplarisch soll hier die Library SimpleDHT (https://github.com/ winlinvip/SimpleDHT) verwendet werden. Die Bibliotheksverwaltung der Arduino IDE kennt diese Bibliothek.
1. U m sie zu installieren, müssen Sie nur Sketch/Bibliothek einbinden/Bibliotheken verwalten öffnen.
2. S uchen Sie in der Liste nach der Bibliothek oder geben Sie im Textfeld oben rechts „DHT“ ein, um die Auflistung einzuschränken.
Abbildung 7‑147: Verwalten von Bibliotheken
3. K licken Sie in das Beschreibungsfeld der gewünschten Bibliothek und dann auf Installieren.
4. E s ist eine Online-Verbindung erforderlich, dann werden die Dateien heruntergeladen und installiert.
5. Anschließend können Sie das Fenster schließen.
6. Erstellen Sie ggf. einen neuen Sketch mittels Datei/Neu.
● 129
Sensoren am Arduino 160415.indd 129
13-05-16 10:09
Sensoren am Arduino
7. W ählen Sie Sketch/Bibliothek einbinden/SimpleDHT, um die notwendigen includes zu erzeugen. 1
// DHT Sensor
2 3
#include <SimpleDHT.h>
4 5
#define DHT11 2
// Datenpin
6 7
void setup()
8
{
9
Serial.begin (9600);
10 } 11 12 void loop() 13 { 14
SimpleDHT11 sensor;
15
uint8_t temp, humidity;
// Neue Instanz der Klasse
16 17
while (1)
18
{
// endlos...
19
// Sensor abfragen, Messwerte mit Zeigern, kein Bitmuster
20
if (sensor.read (DHT11, &temp, &humidity, NULL))
21 22
else
23
{
24
Serial.print(temp);
25
Serial.print(“ ‘C, “);
26
Serial.print(humidity);
27
// Daten OK
Serial.println(“ %”);
28
}
29 30
// Fehler
Serial.println (“DHT11 Fehler”);
delay(1000);
// DHT11 sampling rate max. 1 HZ
}
31 }
Für das Sensormodul ist lediglich eine Verbindung zu einem beliebigen digitalen Eingangspin (im Code ggf. anpassen) und 5 V sowie zu Masse erforderlich. Im Seriellen Monitor der IDE können Sie dann die ermittelten Messwerte anzeigen. Bei einem Datenfehler erhalten Sie hier eine entsprechende Meldung. Der Sensor muss nicht kalibriert werden, so dass die Werte ohne weitere Berechnungen nutzbar sind. Die Bibliothek öffnet den I/O-Pin eigenständig für die benötigte Richtung zum Datenaustausch. Es ist lediglich ein Aufruf der Methode .read() erforderlich, der Sie den genutzten Pin sowie zwei Zeiger auf die Variablen für die beiden Messwerte übergeben. Der letzte Parameter gibt an, ob die einzelnen Bits der Kommunikation ebenfalls geliefert werden sollen, was nicht der Fall ist. Der DHT11 ist nur für eine relativ langsame Abfrage geeignet. Nach jedem Versuch muss eine Pause von (mindestens) einer Sekunde eingelegt werden.
● 130
Sensoren am Arduino 160415.indd 130
13-05-16 10:09
Index
Index Symbols 1-Wire 131 1-Wire Datenprotokoll 61 8-Bit 16 ±12 V 23 16 MHz 16 78S05 32 A A5 135 A3144 63 Abgreifklemmen 38 Allman-Stil 43 American National Standards Institute 40 American Standard Code for Information Interchange 46 Analaog-Digital-Wandler 123 Analog 120 ANSII C 40 Anwendungsspeicher 19 Arduino 13 Arduino Uno 11, 14 ASCII 46, 58 ATmega8U2 25 ATmega16U2 25 ATmega328 13, 17 Atmel Studio 55 Ausgang 115 Ausgangstreiber 117 Ausrufezeichen 101 B Backslash 112 Basis 117 BC337 117 BC547 117 Berührungssensor 92 Betriebsspannung 18 Bibliothek 53, 108, 129, 134 Bibliotheken 41 Binärdaten 46 Binnenmajuskel 49 57 boolesche Algebra Bootloader 19 Breadboard 36 Bus 131 Buzzer 122 C C90 40 camel case 49 case-sensitiv 49 cast 124 C-Compiler 39 C, Einführung 10 CH-341 26 CISC 16 class 49
Code-Faltung 44 Compiler 50 Complex Instruction Set Computer 16 COM-Port 51 COM-Port 23 const 54 D Dallas 131 Dämmerungsschalter 123 Datenblatt 11 Datentypen 57 DC/DC-Wandler 32 Debug 55 Device Firmware Update 25 Dezimalzahl 57 DFU 25 DHT11 73, 129 DHT21 73 DHT22 73 DIL 13 Drehencoder 95, 106 Drehgeber 95 Drehimpulsgeber 106 DS18B20 61, 131 Dual In-line 13 E EEP 46 20, 35, 46 EEPROM EE-SX1103 69 Eindraht-Protokoll 131 Einrücken 43 Electrical Erasable Programmable Read Only Memory 20 ElectroStatic Discharge 15 Elektretkondensatormikrofonkapsel 93 Elektretmikrofon 94 elektrostatische Aufladung 15 ELF 46 Emitter 118 Encoder 95 Entwicklungsumgebung 38 Epitaxial Darlington NPN Transistor 92 Erdung 15 Erschütterungsschalter 62 ESD 15 46 Executable and Linkable Format F Fehlerausgabe 50 Feld 57 Fernbedienung 134 Fernseher 134 Festspannungsregler 32 Flammenerkennung 84 Flash 19, 46 float 58
● 137
Sensoren am Arduino 160415.indd 137
13-05-16 10:09
Sensoren am Arduino
Fotowiderstand 76 Freilaufdiode 77 Frequenz 122 FT232 24 FTDI 24 Fuse-Bit 19 .
G Gabellichtschranke 69 Ganzzahlig 57 GCC 12, 39 Gefahr 60 Gefrierpunkt 127 13, 16 Gehäuse General Purpose Input/Output 33 Genuino 13 43 geschweiften Klammer globale Variable 41 GND 33, 34, 60 GNU Compiler 12 Gray-Code 108 34, 60 Ground H HAL501 82, 91 Hall-Sensor 91 33, 53 Header Header-Datei 112 49 hello world HEX 46, 135 High-Aktiv 100 HL-340 26 hochladen 46 Hohlbuchse 30 I I²C 35 9, 12 IDE include 110 80, 134 Infrarot Infrarot-LED 65 INO 41 21 In-System Programming Integer 57 46 Intel HEX-Format Interruptbehandlung 102 102 Interrupt Request I/O-Pin 53 IR 134 IR-Empfänger 80 IR-Lichtschranke 94 IRQ 102 ISP 21 J Joint Test Action Group 21 Joystick 81 21, 55 JTAG K Kernighan 40
Klasse 49 Kollektor 117 Komparator 113 Kompilieren 44 Kondensator 99 Konfigurations-Bits 19 Kühlkörper 30 KY-001 131 KY-006 121 KY-009 119 KY-012 121 KY-015 129 KY-019 121 KY-022 134 KY-024 114 KY-040 106 L Laptop 11 Laserdiode 67 LDR 76 68, 70, 87, 90, 115, 119 LED LED L 49 LED On 49 LED, RGB 74 LED TX 53, 56 Leuchtdiode 115 32 LF 33 CV Library 53 librarys 41 76 Light Dependent Resistor Linienverfolgung 89 loop() 41 Low-Aktiv 101 Low-Current-LED 115 Luftfeuchtigkeit 73 M Magnet 79 63, 82, 91 Magnetfeldsensor main() 40 33, 34, 60 Masse Melodie 122 13 Micro Lead Frame Minuszeichen 60 MLF 13 126 Modul KY-013 N Namenskonvention 49 NCP1117 30 NEC-Standard 80 Negativ Temperature Coefficient 72, 86 NTC 72, 86, 126 O 119 Ohmsches Gesetz Operationsverstärker 49 OUTPUT 53
● 138
Sensoren am Arduino 160415.indd 138
13-05-16 10:09
Index
P Parallelport 22 Parasitäre Spannung 131 PCI 22 PCM 80 PDIP 13 Pegel (Signal-) 23 pinMode() 53 Pinout 17 Plastic Dual In-line Package 13 Power-LED 49 Präprozessor 54 Prellen, Taste 98 Protokoll 129 Pull-Down 97 Pull-Up 97 102 Pull-Up-Widerstand, intern Puls-Code-Modulation 80 Pulsweitenmodulation 120 120 PWM Q QFN 13 13 Quad Flat No Leads Package Quecksilberschalter 75, 85 Quellcode 43 R RC5-Standard 80 RC-Glied 99 16 Reduced Instruction Set Computer Reedschalter 79, 83 Referenz 53 Reflexlichtschranke 89 Register 19 77, 121 Relais Reset 20, 53 Resettaster 53 RGB-LED 116 Ritchie 40 RS232 22 RS232-Pegel 56 S SBC 14 Schalter 97 78 Schalter, Kugel Schaltnetzteil 31 Schmitt-Trigger 99 Schock-Sensor 88 Schreib-/Löschzyklus 19 Scratchbook 133 Sensor 60 Sensor-Kit 9 Serial Peripheral Interface 21, 35 Serieller Monitor 56 55 serieller Port setup() 41 Shields 10 Siedepunkt 127 Signalgeber 71
Single Board Computer 14 Sketch 10 Slash 112 Snubber 77 SOT-223 30 Spannung 29 Spannungspegel 97 Spannungsregler 31 Speicher 19 Speicherverbrauch 54 SPI 21, 35 SRAM 19, 54 Static Random Access Memory 19 Steckboard 36 Steckbrücken 37 Steckernetzteil 30 Strom 29 Stromaufnahme 18 Summer 66 T Tastenprellen 98 64, 97 Taster Teilnehmer 131 126, 129 Temperatur Temperaturbeiwert 72 61, 72 Temperatursensor Thermometer 126 Tiefpassfilter 99 Toggeln 55 Tonfrequenz 122 Transistor 117 Transistor-Transistor-Logik 23 23, 56 TTL-Pegel TWI 35 35 Two Wire Interface U übertragen 51 unsigned 57 24, 29 USB USB-Bridge 25 USB-Hub 29 USB-Seriell-Adapter 23 USB-Wandler 26 V Variable 19 VCC 33, 97 Versorgungsspannung 18, 29, 97 Verzeichnis 43 Vorwärtsspannung 115 Vorwärtsstrom 115 Vorwiderstand 119 Vorzeichen 57 W Wahrheitswerte 57 Warnton 122 Warnungen 44 Wertebereich 57
● 139
Sensoren am Arduino 160415.indd 139
13-05-16 10:09
Sensoren am Arduino
Widerstand 97, 119 WinAVR 55 Z Zeichen 58 Zeiger 57 Zeilennummern 44 Zeilenumbruch 57 ZIP 134
â&#x2014;? 140
Sensoren am Arduino 160415.indd 140
13-05-16 10:09
ISBN 978-3-89576-317-5
Elektor-Verlag GmbH 52072 Aachen www.elektor.de
Inzwischen gibt es eine große Auswahl an Sensor-Modulen, die an den Arduino angeschlossen werden können. Als Einstieg in die faszinierende Welt der Sensorik 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 beeindruckende Erfolge erzielen, ohne dass man tief in die Materie der Elektronik eintauchen muss. Eine kurze Einführung in die Grundlagen der Nutzung des Arduinos und die Entwicklungsumgebung ebnen den Weg für Einsteiger. Die Funktionsweise und Beschaltung der einzelnen Sensoren wird ausführlich erklärt und ihre Verwendung durch die gut dokumentierten Beispielprogramme leicht nachvollziehbar gemacht. Die Arduino-Programme (auch Sketche genannt) werden dabei mit der Arduino IDE in der Programmiersprache C/C++ erstellt.
SENSOREN AM ARDUINO
●
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.
Mit einem Arduino ohne zusätzliche Elektronik kann man nicht viel anfangen. Dieses Buch richtet sich an jeden, der seinem Arduino-UNO-Board mit Hilfe von zahlreichen Sensoren Leben einhauchen möchte. Wie das geht, zeigt der Autor Schritt für Schritt mit zahlreichen Abbildungen, und das in einer leicht verständlichen Sprache.
SENSOREN AM ARDUINO
FLORIAN SCHÄFFER
Florian Schäffer
MIT SENSOREN DEN ARDUINO ZUM LEBEN ERWECKEN
SHARE
SENSOREN AM ARDUINO
DESIGN
MIT SENSOREN DEN ARDUINO ZUM LEBEN ERWECKEN
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 ● DESIG RN ● 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 SIGN ● 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 ● DESI RN ● 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
COVER Sensoren_am_Arduino.indd All Pages
17-05-16 11:00