cover-image

Tero Karvinen lehrt Linux und Embedded-Systeme in Haaga – Helia University of Applied Sciences, wo seine Arbeit auch Lehrplanentwicklung und Forschung im Bereich der drahtlosen Vernetzung umfasst.

Kimmo Karvinen arbeitet als CEO in einem führenden Unternehmen in der AV- Automatisierung in Finnland. Davor war er u.a. CTO bei einem Hardwarehersteller, der sich auf intelligente Gebäudetechnik spezialisiert hatte.

Ville Valtokari arbeitet als Chefprogrammierer bei einem Hersteller von Automatisierungs-Hardware. Zuvor gestaltete und programmierte er modernste AV-Systeme.

image

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.de/plus

Sensoren – messen und experimentieren mit Arduino und Raspberry Pi

Tero Karvinen
Kimmo Karvinen
Ville Valtokari

image

Tero Karvinen

Kimmo Karvinen

Ville Valtokari

Lektorat: Dr. Michael Barabas

Copy-Editing: Ursula Zimpfer, Herrenberg

Herstellung: Frank Heidt

Umschlaggestaltung: Helmut Kraus, www.exclam.de

Umschlagfoto: Kimmo Karvinen

Fotografien: Kimmo Karvinen

Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie;

detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN

Buch 978-3-86490-160-7

PDF 978-3-86491-601-4

ePub 978-3-86491-602-1

1. Auflage 2015

Copyright © 2015 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Authorized German translation of the English edition of Make: Sensors, ISBN/EAN:978-1-4493-6810-4 © Tero Karvinen, Kimmo Karvinen, Ville Valtokari, published by Maker Media, Inc. This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to sell the same.

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten.

Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Make:, Maker Shed und Maker Fair sind eingetragene Warenzeichen der Maker Media, Inc.

Das Maker-Media-Logo ist ein Warenzeichen der Maker Media, Inc.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Inhaltsverzeichnis

Vorwort

1      Raspberry Pi

1.1    Raspberry Pi: Von null zum ersten Start

1.1.1      NOOBS*.zip entpacken

1.1.2      Kabel anschließen

1.1.3      Raspbian hochfahren und installieren

1.1.4      Fehlersuche bei der Raspberry Pi-Installation

1.2    Willkommen bei Linux

1.2.1      Die allgegenwärtige Kommandozeile

1.2.2      Schauen Sie sich um

1.2.3      Textdateien für die Konfiguration

1.2.4      sudo mach mir ein Butterbrot!

1.3    Elektronische Bauteile an die Pins des Raspberry Pi anschließen

1.3.1      Hallo GPIO, lass eine LED blinken

1.3.2      Die Schaltung aufbauen

1.3.3      Zwei Nummerierungssysteme: Zweck und Ort

1.3.4      GPIO-Pins über die Kommandozeile steuern

1.3.5      Dateien ohne Editor bearbeiten

1.3.6      Die LED aufleuchten lassen

1.3.7      Fehlerbehebung

1.4    GPIO-Steuerung ohne Root-Berechtigungen

1.4.1      Fehlersuche bei der GPIO-Steuerung

1.5    GPIO in Python

1.5.1      Hello Python

1.6    Wie geht es weiter?

2      Arduino

2.1    Grundinstallation des Arduino

2.1.1      Ubuntu Linux

2.1.2      Windows 7 und Windows 8

2.1.3      OS X

2.1.4      Hello World

2.1.5      Der Aufbau eines Arduino-Programms

2.1.6      Einfach und vielseitig dank Shields

3      Entfernung

3.1    Experiment: Abstände mit Ultraschall messen (Ping)

3.1.1      Code und Schaltung für den Ping am Arduino

3.1.2      Code und Schaltung für den Ping am Raspberry Pi

3.2    Ultraschallsensor HC-SR04

3.2.1      Code und Schaltung für den HC-SR04 am Arduino

3.2.2      Code und Schaltung für den HC-SR04 am Raspberry Pi

3.2.3      Echoberechnungen

3.2.4      Praxisexperiment: Unsichtbare Objekte

3.3    Experiment: Hindernisse mit Infrarot erkennen (IR-Abstandssensor)

3.3.1      Code und Schaltung für den IR-Sensor am Arduino

3.3.2      Code und Schaltung für den IR-Sensor am Raspberry Pi

3.4    Praxisexperiment: Infrarotlicht sichtbar machen

3.5    Experiment: Bewegungen mit Infrarot verfolgen (IR-Facettenauge)

3.5.1      Code und Schaltung für das Facettenauge am Arduino

3.5.2      Code und Schaltung für das Facettenauge am Raspberry Pi

3.5.3      Bibliothek spidev installieren

