This is an old revision of the document!


Lie Detector

Autor: Ștefania Cristiana Olteanu Grupa: 336CA

Introducere

Un test poligraf se bazeaza pe masurarea si inregistrarea unor parametrii fiziologici ai unui individ, cum ar fi pulsul, temperatura, respirația, perspiratia și conductivitatea pielii, in timp ce i se pun o serie de intrebari. Inca din cele mai vechi timpuri se considera ca a mintii determina efecte fiziologice colaterale. In acest proiect doresc sa simulez un “detector de minciuni” care desi nu intotdeauna obtine rezultate corecte (unii oameni isi pot controla in mod constient reactia corpului lor) este un experiment interesant in a masura anumiti parametrii ai corpului si a vedea cum sau daca acestia se modifica.

Descriere generală

Prin intermediul unui senzor de masurarea a pulsului si a un senzor de temperatura voi obtine informatiile necesare unui verdict asupra valorii de adevar a raspunsului unui individ (simularea unui test poligraf). Valoriile vor fi analizate si pe baza acestora va fi declansata una din urmatoarele stari:

  • LIE → LED-ul se face rosu, pe ecranul LCD se va afisa mesajul: “You are lying!” si buzzerul va canta Never Gonna Give You Up - Rick Astley
  • TRUTH → LED-ul se face verde, pe ecranul LCD se va afisa mesajul: “You are telling the truth!” si buzzerul va canta Hedwig's theme fromn the Harry Potter Movies

Schemă bloc

Hardware Design

Lista componente

Nume Număr Piese
Arduino UNO R3 1
Breadboard 1
Ecran LCD 16×02 (I2C) 1
Senzor puls MAX30100 1
Senzor temperatura si umiditate SHT21 1
LED rosu 1
LED RGB 1
Buzzer 1
Rezistor 330kΩ 5

Schemă electrică

Placuta comandata care include senzorul are o problema de design, respectiv liniile de SDA si SCL sunt HIGH la tensiunea de 1.8V, si nu 3.3V, astfel incat Arduino UNO nu poate comunica cu senzorul 1). Am modificat placuta printr-un jumper astfel incat SDA si SCL sunt alimentate de la 3.3V.

Software Design

Mediul de dezvoltare:

Biblioteci folosite:

Structura codului

Initializari - inainte de orice functie, initializam urmatoarele variabile:

  • pox → clasa care defineste senzorul de puls-oximetru
  • tft → clasa care defineste display-ul tft
  • lastState → initializat cu WAITING, folosita pentru a tine cont cand actualizam display-ul
  • prevHeartRate → initializat cu 0, folosita pentru a determina daca calculul pulsului este stabil
  • tsLastReport → initializat cu 0, folosita pentru a actualiza display-ul la intervale determinate

Functii

  • setup() → initializarea pinilor pentru buzzer si LED-uri, initializarea display-ului TFT, initializarea senzorului de puls, inregistrarea functie de callback pentru fiecare puls
  • loop() → logica principala a programului: apeleaza pox.update(); la fiecare 2 secunde calculeaza pulsul si SpO2 si afiseaza informatii relevante pe display in functie de aceste valori
  • RGB_color(red, green, blue) → seteaza pinii LED-ului RGB cu valorile date ca parametri
  • onBeatDetected() → functie callBack; porneste buzzer-ul si LED-ul rosu de fiecare data cand detectam un puls

Senzorul puls-oximetru trebuie interogat cat mai rapid, altfel datele din buffer-ul sau se pierd. Conform bibliotecii pe care am folosit-o, actualizarea ar trebui facuta la aproximativ 100Hz. Astfel, in cod trebuie apelat cat mai des pox.update()

Rezultate Obţinute

Circuit final

Demo

Accesand acest link puteți găsi un demo pe YouTube in care prezint funcționalitățile proiectului.

Concluzii

Download

Jurnal

  • 2.05.2022 → alegerea proiectului
  • 9.05.2022 → schema bloc
  • 10.05.2022 → pagina wiki - milestone 1
  • 20.05.2022 → finalizare componenta hardware si software a proiectului
  • 27.05.2022 → schema electrica in Eagle
  • 30.05.2022 → finalizare documentatie

Bibliografie/Resurse

pm/prj2022/avaduva/lie_detector.1653914178.txt.gz · Last modified: 2022/05/30 15:36 by cristiana.olteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0