Sensoren am Arduino (Leseprobe)

Page 1

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

â—? 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


Turn static files into dynamic content formats.

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