3.5.4      Alternative Schaltungen für den Raspberry Pi

3.6    Testprojekt: Haltungswarner (Arduino)

3.6.1      Lernziele

3.6.2      Piezo-Summer

3.6.3      Alarm!

3.6.4      Piezo-Summer und IR-Sensor kombinieren

3.6.5      Eine elegante Verpackung für das Projekt

4      Rauch und Gas

4.1    Experiment: Rauchmelder (analoger Gassensor)

4.1.1      Code und Schaltung für den MQ-2 am Arduino

4.1.2      Code und Schaltung für den MQ-2 am Raspberry Pi

4.1.3      Praxisexperiment: Rauch steigt nach oben

4.1.4      Experiment: Alkotest (Alkoholsensor MQ-303A)

4.1.5      Praxisexperiment: Nüchtern bleiben beim Experimentieren

4.2    Testprojekt: Rauchalarm per E-Mail senden

4.2.1      Lernziele

4.2.2      Python für E-Mails und Social Media

4.2.3      Das Projekt bauen

4.2.4      Wie funktioniert E-Mail?

4.2.5      Kann der Arduino E-Mails senden? – Nicht ohne Weiteres!

4.2.6      Code für den Raspberry Pi

4.2.7      Gehäuse

5      Berührung

5.1    Experiment: Drucktasten

5.1.1      Pullup-Widerstand

5.1.2      Code und Schaltung am Arduino

5.1.3      Code und Schaltung am Raspberry Pi

5.2    Experiment: Mikroschalter

5.2.1      Code und Schaltung für den Mikroschalter am Arduino

5.2.2      Code und Schaltung für den Mikroschalter am Raspberry Pi

5.3    Experiment: Potenziometer (regelbarer Widerstand, Poti)

5.3.1      Code und Schaltung für das Potenziometer am Arduino

5.3.2      Code und Schaltung für das Potenziometer am Raspberry Pi

5.4    Experiment: Berührungsfreier Berührungssensor (kapazitiver Berührungssensor QT113)

5.4.1      Code und Schaltung für den QT113 am Arduino

5.4.2      Code und Schaltung für den QT113 am Raspberry Pi

5.5    Praxisexperiment: Berührungen durch eine hölzerne Oberfläche hindurch erkennen

5.6    Experiment: Druck messen (FlexiForce)

5.6.1      Code und Schaltung für den FlexiForce am Arduino

5.6.2      Code und Schaltung für den FlexiForce am Raspberry Pi

5.7    Experiment: Berührungssensor im Eigenbau

5.7.1      Code und Schaltung für den kapazitiven Sensor am Arduino

5.7.2      Code und Schaltung für den kapazitiven Sensor am Raspberry Pi

5.8    Testprojekt: Geisterglocke

5.8.1      Lernziele

5.8.2      Servomotoren

5.8.3      Code und Schaltung für die Geisterglocke am Arduino

5.8.4      Servo an der Glocke montieren

6      Bewegung

6.1    Experiment: Wo ist oben? (Tilt-Schalter)

6.1.1      Code und Schaltung für den Kippsensor am Arduino

6.1.2      Code und Schaltung für den Kippsensor am Raspberry Pi

6.2    Experiment: Good Vibrations mit Interrupts (digitaler Vibrationssensor)

6.2.1      Code und Schaltung für den Vibrationssensor am Arduino

6.2.2      Code und Schaltung für den Vibrationssensor am Raspberry Pi

6.3    Experiment: Am Regler drehen

6.3.1      Code und Schaltung für den Drehgeber am Arduino

6.3.2      Code und Schaltung für den Drehgeber am Raspberry Pi

6.4    Experiment: Analoger Zweiachs-Daumen-Joystick

6.4.1      Code und Schaltung für den Joystick am Arduino

6.4.2      Code und Schaltung für den Joystick am Raspberry Pi

6.5    Praxisexperiment: Teile eines Xbox-Controllers wiederverwenden

6.6    Experiment: Alarmanlage (passiver IR-Sensor)

6.6.1      Code und Schaltung für die Alarmanlage am Arduino

6.6.2      Code und Schaltung für die Alarmanlage am Raspberry Pi

6.6.3      Praxisexperiment: Eine Alarmanlage überlisten

6.7    Testprojekt: Pong

6.7.1      Lernziele

6.7.2      Tipps für ein ansprechendes Gehäuse

6.7.3      Das Spiel beim Hochfahren des Raspberry Pi automatisch starten

7      Licht

7.1    Experiment: Feuer erkennen (Flammensensor)

7.1.1      Code und Schaltung für den Flammensensor am Arduino

7.1.2      Code und Schaltung für den Flammensensor am Raspberry Pi

