32
Analoge und digitale Daten messen, verarbeiten und anzeigen: Abstand, Gas, Schall, Schweiß, Strom, Temperatur, Wasserstand und vieles mehr. MATTIAS SCHLENKER ARDUINO SENSOREN AM Mit vielen Tipps für die Praxis: Arduino -Selbstbau, Schlafmodus, Brownout deaktivieren und mehr. FRUIT UP YOUR FANTASY

MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Internet der Dinge, Physical Computing – Umgebungs-einflüsse sammeln, verarbeiten und darauf reagieren: Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale in Ihren Projekten einzusetzen – obHausautomation, Roboter oder Wetterstation, Sensorensind immer dabei.

Der richtige Arduino™Den EINEN Arduino™ gibt es längst nicht mehr, vielmehr ein Potpourrivon verschiedenen Platinen. Falls Ihnen die Plantinen zu eingeschränktoder zu teuer sind, dann bauen Sie Ihren eigenen Arduino™. Egal,welche Option Sie wählen, in einem ausführlichen Kapitel lernen Sie,welche Variante für Sie am besten ist. Und auch beim Selbstbau werdenSie nicht alleine gelassen: Sie erhalten ausführliche Schritt-für-Schritt-Anleitungen mit Bauteilliste und Schaltplan.

ProjektpraxisVom Anschluss an den Datenbus, wie I2C oder SPI, bis zur Anzeigeund Speicherung: In vielen Praxisprojekten lernen Sie Sensoren einzu-setzen: Uhr mit Thermometer, Funksteckdosen per Klatschen aktive-ren, Roboter oder der Lügendetektor – für jeden ist hier etwas dabei.Jedes Projekt ist für den Nachbau dokumentiert mit Bauteilen,Schaltplan und Quellcode, den Sie nicht abtippen müssen, sondern direkt von der Buchwebseite herunterladen können.

Der komplette Quellcode aus dem Buch auf www.buch.cd

34,95 EUR [D] / 36,– EUR [A]ISBN 978-3-645-60344-7

SENSOREN AM

ARDUINO

Schl

enke

r

Arduino™

SEN

SO

RE

N A

M A

RD

UIN

O™

Aus dem Inhalt:• Arduino™-Modelle im Überblick

• Arduino™ selber bauen

• Arbeiten mit Schaltern

• Analoge und digitale Sensoren

• Drahtlose Kommunikation

• USB, Ethernet und serielle Verbindung

• Bussysteme: CAN-Bus, I2C und SPI

• Sensordaten anzeigen und speichern

• Temperatur, Wasserstand und Wassermelder

• Fotowiderstände und Gassensoren

• Infrarot- und Ultraschnellsensor

• Lügendetektor

• Rauchmelder

• Roboter bauen

• Ströme messen mit Shunts

• WLAN-Sensoren

Besuchen Sie unsere Websitewww.franzis.de

Über den Autor:Mattias Schlenker entwickelt Live-Linux-Distributionen, vornehmlich als Notfall- und Rettungssysteme, und ist als Autor für Linux-,Netzwerk- und Sicherheitsthemen für verschie-dene Computermagazine tätig. Das in den letztenJahren neu erworbene Arduino™-Fachwissengibt er gerne in Buchform weiter.

MATTIAS SCHLENKER

Analoge und digitale Daten messen,verarbeiten und anzeigen: Abstand,Gas, Schall, Schweiß, Strom,Temperatur, Wasserstand und vieles mehr. 

MATTIAS SCHLENKER

ARDUINOSENSOREN AM

Mit vielen Tipps für diePraxis: Arduino™-Selbstbau,Schlafmodus, Brownout deaktivieren und mehr.

FRUIT UP YOUR FANTASY

Faszinierende Projekte: Telefonwählscheibe als Eingabe für IP-Telefonie Übersichtliche Dokumentation für den Nachbau der Projekte

60344-7_U1+U4_2 05.03.15 16:45 Seite 1

Page 2: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Mattias Schlenker

Sensoren am Arduino™

60344-7_Titelei_X 02.03.15 16:03 Seite 1

Page 3: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Mit vielen Tipps für diePraxis: Arduino™-Selbstbau,Schlafmodus, Brownout deaktivieren und mehr.

Analoge und digitale Daten messen,verarbeiten und anzeigen: Abstand,Gas, Schall, Schweiß, Strom,Temperatur, Wasserstand und vieles mehr. 

MATTIAS SCHLENKER

ARDUINOSENSOREN AM

FRUIT UP YOUR FANTASY

60344-7_Titelei_X 02.03.15 16:03 Seite 3

Page 4: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Bibliografische Information der Deutschen Bibliothek

Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;detaillierte Daten sind im Internet über http://dnb.ddb.de abrufbar.

Alle Angaben in diesem Buch wurden vom Autor mit größter Sorgfalt erarbeitet bzw. zusammengestellt und unter Einschaltung wirksa-mer Kontrollmaßnahmen reproduziert. Trotzdem sind Fehler nicht ganz auszuschließen. Der Verlag und der Autor sehen sich deshalb ge-zwungen, darauf hinzuweisen, dass sie weder eine Garantie noch die juristische Verantwortung oder irgendeine Haftung für Folgen, dieauf fehlerhafte Angaben zurückgehen, übernehmen können. Für die Mitteilung etwaiger Fehler sind Verlag und Autor jederzeit dankbar.Internetadressen oder Versionsnummern stellen den bei Redaktionsschluss verfügbaren Informationsstand dar. Verlag und Autor über-nehmen keinerlei Verantwortung oder Haftung für Veränderungen, die sich aus nicht von ihnen zu vertretenden Umständen ergeben.Evtl. beigefügte oder zum Download angebotene Dateien und Informationen dienen ausschließlich der nicht gewerblichen Nutzung. Einegewerbliche Nutzung ist nur mit Zustimmung des Lizenzinhabers möglich.

© 2015 Franzis Verlag GmbH, 85540 Haar bei München

Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Das Erstellen undVerbreiten von Kopien auf Papier, auf Datenträgern oder im Internet, insbesondere als PDF, ist nur mit ausdrücklicher Genehmigung desVerlags gestattet und wird widrigenfalls strafrechtlich verfolgt.

Die meisten Produktbezeichnungen von Hard- und Software sowie Firmennamen und Firmenlogos, die in diesem Werk genannt werden,sind in der Regel gleichzeitig auch eingetragene Warenzeichen und sollten als solche betrachtet werden. Der Verlag folgt bei den Produktbezeichnungen im Wesentlichen den Schreibweisen der Hersteller.

Autor: Mattias Schlenker, [email protected]: Dr. Markus StäubleLektorat: Ulrich DornSatz: DTP-Satz A. Kugge, Münchenart & design: www.ideehoch2.deDruck: C.H. Beck, NördlingenPrinted in Germany

ISBN 978-3-645-60344-7

60344-7_Titelei_X 02.03.15 16:03 Seite 4

Page 5: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

Nirgendwo in der EDV wurde in den letzten zehn Jahren das Prinzip Eingabe-Verarbei-tung-Ausgabe (EVA) so deutlich wie bei der Mikrocontroller-Plattform Arduino. Kaum eine Woche verging, in der nicht irgendein Bastler Musikinstrumente baute, die auf Bewegung reagierten, seine Zimmerpflanzen Twitter-Meldungen verschicken ließ oder neue Kunstwerke zur Interaktion einluden. Besonders offensichtlich ist die Eingabeseite: Das gern zitierte »Physical Computing« bezieht Sensoren verschie-denster Art mit ein: Schalter, Temperatursensoren, Annäherungssensoren, GPS-Empfänger.

