Σε αυτή τη συνεδρία θα διεπαφή ένα Joystick με Raspberry Pi. Το Joystick χρησιμοποιείται κυρίως για να παίξει διάφορα παιχνίδια. Αν και τα χειριστήρια τύπου USB είναι εύκολο να συνδεθούν, αλλά σήμερα πρόκειται να συνδέσουμε το Joystick μέσω ακίδων Raspberry Pi GPIO, αυτό θα είναι χρήσιμο σε πολλές περιπτώσεις.
Ενότητα Raspberry Pi και Joystick:
Τα χειριστήρια διατίθενται σε διάφορα σχήματα και μεγέθη. Μια τυπική μονάδα Joystick φαίνεται στο παρακάτω σχήμα. Αυτή η μονάδα Joystick συνήθως παρέχει αναλογικές εξόδους και οι τάσεις εξόδου που παρέχονται από αυτήν τη μονάδα συνεχίζουν να αλλάζουν ανάλογα με την κατεύθυνση στην οποία την κινούμε. Και μπορούμε να πάρουμε την κατεύθυνση της κίνησης ερμηνεύοντας αυτές τις αλλαγές τάσης χρησιμοποιώντας κάποιον μικροελεγκτή. Προηγουμένως είχαμε χρησιμοποιήσει AVR Microcontroller με Joystick.
Αυτή η μονάδα χειριστηρίου έχει δύο άξονες όπως μπορείτε να δείτε. Είναι άξονας Χ και άξονας Υ. Κάθε άξονας του JOY STICK είναι τοποθετημένος σε ποτενσιόμετρο ή δοχείο. Τα μεσαία σημεία αυτών των ποτ απομακρύνονται ως Rx και Ry. Έτσι τα Rx και Ry είναι μεταβλητά σημεία σε αυτά τα pot. Όταν το Joystick είναι σε κατάσταση αναμονής, οι Rx και Ry ενεργούν ως διαχωριστής τάσης.
Όταν το χειριστήριο κινείται κατά μήκος του οριζόντιου άξονα, η τάση στον πείρο Rx αλλάζει. Ομοίως, όταν μετακινείται κατά μήκος του κατακόρυφου άξονα, η τάση στον ακροδέκτη Ry αλλάζει. Έχουμε λοιπόν τέσσερις κατευθύνσεις του Joystick σε δύο εξόδους ADC. Όταν το ραβδί κινείται, η τάση σε κάθε πείρο πηγαίνει υψηλή ή χαμηλή ανάλογα με την κατεύθυνση.
Όπως γνωρίζουμε, το Raspberry Pi δεν διαθέτει εσωτερικό μηχανισμό ADC (Analog to Digital Converter). Επομένως, αυτή η ενότητα δεν μπορεί να συνδεθεί απευθείας στο Pi. Θα χρησιμοποιήσουμε συγκριτές με βάση το Op-amp για να ελέγξουμε τις εξόδους τάσης. Αυτά τα OP-Amps παρέχουν σήματα στο Raspberry Pi και το Pi αλλάζει τα LED ανάλογα με τα σήματα. Εδώ χρησιμοποιήσαμε τέσσερα LED για να δείξουμε την κίνηση του Joystick σε τέσσερις κατευθύνσεις. Ελέγξτε το βίντεο επίδειξης στο τέλος.
Καθένας από τους 17 ακροδέκτες GPIO δεν μπορεί να λάβει τάση υψηλότερη από + 3.3V, οπότε οι έξοδοι Op-amp δεν μπορούν να είναι υψηλότερες από 3.3V. Ως εκ τούτου, έχουμε επιλέξει op-amp LM324, αυτό το IC διαθέτει τετραπλή λειτουργική ενίσχυση που μπορεί να λειτουργήσει σε 3V. Με αυτό το IC, έχουμε κατάλληλες εξόδους για εξόδους για τις καρφίτσες Raspberry pi GPIO. Μάθετε περισσότερα για τις καρφίτσες GPIO του Raspberry Pi εδώ. Ελέγξτε επίσης τη σειρά εκμάθησης Raspberry Pi μαζί με μερικά καλά έργα IoT.
Απαιτούμενα στοιχεία:
Εδώ χρησιμοποιούμε το Raspberry Pi 2 Model B με το Raspbian Jessie OS. Όλες οι βασικές απαιτήσεις υλικού και λογισμικού συζητήθηκαν προηγουμένως, μπορείτε να το αναζητήσετε στο Raspberry Pi Εισαγωγή και στο Raspberry PI LED Blinking για να ξεκινήσετε, εκτός από αυτό που χρειαζόμαστε:
- Πυκνωτής 1000μF
- Ενότητα Joystick
- LM324 Op-amp IC
- Αντίσταση 1KΩ (12 τεμάχια)
- LED (4 τεμάχια)
- 2.2KΩ αντίσταση (4 κομμάτια)
Διάγραμμα κυκλώματος:
Υπάρχουν τέσσερις συγκριτές OP-AMP μέσα στο LM324 IC για την ανίχνευση τεσσάρων κατευθύνσεων του Joystick. Ακολουθεί το διάγραμμα του LM324 IC από το δελτίο δεδομένων του.
Οι συνδέσεις που γίνονται για το Interfacing Joystick module με το Raspberry Pi εμφανίζονται στο παρακάτω διάγραμμα κυκλώματος. U1: A, U1: B, U1: C, U1: D υποδεικνύει τους τέσσερις συγκριτές μέσα στο LM324. Έχουμε δείξει κάθε συγκριτή στο διάγραμμα κυκλώματος με τον αντίστοιχο αριθμό Pin του LM324 IC.
Επεξήγηση εργασίας:
Για την ανίχνευση της κίνησης του Joystick κατά μήκος του άξονα Y, έχουμε OP-AMP1 ή U1: A και OP-AMP2 ή U1: B και για την ανίχνευση της κίνησης του Joystick κατά μήκος του άξονα X, έχουμε OP-AMP3 ή U1: C και OP-AMP4 ή U1: D.
Το OP-AMP1 ανιχνεύει την καθοδική κίνηση του χειριστηρίου κατά μήκος του άξονα Υ:
Αρνητικός ακροδέκτης του συγκριτή U1: A διαθέτει 2.3V (χρησιμοποιώντας κύκλωμα διαχωριστή τάσης από 1K και 2.2K) και το θετικό τερματικό είναι συνδεδεμένο με το Ry Όταν μετακινείτε το χειριστήριο προς τα κάτω κατά μήκος του άξονα Υ, αυξάνεται η τάση Ry. Μόλις αυτή η τάση υπερβεί τα 2,3V, το OP-AMP παρέχει έξοδο + 3,3V στην έξοδο Pin. Αυτή η ΥΨΗΛΗ λογική έξοδος του OP-AMP θα ανιχνευθεί από το Raspberry Pi και το Pi αποκρίνεται με εναλλαγή ενός LED.
Το OP-AMP2 ανιχνεύει την ανοδική κίνηση του χειριστηρίου κατά μήκος του άξονα Υ:
Ο αρνητικός ακροδέκτης του συγκριτή U1: B εφοδιάζεται με 1,0V (χρησιμοποιώντας κύκλωμα διαχωριστή τάσης από 2,2K και 1K) και το θετικό τερματικό συνδέεται με το Ry Κατά την κίνηση του χειριστηρίου προς τα πάνω κατά μήκος του άξονα Υ, η τάση Ry μειώνεται. Μόλις αυτή η τάση πέσει κάτω από 1,0V, η έξοδος OP-AMP πηγαίνει χαμηλή. Αυτή η χαμηλή λογική έξοδος του OP-AMP θα ανιχνευθεί από το Raspberry Pi και το Pi αποκρίνεται με εναλλαγή ενός LED.
Το OP-AMP3 ανιχνεύει την κίνηση του χειριστηρίου στην αριστερή πλευρά κατά μήκος του άξονα X:
Ο αρνητικός ακροδέκτης του συγκριτή U1: C είναι εφοδιασμένος με 2.3V (χρησιμοποιώντας κύκλωμα διαχωριστή τάσης από 1K και 2.2K) και ο θετικός ακροδέκτης είναι συνδεδεμένος στο Rx. Όταν μετακινείτε το μοχλό αριστερά κατά μήκος του άξονα x, αυξάνεται η τάση Rx. Μόλις αυτή η τάση υπερβεί τα 2,3V, το OP-AMP παρέχει έξοδο + 3,3V στην έξοδο Pin. Αυτή η ΥΨΗΛΗ λογική έξοδος του OP-AMP θα ανιχνευθεί από το Raspberry Pi και το Pi αποκρίνεται με εναλλαγή ενός LED.
Το OP-AMP4 ανιχνεύει την κίνηση της δεξιάς πλευράς του χειριστηρίου κατά μήκος του άξονα X:
Ο αρνητικός ακροδέκτης του συγκριτή U1: 4 διαθέτει 1.0V (χρησιμοποιώντας κύκλωμα διαχωριστή τάσης από 2,2K και 1K) και το θετικό τερματικό είναι συνδεδεμένο στο Rx Κατά την κίνηση του μοχλού δεξιά κατά μήκος του άξονα x, η τάση Rx μειώνεται. Μόλις αυτή η τάση πέσει κάτω από 1,0V, η έξοδος OP-AMP πηγαίνει χαμηλή. Αυτή η χαμηλή λογική έξοδος του OP-AMP θα ανιχνευθεί από το Raspberry Pi και το Pi αποκρίνεται με εναλλαγή ενός LED.
Με αυτόν τον τρόπο και οι τέσσερις λογικές, που καθορίζουν τις τέσσερις κατευθύνσεις του Joystick, συνδέονται με το Raspberry Pi. Το Raspberry Pi λαμβάνει τις εξόδους αυτών των συγκριτών ως εισόδους και ανταποκρίνεται ανάλογα με εναλλαγή των LED. Ακολουθούν τα αποτελέσματα που εμφανίζονται στο τερματικό του Raspberry Pi, καθώς έχουμε εκτυπώσει επίσης την κατεύθυνση του Joystick στο τερματικό χρησιμοποιώντας τον κώδικα Python.
Ο κώδικας και το βίντεο Python δίνονται παρακάτω. Ο κώδικας είναι εύκολος και μπορεί να γίνει κατανοητός από τα σχόλια που δίνονται στον κώδικα.