Modul 2: Der Lügendetektor

Im folgenden Modul wirst du lernen, wie du mit dem Octopus Text auf dem Bildschirm ausgibst. Weiter lernst du, wie ein Mikrocontroller mit seiner Umgebung interagiert. 

Lernpfad

Das Problem

Der Polygraph – auch besser bekannt als Lügendetektor (vgl. Abbildung 1) – ist ein Gerät, das verschiedene Körperparameter wie Puls, Atmung, Blutdruck und elektrische Leitfähigkeit der Haut während einer Befraguung misst und aufzeichnet.

In der Klasse 8a wird in der Pause immer Lügenmäxchen gespielt. Ein Würfelspiel, bei dem der beste Lügner gewinnt. Wir wollen einen eigenen Lügendetektor bauen, um herauszufinden, wann ein Mitspieler lügt.

Welche Möglichkeiten bietet der Octopus?

Der Octopus kann als einfacher Lügendetektor verwendet werden. Indem wir die analogen Kontakte (vgl. Abbildungen 2 und 3) des Octopus nutzen, können wir den Hautwiderstand am Finger der zu testenden Person bestimmen. Da Menschen die Lügen, häufig schwitzige Hände haben, kann dies als Hinweis für eine Lüge gelten.

Der analoge Eingang des Octopus liefert uns einen Messwert zwischen 0 und 1023.  Warum das so ist und wie wir daraus den tatsächlichen Hautwiderstand der Testperson bestimmen können, erfährst du in den optionalen Inhalten.

Abb. 2 Hier findest du analogen Kontakte des Octopus. Auch der weiße Stecker über den goldenen Kontakten ist eine analoger Eingang
Abb. 3 Legt man den Finger auf die Kontakte, fällt ein Wert zwischen 0 und 1023 am Kontakt an
Den Wert am analogen Eingang auslesen

Ein erstes Programm

Zu Beginn werden wir uns anschauen, wie wir den Wert am analogen Eingang auslesen können. Dafür benötigen wir das Bauteil "analog Read" aus der Schublade "Sensoren". Du wirst bemerken, dass das Bauteil nicht in das IoT2-Programmbauteil passt (vgl. Abbildung 4). Da es einen spitzen Anschluss hat bedeutet dies, dass es sich um eine Zahlwert handelt, der vom Sensor erzeugt wird. So einen Zahlwert kannst du nur weiterverarbeiten, indem du ihn mit einem anderen Bauteil verwendest. Wir können den Zahlwert zum Beispiel auf dem Bildschirm ausgeben. Dafür benötigen wir zu einem das Bauteil "Serial print" aus der "Kommunikation"-Schublade und zum ein "verbinde" -Bauteil aus der gleichen Schublade, der den spitzen mit dem viereckigen Anschluss verbindet (vgl. Abbildung 5). Weiter benötigen wir das Bauteil "Warte Millisekunden", dass du bereits aus Modul 1 kennst, damit die Werte nicht zu schnell auf dem seriellen Monit angezeigt werden.

Der serielle Monitor erlaubt es uns, Daten vom Octopus an den PC zu senden und diese in Form von Text auf dem Bildschirm auszugeben. Da man dort nur Text angeben kann, muss man zuerst Zahlwerte in Text übersetzen. Hierfür benötigen wir die Verbinder als Adapter. Den seriellen Monitor findest du am oberen Rand des Ardublocks (vgl. Abbildung 6). Wenn du auf den Button klickst, öffnet sich der serielle Monitor und siehst die vom Octopus gesendeten Daten (vgl. Abbildung 7).

Abb. 4 Der spitze Anschluss des analogRead passt nicht in das Hauptbauteil des Ardublocks
Abb. 5 Mit Hilfe des "verbinde"-Bauteils können wir das "analogRead" mit dem "Serial print" verbinden
Abb. 6 Hier findest du den "Seriellen Monitor" für das Anzeigen der Daten
Abb. 7 Die Messdaten werden jede Sekunde auf dem Monitor ausgegeben

Wie sehen die Werte aus?

Wie du an Abbildung 8 erkennen kannst, liegt am analogen Eingang nur ein kleiner Wert an, wenn du den analogen Kontakt nicht berührst. Sobald du den Finger auf den Kontakt legst, verändert sich der Wert jedoch deutlich (vgl. Abbildung 9).

Du wirst merken, dass der Wert sich verändert, je fester du auf den Kontakt drückst. Mache auch einmal deinen Finger etwas feucht und halte ihn erneute auf den Kontakt. Der Wert wird sich noch weiter erhöhen.

Abb. 8 Fasst du den analogen Kontakt nicht an, liegt dort an kleiner Wert an
Abb. 9 Liegt ein Finger auf dem Kontakt, ändert sich der Wert deutlich
Den Lügendetektor finalisieren
Abb. 10 So sieht das fertige Programm für den Lügendetektor aus

