Arduino Pyroelectric Sensor – Robots Cyprus Μάθημα #2 – Μαθήματα Ρομποτικής
Περιγραφή Μαθήματος #2 Robots Cyprus – Arduino Pyroelectric Sensor – Μαθήματα Ρομποτικής:
Αγορά Arduino Sensors και Modules
Αγορά Arduino Uno Starter Kit
Εισαγωγή:
Σε αυτό το μάθημα θα μάθουμε πώς να χρησιμοποιούμε τον αισθητήρα PIR για ανίχνευση κίνησης. Αρχικά ας ξεκινήσουμε εξηγώντας το πώς λειτουργεί ένας αισθητήρας PIR.
Περιγραφή Αισθητήρα Arduino Pyroelectric Sensor:
Το module αποτελείται από ένα πυροηλεκτρικό αισθητήρα που παράγει ενέργεια όταν εκτεθεί σε θερμότητα. Αυτό σημαίνει ότι όταν ένας άνθρωπος ή ένα κατοικίδιο εισβάλει στην περιοχή που καλύπτει ο αισθητήρας, τότε ο αισθητήρας θα ανιχνεύσει την κίνηση. Αυτό συμβαίνει διότι ο άνθρωπος και τα κατοικίδια παράγουν θερμική ενέργεια στην μορφή της υπέρυθρης ακτινοβολίας.
Εξ ου και το όνομα του αισθητήρα. Το ακρωνύμιο PIR σημαίνει Passive Infa-red. Ο όρος Passive σημαίνει πως ο αισθητήρας δεν χρησιμοποιεί ενέργεια για λόγους ανίχνευσης. Δουλεύει ανιχνεύοντας την ενέργεια που παράγουν τα άλλα αντικείμενα. Το module αποτελείται επίσης από ένα ειδικά σχεδιασμένο κάλυμμα που ονομάζεται Frenzel Lens. Το κάλυμμα συγκεντρώνει όλα τα υπέρυθρα σήματα της περιοχής κάλυψης του πυροηλεκτρικού αισθητήρα.
Συνδεσμολογία Arduino Pyroelectric Sensor:
Ας συνδέσουμε το module στην κάρτα του Arduino. Το module έχει 3 υποδοχές . Την γείωση (ground), το VCC για την τροφοδοσία του module, και την έξοδο που μας δίνει ένα υψηλό επίπεδο logic όταν ανιχνευτεί ένα αντικείμενο.
Επίσης αποτελείται και από 2 ποτενσιόμετρα. Το ένα χρησιμοποιείται για ρύθμιση της ευαισθησίας του αισθητήρα. Το άλλο χρησιμοποιείται για ρύθμιση του χρόνου αναμονής, όπου το σήμα εξόδου θα παραμείνει υψηλό αφού ανιχνευθεί το αντικείμενο. Οι τιμές που μπορούμε να δώσουμε στην διάρκεια είναι μεταξύ 0,3 δευτερολέπτων και 5 λεπτών.
Το module περιέχει ακόμα 3 υποδοχές με μία ένωση μεταξύ των 2 από αυτές. Με αυτές τις υποδοχές μπορούμε να επιλέξουμε είδος ενεργοποίησης του αισθητήρα.
Η 1η ονομάζεται μη επαναλαμβανόμενη ενεργοποίηση. Αυτό σημαίνει πως όταν το επίπεδο logic είναι υψηλό και ο χρόνος αναμονής έχει τελειώσει, τότε το επίπεδο logic της εξόδου θα μετατραπεί αυτόματα σε χαμηλό.
Η 2η ονομάζεται επαναλαμβανόμενη ενεργοποίηση. Αυτό σημαίνει πως το επίπεδο logic της εξόδου θα παραμένει υψηλό όσο το αντικείμενο παραμένει στην περιοχή κάλυψης του αισθητήρα.
Σχεδιάγραμμα:
Για αυτό το μάθημα δημιουργήσαμε το κύκλωμα που βλέπεται στο σχεδιάγραμμα. Η λάμπα θα ανάβει όταν ο αισθητήρας ανιχνεύσει ένα αντικείμενο. Συνδέσαμε την έξοδο του αισθητήρα στην υποδοχή 8 της κάρτας arduino. Όταν ο αισθητήρας ανιχνεύσει κάποιο αντικείμενο, η υποδοχή 7 θα ενεργοποιήσει το relay module και η λάμπα θα ανάψει.
Για περισσότερες πληροφορίες που αφορούν το relay module, μπορείτε να δείτε το αντίστοιχο βίντεο. Υπάρχει ο σύνδεσμος στην περιγραφή του βίντεο.
Περιγραφή Κώδικα Arduino:
Ας δούμε λιγάκι τον κώδικα Arduino για το παράδειγμα μας. Αρχικά προσδιορίζουμε τις υποδοχές του PIR και του Relay Module στην κάρτα Arduino. Μετά δηλώνουμε το PIR ως Input και το Relay Module ως Output.
Χρησιμοποιώντας την λειτουργία (function) digital read διαβάζουμε την τιμή που μας δίνει η έξοδος του αισθητήρα. Αν είναι υψηλή ή ανιχνευθεί κάποιο αντικείμενο, θα ενεργοποιηθεί το Relay Module.
Για να ενεργοποιηθεί το relay module πρέπει να σταλεί χαμηλού επιπέδου σήμα logic καθώς λειτουργεί αντίστροφα.
Εφαρμογή Παραδείγματος:
Εδώ βλέπεται την εφαρμογή του παραδείγματος. Σημειώστε πως μετά την ενεργοποίηση του πυροηλεκτρικού αισθητήρα, χρειάζονται 20 με 60 δευτερόλεπτα για να είναι έτοιμος. Όπως βλέπεται μόλις τοποθετήσω το χέρι μου μπροστά από τον αισθητήρα, το relay module ενεργοποιεί την λάμπα. Σημειώστε επίσης πως ακόμα και αν συνεχίσω να κουνάω το χέρι μου μπροστά από τον αισθητήρα, η λάμπα θα σβήσει όταν τελειώσει ο χρόνος αναμονής που δηλώσαμε. Αυτό συμβαίνει διότι το είδος ενεργοποίησης που επιλέξαμε στον αισθητήρα PIR, είναι μη επαναλαμβανόμενη ενεργοποίηση.
Αν αλλάξουμε την ένωση στον αισθητήρα αλλάζουμε και το είδος ενεργοποίησης σε επαναλαμβανόμενη. Σε αυτό το είδος ενεργοποίησης, για να σβήσει η λάμπα πρέπει να τελειώσει ο χρόνος αναμονής και να μην υπάρχει κίνηση μπροστά από τον αισθητήρα.
Παρακολουθείστε το βίντεο του μαθήματος στο κανάλι Youtube του Robots Cyprus.
Κώδικας:
int pirSensor = 8;
int relayInput = 7;
void setup() {
pinMode(pirSensor, INPUT);
pinMode(relayInput, OUTPUT);
}
void loop() {
int sensorValue = digitalRead(pirSensor);
if (sensorValue == 1) {
digitalWrite(relayInput, LOW); // The Relay Input works Inversly
}
}