7.2    Praxisexperiment: Genauigkeit bei der Erkennung von Flammen

7.3    Experiment: Siehst du dieses Licht? (Fotowiderstand, LDR)

7.3.1      Code und Schaltung für den Fotowiderstand am Arduino

7.3.2      Code und Schaltung für den Fotowiderstand am Raspberry Pi

7.4    Praxisexperiment: Die Richtung erkennen

7.5    Experiment: Linien verfolgen

7.5.1      Code und Schaltung für den Liniensensor am Arduino

7.5.2      Code und Schaltung für den Liniensensor am Raspberry Pi

7.6    Praxisexperiment: Schwarz ist weiß

7.7    Experiment: Alle Farben des Regenbogens

7.7.1      Code und Schaltung für den Farbsensor am Arduino

7.7.2      Code und Schaltung für den Farbsensor am Raspberry Pi

7.8    Testprojekt: Chamäleonkuppel

7.8.1      Lernziele

7.8.2      RGB-LEDs

7.8.3      Code und Schaltung für RGB-LEDs am Arduino

7.8.4      Gleitender Mittelwert

7.8.5      Beliebige Farben mit RGB-LEDs erzeugen

7.8.6      Eingänge in Ausgänge umwandeln

7.8.7      Code für eine Kombination aus RGB-LED und Farbsensor

7.8.8      Tipps zum Bau der Kuppel

8      Beschleunigung

8.1    Beschleunigung und Winkelgeschwindigkeit

8.2    Experiment: Beschleunigung mit dem MX2125 messen

8.2.1      Impulslängen des MX2125 entschlüsseln

8.2.2      Code und Schaltung für den Beschleunigungsmesser am Arduino

8.2.3      Code und Schaltung für den Beschleunigungsmesser am Raspberry Pi

8.3    Experiment: Beschleunigungsmesser und Gyroskop

8.3.1      Code und Schaltung für den MPU 6050 am Arduino

8.3.2      Code und Schaltung für den MPU 6050 am Raspberry Pi

8.3.3      Hexadezimale, binäre und andere Zahlen

8.3.4      Bitweise Operationen

8.4    Experiment: Den Wii Nunchuk zweckentfremden (über I2C)

8.4.1      Code und Schaltung für den Nunchuk am Arduino

8.4.2      Code und Schaltung für den Nunchuk am Raspberry Pi

8.5    Testprojekt: Steuerung einer Roboterhand mit dem Wii Nunchuk

8.5.1      Lernziele

8.5.2      Die Mechanik der Roboterhand

9      Identität

9.1    Tastenfelder

9.1.1      Code und Schaltung für das Tastenfeld am Arduino

9.1.2      Code und Schaltung für das Tastenfeld am Raspberry Pi

9.2    Praxisexperiment: Fingerabdrücke erkennen

9.3    Fingerabdruckscanner GT-511C3

9.3.1      Code und Schaltung für den Fingerabdrucksensor am Arduino Mega

9.3.2      Code und Schaltung für den Fingerabdrucksensor am Raspberry Pi

9.4    RFID mit dem ELB149C5M

9.4.1      Code und Schaltung für das RFID-Lesegerät am Arduino Mega

9.4.2      Code und Schaltung für das RFID-Lesegerät am Raspberry Pi

9.5    Testprojekt: Futuristische Schatztruhe

9.5.1      Lernziele

9.5.2      Die Funktionsweise der Truhe

9.5.3      Die Truhe

9.5.4      Code und Schaltung für die futuristische Schatztruhe am Arduino

9.6    Menschen und Objekte erkennen

10      Elektrizität und Magnetismus

10.1    Experiment: Spannung und Stromstärke

10.1.1      Code und Schaltung für den AttoPilot am Arduino

10.1.2      Code und Schaltung für den AttoPilot am Raspberry Pi

10.2    Experiment: Ist es magnetisch?

10.2.1      Code und Schaltung für den Hall-Effekt-Sensor am Arduino

10.2.2      Code und Schaltung für den Hall-Effekt-Sensor am Raspberry Pi

10.3    Experiment: Magnetischer Norden mit dem Kompass/Beschleunigungsmesser LSM303 bestimmen

10.3.1      Den Sensor kalibrieren

10.3.2      Code und Schaltung für den LSM303 am Arduino

10.3.3      Code und Schaltung für den LSM303 am Raspberry Pi

10.3.4      Das Protokoll für den LSM303

10.3.5      Berechnungen für die Kompassrichtung

10.4    Experiment: Hall-Schalter

10.4.1      Code und Schaltung für den Hall-Schalter am Arduino

10.4.2      Code und Schaltung für den Hall-Schalter am Raspberry Pi

