Ανιχνευτής ψεύδους με arduino

Σε αυτό το tutorial θα παρουσιάσουμε μία κατασκευή η οποία ανιχνεύει πότε κάποιος/α λέει ψέματα.

Να σας πω ότι αν και σε γενικές γραμμές η φιλοσοφία είναι ίδια στους περισσότερους ανιχνευτές ψεύδους, η κατασκευή δεν θα μπορούσε να αποτελέσει αξιόπιστη λύση για να βγάλουμε ένα συμπέρασμα, γι' αυτό αν την υλοποιήσετε μην βασιστείτε μόνο στα αποτελέσματα που θα έχετε από αυτή (μην κλείσουμε και σπίτια :p ) :).

Θα χρησιμοποιήσουμε ένα arduino uno, αν και θα μπορούσαμε να δουλέψουμε και με το nano ή mega. Θα χρησιμοποιήσουμε 2 led, ένα πράσινο και ένα κόκκινο, όπου όταν αυτό που λέμε είναι αλήθεια θα ανάβει το πράσινο, αλλιώς το κόκκινο.

Δεν θα σταματήσουμε όμως φτιάχνοντας ένα μικρό κύκλωμα!! Σε αυτό το βίντεο το τερματίζουμε και φτιάχνουμε μία κατασκευή η οποία θα λειτουργήσει όπως ένας σεισμογράφος. Θα υπάρχει ένα ρολό στο οποίο θα προσαρμόσουμε μία γραφίδα και όσο κινείται το χαρτί η γραφίδα θα αποτυπώνει μία κυματομορφή.

Το project

Ο ανιχνευτής ψεύδους με arduino είναι μία κατασκευή που θα μας βοηθήσει να καταλάβουμε εντολές όπως η analogRead(), digitalWrite() και θα δούμε πως λειτουργεί ο σχεδιογράφος στην εφαρμογή arduino.

Κάθε φορά που θα υπάρχει μία διακύμανση στην τιμή της αναλογικής εισόδου (δηλαδή υπάρχει μεγάλη πιθανότητα ψευδούς δήλωσης) θα ανάβει το κόκκινο led και το σερβομοτέρ με την βοήθεια της γραφίδας θα σχεδιάζει αυτή τη διακύμανση στο χαρτί. Το πράσινο LED θα ανάβει συνέχεια εκτός και αν διαπιστωθεί "ψέμα" οπότε θα σβήνει και θα ανάβει το κόκκινο για λίγα δευτερόλεπτα.

Πως δουλεύει ο ανιχνευτής ψεύδους;

Αρχικά να πούμε ότι οι ανιχνευτές ψεύδους λαμβάνουν υπ' όψιν τις στιγμιαίες αλλαγές που έχει ένας οργανισμός ο οποίος υπόκειται σε ένα τεστ. Αυτό σημαίνει ότι αν κάποιος/α για κάποιο λόγο παραμένει ψύχραιμος κατά τη διάρκεια του τεστ, υπάρχει η πιθανότητα να ξεγελάσει οποιοδήποτε ανιχνευτή. Άρα βασιζόμαστε στην παραδοχή που λέει ότι όταν κάποιος/α λέει ψέματα, αγχώνεται.

Ανιχνευτής ψεύδους με Arduino

Πολλοί ανιχνευτές έχουν διάφορα σημεία ελέγχου όπως είναι οι σφυγμοί, αντίσταση του σώματος (γαλβανική αντίδραση του σώματος), ίριδα ματιού, θερμική εικόνα και εξάγουν ένα ασφαλέστερο συμπέρασμα, όλα όμως βασίζονται στο γεγονός ότι θα πρέπει να υπάρχει ο παράγοντας "άγχος" ο οποίος θα προκαλέσει αυτές τις μικρές μεταβολές.

Η αποτελεσματικότητα του test δεν είναι ίδια σε όλους τους ανθρώπους. Οι άνθρωποι που έχουν την τάση να λένε συνέχεια ψέμματα, είναι λιγότερο ευαίσθητοι και τα μηχανήματα δεν μπορούν να τους πιάσουν τόσο εύκολα.