Möglich macht es die Vielzahl an Schnittstellen: Digitale Eingänge reagieren auf Schalter, die beiden Bus-Systeme SPI und I2C erlauben die Anbindung von (bezahl-baren) Sensoren in Industriequalität — doch der Clou ist eine Reihe analoger Ein-gänge, die es erlauben, den Arduino selbst zum Sensor zu machen. Oder hätten Sie gedacht, dass es möglich ist, aus Alufolie, Kupferdraht, Widerständen, Kondensatoren und ganz viel Gehirnschmalz einen berührungslosen Sensor für die Füllmenge von Flüssigkeiten zu zaubern?

Arduino lebt nicht nur von genial einfacher Hardware für kleines Geld, sondern vor allem von einer großen Community aus Entwicklern, die Bibliotheken für viele Einsatz-zwecke bereitstellen. Das alles zusammengenommen, führt zu schnellen Ergebnissen, für die nicht einmal viel Geld investiert werden muss — hätten Sie geglaubt, dass es möglich sein würde, mit Hardware für rund 10 Euro in einer guten Stunde einen kleinen Webserver zusammenzulöten, der Temperatur und Luftfeuchte anzeigt und dessen Programmierung keine 50 Zeilen Code braucht? Ich ehrlich gesagt auch nicht, bis ich die entsprechenden Optimierungen für dieses Buch vorgenommen habe.

Wer sind Sie? Vielleicht sind Sie ein Student oder wissenschaftlicher Mitarbeiter, der im Rahmen eines Forschungsprojekts Dutzende oder Hunderte kleine Sensoren lange Zeit in freier Wildbahn aussetzen muss — die müssen dann billig und zuverlässig sein. Oder Sie sind Eigenheimbesitzer, der seine Heizungs- und Lüftungssteuerung opti-mieren möchte — das soll einfach sein und flexibel in der Anwendung. Vielleicht möchten Sie das schrägste Musikinstrument der letzten 100 Jahre erfinden und suchen dafür nach Inspirationen? Möglicherweise wollen Sie auch einfach nur einen tollen Mausersatz für den heimischen PC bauen. Ich weiß es nicht.

Ich weiß, dass Sie neugierig sind (sonst hätten Sie nicht bis hierher gelesen), und ich mutmaße, dass Sie leicht umsetzbare Rezepte für einfache Sensoren suchen. Ich weiß jedoch nicht, wie viel Erfahrung mit Arduino Sie haben. Ich nehme an, dass Sie bereits Kontakt hatten und wissen, wie man die aufgelötete LED auf dem Arduino Uno zum Blinken bringt. Mehr müssen Sie nicht können. Wenn Sie noch gar keinen Kontakt hatten, ist das auch kein Problem — legen Sie los, Sie können nicht viel kaputt machen.

Page 6: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

6

Ich kann in diesem Buch zwar keinen kompletten Arduino-Einstieg bieten, aber ich verweise an den entsprechenden Stellen auf die passenden Tutorials.

In diesem Sinne: Lassen Sie uns gemeinsam loslegen: Keine Elektronikplattform wäre in Summe besser für die kreative Eingabeverarbeitung geeignet als der Arduino: Schlafmodi helfen beim Energiesparen, und die Vielzahl der Pins erleichtert den Bau kombinierter Sensoren. Und auch wenn die Betonung auf der Sensorseite liegt, dürfen Sie einige komplette Lösungen erwarten, die Verarbeitung und Ausgabe einbeziehen. So lernen Sie Sensoren kennen, die direkt auf SD-Karte schreiben, ihre Werte übers Netzwerk übertragen oder in den Äther funken. Wir lassen also auch die Verarbei-tungs- und Ausgabeseite nicht zu kurz kommen und wünschen Ihnen viel Spaß — und noch viel mehr Anregungen für eigene Ideen — mit diesem Buch.

In diesem Sinne: Lassen Sie uns losmessen!

Konventionen im Buch

Jeder Autor macht seine eigenen Erfahrungen, und daraus sind Vorlieben für seine Arbeit an Projekten entstanden. Diese sind mit der Zeit einem Wandel unterworfen, was es umso wichtiger macht, die in diesem Buch verwendeten Konventionen etwas zu erläutern. Ich möchte mir keinesfalls anmaßen, dass meine Arbeitsweise die einzig wahre ist. Wenn Sie bereits Arduino-Erfahrung haben, werden Sie für viele Vorge-hensweisen eigene »Best Practices« entwickelt haben, die genauso gut funktionieren (wenn Ihre Vorgehensweisen besser funktionieren, bin ich für einen Hinweis per E-Mail dankbar). Sollten Sie wenig Routine haben, betrachten Sie meine Erfahrung ein-fach als ganz bewährten Startpunkt.

Downloads, Updates und Errata Die Codebeispiele in diesem Buch versuche ich, so kurz zu halten, dass Sie sie leicht abtippen können. Das gelingt nicht immer, und gelegentlich kommt es vor, dass ein Sketch nach längerer Laufzeit Probleme offenbart, die nach-

träglich korrigiert werden müssen. Um Ihnen den Einstieg zu erleichtern, finden Sie alle Bilder, Codebeispiele und Verdrahtungspläne auf meiner GitHub-Seite https://github. com/mschlenker/Arduino-Sensoren. Dort können Sie Einzeldateien herunterladen oder rechts mit dem Button Download ZIP ein Archiv aller Dateien herunterladen. Einen vollständigen Download finden Sie auch auf den Seiten des Franzis Verlags unter www.buch.cd.

Page 7: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

7

Ein Blick ins GitHub-Repository lohnt sich, hier können Sie die aktuellen Quellcodes der Sketches im Buch herunterladen und finden hochauflösende, farbige Versionen aller Fotos.

Prinzipiell rate ich jedem, der Projekte in Angriff nimmt, die Software (beispielsweise in Form von Arduino-Sketches) oder andere Dokumentationen (Verdrahtungs- und Schaltpläne) involviert, sich mit Versions- und Revisionskontrollsystemen vertraut zu machen. Das oft gehörte »Gestern hat es doch noch funktioniert!« verliert nämlich schnell seinen Schrecken, wenn man alle Änderungen der letzten Tage zeilenweise nachvollziehen kann.

Der schnellste Einstieg in Git für Windows-Anwender dürfte der Client des Reposi-tory-Anbieters github.com sein. Selbstverständlich müssen Sie sich nicht von diesem Anbieter abhängig machen: Installieren Sie einen Git-Client lokal, »pullen« Sie meine Repositories und legen Sie eigene Repositories für eigene Zwecke an — aber verges-sen Sie bitte das Backup nicht!

Page 8: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

8

Bilder und Verdrahtungspläne Wie andere Bücher dieser Reihe ist auch dieses Buch in Graustufen gedruckt. Ich ver-suche immer, die Verdrahtungsskizzen so zu zeichnen, dass sie auch ohne Farbe leicht nachvollziehbar sind. In vielen Fällen werden Sie aber die Schaltungen mehrerer Bei-spiele kombinieren wollen, was es erforderlich macht, die Bauelemente anders anzu-ordnen. Die für dieses Buch anfertigten Breadboard-Ansichten und Schaltpläne wur-den mit der freien (und kostenlosen) Software Fritzing erstellt, Sie können sie für Linux, Windows und Mac OS X unter www.fritzing.org herunterladen.

Die freie Software Fritzing hilft beim Erstellen von Schaltplänen, besonders hilfreich ist die Steckplatinenansicht.