10.5    Testprojekt: Webüberwachung von Solarzellen

10.5.1      Lernziele

10.5.2      Die Solarzellen anschließen

10.5.3      Der Raspberry Pi als Webserver

10.5.4      Die IP-Adresse ermitteln

10.5.5      Eine Homepage auf dem Raspberry Pi einrichten

10.5.6      Code und Schaltung für die Solarzellenüberwachung am Raspberry Pi

10.5.7      Zeitliche Planung von Aufgaben mit cron

10.6    Wie geht es weiter?

11      Schall

11.1    Experiment: Stimmen hören/Lautstärke

11.1.1      Code und Schaltung für das Mikrofon am Arduino

11.1.2      Code und Schaltung für das Mikrofon am Raspberry Pi

11.2    Praxisexperiment: Eine Stecknadel fallen hören

11.3    Testprojekt: Töne über HDMI sichtbar machen

11.3.1      Lernziele

11.3.2      Den seriellen Port des Raspberry Pi aktivieren

11.3.3      Code und Schaltung für die Visualisierung am Raspberry Pi

11.3.4      Schnelle Fourier-Transformation

11.4    Wie    geht es weiter?

12      Wetter und Klima

12.1    Experiment: Heiß hier drin, oder?

12.1.1      Code und Schaltung für den LM35 am Arduino

12.1.2      Code und Schaltung für den LM35 am Raspberry Pi

12.2    Praxisexperiment: Temperaturwechsel

12.3    Experiment: Wie feucht ist es?

12.3.1      Wie feucht ist Ihr Atem?

12.3.2      Code und Schaltung für den DHT11 am Arduino

12.3.3      Code und Schaltung für den DHT11 am Raspberry Pi

12.3.4      Kommunikation vom Raspberry Pi zum Arduino

12.4    Luftdrucksensor GY-65

12.4.1      Code und Schaltung für den GY-65 am Arduino

12.4.2      Arduino-Bibliotheken verwenden

12.4.3      Die Arduino-Bibliothek für den GY-65

12.4.4      Code und Schaltung für den GY-65 am Raspberry Pi

12.5    Experiment: Brauchen Ihre Pflanzen Wasser? (Sensor für Bodenfeuchtigkeit)

12.5.1      Code und Schaltung für den Bodenfeuchtigkeitssensor am Arduino

12.5.2      Code und Schaltung für den Bodenfeuchtigkeitssensor am Raspberry Pi

12.6    Testprojekt: Wettervorhersage auf E-Paper

12.6.1      Lernziele

12.6.2      Code und Schaltung für die Wetterstation am Arduino

12.7    Praxisexperiment: Schau mal, ganz ohne Stromanschluss!

12.8    Bilder in Headerdateien speichern

12.8.1      Programm zur Umwandlung von BMP-Bildern in C-Dateien

12.8.2      Tipps für das Gehäuse

A      Linux-Befehle für den Raspberry Pi

Index

Vorwort

Willkommen bei »Sensoren – messen und experimentieren mit Arduino und Raspberry Pi«. Sie werden schon bald mit dem Bau von Geräten beginnen können, die in der Lage sind, alle möglichen Dinge wahrzunehmen – von gefährlichen Gasen bis zu Beschleunigungen. In diesem Buch erfahren Sie, wie Sie Sensoren einsetzen, um die Phänomene der physischen Welt zu messen, und wie Sie die Ergebnisse als Zahlenwerte darstellen und aufgrund solcher Werte automatisch Aktionen auslösen lassen können.

Sensoren können beispielsweise Wärme, Druck, Beschleunigung und Licht messen und Werte wie 22 °C, 1015 mbar, eine Beschleunigung von 2,3 g oder das Vorhandensein von Licht melden. (Beim Licht haben wir hier keine numerische Quantität angegeben, sondern einen booleschen Wert, also ja oder nein. Beispiele dafür werden Sie später noch kennenlernen.)

Eine Mikrocontroller-Platine stellt das Gehirn des Roboters, des Systems oder Geräts dar, das Sie bauen. Die Software, die auf dem Mikrocontroller ausgeführt werden soll, schreiben Sie selbst. In diesem Buch arbeiten wir mit den beiden beliebtesten Platinen, dem Arduino und dem Raspberry Pi. Bei beiden ist es einfach, Software zur Steuerung der Elektronik zu schreiben.

Es geht um Ihre eigenen Ideen

Wenn Sie schnell einige Grundlagen der Elektronik lernen möchten, um dann Ihre eigenen Roboter, Geräte oder Projekte zu gestalten, dann sind Sie hier richtig. In diesem Buch lernen Sie, wie Sie Ihre Ideen rasch umsetzen können.

