This shows you the differences between two versions of the page.
pm:prj2025:avaduva:radu.tulumb [2025/05/15 17:24] radu.tulumb |
pm:prj2025:avaduva:radu.tulumb [2025/05/28 18:59] (current) radu.tulumb [Bibliografie/Resurse] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Lie Detector ====== | ====== Lie Detector ====== | ||
===== Introducere ===== | ===== Introducere ===== | ||
+ | Proiectul „Arduino Lie Detector” folosește un Arduino Uno R3 pentru a integra și demonstra măsurători multiprotocol (OneWire, I2C, ADC) și interfațare hardware (LED, buzzer, LCD) într-un sistem care detectează modificările electrodermice (EDA), ritmul cardiac și temperatura. La apăsarea butonului sau automat la pornire, dispozitivul realizează o fază de stabilizare, apoi măsoară răspunsul la întrebări și afișează verdictul („FALS”/„ADEVĂRAT”) pe un display LCD I2C, cu semnal sonor și feedback luminos. | ||
- | <note tip> | ||
- | Proiectul meu constă în realizarea unui detector de minciuni portabil, care măsoară răspunsurile fiziologice ale unei persoane pentru a determina probabilitatea ca aceasta să mintă. Dispozitivul analizează modificările in umiditatea pielii, ritmul cardiac și temperatura pielii, parametri care se schimbă involuntar când o persoană nu spune adevărul. Ideea a pornit din dorința de a aplica practic cunoștințele despre senzori și microcontrolere într-un proiect interactiv. | ||
- | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Proiectul utilizează o placă Arduino Uno R3 ca unitate centrală de procesare. Trei senzori diferiți - un senzor GSR adaptat (măsoară conductivitatea pielii), un senzor de puls KY-039 și un senzor de temperatură DS18B20 - colectează date fiziologice de la persoana testată. Valorile sunt procesate de Arduino, care calculează probabilitatea unei minciuni bazată pe deviațiile acestor parametri față de valorile normale ale persoanei. | + | Dispozitivul include: |
- | Feedback-ul este oferit prin patru LED-uri colorate (verde pentru adevăr, verde deschis pentru parțial adevăr, galben pentru parțial fals și roșu pentru fals), un buzzer pentru semnale sonore și un display LCD care afișează valorile măsurate și procentul de probabilitate. Un buton permite marcarea momentului în care se pune o întrebare, pentru o analiză mai precisă a răspunsului. | + | |
- | Sistemul este alimentat fie prin USB de la calculator (pentru vizualizarea datelor în timp real pe laptop), fie cu o baterie de 9V, permițând portabilitatea dispozitivului. | + | Arduino Uno R3 (ATmega328P) ca unitate de control |
+ | |||
+ | Senzor EDA (fybrid foil) pe pin A1, cu rezistor de pull-down 2 kΩ către GND | ||
+ | |||
+ | Modul puls KY-039 pe pin A3, calibrare 5 s pentru prag hardware | ||
+ | |||
+ | Senzor DS18B20 pe magistrala OneWire (pin D2) | ||
+ | |||
+ | Display LCD I2C (address 0x27) pe SDA (A4) și SCL (A5) | ||
+ | |||
+ | LED-uri roșu/verde pe D8/D9 cu rezistențe 220 Ω | ||
+ | |||
+ | Buzzer pasiv pe D6 | ||
+ | |||
+ | Dispozitivul rulează o mașină de stări: calibrare puls, stabilizare EDA, așteptare răspuns, verdict. În paralel, transmite date de temperatură (°C), BPM și EDA raw spre Serial Plotter. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Functionalitati cheie ===== | ||
+ | |||
+ | Măsurarea EDA (Electrodermal Activity) prin doi electrozi pe degete (analog A1) | ||
+ | |||
+ | Măsurarea pulsului cu modul KY-039 (analog A3 + calibrare automată) | ||
+ | |||
+ | Măsurarea temperaturii cu DS18B20 (OneWire, pin D2) | ||
+ | |||
+ | Afișaj verdict și interfață pe LCD I2C 16×2 (pini A4=SDA, A5=SCL) | ||
+ | |||
+ | Feedback vizual prin LED roșu și verde (pini D8, D9) | ||
+ | |||
+ | Feedback audio prin buzzer pasiv (pin D6), ton lung pentru „FALS” și trei bipe pentru „ADEVĂRAT” | ||
+ | |||
+ | Vizualizare grafică a temperaturii, pulsului (BPM) și EDA în Serial Plotter la 500 ms interval | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | Componente proiect: | ||
- | 1x - Placă Arduino UNO R3 | ||
- | 1x - Senzor de umiditate (adaptat pentru GSR) | ||
- | 1x - Senzor de puls KY-039 | ||
- | 1x - Senzor de temperatură DS18B20 | ||
- | 1x - Display LCD 16x2 cu modul I2C | ||
- | 4x - LED-uri (verde, verde deschis, galben, roșu) | ||
- | 1x - Buzzer activ | ||
- | 1x - Buton tactil | ||
- | 4x - Rezistențe 220Ω (pentru LED-uri) | ||
- | 1x - Rezistență 10kΩ (pentru buton) | ||
- | 1x - Rezistență 4.7kΩ (pentru DS18B20) | ||
- | 1x - Mini breadboard | ||
- | 1x - Baterie 9V cu adaptor | ||
- | Fire de legătură | ||
- | Bandă elastică pentru fixarea senzorilor | ||
+ | Componente și legături | ||
+ | |||
+ | EDA electrode (2× folie aluminiu) | ||
+ | |||
+ | A1 | ||
+ | |||
+ | Măsurare electrodermală (include 2 kΩ la GND) | ||
+ | |||
+ | = KY-039 AO = | ||
+ | |||
+ | A3 | ||
+ | |||
+ | Semnal analogic pentru puls | ||
+ | |||
+ | KY-039 DO (opțional) | ||
+ | |||
+ | D2 | ||
+ | |||
+ | Semnal digital prag (calibrare externă) | ||
+ | |||
+ | = DS18B20 = | ||
+ | |||
+ | D2 | ||
+ | |||
+ | OneWire temperatură | ||
+ | |||
+ | LCD I2C | ||
+ | |||
+ | A4 (SDA), A5(SCL) | ||
+ | |||
+ | Afișaj verdict | ||
+ | |||
+ | LED roșu | ||
+ | |||
+ | D8 | ||
+ | |||
+ | Feedback minciună (digital) | ||
+ | |||
+ | LED verde | ||
+ | |||
+ | D9 | ||
+ | |||
+ | Feedback adevărat (digital) | ||
+ | |||
+ | Buzzer pasiv | ||
+ | |||
+ | D6 | ||
+ | |||
+ | Feedback audio | ||
+ | |||
+ | GND, 5 V | ||
+ | |||
+ | GND, 5 V | ||
+ | |||
+ | Alimentare și referință | ||
+ | |||
+ | Protocoale utilizate | ||
+ | |||
+ | ADC: EDA și puls (A1, A3), conversie 10 biți | ||
+ | |||
+ | OneWire: DS18B20 pe D2 | ||
+ | |||
+ | I2C: LCD pe A4/A5 | ||
+ | |||
+ | GPIO: LED-uri și buzzer | ||
+ | |||
+ | Bill of Materials (BOM) | ||
+ | |||
+ | Componentă | ||
+ | |||
+ | Tip | ||
+ | |||
+ | Pin Arduino | ||
+ | |||
+ | Cantitate | ||
+ | |||
+ | Arduino Uno R3 | ||
+ | |||
+ | MCU | ||
+ | |||
+ | - | ||
+ | |||
+ | 1 | ||
+ | |||
+ | EDA electrodes (folie) | ||
+ | |||
+ | Electrod analogic | ||
+ | |||
+ | A1 | ||
+ | |||
+ | 2 | ||
+ | |||
+ | KY-039 | ||
+ | |||
+ | Senzor puls analog | ||
+ | |||
+ | A3 | ||
+ | |||
+ | 1 | ||
+ | |||
+ | DS18B20 | ||
+ | |||
+ | Senzor temperatură | ||
+ | |||
+ | D2 | ||
+ | |||
+ | 1 | ||
+ | |||
+ | LCD I2C 16×2 | ||
+ | |||
+ | Display | ||
+ | |||
+ | A4/A5 (I2C) | ||
+ | |||
+ | 1 | ||
+ | |||
+ | LED 5 mm roșu/verde | ||
+ | |||
+ | Indicator vizual | ||
+ | |||
+ | D8, D9 | ||
+ | |||
+ | 1/1 | ||
+ | |||
+ | Rezistențe 220 Ω | ||
+ | |||
+ | Limitator LED | ||
+ | |||
+ | - | ||
+ | |||
+ | 2 | ||
+ | |||
+ | Rezistor 2 kΩ | ||
+ | |||
+ | Pull-down EDA | ||
+ | |||
+ | - | ||
+ | |||
+ | 1 | ||
+ | |||
+ | Buzzer pasiv | ||
+ | |||
+ | Audio | ||
+ | |||
+ | D6 | ||
+ | |||
+ | 1 | ||
+ | |||
+ | Fire Dupont jumper | ||
+ | |||
+ | Conexiuni | ||
+ | |||
+ | - | ||
+ | |||
+ | câte 1 | ||
+ | |||
+ | {{:pm:prj2025:avaduva:schemablocradutulumb.drawio.png?200|}} | ||
+ | |||
+ | |||
+ | =====Protocoale utilizate ===== | ||
+ | |||
+ | ADC: EDA și puls (A1, A3), conversie 10 biți | ||
+ | |||
+ | OneWire: DS18B20 pe D2 | ||
+ | |||
+ | I2C: LCD pe A4/A5 | ||
+ | |||
+ | GPIO: LED-uri și buzzer | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Mașina de stări | ||
- | <note tip> | + | PULSE_CAL: calibrare 5 s senzor puls (min/max) → prag = media |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
+ | EDA_STAB: stabilizare 10 s măsurare EDA base | ||
+ | |||
+ | EDA_RESP: așteptare 10 s răspuns, calcul Δ EDA și verdict | ||
+ | |||
+ | DONE: verdict afișat pe LCD, LED, buzzer | ||
+ | |||
+ | |||
+ | Bucla principală | ||
+ | |||
+ | Serial Plotter la 500 ms: Serial.println(tempC, "\t", lastBPM, "\t", edaRaw) | ||
+ | |||
+ | Detecție puls: eșantionare 100 Hz, rising edge peste prag și now - lastBeat >= 300 ms → beatCount++ | ||
+ | |||
+ | Calcule BPM la fiecare 15 s: BPM = beatCount * 60000 / 15000 | ||
+ | |||
+ | Funcții și variabile cheie | ||
+ | |||
+ | minVal, maxVal, threshold pentru senzor puls | ||
+ | |||
+ | edaBase pentru EDA | ||
+ | |||
+ | lastState, lastBeatTime, beatCount pentru puls | ||
+ | |||
+ | |||
+ | |||
+ | ===== Imagini ===== | ||
+ | Senzor gsr improvizat | ||
+ | {{:pm:prj2025:avaduva:senzor_gsr.jpeg?200|}} | ||
+ | Display LDC i2c + Arduino | ||
+ | {{:pm:prj2025:avaduva:lcdi2carduino.jpeg?200|}} | ||
+ | Senzor puls | ||
+ | {{:pm:prj2025:avaduva:senzor_puls.jpeg?200|}} | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | <note tip> | + | Calibrare automată a senzorului puls |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | Măsurători EDA și BPM integrate |
+ | |||
+ | Verdict analogic: „FALS” sau „ADEVĂRAT” cu LED și sunet | ||
+ | |||
+ | Afișare verdict pe LCD I2C | ||
+ | |||
+ | Vizualizare grafică în Serial Plotter | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | |||
+ | Proiectul demonstrează integrarea senzorilor electrodermal, puls, temperatură și a interfețelor I2C, OneWire și ADC pe Arduino Uno R3, oferind un sistem funțional de detecție a stărilor emoționale. Poate fi extins cu salvare de date pe card SD sau transmitere wireless. | ||
+ | |||
===== Download ===== | ===== Download ===== | ||
Line 64: | Line 283: | ||
</note> | </note> | ||
- | ===== Bibliografie/Resurse ===== | + | ==== Bibliografie/Resurse ===== |
- | <note> | + | Resurse Hardware |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | Arduino Uno R3 (ATmega328P) – pagina oficială Arduino |
+ | |||
+ | KY-039 Heart Rate Sensor Module | ||
+ | |||
+ | DS18B20 Digital Temperature Sensor | ||
+ | |||
+ | Modul LCD I²C (HD44780/PCD8544) | ||
+ | |||
+ | Rezistor 2 kΩ, rezistențe 220 Ω | ||
+ | |||
+ | Resurse Software | ||
+ | |||
+ | Arduino IDE – mediu de dezvoltare oficial Arduino | ||
+ | |||
+ | LiquidCrystal_I2C – librărie pentru LCD I²C | ||
+ | |||
+ | OneWire & DallasTemperature – librării pentru DS18B20 | ||
+ | |||
+ | Tone, noTone, Serial – funcții din Arduino Core | ||
+ | |||
+ | Exemple Serial Plotter – documentație Arduino pentru afișare grafică | ||
+ | |||
+ | Alte referințe | ||
+ | |||
+ | Electrodermal Activity (GSR) – Wikipedia | ||
+ | |||
+ | Polygraph – Wikipedia | ||
+ | |||
+ | Piezo Buzzer Connection – tutoriale online | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||