Η κατασκευή

Την κατασκευή την σχεδίασα στο corelDraw σε κλίμακα mm και την έδωσα να μου κόψουν τα κομμάτια σε plexi glass 3mm. Από κατάστημα σιδερικών-χρωμάτων, προμηθεύτηκα διάφορα κομμάτια/ συνδέσεις για να προσαρμόσω το μοτέρ κίνησης, αλλά και βίδες M2, M2.5 για να βιδώσω όλα τα εξαρτήματα μαζί. 

Τα μέρη από το plexi glass βιδώθηκαν με μικρές βίδες, γιατί δεν ήθελα να μπλέξω με κόλλες. Θα ήθελα να τα έχω κάνει κουμπωτά χωρίς βίδες, κάτι το οποίο όμως τελικά δεν κατάφερα στο 100% καθώς υπήρχαν πολύ μικρές αποκλίσεις λόγω της κοπής με laser (υπήρχε μία ανοχή ~0.3mm). Την επόμενη φορά θα το ξέρω.

Δεν χρησιμοποίησα 3D printer γιατί το κόστος μίας τέτοιας κατασκευής είναι αρκετά υψηλότερο από την κοπή laser σε plexi glass.

Όσον αφορά το μοτέρ, ένα gearbox motor το οποίο έχει και μία σχέση μείωσης στροφών, καθώς δεν θέλουμε να υπάρχει μεγάλη ταχύτητα περιστροφής. 

Η τελική ταχύτητα περιστροφής είναι 20 στροφές ανά λεπτό. που είναι αρκετά καλό για την εφαρμογή μας. Πριν από αυτό, δοκίμασα με ένα άλλο που είχα στις 2 στροφές ανά λεπτό αλλά ήταν υπερβολικά αργό.

Αρχικά είχα τοποθετήσει, ένα απλό μοτέρ και με έναν μικρό ελαστικό ιμάντα για να δημιουργήσω μία σχέση μείωσης. 

Την ταχύτητα του μοτέρ την προσάρμοζα με την εντολή analogWrite μέχρι εκεί που το μοτέρ περιστρέφεται (αν μειώσετε πολύ τις στροφές, το μοτέρ σταματάει να γυρίζει) αλλά η ροπή του ήταν πολύ χαμηλή με αποτέλεσμα να μην γυρίζει.

Οι μετρήσεις γίνονται με δύο γυμνά καλώδια τα οποία μετρούν την γαλβανική αντίσταση του δέρματος. Όταν λέμε ψέματα, το δέρμα αντιδρά, αλλάζοντας την τιμή της αντίστασης. Η αρχική τιμή αντίστασης είναι διαφορετική για τον καθένα, οπότε για κάθε άνθρωπο ίσως χρειαστεί ένα καλιμπράρισμα (αρχικοποίηση)

Αυτή η διακύμανση εντοπίζεται εύκολα (σαν να έχουμε μία μεταβλητή αντίσταση σε ένα κύκλωμα και αλλάζουμε την έξοδο) και έτσι "διαπιστώνουμε" τα ψέμματα.

Όπως προαναφέραμε ο ανιχνευτής ψεύδους με arduino είναι μία εκπαιδευτική κατασκευή. Το σίγουρο είναι ότι μέσα από την διαδικασία θα μάθετε τόσο να προγραμματίζετε και να χρησιμοποιείτε τον σχεδιογράφο του arduino ide, όσο και να κάνετε απλές κατασκευές με χρήση Plexi-glass

Το κύκλωμα

Το κύκλωμα αρκετά απλό και χωρίς πολλά υλικά, παρουσιάζεται στην παρακάτω εικόνα. Η μόνη ιδιαιτερότητα είναι ότι το Dc motor, το τροφοδοτούμε από εξωτερική τροφοδοσία με 12V, απομονώνοντάς το από το arduino για λόγους ασφαλείας του ελεγκτή μας. Για να κατεβάσετε το σχέδιο (μορφή Fritzing), κάντε κλικ εδώ