Theorien, Fertigkeiten und Grundlagenwissen sind sehr nützlich – solange sie Ihre Kreativität unterstützen. Spielen Sie mit Ihren eigenen Ideen herum und trauen Sie sich, die Ergebnisse im Web zu veröffentlichen.

In jedem Kapitel finden Sie ein Miniprojekt, das Ihnen zeigt, wie Sie verschiedene Technologien kombinieren können. Beispielsweise werden Sie im Rahmen dieser Projekte einen Holzkasten mit einem Schloss versehen, das Sie mit Ihrem Fingerabdruck öffnen können, und eine Chamäleonkuppel bauen, die ihre Farbe wechselt. Diese Projekte machen Spaß, bilden aber auch gute Ausgangspunkte für spätere eigene Erfindungen.

Die Fähigkeiten, die Sie sich mithilfe des Arduino aneignen, lassen sich leicht auf ernsthafte Projekte übertragen. Beispielsweise haben wir den Prototyp des Sonnensensors für Finnlands ersten Satelliten mithilfe des Arduino entwickelt (siehe Abb. I).

Images

Abb. I Der erste finnische Satellit startet 2014. Den Prototyp für den Sonnensensor haben wir mithilfe des Arduino entworfen und gebaut.

Wie Sie dieses Buch lesen sollten

Wenn Sie eine Idee haben, können Sie mithilfe dieses Buches schnell einen ersten Prototyp bauen. Anstatt Stunden damit zuzubringen, die Datenblätter von Komponenten zu studieren, können Sie einfach einen Sensor und einen fertigen Schalt-plan sowie den zugehörigen Code herausgreifen. Die Sensoren können Sie als Bausteine für Ihre Projekte verwenden, aber anders als bei anderen Bausystemen, wie Stabilbaukästen und Lego, haben Sie beim Arduino und beim Raspberry Pi wirklich fast unbegrenzte Möglichkeiten.

Wenn Sie wissen, was Sie messen wollen, können Sie schnell den passenden Sensor dafür finden. Dieses Buch ist nach den Erscheinungen der physischen Welt geordnet, die sich messen lassen:

Sie können dieses Buch als Inspirationsquelle verwenden: Stöbern Sie darin, um eine Vorstellung davon zu bekommen, was für Sensoren verfügbar sind, und lassen Sie sich davon zu neuen Projekten anregen.

Wenn Sie wissen wollen, wie die Sensoren mit dem Arduino bzw. dem Raspberry Pi zusammenarbeiten, dann werden Ihnen die ausführlichen Erläuterungen gefallen. Alle Codebeispiele sind vollständig und zeigen die gesamte Interaktion mit dem Sensor. Wenn Sie genau verstehen, wie die in diesem Buch behandelten Sensoren funktionieren, können Sie Ihre neu erworbenen Fähigkeiten auch auf andere Sensoren übertragen, sogar auf solche, die es heutzutage noch gar nicht gibt.

Bei der Auswahl der Sensoren haben wir uns für besonders nützliche und interessante entschieden, ohne darauf zu achten, ob sie besonders leicht oder besonders schwer zu verwenden sind. Daher finden Sie in diesem Buch Experimente mit unterschiedlichem Schwierigkeitsgrad.

In jedem Kapitel werden Experimente, Praxisexperimente und ein Testprojekt vorgestellt:

1. Die Experimente geben Ihnen eine schnelle Anleitung dafür, wie Sie einen bestimmten Sensor am Arduino oder am Raspberry Pi einsetzen können. Sie können Sie als Bausteine für Ihre eigenen Projekte verwenden, aber auch einfach nur zum Ausprobieren, wie die einzelnen Sensoren funktionieren.

2. In Praxisexperimenten spielen Sie mit den Sensoren herum und beobachten damit Änderungen in Ihrer Umgebung. Dadurch können Sie sich ein Bild davon machen, wie der Sensor die Welt sieht und wie er wirklich funktioniert.

3. Die Arbeit mit Sensoren macht mehr Spaß, wenn Sie auch irgendetwas mit den Messwerten tun. In den Testprojekten bauen Sie jeweils ein Gerät, das den Sensor nutzt. Dabei lernen Sie verschiedene Ausgabemöglichkeiten wie RGB-LEDs, E-Paper und Servomotoren kennen. Testprojekte können Sie auch als Ausgangspunkte für Ihre eigenen Konstruktionen nutzen.

Eingabe, Verarbeitung, Ausgabe

Alle Roboter oder Geräte, die Sie bauen, brauchen eine Eingabe, eine Verarbeitung der Daten und eine Ausgabe.