Die von mir erstellten FZZ-Dateien erhalten Sie unter den oben genannten Adressen (https://github.com/mschlenker, www.buch.cd). Rekombinieren Sie Bauelemente nach Belieben, fügen Sie Bauelemente hinzu oder kombinieren Sie Schaltungen. Außerdem können Sie Fritzing dafür verwenden, eigene Shields für Arduino Uno, Leonardo oder Pro Mini zu entwerfen. Diese lässt Fritzing ab Losgröße eins von einem Berliner PCB-Dienstleister wöchentlich belichten.

Inklusive Zersägen der großen Platine und Versand vergehen so im Regelfall maximal 14 Tage von der Aufgabe der Bestellung bis zum Eingang der Platine. Für die Weiter-gabe modifizierter Fritzing-Dateien auf Basis unserer Entwürfe gilt die Lizenz CC BY-SA 3.0. Auf Deutsch: Toben Sie sich aus, spinnen Sie unsere Ideen weiter, aber bitte nennen Sie die Quelle und weisen Sie auf Weitergabe unter gleichen Bedingungen hin.

Page 9: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

9

Projekte, die im Zuge der Umsetzung dieses Buchs nicht fertiggestellt werden konnten, die Dauerbaustellen des Autors sind oder die im Nachhinein von Lesern vor-geschlagen wurden, finden Sie in meinem Arduino-Blog www.arduino-hausautoma-tion.de. Wenn Sie selbst etwas vorschlagen wollen, veröffentliche ich dies gern, solange Fritzing-Dateien und Sketches unter CC BY-SA 3.0 oder GPL v2 vorliegen. Um Kontakt mit mir aufzunehmen, verwenden Sie bitte die im Impressum angegebene E-Mail-Adresse.

Projekte oder Ideen, die es nicht ins Buch geschafft haben oder die von Lesern vorgeschlagen wurden, finden Sie im Blog www.arduino-hausautomation.de.

Page 10: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

10

Arduino-IDE Zur Entwicklung von Arduino-Sketches beziehen wir uns in diesem Buch auf die Arduino-Entwicklungsumgebung, die unter http://arduino.cc/en/Main/Software erhält-lich ist. Andere Methoden der Softwareentwicklung sprechen wir nicht an. Falls Sie bislang keine Erfahrung mit Arduino haben: Besorgen Sie sich einen Arduino Uno und investieren Sie zwei Stunden in das Tutorial http://arduino.cc/de/Guide/HomePage — es zeigt, wie Sie den Arduino anschließen, Programme erstellen und hochladen und über den seriellen Port eine Kommunikation zwischen Arduino und PC stattfinden lassen.

Weiterführende Details wie das Auswerten analoger und digitaler Pins und den Sinn von Pull-up- und Pull-down-Widerständen greift dieses Buch auf. Außen vor bleibt zwar nicht die Ausgabeseite (ich behandle Speicherung, Datenübertragung per Funk und Ausgabe auf LC-Displays), aber die Ansteuerung von Aktoren. Falls Sie die gemessene Drehzahl eines Elektromotors über ein Servo auf einer Zeigerskala ausge-ben wollen, müssen Sie die entsprechenden Tutorials in anderen Büchern oder im Internet suchen.

Bei Redaktionsschluss war Arduino 1.6 soeben freigegeben worden. Da bereits 1.5 Beta nach meiner Erfahrung für die klassischen Arduinos (Uno, Leonardo etc.) keine Stabi-litätsprobleme aufwies und Änderungen bei den APIs die eine oder andere Anpassung notwendig machen, empfehle ich Version 1.6 und beziehe mich auch im weiteren Verlauf des Buchs auf diese. So gehe ich stillschweigend davon aus, dass Libraries per Archivauswahl installiert werden können und keinen Neustart der Entwicklungsumge-bung benötigen — dies ist bei Version 1.0 noch der Fall.

Auf allen Betriebssystemen ist eine Parallelinstallation möglich. Unter Linux-Distribu-tionen wie Ubuntu 14.04 LTS, die Version 1.0 als Default mitbringen, sollten Sie zu-nächst die vom Distributor mitgelieferte Version installieren und diese einmal starten. Testen Sie mit dem Blink-Beispiel, ob Zugriff auf per USB angeschlossene Arduinos möglich ist. Möglicherweise bietet die IDE an, eine neue Gruppe für den Gerätezugriff anzulegen und den aktuell angemeldeten Benutzer dieser Gruppe hinzuzufügen, was Abmelden und erneutes Anmelden erfordert, damit die neue Zuordnung aktiv wird. Entpacken Sie dann das TAR-Archiv mit Root-Rechten in /opt oder /usr/local.

001 sudo tar -C /opt -xvzf arduino-1.6.x-linux64.tgz

Um die Arduino-IDE nicht mit vollem Pfad aufrufen zu müssen, erstellen Sie anschlie-ßend einen Softlink:

001 sudo ln -sf /opt/arduino-1.6.x/arduino /usr/bin/arduino16

Die IDE steht nun über den Befehl arduino16 zur Verfügung. Ist ein Starter erwünscht, kopieren Sie /usr/share/applications/arduino.desktop ins Heimatverzeichnis oder auf den Desktop und ändern die Datei mit dem Starter entsprechend ab.

Page 11: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

11

Optisch kaum ein Unterschied zu Arduino 1.0, technisch weit besser auf neue Arduinos und Erweiterbarkeit zugeschnitten: Im Buch beziehe ich mich immer auf die Entwicklungsumgebung Arduino 1.6.

Sketches und Programme Im Buch abgedruckte Sketches halte ich so weit wie möglich einfach und lesbar. Dabei bleibt momentan die eine oder andere Optimierung auf der Strecke — so nutze ich aus Gründen der Lesbarkeit nicht immer bitweise Verschiebungen, wenn eine Division durch eine Zweierpotenz erfolgt. Die Sketches, die Sie unter den oben genannten Adressen herunterladen können, enthalten in zusätzlichen Kommentaren Hinweise zu Optimierungsmöglichkeiten.

Ein häufiges Problem bei der Arduino-Programmierung ist die Verwendung von Biblio-theken: Arduino bringt eine Reihe von auf den gängigsten Arduinos getesteten Biblio-theken für einige auf offiziellen Shields und auf solchen von Unternehmen aus dem »engen Kreis« (Sparkfun, Adafruit) verwendeten Chips mit. Doch oft handelt es sich dabei um Hardware, die ihren Zenit bereits vor fünf Jahren überschritten hat. So sind mittlerweile günstige RTCs (Real Time Clocks — Echtzeituhren) erhältlich, die einen Temperatursensor haben, der zur Korrektur verwendet wird. Die ideale Bibliothek für diese Uhren liest nicht nur die Uhrzeit, sondern auch die Temperatur aus.

Page 12: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

12

Ethernet-Module mit Empfangspuffer kosten mittlerweile weniger als ein Fünftel der »offiziellen« Ethernet-Shields. So liegt es in vielen Fällen nahe, sie zu verwenden. Dafür müssen häufig Bibliotheken genutzt werden, die nicht Teil der offiziellen Ent-wicklungsumgebung und in einigen Fällen einem rapiden Wandel unterworfen sind oder von verschiedenen Entwicklern den unterschiedlichen Schwerpunkten folgend in eigenen GitHub-Repositories betreut werden. Damit Sie die im Buch beschriebenen Beispiele umsetzen können, stellen wir die verwendeten Versionen als direkt installierbares Zip-Paket bereit.

Sie sollten dennoch die GitHub-Seiten der erwähnten Entwickler besuchen: Die Chan-cen stehen gut, dass neuere Versionen der Bibliotheken moderne Arduinos besser unterstützen, lang ersehnte Features hinzufügen oder einfach Optimierungen hinsicht-lich Speicherverwaltung oder Last vornehmen. Zudem bietet GitHub die Möglichkeit, Fehlermeldungen und Optimierungsvorschläge direkt an die jeweiligen Entwickler zu richten. An dieser Stelle sei nochmals darauf hingewiesen, dass Versions- und Revisi-onskontrolle eine sehr praktische Erfindung ist und es sich insbesondere dann lohnt, sich mit Git und den verwendeten Tools vertraut zu machen, wenn gemeinsam an Projekten gearbeitet wird.

Shields bauen Die einfache Erweiterbarkeit von Arduino-Platinen durch sogenannte Shields ist ein großer Pluspunkt der Plattform. Mit dem 2007 finalisierten Design entstand schnell eine Reihe fertiger »Shields« zum Aufstecken auf den Arduino. Der Kauf fertiger Shields für Uno & Co. ist bei sehr kleinen Stückzahlen interessant, wenn Platz und Energieaufnahme eine untergeordnete Rolle spielen und die verwendeten Bauteile nur als SMD-Versionen erhältlich sind. So habe ich einige fertige CAN-Bus-Shields von Sparkfun, die als Logger für den OBD-II-Port dienen und Daten direkt auf die dort ein-steckbare µSD-Karte schreiben.

Page 13: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

13

Drei Shields für Arduino Uno & Co.: Links ein fertiges CAN-Bus-Shield von Sparkfun, in der Mitte ein günstiges chinesisches Prototypen-Shield (das auch ein Mini-Breadboard aufnehmen kann) und rechts ein Original-Arduino-Proto-Shield.

Beim Selbstbau von Shields ist darauf zu achten, dass die Buchsenleiste für die digita-len Pins 8 bis 13 aus dem Rastermaß von 2,54 mm ausbricht — sie ist genau um 1,27 mm versetzt. Berücksichtigt man das bereits beim Aufbau einer Schaltung, verschmäht die versetzten Pins und zweckentfremdet stattdessen analoge Input-Pins als digitale Input- oder Output-Pins, können eigene Shields auf einer billigen Hart-papier-Loch- oder -Streifenrasterplatine angefertigt werden.

Werden alle Ein- und Ausgänge oder die SPI-Pins 11 bis 13 benötigt, können Sie zu einem der originalen »Proto-Shields« greifen, die zu Preisen um die 8 Euro erhältlich sind und den Komfort durchgeöster Lötaugen und Stapelbarkeit bieten. Alternativ zu den originalen Proto-Shields sind zu Preisen ab 3 Euro bereits pfiffige chinesische Kopien auf dem Markt, die das Konzept weiterspinnen und eigene Schienen für Masse und Versorgungsspannung oder Felder für oft benutzte Komponenten mitbringen.

Noch einfacher wird es, wenn Sie einen Arduino Pro Mini oder den später beschriebenen selbst gebauten »Rasterduino« verwenden. Der Pro Mini bleibt komplett — mit allen Pins — im Rastermaß von 2,54 mm, beim Rasterduino haben Sie zudem die Wahl, eine etwas größere Platine zu verwenden und die benötigten Bauteile gleich mit auf den Selbstbau-Arduino zu löten.

Page 14: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

14

Vier »Arduino-Derivate«, die im Rastermaß von 2,54 mm bleiben: vorne drei Pro-Mini-Derivate aus China und Deutschland (3 bis 10 Euro), hinten ein selbst gelöteter Rasterduino (3 bis 5 Euro für die Komponenten).

Spannungsängste vermeiden Ein auf den ersten Blick großes Ärgernis sind Betriebsspannungen: Sie werden den Großteil der Bauteile auf Spannungsbereiche von 3 bis 7 Volt spezifiziert vorfinden, aber es gibt Bauteile, die auf 5 bis 12 Volt ausgelegt sind, und andere, die 3,3 Volt verlangen. Arduino Pro Mini und Rasterduino werden immer mit entweder 3,3 Volt oder 5 Volt betrieben — beziehungsweise dem nächstliegenden Wert, den die Span-nungsquelle (Batteriepack, Akku, Solarzelle ...) bereitstellt. Das bedeutet im Idealfall, dass die Spannung des Arduino auf die am wenigsten flexible Peripherie ausgelegt werden kann.

Page 15: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Vorwort

15

Können nicht alle Komponenten in einem gemeinsamen Spannungsbereich betrieben werden, müssen Sie eine Spannungsteilerschaltung aufbauen, um die Versorgungs-spannung bereitzustellen, und für IO-Pins einen Level-Shifter oder ebenfalls einen Spannungsteiler verwenden. In der Praxis gelten viele 3,3-Volt-Peripheriegeräte jedoch als »5-Volt-sicher«, was bedeutet, dass zumindest der Testbetrieb über einige Stunden hinweg am PC mit 5 Volt möglich ist. So haben wir — ohne dass Schäden aufgetreten wären — mehrere µSD-Karten für einige Minuten mit einem am PC ange-schlossenen Pro Mini getestet, bevor die fertigen Sensorknoten auf Batteriebetrieb (2x Alkaline, also 3,0 Volt) in den »Regelbetrieb« übernommen wurden.

Gleiches gilt für viele andere Komponenten wie Ethernet-Module, die sowieso hohe Pegel zu verarbeiten haben. Verlassen sollten Sie sich aber nicht auf die Nutzbarkeit von 3,3-Volt-Komponenten mit 4,5 oder 5 Volt. Konsultieren Sie im Zweifel das Datenblatt des Bauteils oder suchen Sie in Foren nach Nutzern, die das betreffende Bauteil bereits seit längerer Zeit unter der erwähnten höheren Spannung einsetzen.

Keine Angst sollten Sie beim Betrieb von LEDs mit deutlich höheren Spannungen als den üblichen 1,8 bis 2,0 Volt haben. Verwenden Sie einen Pin, der Pulsweiten-modulation bietet — oder lassen Sie die LED einfach selbst blitzen: Drei Millisekunden auf vollen 5 Volt, gefolgt von einer halben Sekunde Pause ist für das menschliche Auge als deutliches Aufblitzen wahrnehmbar und gibt der LED genügend Zeit zur Abkühlung:

001 void loop() {

002 digitalWrite(led, HIGH);

003 delay(3);

004 digitalWrite(led, LOW);

005 delay(500);

006 }

Soll eine LED dauernd leuchten und steht kein Pin mit Pulsweitenmodulation zur Verfügung, arbeiten Sie mit Vorwiderständen. 560 Ohm oder 1 kOhm (Kiloohm) sind gute Ausgangswerte. Messen Sie in solch einem Aufbau mit dem Multimeter die an der LED anliegende Spannung. Liegt diese unter 2 Volt, ist alles okay, liegt sie darüber, hilft die Tatsache, dass Spannungsabfälle proportional zu den jeweiligen Widerstän-den sind, den wirksamen Widerstand der Diode zu berechnen und den Vorwiderstand entsprechend zu dimensionieren.

Page 16: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale
Page 17: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Inhaltsverzeichnis

1 Arduinos vorbereiten..................................................................................................21 1.1 Arduino Uno — der Klassiker .......................................................................................22 1.2 Zwischenlösung Leonardo.............................................................................................23 1.3 Arduino-Zukunft Zero? ..................................................................................................24 1.4 »Starke« Mitglieder der Arduino-Familie..................................................................25 1.5 Intel Galileo ........................................................................................................................25 1.6 Arduino Yún.......................................................................................................................25 1.7 Arduino Tre ........................................................................................................................27 1.8 Klein, billig und schnell einsatzbereit..........................................................................27 1.9 Arduino Pro Mini ..............................................................................................................27 1.10 Der Selbstbau-Minimal-Arduino................................................................................ 30 1.11 Leonardo und Micro für Nischenanwendungen......................................................38 1.12 Zwei Derivate mit Funk ..................................................................................................39 1.13 Energiesparen mit ATmega328................................................................................... 41 1.14 Unnötige Verbraucher eliminieren..............................................................................42 1.15 Schlank im Schlaf..............................................................................................................43 1.16 Weitere Einsparmaßnahmen........................................................................................45 1.17 Nicht ganz ungefährlich: Brownout deaktivieren ....................................................45 1.18 Trickle Charging mit Solarzelle.................................................................................... 48

2 Sensoren bauen ...........................................................................................................51 2.1 Analoge Sensoren .............................................................................................................51

2.1.1 Auflösung an allen Analog-Pins ..................................................................52 2.1.2 Widerstände mit Spannungsteiler messen..............................................52 2.1.3 Spannungen gegen eine Referenz messen...............................................55 2.1.4 Interne Referenzspannung nutzen..............................................................55 2.1.5 Externe Referenz anschließen......................................................................57

2.2 Typische analoge Sensoren...........................................................................................58 2.2.1 Temperatur (NTC und PTC) ........................................................................59 2.2.2 Wasserstand per Widerstand ......................................................................62 2.2.3 Sonderform Wassermelder ......................................................................... 64 2.2.4 Fotowiderstände...............................................................................................65 2.2.5 Arduino-Lügendetektor ................................................................................. 66 2.2.6 Gassensoren der MQ-Reihe......................................................................... 69 2.2.7 Ströme messen mit Shunts ...........................................................................74

Page 18: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Inhaltsverzeichnis

18

3 Kapazitäten messen .................................................................................................. 77 3.1 CapacitativeSense als Näherungssensor .................................................................. 77 3.2 Schallsensor mit Elektretmikrofon ..............................................................................82

4 0 oder 1 — Arbeiten mit Schaltern .........................................................................89 4.1 Aktives Pollen....................................................................................................................90

4.1.1 Code und Aufbau schlank halten................................................................90 4.1.2 Prellende Schalter stabilisieren....................................................................90 4.1.3 Interrupts verwenden.....................................................................................94 4.1.4 Reset kreativ einbeziehen .............................................................................95 4.1.5 Hallsensor und Magnetfeldmessung.........................................................98 4.1.6 Spule und Frequenzregelung........................................................................98

5 Digitale Sensoren ...................................................................................................... 101 5.1 Temperaturmessung mit DHT11 und DHT22........................................................ 102

5.1.1 Unterschiede und bevorzugter Einsatzzweck ....................................... 102 5.1.2 DS3231 Real Time Clock ............................................................................. 105 5.1.3 One-Wire-Temperatursensor DS18D20................................................ 109

5.2 Passive Infrarotsensoren............................................................................................... 112 5.3 Entfernungsmessung mit Ultraschall ........................................................................ 115 5.4 Rauchmelder als Sensor................................................................................................ 118

6 Drahtlose Kommunikation ...................................................................................... 121 6.1 Kommunizieren per Einwegefunk .............................................................................. 121

6.1.1 Manchestercode über RF Link ................................................................... 122 6.2 Funkverbindung mit Rückkanal.................................................................................. 127

6.2.1 RFM12 und RFM69 — Senden ohne Bestätigung................................ 127 6.3 Bluetooth, ein zweischneidiges Schwert................................................................. 130

6.3.1 Bluetooth-Kommunikation mit Arduino Uno.........................................132 6.3.2 Bluetooth-Programmierung eines Pro Mini ........................................... 135

6.4 XBee, eine teure Angelegenheit ................................................................................ 139 6.5 nRF24L01 2,4 GHz ........................................................................................................ 143 6.6 WLAN-Sensoren mit Arduino Yún........................................................................... 144

7 Kommunikation über Kabel..................................................................................... 151 7.1 Kabellängen und mögliche Probleme........................................................................ 151 7.2 Punkt-zu-Punkt-Datenübertragung via USB.......................................................... 152 7.3 Serielle Verbindung — der Klassiker ........................................................................ 154

7.3.1 Messwert von Arduino zu Arduino übertragen ................................... 154 7.4 I2C — flexibler Kommunikationsstandard .............................................................. 156

7.4.1 Arduino-basierter Sensor schickt Daten zu einem RPi ...................... 157

Page 19: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Inhaltsverzeichnis

19

7.5 Ethernet für kabelgebundene Datennetze ..............................................................160 7.5.1 Problem und zugleich Vorteil ......................................................................161 7.5.2 Sensor sendet regelmäßig per UDP...........................................................161 7.5.3 Arduino als minimaler Webserver ............................................................ 165

7.6 CAN-Bus in der Fahrzeugelektronik .........................................................................166

8 Sensordaten anzeigen und speichern................................................................... 167 8.1 Werte speichern ............................................................................................................. 167

8.1.1 Datenspeicherung auf EEPROM................................................................168 8.1.2 Datenspeicherung auf SD-Karte ...............................................................170

8.2 Messwerte auf dem Display anzeigen..................................................................... 175 8.2.1 PCD8544 — Pixeldisplay vom Handyklassiker .................................... 176

8.3 Zeichendisplay WH1602 .............................................................................................180

9 Kombinierte Projekte ............................................................................................... 185 9.1 Uhr mit Thermometer und LC-Display.................................................................... 185 9.2 Webserver zeigt Temperatur und Luftfeuchte......................................................190 9.3 Clapper schaltet Funksteckdosen..............................................................................194 9.4 Temperaturlogging auf SD-Karte .............................................................................200 9.5 Roboter umfährt Hindernisse ....................................................................................203 9.6 Wählscheibe als Retronummernblock....................................................................208 9.7 Kompass auslesen .........................................................................................................214

Stichwortverzeichnis ............................................................................................... 217

Page 20: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Sensoren bauen

Gerade die analogen Ports des Arduino machen die Plattform so günstig für Messauf-gaben. Je nach Board sind wenigstens sechs analoge Ports verfügbar, die an einem oder mehreren ADCs (Analog to Digital Converter) hängen. Unterschiede gibt es nicht nur bei der Zahl der Ports, sondern auch bei der Auflösung und Referenzspannung.

2.1 Analoge Sensoren

Analoge Sensoren lassen sich auf vielerlei Wegen einfach und günstig bauen. Meist kommt ein veränderlicher Widerstand zum Einsatz, gelegentlich soll eine Spannung gemessen werden. Der Weg zum Widerstand ist häufig einfacher, als man denkt: Leitender Faden hat bereits im »Ruhezustand« einen hohen Widerstand, der noch höher wird, wenn man den Faden dehnt — so lassen sich einfach Dehnmessstreifen erstellen, mit denen beispielsweise ermittelt werden kann, ob sich der Träger eines Kleidungsstücks bewegt.

Wässrige Lösungen leiten Strom — zwei Nägel und ein wenig Hirnschmalz können bereits dabei helfen, zu ermitteln, ob der Bürofarn genügend Wasser hat. Eine einfache Streifenrasterplatine leitet zwischen den Leiterbahnen, wenn Regentropfen darauf fallen.

Page 21: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

2 Sensoren bauen

52

Bild 2.1: Zwei seltener genutzte Messwiderstände: vorne ein Drucksensor in Folienbauweise, hinten ein Photoresistor, ein vom Lichteinfall abhängiger Widerstand.

2.1.1 Auflösung an allen Analog-Pins Klassische ATmega328 (Arduino Uno, Pro Mini) lösen an allen Analog-Pins mit 10 Bit auf, kennen also 1.024 Zustände (0 bis 1.023). Arduino Mega und die neuen Cortex-basierten Controller stellen auch Pins bereit, die mit 12 Bit auflösen, also 4.096 Schritte kennen. Die Standardeinstellung ist die Verwendung der Versorgungsspan-nung als Referenz (auf andere Referenzen gehen wir später ein). Das bedeutet, am analogen Port darf eine Spannung von 0 Volt bis Versorgungsspannung anliegen. Die Spannung darf keinesfalls höher ausfallen, und sie darf nicht negativ, also verpolt, sein.

2.1.2 Widerstände mit Spannungsteiler messen Der interne Widerstand der analogen Ports befindet sich im MOhm-Bereich. Atmel spricht von einem »Input Leakage Current« (Leckstrom) von ca. 1 µA beim ATmega328P. Zudem kann der Leckstrom durch Serienstreuung stark variieren. Daher ist es nicht zu empfehlen, nur über einen variablen Widerstand zwischen Versor-gungsspannung und analogem Eingang zu messen.

Im Regelfall werden Sie eine Spannungsteilerschaltung aufbauen, die Versorgungs-spannung über zwei Widerstände — einer davon variabel — mit Masse verbindet. Zwischen den beiden Widerständen wird am analogen Pin gemessen. Wo Sie den variablen Widerstand einbauen, bleibt Ihnen überlassen — schlimmstenfalls ist eine kleine Umrechnung notwendig, um aus dem gemessenen Spannungswert den Wider-stand zu rekonstruieren.

Page 22: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

2.1 Analoge Sensoren

53

Um den Aufbau zu testen und gegebenenfalls zu kalibrieren, verwenden Sie am besten ein Potenziometer mit 1 kOhm bis 100 kOhm. Dieses hat zwischen den äußeren Beinchen gemessen einen in der Summe konstanten Widerstand. Am mittleren Bein wird die geteilte Spannung abgegriffen — dieses Bein verbinden Sie mit dem analogen Eingang. Die äußeren Beinchen verbinden Sie mit Masse respektive mit dem Span-nungsversorgungs-Pin des Arduino.

Bild 2.2: Ein Potenziometer dient dazu, das Prinzip Spannungsteiler zu veranschaulichen — der Abgriff erfolgt am mittleren Pin, je nach Stellung des Potis sollten Werte von knapp über 0 bis knapp unter 1.023 angezeigt werden.

Page 23: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

2 Sensoren bauen

54

Bild 2.3: Die meisten analogen Messschaltungen sind so einfach, dass sie auf ein Mini-Breadboard passen — oder direkt mit einem Arduino Pro Mini verlötet werden können.

Der Beispielsketch zum Poti liest den analogen Port (hier Pin A3) alle 2 s aus und gibt den gemessenen Wert über die serielle Schnittstelle aus. Sie können diesen Beispiel-sketch später auch verwenden, um eigene Spannungsteiler zu kalibrieren.

001 int analogPin = 3;

002 int val = 0;

003

004 void setup() {

005 Serial.begin(9600);

006 }

007

008 void loop() {

009 val = analogRead(analogPin);

010 Serial.println(val);

011 delay(2000);

012 }

Page 24: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

2.1 Analoge Sensoren

55

Für Spannungsteilerschaltungen gelten angesichts des Leckstroms gewisse Grenzen: Bei Widerständen im Bereich von über 100 kOhm muss der interne Widerstand des ADC als parallel geschalteter Widerstand berücksichtigt werden. Bei sehr niedrigen Widerständen muss sichergestellt sein, dass der benötigte Strom aufgebracht werden kann, das gilt insbesondere dann, wenn der Spannungswandler einer Arduino-Platine zur Versorgung genutzt wird oder ein temporär auf HIGH gezogener digitaler Pin die Spannung für die Messung bereitstellt.

Faustregel

Als Faustregel gilt, dass pro Pin 20 mA nicht überschritten werden

sollten. Daraus folgt, dass der Gesamtwiderstand des Spannungsteiler-

aufbaus 250 Ohm nicht unterschreiten darf. Typisch sind 10 bis

100 kOhm. Darauf ist besonders beim Aufbau eigener Widerstände, zum

Beispiel für den Wasserstand einer Regentonne, zu achten — gegebenen-

falls empirisch.

2.1.3 Spannungen gegen eine Referenz messen In vielen Fällen möchte man aber keinen Widerstand messen, sondern eine Spannung. Solange ein Arduino mit einer konstanten Spannungsquelle verbunden ist und ein Spannungsregler exakte 3,3 Volt oder 5 Volt bereitstellt, ist es kein Problem, gegen diese Referenz zu messen, solange die Versorgungsspannung nicht von der zu messenden Spannung überschritten wird.

Ganz anders sieht es bei einem Arduino aus, der beispielsweise die Spannung seines eigenen Batteriepacks messen soll, die Ladespannung einer Solarzelle oder die Spannung einer Lamdbasonde (mit ihr misst man den Restsauerstoffgehalt in Ver-brennungsabgasen) — jeweils bei Schwankungen in der Versorgungsspannung.

2.1.4 Interne Referenzspannung nutzen Als bequeme Antwort stellen Atmels Mikrocontroller eine interne Referenzspannung von ca. 1,1 Volt bereit (beim Mega stehen zusätzlich 2,56 Volt bereit). Diese ist unab-hängig von der Versorgungsspannung und kann deshalb beispielsweise dazu verwen-det werden, die Klemmenspannung eines versorgenden Batteriepacks zu messen. Betreibt man einen Arduino auf drei AA-Zellen, liegen bei nagelneuen Batterien 4,8 Volt an. Sind die Batterien fast komplett aufgebraucht, sind es unter 3,0 Volt.

Für eine sichere Messung ist daher ein Spannungsteiler im Verhältnis 4 : 1 — realisiert beispielsweise mit 47 kOhm zu 12 kOhm — notwendig. Da solch ein Spannungsteiler ständig wertvolle Batterieenergie in Wärme umwandeln würde — immerhin fließen rund 80 µA —, können Sie einen Transistor verwenden, der, über einen digitalen Pin geschaltet, nur dann Spannung anlegt, wenn gemessen werden soll.

Page 25: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Kombinierte Projekte

In diesem Kapitel stellen wir Projekte vor, die die vorgestellten Methoden zum Ausle-sen von Sensoren und die Weitergabe miteinander kombinieren. Meist wird ein Sen-sor mit einer Ausgabe-, Speicherungs- oder Weitergabemöglichkeit kombiniert. Selbstverständlich können Sie die beschriebenen Projekte nach Belieben erweitern. Warum nicht einen Temperaturlogger bauen, der dazu dient, einen NTC gegen einen DHT22 zu kalibrieren, oder einen Fahrradcomputer, der gefahrene Strecken auf SD-Karte sichert?

9.1 Uhr mit Thermometer und LC-Display

Die bereits vorgestellte Echtzeituhr DS3231 mit integriertem Temperaturfühler ist ein idealer Start für eine Uhr mit Temperaturanzeige. Selbstverständlich können Sie auf dieser Basis weiterspielen, beispielsweise mit einem DHT22, den Sie für exaktere Temperaturmessungen und die Anzeige der Luftfeuchte heranziehen, oder Sie fügen einen RF-Link-Empfänger hinzu, um von anderen Arduinos übermittelt zu bekommen, dass noch irgendwo ein Fenster offen steht.

Doch zunächst zur Basis: Sowohl die RTC DS3231 als auch das LCD werden ohne Änderungen an Pins angeschlossen. Ich habe den Pin für die LCD-Beleuchtung zudem nicht über einen (variablen) Widerstand gegen Masse verbunden, sondern mit dem Kollektor eines NPN-Transistors.

Page 26: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

10 Kombinierte Projekte

186

Der Emitter wurde auf Masse verbunden und die Basis über einen Widerstand mit Pin 9 des Arduino. Auf Pin 9 kann per Pulsweitenmodulation eine Rechteckspannung angelegt werden. Das erlaubt eine Regelung der Vordergrundbeleuchtung in 255 Stufen. Nutzbar davon sind ohne zusätzlichen Widerstand 0 bis 100, da die verwen-deten LEDs auf typische Betriebsspannungen von rund 2 Volt ausgelegt sind.

Im Sketch werden zwei Konstanten für den Regel-Pin (im Schaltplan Pin 9) und die Helligkeit (starten Sie mit 20 bis 40) festgelegt. Sie können dann in der Setup-Routine die Hintergrundbeleuchtung anschalten. Selbstverständlich können Sie jederzeit die Intensität in Abhängigkeit von Tageszeit oder Umgebungshelligkeit steuern.

001 pinMode(bgPin, OUTPUT);

002 analogWrite(bgPin, brightness);

Bild 9.1: Das Anschlussschema kombiniert die Schemata von DS3231 und LCD5110, neu ist der Transistor zur komfortablen Regelung der Hintergrundbeleuchtung in Software.

Page 27: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

9.1 Uhr mit Thermometer und LC-Display

187

Bild 9.2: Auf dem Breadboard aufgebaut, sieht die Schaltung mit ihren rund 15 Kabeln, einem Widerstand und einem Transistor recht wild aus — sie ist ein typischer Kandidat für den Aufbau auf einem Proto-Shield.

Verwendet wird der folgende Sketch. Die unverändert vom LCD-Beispiel übernomme-nen Funktionen haben wir auf ihren Funktionsrumpf reduziert. Neu ist, dass die Struct t eine globale Variable ist und die erste Abfrage der Zeit bereits in der Setup-Routine erfolgt. In der Setup-Routine wird auch das Wort Uhr ausgeschrieben und bleibt bis zum Reset des Mikrocontrollers stehen.

Die Anzeige des Datums wird nur beim Start des Sketches und in den ersten Sekunden nach Mitternacht durchgeführt. Da jede Sekunde nur acht Zeichen aktuali-siert werden müssen (was 56 Byte entspricht, die zum LCD übertragen werden), flackert das Display nicht. Selbstverständlich können Sie den Sketch noch weiter verfeinern und die Stunden- und Minutenanzeige nur einmal pro Minute aktualisieren, während Sie die beiden Zeichen für die Sekunde auch sekündlich aktualisieren — dann werden nur noch 14 Byte/s übertragen, und Sie haben freie Kapazitäten für regelmäßig aktualisierte weitere Werte. Die Temperatur aktualisieren wir im Abstand von 10 s in der Funktion printtemp() — die DS3231 aktualisiert das entsprechende Register recht träge, sodass auch 30 s in der Regel ausreichend wären. Bei der Anzeige der Temperatur haben wir uns ganz bewusst gegen aufwendige Fließkomma-operationen entschieden. Nach der Multiplikation mit der Fließkommazahl 10,0 wird nach Integer umgewandelt, und der Rest wird nach der Division durch 10 ermittelt. Dies liefert uns eine Nachkommastelle — da die DS3231 auf Viertelgrad genau misst, wird hinter dem Komma folglich nur 0, 2, 5 oder 7 angezeigt.

Page 28: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Stichwortverzeichnis

A AA-Zellen 50 ADC 51 Aktives Pollen 90 Alarmanlagen 112 Alkohole 70 Analog to Digital Converter

51 Analoge Sensoren 51, 58 Arduino 5 Arduino Leonardo 23, 38,

209 Arduino Mega 52 Arduino Pro 21 Arduino Pro Mini 21, 27, 31,

206 Arduino Tre 27 Arduino Uno 22, 23, 31, 41,

132 Arduino Yún 25, 144 Arduino Zero 24 Arduino-Familie 25 Arduino-IDE 10, 47 Arduino-Sketches 10 AREF-Pin 58 Arexx ARX-CH09 204 ATmega, ohne Bootloader

96 ATmega328 37 ATmega328P 23, 34, 38 ATmega328P-

Mikrocontroller 30 ATmega32u4 23, 38, 144

ATtiny, ohne Bootloader 96 AVRlib-Bibliothek 143

B B57164-K223-K 60 Banana Pi 157 Barebone-Arduino 35 Batterietester 56 Bewegung anzeigen 112 Bewegungserkennung 112 Bluetooth 2.0 130 Bluetooth 4.0 130

Alternative 131 Bluetooth-LE-Modul 40 Bluetooth-Modul HC-06

132 Bluetooth-Module 131 BlueZ-Stack 131 Bratenthermometer 62 Brennbare Gase 74 Bridge-Bibliothek 144 Brownout-Detection 45 Burn In 73 Burn In Time 70 Bus-Protokolle 101 Bus-Verkabelungen 152 Busy Wait 95 Butan 74 Buzzer-Button 92

C CAN-Bus 166 CAN-Transceiver 166

CapacitativeSense 77 CapacitiveSensor 81 Capsense-Bibliothek 77 CAT5e-Verkabelung 157 Character-LCD 175 Clapper 82

Funksteckdose 194 Clapperschaltung 83, 87 Codebeispiele 6 Controller Area Network

Bus 166 CR2032-Knopfzelle 131

D Dallas-Sensor 109 Datenlogger 172 Datenübertragung Punkt-zu-

Punkt 152 DHT11 102 DHT22 102, 185 DHT-Familie 102 Digital Humidity and

Temperature 102 Digitale Sensoren 101 DIL-Gehäuse 23 DIL-Package 30 Dip-Switches 194 Drehschalter 194 Drucksensor 52 DS1307 107 DS18D20 109 DS3231 105

Ansteuerung 107

Page 29: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Stichwortverzeichnis

218

E Echtzeituhr 105

DS3231 185 EEPROM 167 Eingabe-Verarbeitung-

Ausgabe 5 Einplatinencomputer 157 Einwegefunk 121 Elektretmikrofon 83, 197 Elektroden bauen 67 Elektrolyt 69 Emitter 186 Enc28J60-Modul 161 Energieversorgung, parasitär

111 Entfernungsmessung 115 Entprellen 92 Erdfeuchte messen 63 Erdgas 74 Ethan 70, 74 EVA 5 Externe Referenz 57

F Fahrradcomputer 185 Fahrzeugelektronik 166 Fat16.h 173 Fat16util.h 173 Flüssiggas 74 Folienbauweise 52 Fotowiderstände 65 Frequenzband 2,4 GHz 121 Frequenzband 434 MHz 121 Frequenzband 868 MHz 121 Fritzing 8 FTDI-Adapter 139 Funkmodul RFM12B 50 Funksteckdosen 194 Funkverbindung,

bidirektional 127

G Galvanische Trennung 194 Gasfeuerzeuge 74 Gassensoren 69 Gelöste Salze 62 General Purpose Input

Output 157 GitHub-Repository 7 GPIO-Schnittstelle 157

H Hallsensor 98 Hautwiderstand messen 67 HC-05 134 HC-06 134 Heißleiter 59, 60 HID 209 HIGH-Pegel 101 HMC5883L 214 Human Interface Device

209

I I2C 5, 101, 156, 214

Datenleitung 156 Multi-Master-Betrieb 157 Taktleitung 156

ICs 101 iFrame 165 Infrarotsensoren 112 Integrated Circuits 101 Intel Galileo 25 Inter Integrated Circuit 156 Internet Protocol 161 Interrupt 94 Interrupt Request 94 Interrupt-Service-Routine

94 IP 161 IRQ 94 ISP-Header 38

I-squared-C 156 ISR 94

J JavaScript 165 Jorjin-1300-Wi-Fi-Chip 40 JSON 190

K Kabellänge 151 Kabelqualität 151 Kaltleiter 59 Kapazitäten messen 77 Kelvin 60 Klemmenspannung 56 Kohlenstoffmonoxid 74 Kombinierte Projekte 185 Kommunikation über Kabel

151 Kompass auslesen 214 Kondensator

aufladen 77 Dimensionierung 92

Kontakte, Anschluss 89

L Lauflängencodierung 175 LC-Displays 175 Leitungswasser 62 Lichtschranke 62 Lichtsensor 65 LightBlue Bean 40, 131 LightBlue Cortado 131 Lineare Kennlinie 60 Lineare Näherung 60 LM393 70 LOW-Pegel 101 Luftfeuchte 190

relative 102 Luftmaus 38 Lügendetektor 66

Page 30: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Stichwortverzeichnis

219

Lux 65

M Magnetfeld messen 98 Magnetometer 214 Manchestercode 122 Manchestercodierung,

Bibliothek 124 Mesh-Netzwerke 139 Messwerte anzeigen 175 Messwiderstände 42, 52 Methan 70, 74 Mikrocontroller-Plattform 5 Mikrofonkapsel 83 Mikro-SD-Shield 172 MIPS-Prozessor 144 Mitternachtsformel 59 MQ2 70 MQ2-Platine 72 MQ2-Sensoren 69, 71 MQ-Sensoren 69, 74

N Näherungssensor 77 Negative Temperature

Coefficient 59 NiMH-Zellen 50 NPN-Transistor 185 nRF24L01-Module 143 NSR 212 NTC 59, 185 Nummern-Schalter-

Reduzierkontakt 212

O OBD2-Schnittstelle 166 Ohm 62 OLED 175 One-Wire-

Temperatursensor 109

P Parkpiepser 115 Passive Infrarotsensoren 112 PCD8544 175, 176 Peaks 83 Perpetuum Pendulum 98 Photoresistor 52 Physical Computing 5 PIR 114 PIR-Sensoren 112 Pixel-LCD 175 Platin-Messwiderstände 60 Polygraph 66 Positive Temperature

Coefficient 59 Potenziometer 53, 58 Preheat Time 70 Prellen 91 Propan 74 PTC 59 Pull-down-Widerstand 89 Pull-up-Widerstand 89 Pulsweitenmodulation 186 PuTTY 143

R Raspberry Pi 157 Rasterduino 42, 47 Rauchmelder 69

optischer 118 Real Time Clock 105 Reboot 97 Rechteckspannung 186 Reed-Kontakt 95 Reed-Schalter 62 Referenzspannung 55 Reset-Button 95 Reset-Taste 39 Retronummernblock 208 RF-Link-Kits 123

RF-Link-Transmitter 122, 194

RFM12 127 RFM12B 129 RFM69 127 RLE 175 Roboter 203 Roboterfahrgestelle 204 RS232-Schnittstelle 154 RTC 200 Ruhe anzeigen 112

S Schalldruck 82

messen 77 Schallsensor 82 Schalter, Anschluss 89 SDHC 170 SD-Karte 170, 185, 200 Sensitivität 113 Sensordaten

anzeigen 167 speichern 167

Sensoren Anschluss 89 bauen 51

Serial Peripheral Interface 127

Serielle Schnittstellen 154 Serielle Verbindung 154 Shields 12 Sketches 11, 34 Solarmodule 48 Solarzelle 49 Spannung messen 55 Spannungsteiler 52, 53, 71 Spannungsteilerschaltungen

55 Spannungswandler 42 SPI 5, 101, 127 SPI-Pins 38

Page 31: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Stichwortverzeichnis

220

Steckdosen ansteuern 194 Streifenrasterplatine 51 Ströme messen 74

T TCP 161 Temperatur 190

messen 59 Temperatur messen 102 Temperaturanzeige 185 Temperaturdifferenzen 60 Temperaturfühler 185 Temperaturlogger 185 Temperaturlogging 200 Thermistor 59 Timer 43 Transceiver-Module 127 Transistor 206 Transmission Control

Protocol 161 Trickle Charging 48 TWI 156 Two Wire Interface 156

U UDP 161

UIPEthernet 162, 190 Ultraschallentfernungssenso

r 206 Ultraschallsensoren 115 Umdrehungen 94 Unix Datagram Protocol 161 Upload 39 USB 152

am Arduino 153 ATmega32u4 153

USB-nach-seriell-Konverter 154

V Versorgungsspannung 55 VirtualWire 122 Vordergrundbeleuchtung

186 VUSB-Bibliothek 153

W Wählscheibe 208 Wasser, Leitfähigkeit 63 Wassermelder 64 Wasserstand messen 62,

64

Wasserstoff 74 Watchdog Timer 43 Wattuino 42 Webserver 165, 190 Widerstand 52

messen 52 WiDo 40 Wi-Fi-Shield 144 Wii-Fernbedienung 38 Wiimote 38 Winkekatze 98 Wire-Bibliothek 158 WLAN-Sensoren 144

X XBee S2B 139 XBee-Module 139 X-CTU 139 XML 165, 190

Page 32: MATTIAS SCHLENKER SENSOREN AM - FRANZIS · 2017. 6. 16. · Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale

Internet der Dinge, Physical Computing – Umgebungs-einflüsse sammeln, verarbeiten und darauf reagieren: Der Arduino™ ist prädestiniert dafür, egal ob digital oder analog. Lernen Sie hier alles, um den Arduino™ als Schaltzentrale in Ihren Projekten einzusetzen – obHausautomation, Roboter oder Wetterstation, Sensorensind immer dabei.

Der richtige Arduino™Den EINEN Arduino™ gibt es längst nicht mehr, vielmehr ein Potpourrivon verschiedenen Platinen. Falls Ihnen die Plantinen zu eingeschränktoder zu teuer sind, dann bauen Sie Ihren eigenen Arduino™. Egal,welche Option Sie wählen, in einem ausführlichen Kapitel lernen Sie,welche Variante für Sie am besten ist. Und auch beim Selbstbau werdenSie nicht alleine gelassen: Sie erhalten ausführliche Schritt-für-Schritt-Anleitungen mit Bauteilliste und Schaltplan.

ProjektpraxisVom Anschluss an den Datenbus, wie I2C oder SPI, bis zur Anzeigeund Speicherung: In vielen Praxisprojekten lernen Sie Sensoren einzu-setzen: Uhr mit Thermometer, Funksteckdosen per Klatschen aktive-ren, Roboter oder der Lügendetektor – für jeden ist hier etwas dabei.Jedes Projekt ist für den Nachbau dokumentiert mit Bauteilen,Schaltplan und Quellcode, den Sie nicht abtippen müssen, sondern direkt von der Buchwebseite herunterladen können.

Der komplette Quellcode aus dem Buch auf www.buch.cd

SENSOREN AM

ARDUINO

Schl

enke

r

Arduino™

SEN

SO

RE

N A

M A

RD

UIN

O™

Aus dem Inhalt:• Arduino™-Modelle im Überblick

• Arduino™ selber bauen

• Arbeiten mit Schaltern

• Analoge und digitale Sensoren

• Drahtlose Kommunikation

• USB, Ethernet und serielleVerbindung

• Bussysteme: CAN-Bus, I2C und SPI

• Sensordaten anzeigen und speichern

• Temperatur, Wasserstand undWassermelder

• Fotowiderstände und Gassensoren

• Infrarot- und Ultraschnellsensor

• Lügendetektor

• Rauchmelder

• Roboter bauen

• Ströme messen mit Shunts

• WLAN-Sensoren

Besuchen Sie unsere Websitewww.franzis.de

Über den Autor:Mattias Schlenker entwickelt Live-Linux-Distributionen, vornehmlich als Notfall- und Rettungssysteme, und ist als Autor für Linux-,Netzwerk- und Sicherheitsthemen für verschie-dene Computermagazine tätig. Das in den letztenJahren neu erworbene Arduino™-Fachwissengibt er gerne in Buchform weiter.

MATTIAS SCHLENKER

Analoge und digitale Daten messen,verarbeiten und anzeigen: Abstand,Gas, Schall, Schweiß, Strom,Temperatur, Wasserstand und vieles mehr. 

MATTIAS SCHLENKER

ARDUINOSENSOREN AM

Mit vielen Tipps für diePraxis: Arduino™-Selbstbau,Schlafmodus, Brownout deaktivieren und mehr.

FRUIT UP YOUR FANTASY

Faszinierende Projekte: Telefonwählscheibe als Eingabe für IP-Telefonie Übersichtliche Dokumentation für den Nachbau der Projekte

60344-7_U1+U4_2 05.03.15 16:45 Seite 1