Das folgende Kapitel stellt Eingabegeräte und Sensoren vor, die eine Interaktion zwischen Nutzer und dem Arduino ermöglichen.
Dabei sollen folgende Komponenten behandelt werden, die individuell konfiguriert werden müssen. Die benötigten Versorgungsspannungen und Schnittstellenkonfigurationen sind aus den jeweiligen Betriebsanleitungen einzusehen und beim Schaltungsaufbau zu beachten.
- Fotowiderstand
- Neigungsschalter
- Temperatursensor (TMP36)
- Bewegungssensor
- Ultraschallsensor
- 4×4 Tastenfeld
Fotowiderstand
Der Photowiderstand besitzt einen Widerstandswert, der von der einstrahlenden Lichtstärke abhängig ist. Dessen Abkürzung LDR steht dabei für den englischen Begriff Light Dependent Resistor.
Das elektrische Fotosensor-Verhalten könnte dabei stark abweichen zwischen den Herstellern. Dennoch liegen gängige Widerstandswerte meist zwischen 1MΩ und 100MΩ bei vollkommender Dunkelheit und 100Ω und 2kΩ bei Lichteinstrahlung.
Fotowiderstände können durch ihr elektrisches Verhalten eingesetzt werden, um Schaltungen aufzubauen, die Änderungen des Umgebungslichts registrieren könnten. Z.B. könnte eine elektrische Schaltung aufgebaut werden, die verwendet werden könnte, um eine Außenbeleuchtung bei Nachteinbruch zu aktivieren. Dazu wird die LDR-Komponente mit einem analogen Eingang des Arduino und dem 0V-Potenzial verbunden. Der Interne Pull-Up Widerstand des Arduino und der LDR bilden dann einen Spannungsteiler, der das ungefähre Helligkeitsniveau abschätzen könnte.
Der folgende visualisierte Quellcode befindet sich im Arduino-Arbeitsspeicher und möchte den Sachverhalt verdeutlichen. Im Quellcodeblockbereich der loop-Funktion wird in regelmäßigen Abständen die Spannung des Spannungsteilers ausgelesen und entsprechend in die Variabel „eingangsWert“ gespeichert. Anschließend wird mit ihr der Ausgabewert berechnet und in die Variabel „ausgangsWert“ gespeichert. Das entsprechende PWM-Signal, das die Led-Leuchtstärke bestimmen würde, wird von der „analogWrite„-Funktion und der Variabel „ausgangsWert“ anschließend eingeleitet.
Die identische Funktionalität könnte ebenfalls mit einem Transistor erreicht werden. Die folgende Abbildung visualisiert dabei die elektrische Schaltung. Der Spannungsteiler kontrolliert den Basis-Strom, der über den Kollektor- Emitter-Pfad verstärkt werden würde.
Die folgende Abbildung visualisiert das Schaltzeichensymbol eines LDR.
Neigungsschalter
Neigungsschalter sind elektrische Komponente, die abhängig ihrer Raumausrichtung einen elektrischen Stromkreis schalten. Bei entsprechenden Neigungswinkel wird ein Stromfluss aktiviert.
Moderne Neigungsschalter besitzen in ihrem Inneren eine bewegbare stromleitende Kugel, die bezüglich der Gehäuse-Raumausrichtung einen Stromkreis schließen würde. Folgende Abbildungen möchte diesen Sachverhalt nochmal verdeutlichen.
Neigungsschalter können eingesetzt werden, um Schaltungen zu realisieren, die das Neigungsverhalten eines physischen Objekts analysieren. Der Neigungsschalter wird dafür mit einem Arduino-Eingangs-Pin und dem 0V-Potenzial verbunden. Der Eingangs-Pin dient ebenfalls als Pull-Up Widerstand und könnte durch das 0V-Potenzial prüfen, ob der Neigungsschalterkontakt geschlossen ist.
Für diesen Anwendungsfall wäre der Arduino-Einsatz nicht erforderlich. Der Neigungsschalter könnte direkt mit der LED verbunden werden. Die Umsetzung des inversen elektrischen Verhalten der elektrischen Schaltung wäre durch den Arduino-Einsatz aber wesentlich einfacher zu realisieren.
Der folgende visualisierte Quellcode befindet sich im Arduino-Arbeitsspeicher. Im Codeblockbereich der loop-Funktion wird permanent der Zustand des Neigungssensors abgefragt. Abhängig des jeweiligen Zustandes werden LOW und HIGH Werte geschrieben.
Temperatursensor (TMP36)
Der Temperatursensor TMP36 kann zusammen mit der Bibliothek „TMP36“ als Thermometer verwendet werden. Der Sensor wird dazu mit 5V und Masse, sowie mit einem analogen Arduino-Eingang verbunden.
Eine korrekte Sensorkonfiguration benötigt die Spezifikation des analogen Arduino – Anschlusses und der benötigten Sensor-Versorgungsspannung. Die Sensorrückgabewerte driften bei unterschiedlichen Versorgungsspannungen. Diese Messungenauigkeit sollte bei der Temperaturberechnung berücksichtigt werden.
Die folgende Tabelle visualisiert verschiedene Temperaturmesswerte, die über der seriellen Schnittstelle übertragen wurden.
Die ermittelten Näherungswerte bezüglich vorherrschenden Temperaturen können um wenige Grad abweichen.
Bewegungssensor
Bewegungssensoren dienen der Bewegungserfassung von Lebewesen. Die sogenannten PIR-Sensoren, ausgeschrieben durch den englischen Begriff Pyroelectric Infrared Sensor, können die Intensität infrarotem Licht erkennen.
Jedes Lebewesen strahlt eine für ihn typische Infrarotstrahlung ab, die anhand der Bewegungssensoren erkannt werden könnte. Diese Sensortypen funktionieren ausschließlich bei Lebewesen. Das Bewegungsverhalten toter Gegenstände könnte dabei nicht erfasst werden.
Das unten abgebildete PIR Sensor Modul bietet die Möglichkeit seine Signal-Empfindlichkeit, die Signaldauer und den Signaltyp zu spezifizieren.
Die Markierungen „Haltezeit“ und „Empfindlichkeit“ kennzeichnen dabei integrierte variable Widerstände des Moduls. Der Abstand des Messbereichs, wo mögliche Bewegungen stattfinden könnten, wird am Potentiometer „Empfindlichkeit“ justiert. Der Wertebereich erstreckt sich hierbei zwischen 0,5m und 7m. Mit dem „Haltezeit“ – Potentiometer könnte dabei die Ausgangspin-Signaldauer, die bei aktiven Bewegungsverhalten erzeugt werden würde, eingestellt werden.
Der links angeordnete Schalter, der mit kleinen Wellenformdarstellungen markiert wurde, ist ein sogenannter Schalter bzw. „Jumper„. Er legt das Signalausgabeverhalten bei aktiver Bewegungserkennung fest. Bei Erkennung von mehreren Bewegungsmustern könnte so das Sensorsignalausgabeverhalten näher spezifiziert werden. Je nach Einstellung könnte während der Bewegungserfassung das Ausgabesignal eine Zeitdauer lang erzeugt, oder mehrmals erneut gestartet werden.
Die beschriebenen Einstellungsmöglichkeiten sind spezifische Parameter des entsprechenden PIR Sensor Moduls, diese unterscheiden sich natürlich von anderen Moduleinstellmöglichkeiten anderer Hersteller.
Ultraschallsensor
Ultraschallsensoren können Entfernungen abschätzen. Sie senden dazu eine Ultraschallwelle aus, die der Mensch nicht hören kann. Anschließend wird der Zeitpunkt des eintreffenden Echosignals der Ultraschallwelle registriert. Durch diesen Messwert und der physikalischen Konstanten der Schallgeschwindigkeit kann die ungefähre Distanz zum Gegenstand ermittelt werden, an dem die Schallwelle abgeprallt ist. Diese Distanzberechnung kann dann anschließend mit Hilfe einer Bibliothek ermittelt werden.
Der Sensor wird mit 5V über den Arduino versorgt. Außerdem sind der Trigger Pin (Sende Pin) und der Echo Pin (Empfangs Pin) an den Arduino angeschlossen.
Der folgende visualisierte Quellcode implementiert die „HCSR04„-Bibliothek, um Abstandsmessungen mit dem Sensor zu realisieren.
Je nach Objektabstand würden dabei unterschiedliche Ergebnisse erzielt werden.
Genau wie beim Messvorgang des Temperatursensors wird auch hier die reale Gegenstandentfernung nicht zu 100% genau ermittelt. Beim Messvorgang entstehen auch hier Messfehler, die berücksichtigt werden können, aber meist keine Rolle spielen in der Projektentwicklung.
4×4 Tastenfeld
Tastenfelder oder Tastaturen gibt es in beliebigen Größen und eignen sich zum Eingeben diverser Daten.
Die obere Abbildung visualisiert dabei ein 4×4 Tastenfeld mit 8 Zugangsleitungen. Die 8 Zugangsleitungen bilden dabei eine Art Matrix, um die einzelnen Tasten, bezüglich ihrer Reihen und Spalten Zugehörigkeit, elektronisch ansprechen zu können. Die erste Vierergruppe selektiert Zeilen und die Zweite Spalten der Matrix. Das Betätigen des Button 3 würde jetzt die Zuleitung 1 und 7 kurzschließen.
Durch dieses Prinzip können parallel betätigte Tastenanschläge ermittelt werden. Das Prüfen auf Tastenanschläge der Buttons „*“ und „D“ erfordert die elektronische Überprüfung der 4., 5. und 8. Zuleitung auf Kurzschluss.
Diese Matrixübersetzung könnte durch eine Arduino-Bibliothek erfolgen.
Die Bibliothek trägt den Namen „Keypad„. Der folgende Quellcode visualisiert das Implementieren und Initialisieren der entsprechenden Bibliothek und des Tastenlayouts.
Das Tastenfeldlayout wird dabei durch das zweidimensionale Array mit den Namen „tastenFeld“ abgebildet. Die Zeilen – und Spaltenanzahl werden in den Konstanten „zeilenAnzahl“ und „spaltenAnzahl“ hinterlegt.
Diese Initialisierung konfiguriert das entsprechende Tastenfeld für die Programmentwicklung. Die Funktion „getKey“ gibt dabei den Tastendruckzustand und die Tastenspezifizierung zurück.
Das Drücken einzelner Tasten würde jetzt zur folgender Liste führen.