1. Da die meisten der von Ihnen gebauten Geräte weder über eine Tastatur noch über eine Maus verfügen, dienen die Sensoren als Eingabequelle. Werfen Sie einen Blick in das Inhaltsverzeichnis, aber denken Sie daran, dass hier nur ein Bruchteil der tatsächlich existierenden Sensoren behandelt wird. Es gibt unzählige weitere Sensoren, um alles zu messen, was Sie sich vorstellen können.

2. Die Verarbeitung geschieht in Ihrem Programm, das auf dem Arduino oder Raspberry Pi ausgeführt wird. In diesem Programm geben Sie an, was als Nächstes geschieht.

3. Die Ausgabe hat einen Einfluss auf die Welt außerhalb des Geräts. Sie können eine LED aufleuchten lassen, einen Servomotor einschalten oder einen Klang abspielen. Das sind die drei häufigsten Arten von Ausgaben, aber es gibt noch weitere (z. B. haptische Rückmeldung durch Vibration, die Anzeige auf einem E-Paper-Bildschirm oder das Einschalten von Haushaltsgeräten).

Protokolle

Ein Protokoll bestimmt, wie ein Sensor mit einer Mikrocontroller-Platine, wie dem Arduino oder dem Raspberry Pi, kommuniziert. Es legt fest, wie die Kabel angeschlossen werden und wie Ihr Code die Messwerte abfragen muss.

Es gibt zwar unzählig viele Sensoren, aber nur eine eingeschränkte Anzahl von häufig verwendeten Protokollen. Sie werden diese Protokolle im Einzelnen kennenlernen, während Sie an den Experimenten und Projekten arbeiten. In diesem Abschnitt geben wir Ihnen aber bereits einen Überblick über das, was Sie erwartet.

Eine Übersicht über die gebräuchlichen Sensorprotokolle finden Sie in Tabelle I.

Beim Experimentieren mit den Sensoren lernen Sie diese Protokolle immer besser kennen. Wenn Sie es eilig haben, neue Sensoren in Ihre Roboter und innovativen Geräte einzubauen, können Sie auch einfach den Code aus diesem Buch verwenden und sich später um die Einzelheiten kümmern.

Protokoll

Beispielwerte

Arduino

Raspberry Pi

Beispielsensoren

Digitaler Widerstandssensor

1 oder 0

digital Read()

botbook_-gpio.read()

Drucktaste, IR-Sensor, Neigungssensor, passiver IR-Bewegungssensor

Analoger Widerstandssensor

5 %, 10 %, 23 °C

analogRead()

botbook_mcp300 2.read-Analog(), Chip

Potenziometer, lichtabhängiger Widerstand, Alkoholsensor MQ-3, MQ-X-Gassensoren (Rauch, Kohlenwasserstoffe, CO usw.), Drucksensor Flexi-Force, Flammensensor KY-026, Farbsensor HDJD-S822-QR999, Temperatursensor LM35, Bodenfeuchtigkeits-sensor

Pulsbreite

20 ms

pulseIn()

gpio.pulse InHigh()

Ultraschall-Entfernungssensoren Ping und HC-SR04, Beschleunigungssensor MX2125

Serieller Port

A9B3C5B3 C5

Serial. read()

pySerial.read()

Fingerabdruckscanner GT-511C3, RFID-Scanner ELB149C5M

I2C

(2,11 g, 0,0 g, 0,1g), sehr genaue Werte

Wire.h

smbus

Wii Nunchuk, Beschleunigungsmesser/Gyroskop-Kombimodul MPU 6050, Luftdrucksensor GY-65

SPI

57°, sehr genaue Werte

Bitoperationen

spidev

Analog-Digital-Wandler MCP3002

In sehr kurzen Impulsen codierte Bits

53 %

Bitoperationen

Bitoperationen

Feuchtigkeitssensor DHT11

Tab. I Sensorprotokolle mit ansteigender Kompliziertheit

Folgen Sie Ihrem eigenen Stil

Nackte Platinen und Bauteile wirken für die meisten Benutzer nicht gerade ansprechend. Wenn Sie Ihr Gerät oder Ihren Roboter mit einem attraktiven Gehäuse versehen, kann das schon einen großen Unterschied ausmachen.

Zu allen Projekten in diesem Buch machen wir Ihnen einen Vorschlag für die Verkleidung, aber das heißt nicht, dass Sie unseren Anleitungen stur folgen müssen. Probieren Sie auch andere Materialien und andere Herstellungsmöglichkeiten aus.

Wie wäre es mit Pappe (siehe Abb. II), Stoff (Abb. III) oder einem Gehäuse aus einem 3D-Drucker (Abb. IV)?

Images

Abb. II Pappmodell. Foto von der Ars Electronica in Linz (nicht von uns gemacht).

