• Projekt - Lügendetektor
  • Ben3005
  • 06.07.2025
  • Informatik
  • 10
Um die Lizenzinformationen zu sehen, klicken Sie bitte den gewünschten Inhalt an.

Teil 1: Erste Mes­sun­gen mit dem GSR-​Sensor

Ein Lü­gen­de­tek­tor, auch als Po­ly­graph be­kannt, misst phy­sio­lo­gi­sche Re­ak­ti­o­nen, um fal­sche Aus­sa­gen zu er­ken­nen. Ein wich­ti­ger Be­stand­teil ist der GSR-​Sensor (Gal­va­nic Skin Re­spon­se), der den Haut­wi­der­stand er­fasst. Bei Stress, wie etwa beim Lügen, än­dert sich die Schweiß­pro­duk­ti­on, was den elek­tri­schen Wi­der­stand der Haut ver­rin­gert. Die­ser Wi­der­stands­wert wird vom Sen­sor auf­ge­zeich­net und ana­ly­siert, um fest­zu­stel­len, ob der Pro­band die Wahr­heit sagt oder nicht.

1
Euer GSR-​Sensor wird mit meh­re­ren Ka­beln ver­bun­den. Ver­bin­det diese Kabel fol­gen­der­ma­ßen mit eurem Ar­du­i­no:

Ka­bel­far­be

Pin auf dem Ar­du­i­no

schwarz

GND

rot

5V

gelb

A0

weiß

wird nicht ver­bun­den

2
Ihr habt in dem Ver­zeich­nis XXX eine Code­vor­la­ge ge­ge­ben. Ko­piert diese und fügt sie in eurem Ver­zeich­nis XXX ein.
3
In der Code­vor­la­ge habt ihr die Funk­ti­on get­Durch­schnitt­li­chenGS­RWert(int n) ge­ge­ben. Schreibt dafür den Pro­gramm­code, wel­cher das arith­me­ti­sche Mit­tel von n-​Lesedurchgängen be­rech­net und die­sen zu­rück gibt. Zwi­schen den Le­se­vor­gän­gen soll 5 Mil­li­se­kun­den ge­war­tet wer­den.
4
Ruft jetzt in der loop() Funk­ti­on get­Durch­schnitt­li­chenGS­RWert(10) auf und spei­chert die zu­rück­ge­ge­be­ne Zahl in einer Va­ri­a­ble ab. Gebt diese Va­ri­a­ble mit Hilfe Se­ri­al.println() aus.
5
Ladet das Pro­gramm nun auf den Ar­du­i­no und nehmt den Wi­der­stand von jedem Grup­pen­mit­glied auf, indem ihr den Sen­sor an dem Zei­ge­fin­ger und an dem Mit­tel­fin­ger an­schließt. Die Me­tall­kon­tak­te soll­ten dabei die Fin­ger­kup­pen be­rüh­ren. No­tiert die Werte in der Ta­bel­le.

Name

GSR-​Wert

Mit­glied 1:

Mit­glied 2:

Mit­glied 3:

Bei der Mes­sung soll­te auf­fal­len, dass für jedes Grup­pen­mit­glied un­ter­schied­li­che Werte raus­kom­men. Dies liegt daran, dass jeder Mensch eine an­de­re Haut hat und somit den Strom un­ter­schied­lich lei­tet. Für un­se­ren Lü­gen­de­tek­tor müs­sen wir am An­fang für jede Per­son einen Ru­he­wert ka­li­brie­ren, wel­cher dann ver­gli­chen wird, um eine Lüge fest­zu­stel­len.

Teil 2: Pro­gram­mie­ren eines ein­fa­chen Lü­gen­de­tek­tors

6
Schreibt den Code für die Funk­ti­on ka­li­brie­re­Ru­he­wert(). Diese soll für n=1000 (Durch­gän­ge) den durch­schnitt­li­chen GSR-​Wert be­rech­nen und und in der go­ba­len Va­ri­a­ble ru­he­wert spei­chern. Rufe die Funk­ti­on ein­ma­lig in der Funk­ti­on setup() auf.
Tipp

Be­nut­ze die Funk­ti­on get­Durch­schnitt­li­chenGS­RWert(int n).

Bei einer Lüge steigt der Stress und somit auch die Schweiß­pro­duk­ti­on. Dies er­höht die elek­tri­sche Haut­leit­fä­hig­keit und senkt den elek­tri­schen Wi­der­stand. Das be­deu­tet an­de­rer­seits aber auch, dass in einer ge­stress­ten Si­tu­a­ti­on fälsch­li­cher Weise eine Lüge an­ge­zeigt wer­den kann. Wir wol­len nun eine grüne LED auf­leuch­ten las­sen, wenn die Per­son ruhig ist, bei leich­ter Un­si­cher­heit soll eine gelbe LED leuch­ten und star­kes Stress­le­vel wol­len wir als Lüge an­se­hen, das heißt es soll eine rote LED leuch­ten.

