This is an old revision of the document!
Lie Detector
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:
Functii
setup() → initializarea pinilor pentru buzzer si LED-uri, initializarea ecran LCD, initializarea senzorului de puls, inregistrarea functie de callback pentru fiecare puls
loop() → logica principala a programului: apeleaza pox.update() la fiecare 3 secunde calculeaza pulsul si umiditatea si afiseaza aceste infromatii pe ecran. Daca avem o valoare a pulsului valida (considerata de mine peste 60 bpm) atunci v-om adauga valoarea plusului si a umiditatii la cate o suma si vom incrementa counterul. Se apeleaza si functia make_choice()
make_choice() → Cand un counter declarat global ajunge la o valoare predefinita se va calcula media valorilor pentru puls si umiditate si se vor compara fiecare cu un thershold in functie de care se da verdictul de minciuna sau adevar si se apeleaza functia corespunzatoare.
sing_lying_song() → se afiseaza pe ecran mesajul “You are lying!” si se porneste buzzer-ul care canta melodia corespunzatoare, apoi se reinitializeaza counterul, tsLastReport si pox;
sing_telling_the_truth_song() → se afiseaza pe ecran mesajul “You are telling the truth!” si se porneste buzzer-ul care canta melodia corespunzatoare, apoi se reinitializeaza counterul, tsLastReport si pox;
onBeatDetected() → functie callBack care face un LED rosu si buzzerul sa se porneasca de fiecare data cand detecteaza un puls
RGB_color(red, green, blue) → seteaza pinii LED-ului RGB cu valorile date ca parametri
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