Images

Abb. III Pelzroboter. Foto von der Ars Electronica in Linz (nicht von uns gemacht).

Images

Abb. IV Bender in 3D. Foto von der Ars Electronica in Linz (nicht von uns gemacht).

Erlernen Sie neue Techniken und probieren Sie sie aus. Es macht die Arbeit gleich viel interessanter, wenn Sie zwischen der ständigen Löterei auch mal etwas schmieden oder töpfern.

Images

Abb. V Grundmodell für einen animatronischen Gorillakopf und die damit hergestellte Latexhaut

In unseren eigenen Projekten verwenden wir auch viel recyceltes Material. Es ist nicht nur billig (kostenlos!), sondern kann einem Projekt auch ein ganz besonderes Erscheinungsbild verleihen.

Bauteile kaufen

Wenn Sie qualitativ hochwertige Bauteile brauchen, mit denen Sie problemlos arbeiten können, suchen Sie sich einen renommierten Anbieter aus, vorzugsweise aus der westlichen Welt. Wenn Sie billige Bauteile haben wollen, sehen Sie sich in Asien um.

Zu den Qualitätsanbietern für Bastler zählen Maker Shed (http://www. makershed.com), SparkFun (https://www.sparkfun.com), Parallax (http://www. parallax.com) und Adafruit (http://www.adafruit.com/). Maker Shed gehört dem Herausgeber der Originalversion dieses Buches. SparkFun vertreibt viele Breakout-Platinen, die Sie an die Steckerleisten anlöten müssen. Parallax ist der Erfinder von Basic Stamp, der vorherigen Generation von Mikrocontroller-Platinen für Bastler. Adafruit bietet eine Menge Bauteile an, viele davon hat Adafruit selbst entwickelt. Auf den Websites von SparkFun und Adafruit finden Sie viele Informationen über die dort erhältlichen Komponenten, unter anderem auch Bauanleitungen.

Weitere gut sortierte Anbieter (im deutschsprachigen Bereich) sind Watterott Electronics (http://www.watterott.com), Digi-Key (http://www.digikey.de) und Mouser Electronics (http://www.mouser.de).

Heutzutage sind sogar bekannte Handelsunternehmen wie Element14 (http:// www.element14.com) und RS electronics (http://de.rs-online.com) in den Bastlermarkt vorgedrungen. Da sie in ihren umfangreichen Katalogen inzwischen eigene Bereiche für den Arduino und den Raspberry Pi eingerichtet haben, lassen sich die entsprechenden Bauteile darin jetzt auch einfacher finden.

Für einige ausgefallene Bauteile oder um wirklich äußerst niedrige Preise zu erhalten, müssen Sie sich in Asien umsehen. DealExtreme (http://dx.com) ist zurzeit der Renner. Die Lieferung dauert lange und die Qualität schwankt, aber die Preise sind niedrig und das Sortiment ist sehr breit gefächert. Ein weiterer asiatischer Anbieter, der einen Versuch lohnt, ist AliExpress (http://www.aliexpress.com).

Schreibweisen in diesem Buch

In diesem Buch haben wir die folgenden Schreibweisen verwendet:

Kursivschrift

Weist auf einen neuen Begriff hin und kennzeichnet URLs, E-Mail-Adressen, Dateinamen und -erweiterungen.

Nichtproportionalschrift

Wird für Programmlistings und im Fließtext für Programmelemente wie Variablen und Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter verwendet.

Die Codebeispiele verwenden

Den gesamten Quellcode zu diesem Buch können Sie auf der Seite www. dpunkt.de/sensoren herunterladen (Schauen Sie auch auf die englische Website des Originalbuchs: http://makesensors.botbook.com).

Um das ZIP-Archiv zu entpacken, doppelklicken Sie darauf. Sie können auch rechtsklicken und Extrahieren aus dem Kontextmenü wählen.

Dieses Buch soll Ihnen dabei helfen, Aufgaben zu erledigen. Den Code aus diesem Buch können Sie in Ihren Programmen und der zugehörigen Dokumentation benutzen. Sie müssen uns nicht um Erlaubnis fragen, es sei denn, dass Sie einen erheblichen Teil des Codes reproduzieren. Wenn Sie beispielsweise ein Programm schreiben, das mehrere Teile des Codes aus diesem Buch nutzt, brauchen Sie dazu keine ausdrückliche Erlaubnis von uns. Wollen Sie dagegen eine CDROM mit Beispielen aus diesem Buch verkaufen oder verteilen, ist eine Genehmigung erforderlich. Wenn Sie eine Frage beantworten, indem Sie aus diesem Buch und dem Beispielcode zitieren, brauchen Sie dazu keine ausdrückliche Erlaubnis. Wollen Sie dagegen eine erhebliche Menge des Beispielcodes aus diesem Buch in Ihre Produktdokumentation aufnehmen, ist eine Erlaubnis notwendig.

Eine Quellenangabe ist nicht erforderlich, aber wir würden uns darüber freuen. Gewöhnlich umfasst eine solche Angabe den Titel, den Auto, den Herausgeber und die ISBN, z. B.

»Sensoren - messen und experimentieren mit Arduino und Raspberry Pi von Tero Karvinen, Kimmo Karvinen und Ville Valtokari. Copyright 2015 Tero Karvinen, Kimmo Karvinen und Ville Valtokari, 978-3-86490-160-7«.

Wenn Sie unsere Codebeispiele auf eine Weise verwenden möchten, die den Rahmen der »fairen Verwendung« sprengt oder über die hier gegebene Erlaubnis hinausgeht, wenden Sie sich bitte über bookpermissions@makermedia.com an uns.

Danksagungen

Die Autoren möchten Hipsu, Marianna, Nina, Paavo Leinonen und Valtteri danken.

1 Raspberry Pi

Wir empfehlen Ihnen, mit dem Modell B des Raspberry Pi anzufangen, das einen kabelgebundenen Ethernet-Anschluss sowie ausreichend USB-Ports für eine Maus und eine Tastatur aufweist. Das macht den Einstieg viel einfacher.

Images

Abb. 1–1 Peripherieanschlüsse am Raspberry Pi

Sofern Sie den Raspberry Pi nicht als Teil eines Komplettpakets gekauft haben, ist kein Gehäuse dabei. Es macht aber überhaupt nichts aus, einfach die nackte Platine auf den Tisch zu legen; dadurch wirken Sie noch mehr wie ein richtiger Elektronikfreak. Wenn Sie Zugang zu einem 3D-Drucker, CNC-Maschinen oder Laserschneidgeräten haben, können Sie auch selbst ein Gehäuse bauen. Viele Vorlagen dafür finden Sie auf http://www.thingiverse.com.

Eine SD-Speicherkarte mit 4 GB ist groß genug für das Betriebssystem. Bei einer größeren Karte kann die Abnutzung im Laufe der Zeit jedoch geringer sein (der Verschleiß kann über einen größeren Speicherplatz verteilt werden). Wenn Sie also über eine Speicherkarte von 8 GB oder mehr verfügen, ist das noch besser.

Der Raspberry Pi kann ein Full-HD-Display steuern, und über einen HDMI-Anschluss können Sie sogar Tonsignale senden. Daher eignet sich ein HD-Fernseher gut als Anzeige für einen Pi.

Eine Tastatur und eine Maus erleichtern den Einstieg. Das Modell B des Raspberry Pi verfügt über zwei USB-Anschlüsse, was gerade für Maus und Tastatur ausreicht.

Der teuerste 30-€-Computer?

Kabel, Tastatur, Maus und Anzeige kosten zusammen mehr als zwei Raspberry Pi. Wenn Sie all diese Teile nicht noch irgendwo als Staubfänger gelagert haben, kann das eine ziemlich große Ausgabe für einen so kleinen Computer sein. Trotzdem spart es Zeit (= Geld), wenn Sie sich eine komfortable Entwicklungsumgebung einrichten. Wenn Ihr Projekt funktioniert, können Sie das System später auf die absolut notwendigen Teile abspecken. Wie heißt es so schön? Der Raspberry Pi ist der einzige 30-€-Computer, der 100 € kostet.

Wenn Sie mit SSH oder VNC über das Netzwerk mit dem Raspberry Pi arbeiten wollen, müssen Sie nur für einen Netzwerk- und einen Stromanschluss sorgen. Dann brauchen Sie – außer für die Ersteinrichtung – keine Tastatur, keine Maus und keinen Monitor.

1.1 Raspberry Pi: Von null zum ersten Start

In diesem Kapitel erfahren Sie, wie Sie Ihren Raspberry Pi schnell arbeitsbereit machen. Als Erstes müssen Sie Linux auf dem Pi installieren. Dazu sind folgende Schritte erforderlich:

Sobald alles fertig ist, müssen Sie den Pi mit der grafischen Linux-Oberfläche neu starten.

Sie benötigen dazu die folgenden Teile:

1.1.1 NOOBS*.zip entpacken

Laden Sie NOOBS_vX_Y_Z.zip von http://raspberrypi.org/downloads herunter (während wir diese Zeilen schreiben, ist die Version NOOBS_v1_3_4.zip aktuell, aber wenn Sie dies lesen, kann der Dateiname durchaus schon wieder anders lauten).

bootcode.bin