Ανιχνευτής ψεύδους: Λειτουργία

Θα πρέπει να συνδέσουμε στα δάχτυλά μας (ένα στο καθένα) τα δύο καλώδια 5v και αναλογική είσοδος 0. Είναι σημαντικό να είναι ο δείκτης και ο μέσος (ή δύο γειτονικά μεταξύ τους δάκτυλα).

Κατά τη διάρκεια των μετρήσεων, το χέρι και τα δάκτυλα πρέπει να παραμένουν ακίνητα

Όταν ξεκινήσει ο ανιχνευτής, το DC motor ξεκινάει να τυλίγει το χαρτί και το σύστημα μας, έχει αρχίσει να δέχεται στην αναλογική είσοδο τιμές τις οποίες επεξεργαζόμαστε. 

Αφού κάνουμε ερωτήσεις στον άνθρωπο που θέλουμε να ελέγξουμε αν λέει ψέμματα, βλέπουμε το σερβομοτέρ να κινείται, και να καταγράφει τις διακυμάνσεις της γαλβανικής αντίδρασης του δέρματος.

Όταν εντοπιστεί κάποιο ψέμα, ανάβει το κόκκινο led και σβήνει το πράσινο.

Τα υλικά

  • 4 κουζινέτα αλουμινίου με ύψος 80mm
  • 4 ρουλεμάν
  • 12 βίδες με βίδωμα άλεν (οβάλ κεφάλι) M6x15mm
  • 12 παξιμάδια
  • 12 ροδέλες
  • 4 βίδες M4x70mm
  • 12 παξιμάδια M4
  • 12 ροδέλες
  • 2 κομμάτια plexi glass
  • 1 SG90 servo
  • 1 gearbox 1/20 12v mini motor
  • arduino uno
  • 2 x led
  • 2 κομμάτια καλιμπρέ άξονα Φ6

Για τα υλικά αφήστε μου ένα σχόλιο αν δυσκολεύεστε κάπου να σας κατευθύνω για την προμήθεια.

Ο κώδικας

Αφού υλοποιήσουμε το κύκλωμα θα πρέπει να ανεβάσουμε τον παρακάτω κώδικα στο Arduino μας για να δουλέψει.

#include <Servo.h>
int redLed = 7;
int greenLed = 8;
int servoPin = 9;
int converttograph;
Servo myservo;
void setup() {
  Serial.begin(9600);
  pinMode(greenLed, OUTPUT); //Green Led
  pinMode(redLed, OUTPUT); //Red Led
  myservo.attach(servoPin);
}
void loop() {
  int sensorValue = analogRead(A0);
  converttograph = map(sensorValue,0,60,50,90);
  if (sensorValue >= 45)
  {  
    digitalWrite(redLed, HIGH); //red
    digitalWrite(greenLed, LOW); //green
    myservo.write(converttograph);
  }
  else 
  {
    digitalWrite(redLed, LOW); //red
    myservo.write(converttograph);
  }
  if (sensorValue <10)
  {  
    digitalWrite(redLed, LOW); //red
    digitalWrite(greenLed, HIGH); //green
    myservo.write(90);
  }
  Serial.println(sensorValue);
  delay(15);
} 

Διαγράμματα ανιχνευτή ψεύδους

σε κατάσταση ηρεμίας, το διάγραμμα δείχνει κάπως έτσι

Ενώ σε κατάσταση στρες, δείχνει κάπως έτσι.

Η ώρα της αλήθειας! δείτε όλο το βίντεο και γίνετε συνδρομητές στο Getcert!!! (θα το καταλάβω αν λέτε ψέματα :p)

Σχετικά άρθρα

Συγκεντρωτικοί πίνακες και εισαγωγή τους στο Power query

Μορφοποίηση υπό όρους για κάθε σειρά του πίνακα

Εισαγωγή στο Powerquery. Τι ακριβώς είναι;

Πληροφορίες

Χατζηγεωργίου Γεώργιος

info[@]getcert.gr

6945531647