Δοκιμάκης Βύρωνας (b.dokimakis@gmail.com) Ζωγόπουλος Παπαλιάκος Γιώργος (tailwhipx2@yahoo.gr)
Πρόβλημα: O καθηγητής φεύγει από το οπτικό πεδίο της κάμερας Μειώνεται η ικανότητα κατανόησης των λεγομένων του Μειώνεται η ποιότητα του καταγραφόμενου ήχου Λύσεις: Αύξηση της απόστασης της κάμερας από τον πίνακα για αύξηση του εύρους του οπτικού της πεδίου Εύκολη υλοποίηση Χάνουμε ευκρίνεια των γραφομένων στον πίνακα Η κάμερα ακολουθεί τον καθηγητή
Επιλογές υλοποίησης: Με χρήση υπολογιστή (Laptop Netbook) Pros: Σχετικά μεγάλη υπολογιστική ισχύς Δυνατότητα επεξεργασίας εικόνας από βίντεο Cons: Υψηλό κόστος Εξάρτηση αξιοπιστίας συστήματος από το εκάστοτε μηχάνημα (την κατάσταση του Laptop και οποιοδήποτε πρόβλημα μπορεί αυτό να παρουσιάσει)
Επιλογές υλοποίησης: Με χρήση μικροϋπολογιστή (AVR-ARM κλπ) Pros: Χαμηλό κόστος Standalone και plug n play σύστημα Cons: Περιορισμένες δυνατότητες επεξεργασίας Όχι επεξεργασία εικόνας από βίντεo Καταλήξαμε στον Arduino Duemilanove, μια πλακέτα που στην καρδιά της έχει τον μικροελεγκτή ATMEGA328.
Υλοποίηση Η υλοποίηση με μικροελεγκτή δεν επιτρέπει την επεξεργασία εικόνας Είναι αναγκαία η χρήση αισθητήρων για τον εντοπισμό του καθηγητή, όμως τι είδους αισθητήρες θα χρησιμοποιηθούν; Υπερήχων (μέτρηση απόστασης) -> περιορισμένη ακρίβεια Θερμοκρασίας -> μεγάλο κόστος Υπέρυθρων ακτίνων (παθητικοί) -> επιρρεπείς σε θόρυβο - παρεμβολές Και στους 3 παραπάνω τύπους αισθητήρων, είναι δύσκολος ο περιορισμόςτης γωνίας ανίχνευσης. Επίσης έχουν περιορισμένηεμβέλεια.
Απλούστερη, αξιόπιστη και φτηνή λύση: Φωτοαντιστάσεις και laser Αρχή λειτουργίας: Η αντίσταση της φωτοαντίστασης αυξομειώνεται ανάλογα με την ισχύ της ακτινοβολίας που φτάνει σε αυτή. Ειδικότερα, όσο μεγαλώνει η ισχύς του φωτός που προσπίπτει πάνω στην φωτοαντίσταση, τόσο μειώνεται η τιμή της. Κατασκευάζοντας ένα διαιρέτη τάσης, με τη μια από τις 2 αντιστάσεις να είναι φωτοαντίσταση, μπορούμε να ρυθμίσουμε την τάση που θα παίρνουμε ως έξοδο συναρτήσει της ισχύος της ακτινοβολίας που προσπίπτει στην φωτοαντίσταση. Διαλέγουμε την σταθερή αντίσταση με τέτοιο τρόπο ώστε όταν η ακτίνα του laser πέφτει πάνω στην φωτοαντίσταση, η τάση του που δίνει ο διαιρέτης να είναι πάνω από 2.5V (η High για τις digital εισόδους του Arduino), ενώ όταν η ακτίνα κόβεται, η τάση να πέφτει κάτω από 2.5V (η Low αντίστοιχα).
Απαραίτητος αριθμός αισθητήρων: 4 (γιατί?) Έστω οτι χρησιμοποιούμε 2 αισθητήρες:
Όταν μετακινηθεί, πως θα ξέρουμε προς τα πού πήγε; Ο καθηγητής ενεργοποιεί τον αισθητήρα 1 και μένει στο σημείο για λίγο.
Δεν μπορούμε να ξέρουμε, μόλις τον χάσαμε (από το οπτικό μας πεδίο ) Άρα θέλουμε 4 αισθητήρες για τη σωστή λειτουργία του συστήματος
Ο καθηγητής ενεργοποιεί τον αισθητήρα 1 και μένει στο σημείο για λίγο. Η κάμερα δεν περιστρέφεται, καθώς ο καθηγητής είναι ακόμα στο οπτικό της πεδίο.
Μόλις ενεργοποιηθεί ο αισθητήρας 0 η κάμερα περιστρέφεται κατά σταθερή γωνία προς τα αριστερά.
Όσο ο καθηγητής δεν ενεργοποιεί τον αισθητήρα 1, η κάμερα παραμένει στραμμένη προς τα αριστερά.
Μόλις ενεργοποιηθεί ο αισθητήρας 1, η κάμερα επιστρέφει στο κέντρο.
Πρόβλημα: Τι γίνεται όταν ο καθηγητής ενεργοποιεί και τους 2 αισθητήρες κάποιας πλευράς ταυτόχρονα? Λύση: Σωστός προγραμματισμός μικροελεγκτή.
Χρήση κινητήρα Επιλογές Κινητήρας συνεχούς περιστροφής Δεν χρειαζόμαστε πάνω από 180 ο εύρος Κινητήρας περιορισμένου εύρους περιστροφής Σερβοκινητήρας Ακριβής έλεγχος γωνίας μέσω PWM Για παράδειγμα, αν θέλουμε ο άξονας του κινητήρα να περιστραφεί κατά 20 μοίρες (αν είναι στην αρχική θέση 0 μοιρών) μπορούμε να του δώσουμε την παρακάτω εντολή (μέσω του μικροελεγκτή): myservo.write (20) Αυτό θα έχει ως αποτέλεσμα ο κινητήρας να ασκεί ροπή συνεχώς μέχρι να φτάσει την επιθυμητή γωνία, όπου και θα σταματήσει. Μετάδοση κίνησης στον άξονα της κάμερας Χρήση γραναζιών
Ο Arduino έχει C-like προγραμματιστικό περιβάλλον Είναι πολύ πιο εύκολο να γράψει κανείς σε γλώσσα υψηλού επιπέδου παρά σε assembly. Στο πρόγραμμα υπάρχει: Το τμήμα δηλώσεων Το τμήμα ρύθμισης παραμέτρων (setup) Το κυρίως loop
Τμήμα δηλώσεων Δηλώσεις βιβλιοθηκών Δηλώσεις μεταβλητών και σταθερών Τμήμα setup Έναρξη επικοινωνίας (serial) Αρχικοποιήσεις μεταβλητών Attachment συσκευών (servo motors) Τμήμα κυρίως loop: Διαβάζει από control unit* (digital και analog inputs), αποφασίζει τι θα κάνει με βάση τις συνθήκες που έχουμε ορίσει και δίνει εντολές στον σερβοκινητήρα *θα αναλυθεί παρακάτω
Μόνιμη εγκατάσταση καλωδίωσης στο αμφιθέατρο Καλώδια τροφοδοσίας laser Καλώδια εγκατάστασης αισθητήρων Αποσπώμενα laser και αισθητήρες (ισχύει για ελληνικά πανεπιστήμια) Ορισμός σταθερής θέσης κάμερας (γιατί σημαντικό;) (π.χ 3 ο έδρανο 2 ης σειράς) και τράβηγμα αναμονών καλωδίων μέχρι εκεί. Σύνδεση αισθητήρων με control unit* και control unit με μικροελεγκτή. *θα αναλυθεί παρακάτω
Σε περίπτωση που κάτι πάει στραβά (π.χ αν κάποιος κουνήσει τους αισθητήρες η τα laser, η κάτι αποκόψει την ακτίνα ή κάποιος φοιτητής περάσει μπροστά από την έδρα) Υπάρχουν 3 κουμπιά στο Control Unit που παρακάμπτουν τους αισθητήρες και δίνουν εντολή στον σερβοκινητήρα να πάει σε μια από τις 3 προκαθορισμένες γωνίες. Όσο είναι πατημένα, ο μικροελεγκτής αγνοεί την είσοδο από τους αισθητήρες.
Μικροελεγκτής: Arduino Duemilanove
Σερβοκινητήρας: Hi-Tech Micro Αισθητήρες: Απλές φωτοαντιστάσεις Laser: Απλά laser ισχύος <5mW στα 650nm
Control Unit: Trimmers για διαιρέτες τάσης αισθητήρων Ποτενσιόμετρα για ρύθμιση των γωνιών περιστροφής Ακροδέκτες VGA για σύνδεση αισθητήρων και μικροελεγκτή Κουμπιά για χειροκίνητο έλεγχο (bypass)
Πλήρης αυτοματοποίηση = αντιμετώπιση παρεμβολών (διερχόμενοι φοιτητές) Με 2 ακόμα αισθητήρες Στην είσοδο του αμφιθεάτρου Στα σκαλοπάτια στην μια πλευρά του αμφιθεάτρου Με κατάλληλες προσθήκες στον κώδικα Πετυχαίνουμε την εξάλειψη της ανάγκης για ανθρώπινη συμμετοχή (εκτός περιπτώσεων αστοχίας του υλικού)