Wir wollen unseren Lügendetektor nun fertig programmieren. Dafür müssen wir unterscheiden, ab welchem Wert eine Aussage als Lüge gilt und wann nicht. Wir werden hier den Wert 300 wählen. Um zu unterscheiden, ob es sich um eine Lüge handelt oder nicht, benötigen wir das Bauteil "Falls/sonst" aus der "Kontrollstrukturen"-Schublade. Damit können wir testen, ob der Wert, der am analogen Kontakt gemessen wird, größer oder kleiner als 300 ist. Ist der Wert kleiner als 300 soll die linke LED, die du aus Modul 1 kennen solltest, grün leuchten und andernfalls rot. Du wirst merken, dass man in das obere Abteil des "Falls/sonst"-Bauteils nur bauteile mit rundem Anschluss einsetzen kann. Hierbei handelt es sich um Wahrheitswerte (wahr oder falsch). Wir verwenden das "Kleiner"-Bauteil aus der "Log. Operatoren"-Schublade. Du benötigst weiter einen Zahlwert, in dem du die 300 einträgst. Ihn findest du in der "Variablen/Konstanten"-Schublade. In Abbildung 10 siehst du, wie das fertige Programm aussehen muss. Wir geben hier den Wert zusätzlich noch auf dem seriellen Monitor aus.

Was können wir noch tun? (optional)

Den Lügendetektor verbessern

Abb. 11 Wir können testen, ob eine Person die Kontakte berührt, indem wir eine untere Grenze angeben. Ansonsten schalten wir die LED aus

Aktuell leuchtet die LED am Octopus auch grün, wenn niemand den Kontak berührt. Da dies im Kontext des Lügendetektors aber bedeutet, dass jemand die Wahrheit spricht, kann dies zu Verwirrung führen. So kann man beispielsweise "schummeln", wenn man den Finger nicht richtig auf die Kontakte legt. Wir sollte daher abprüfen, ob eine Person den analogen Eingang des Octopus berührt. Sobald eine Person den Octopus berührt, ist der Wert auf jeden Fall größer als 20. Wir sollten daher abprüfen, ob der Werte größer als 10 ist, bevor wir eine LED aufleuchten lassen. Ansonsten schalten wir die LED aus. In Abbildung 11 kannst du sehen, in wie weit du das Programm verändern musst.

Andere Sensoren am analogen Eingang - die Lärmampel

Abb. 12 Wir können weitere analoge Sensoren am linken Grove-Anschluss des Octopus verwenden. Jeder analoge Sensor kann mit dem Bauteil "Analog Read" verwendet werden!

Wir können unser ursprüngliches Programm aus Abbildung 10 verwenden, um eine Lärmampel zu bauen. Da analoge Sensoren immer gleich funktionieren (vgl. Fachliche Informationen) und uns immer einen Wert zwischen 0 und 1023 ausgeben, müssen wir nach Anschluss des Sound-Sensors am linken Grove-Anschluss des Octopus (siehe Abbildung 12) nur einen Wert herausfinden, der für uns einer angenehmen Lautstärke entspricht. Auch für andere analoge Sensoren funktioniert das Bauteil "Analog Read". Danach leuchtet die LED grün, wenn eine angenehme Lautstärke im Raum herrscht und rot, falls es zu laut ist. Vielleicht eignet sich eine solche Lärmampel ja für euren Klassenraum?

Fachliche Informationen (optional)

Wie werden die Werte am analogen Eingang ausgelesen?

Wenn die wir den Finger auf den Kontakt am Ocotpus legen, verändert sich durch den Hautwiderstand die Spannung, die am Kontakt anliegt. Die insgesamt an den mit A0 beschrifteten Kontakten anliegende Kleinspannung wird durch einen Analog-Digital-Wandler (ADC) in einen proportionalen Zahlenwert umgewandelt. In unserem Fall hat der ADC eine Auflösung von 10 bit, was bedeutet, dass unser Messbereich von 0 bis 3 V in die Zahlenwerte 0 bis 210-1 (=1023) umgewandelt wird. 

Das Bauteil AnalogRead wandelt also die physikalische Größe Spannung in einen Zahlenwert um. Schließen wir an der Grove-Buche A0 (linke weiße Buchse) z.B. einen Loudness-Sensor an, so können wir so die Lautsärke im Klassenzímmer messen.

Die abfallende Spannung am analogen Kontakt bestimmen (für Profis)

Wenn du deinen Finger auf den analogen Kontakt legst, sorgt dein Hautwiderstand dafür, dass am analogen Kontakt die Spannung abfällt. Dies liegt daran, dass den Kontakten ein weiterer Widerstand vorgeschaltet ist. Dieser Widerstand und dein Finger teilen die eigentliche Spannung, mit der der Octopus arbeitet, auf. Man spricht hierbei von einem Spannungsteiler. Der Octopus arbeitet normalerweise mit einer Spannung von 3 Volt. Demnach muss die Spannung am Kontakt niedriger sein als 3 Volt. 

Diese niedriger Spannung kannst du ganz einfach ausrechnen. Lese den analogen Wert zwischen 0 und 1023 aus und teile ihn durch 1023. Danach multiplizierst du ihn mit 3. Als Ergebnis erhälst du die Spannung, die am analogen Kontakt abfällt.

Wenn du mehr über den Spannungsteiler und seine zahlreichen Einsatzgebiete erfahren möchtest, kannst du hier klicken.

Andere analoge Sensoren

Neben dem Sound-Sensor gibt es noch viele weitere Sensoren, die wir auf genau die gleiche Weise verwenden können, indem wir das "Analog Read"-Bauteil verwenden. So können wir hier beispielsweise auf Lichtsensoren, Beschleunigungssensoren, Distanzsensoren und Temperatursensoren zurückgreifen. Wenn du wissen möchtest, wie du selbst einen Lichtsensore bauen kannst, solltest du auf folgenden Link klicken: https://www.umwelt-campus.de/iot-werkstatt/tutorials/physik-selbstbau-lichtsensor

Abb. 1 Ein Verdächtiger am Lügendetektor
back-to-top nach oben