7
Ach­tung: Trennt den Ar­du­i­no vom Strom. Bevor ihr ihn wie­der mit dem Strom ver­bin­det, mel­det ihr euch und lasst euren Auf­bau von dem Leh­rer über­prü­fen.
Baut auf einem Steck­brett eine LED-​Schaltung mit den drei LEDs rot, gelb und grün. De­fi­niert die LEDs als glo­ba­le Va­ri­a­blen und lege sie in setup() als Output-​Pins fest.
8
Schreibt den Code für die Funk­ti­on ue­ber­pru­e­fe­Lu­e­ge(int gs­rWert). Wenn der über­ge­be­ne gs­rWert mehr als 40% unter dem Ru­he­wert ist, soll die rote LED leuch­ten. Wenn er mehr als 20% unter dem Ru­he­wert ist, soll die gelbe LED leuch­ten. Wenn bei­des nicht ein­trifft, soll die grüne LED leuch­ten. Ruft die Funk­ti­on in der loop Funk­ti­on auf mit dem zuvor be­rech­ne­ten durch­schnitt­li­chen GSR-​Wert.
9
Pro­biert den Lü­gen­de­tek­tor nun aus, indem ihr euch ge­gen­sei­tig min­des­tens fünf Fra­gen stellt. Seid dabei re­spekt­voll mit­ein­an­der. Wenn je­mand eine Frage nicht be­at­wor­ten will, darf er das sagen. Dies wird von den an­de­ren an­er­kannt und es wird kei­ner zu einer Ant­wort ge­drängt. No­tiert in der fol­gen­den Ta­bel­le, wie gut der Lü­gen­de­tek­tor die Lügen er­kennt.

mög­li­che Fälle

An­zahl

Lüge rich­tig er­kannt

Lüge er­kannt, ob­wohl wahre Aus­sa­ge

Wahr­heit rich­tig er­kannt

Wahr­heit er­kannt, ob­wohl ge­lo­gen wurde

Ihr wer­det fest­stel­len, dass der Lü­gen­de­tek­tor viele Feh­ler macht. In der Wis­sen­schaft gibt es viele ver­schie­de­ne Stu­di­en, wel­che ver­schie­de­ne Er­geb­nis­se zu der Ge­nau­ig­keit von Lü­gen­de­tek­to­ren geben. Ei­ni­ge Stu­di­en be­rich­ten von einer War­schein­lich­keit zwi­schen 93%-98,5%, dass eine Lüge rich­tig er­kannt wird. An­de­re Stu­di­en be­rich­ten aber auch, dass der Lü­gen­de­tek­tor mit einer Wahr­schein­lich­keit von 10%-45% einen Feh­ler macht, das heißt ent­we­der eine Lüge als Wahr­heit in­ter­pre­tiert oder im noch schlim­me­ren Fall die Wahr­heit als Lüge in­ter­pre­tiert.

Diese Stu­di­en stam­men aber von pro­fes­si­o­nel­len Lü­gen­de­tek­to­ren, wel­che noch wei­te­re und genau­re Sen­so­ren haben. Zudem ist un­se­re Pro­gramm re­la­tiv ein­fach ge­hal­ten. Bei einem pro­fes­si­o­nel­len Lü­gen­de­tek­tor wird zum Bei­spiel die Kal­brie­rung so vor­ge­nom­men, dass meh­re­re Fra­gen ge­stellt wer­den, bei denen man die Ant­wort schon weiß. Dabei wer­den nor­ma­le und un­an­ge­neh­me Fra­gen ge­mischt, um die je­wei­li­ge Stress­si­tu­a­ti­on mit zu be­rück­sich­ti­gen. Unser selbst­ge­bas­tel­ter Lü­gen­de­tek­tor hat somit eine noch deut­lich hö­he­re Feh­ler­an­fäl­lig­keit.

Zu­satz - Ver­bes­se­rung des Lü­gen­de­tek­tors

10
Än­dert in der Funk­ti­on ue­ber­pru­e­fe­Lu­e­ge(int gs­rWert) die Ver­zwei­gung, so dass eine Lüge und eine Un­si­cher­heit schnel­ler oder spä­ter er­kannt wird (Ab­wei­chung vom Ru­he­wert). Wie­der­holt das Ex­pe­ri­ment aus Auf­ga­be 9 und no­tiert euch die Werte.















Ver­gleicht die Werte mit denen aus Auf­ga­be 9 und er­läu­tert, wel­che Vor- und Nach­tei­le die Än­de­rung hat.

mög­li­che Fälle

An­zahl

Lüge rich­tig er­kannt

Lüge er­kannt, ob­wohl wahre Aus­sa­ge

Wahr­heit rich­tig er­kannt

Wahr­heit er­kannt, ob­wohl ge­lo­gen wurde

Bei einem Lü­gen­de­tek­tor ist vor allem die Ab­wei­chung in kur­zer Zeit ent­schei­den. Bei dem jet­zi­gem Pro­gramm legen wir den Ru­he­wert ein­mal am An­fang fest. Die­ser kann sich je­doch mit der Zeit än­dern. Es kann sein, dass wir mit der Zeit mehr zur Ruhe kom­men und somit der ak­tu­el­le GSR-​Wert deut­lich über dem Ru­he­wert ist. Wir er­ken­nen mög­li­che Lügen somit nicht. An­de­rer­seits kön­nen wir mit der Zeit auch ner­vö­ser ge­wor­den sein. Der GSR-​Wert ist somit dau­er­haft unter dem Ru­he­wert. Leich­te Ab­wei­chun­gen kön­nen also schon als Lüge ge­wer­tet wer­den.

Eine Lö­sung, um das Pro­blem zu be­sei­ti­gen, ist, dass wir immer die letz­ten 10 Werte be­trach­ten und schau­en, wie stark der neue Wert davon ab­weicht.

11
Schreibt eine Funk­ti­on ue­ber­pru­e­fe­Lu­e­ge2(), wel­ches diese Idee um­setzt.





Tipps
  • Be­nutzt eine glo­ba­le Va­ri­a­ble, wel­che die letz­ten zehn Werte in einem Array ab­spei­chert.

  • Wenn der Wert ein­mal stark ge­fal­len ist und dann kon­stant bleibt, schal­tet sich wie­der die grüne LED an. Die rote LED soll aber erst ein­mal für ein paar Se­kun­den leuch­ten, bevor es wie­der auf grün springt.

  • Ist die gelbe LED bei die­ser Um­set­zung noch sinn­voll?

x