- Αισθητήρας χρώματος TCS3200:
- Απαιτούμενα στοιχεία:
- Διάγραμμα κυκλώματος και συνδέσεις:
- Επεξήγηση εργασίας:
Σε αυτό το έργο πρόκειται να εντοπίσουμε τα χρώματα χρησιμοποιώντας το TCS3200 Color Sensor Module με Raspberry Pi. Εδώ χρησιμοποιήσαμε τον κωδικό Python για το Raspberry Pi για να ανιχνεύσουμε τα χρώματα χρησιμοποιώντας τον αισθητήρα TCS3200. Για να δείξουμε την ανίχνευση χρώματος χρησιμοποιήσαμε ένα RGB LED, αυτό το RGB LED θα ανάβει στο ίδιο χρώμα, από το οποίο το αντικείμενο εμφανίζεται κοντά στον αισθητήρα. Προς το παρόν έχουμε προγραμματίσει το Raspberry Pi να ανιχνεύει μόνο κόκκινα, πράσινα και μπλε χρώματα. Αλλά μπορείτε να το προγραμματίσετε για να εντοπίσετε οποιοδήποτε χρώμα αφού λάβετε τις τιμές RGB, καθώς κάθε χρώμα αποτελείται από αυτά τα στοιχεία RGB. Ελέγξτε το βίντεο επίδειξης στο τέλος.
Έχουμε διαβάσει και εμφανίσει τις τιμές RGB των χρωμάτων χρησιμοποιώντας το ίδιο TCS3200 με το Arduino. Πριν προχωρήσουμε περισσότερο, ενημερώστε σχετικά με τον αισθητήρα χρώματος TCS3200.
Αισθητήρας χρώματος TCS3200:
Το TCS3200 είναι ένας αισθητήρας χρώματος που μπορεί να ανιχνεύσει οποιοδήποτε αριθμό χρωμάτων με σωστό προγραμματισμό. Το TCS3200 περιέχει συστοιχίες RGB (κόκκινο πράσινο μπλε). Όπως φαίνεται στο σχήμα σε μικροσκοπικό επίπεδο, μπορεί κανείς να δει τα τετράγωνα κουτιά μέσα στο μάτι του αισθητήρα. Αυτά τα τετράγωνα κουτιά είναι πίνακες του RGB matrix. Κάθε ένα από αυτά τα κουτιά περιέχει τρεις αισθητήρες για την ανίχνευση της έντασης κόκκινου, πράσινου και μπλε φωτός.
Έχουμε λοιπόν κόκκινους, μπλε και πράσινους πίνακες στο ίδιο επίπεδο. Έτσι, ενώ ανιχνεύουμε το χρώμα, δεν μπορούμε να εντοπίσουμε και τα τρία στοιχεία ταυτόχρονα. Κάθε μία από αυτές τις συστοιχίες αισθητήρων πρέπει να επιλέγεται ξεχωριστά το ένα μετά το άλλο για να ανιχνεύσει το χρώμα. Η ενότητα μπορεί να προγραμματιστεί για να αισθανθεί το συγκεκριμένο χρώμα και να αφήσει τα άλλα. Περιέχει καρφίτσες για αυτόν τον σκοπό επιλογής, ο οποίος εξηγείται αργότερα. Υπάρχει τέταρτη λειτουργία που δεν είναι λειτουργία φίλτρου. χωρίς λειτουργία φίλτρου ο αισθητήρας ανιχνεύει λευκό φως.
Θα συνδέσουμε αυτόν τον αισθητήρα στο Raspberry Pi και θα προγραμματίσουμε το Raspberry Pi να παρέχει κατάλληλη απόκριση ανάλογα με το χρώμα.
Απαιτούμενα στοιχεία:
Εδώ χρησιμοποιούμε το Raspberry Pi 2 Model B με το Raspbian Jessie OS. Όλες οι βασικές απαιτήσεις υλικού και λογισμικού συζητήθηκαν προηγουμένως, μπορείτε να το αναζητήσετε στο Raspberry Pi Εισαγωγή και στο Raspberry PI LED Blinking για να ξεκινήσετε, εκτός από αυτό που χρειαζόμαστε:
- Raspberry Pi με προεγκατεστημένο λειτουργικό σύστημα
- Αισθητήρας χρώματος TCS3200
- Μετρητής τσιπ CD4040
- LED RGB
- Αντίσταση 1KΩ (3 τεμάχια)
- Πυκνωτής 1000uF
Διάγραμμα κυκλώματος και συνδέσεις:
Οι συνδέσεις που γίνονται για τη σύνδεση του αισθητήρα χρώματος με το Raspberry Pi δίνονται στον παρακάτω πίνακα:
Αισθητήρες |
Καρφίτσες Raspberry Pi |
Vcc |
+ 3.3v |
GND |
έδαφος |
S0 |
+ 3.3v |
S1 |
+ 3.3v |
S2 |
GPIO6 του PI |
S3 |
GPIO5 του PI |
ΟΕ |
GPIO22 του PI |
ΕΞΩ |
CLK του CD4040 |
Οι συνδέσεις για τον μετρητή CD4040 με το Raspberry Pi δίνονται στον παρακάτω πίνακα:
CD4040 ακίδες |
Καρφίτσες Raspberry Pi |
Vcc16 |
+ 3.3v |
Gnd8 |
gnd |
Clk10 |
ΑΠΟ αισθητήρα |
Επαναφορά11 |
GPIO26 του PI |
Ε0 |
GPIO21 του PI |
Ε1 |
GPIO20 του PI |
Ε2 |
GPIO16 του PI |
Ε3 |
GPIO12 του PI |
Ε4 |
GPIO25 του PI |
Ε5 |
GPIO24 του PI |
Ε6 |
GPIO23 του PI |
Ε7 |
GPIO18 του PI |
Ε8 |
Χωρίς σύνδεση |
Ε9 |
Χωρίς σύνδεση |
Ε10 |
Χωρίς σύνδεση |
Ε11 |
Χωρίς σύνδεση |
Ακολουθεί το πλήρες διάγραμμα κυκλώματος του Interfacing Color Sensor με Raspberry Pi:
Επεξήγηση εργασίας:
Κάθε χρώμα αποτελείται από τρία χρώματα: Κόκκινο, Πράσινο και Μπλε (RGB). Και αν γνωρίζουμε τις εντάσεις του RGB σε οποιοδήποτε χρώμα, τότε μπορούμε να εντοπίσουμε αυτό το χρώμα. Διαβάσαμε προηγουμένως αυτές τις τιμές RGB χρησιμοποιώντας το Arduino.
Χρησιμοποιώντας τον αισθητήρα χρώματος TCS3200, δεν μπορούμε να ανιχνεύσουμε ταυτόχρονα κόκκινο, πράσινο και μπλε φως, επομένως πρέπει να τα ελέγξουμε ένα προς ένα. Το χρώμα που πρέπει να ανιχνευθεί από τον αισθητήρα χρώματος επιλέγεται από δύο ακίδες S2 και S3. Με αυτές τις δύο ακίδες, μπορούμε να πούμε στον αισθητήρα ποια ένταση χρώματος θα μετρηθεί.
Πείτε εάν πρέπει να αισθανθούμε την ένταση του κόκκινου χρώματος, τότε πρέπει να ρυθμίσουμε και τις δύο ακίδες σε LOW. Αφού μετρήσουμε το ΚΟΚΚΙΝΟ φως, θα ρυθμίσουμε τα S2 LOW και S3 HIGH για να μετρήσουμε το μπλε φως. Αλλάζοντας διαδοχικά τις λογικές των S2 και S3 μπορούμε να μετρήσουμε τις εντάσεις κόκκινου, μπλε και πράσινου φωτός, σύμφωνα με τον παρακάτω πίνακα:
S2 |
S3 |
Τύπος φωτοδιόδου |
Χαμηλός |
Χαμηλός |
το κόκκινο |
Χαμηλός |
Υψηλός |
Μπλε |
Υψηλός |
Χαμηλός |
Χωρίς φίλτρο (λευκό) |
Υψηλός |
Υψηλός |
Πράσινος |
Μόλις ο αισθητήρας ανιχνεύσει τις εντάσεις των εξαρτημάτων RGB, η τιμή αποστέλλεται στο σύστημα ελέγχου στο εσωτερικό της μονάδας όπως φαίνεται στο παρακάτω σχήμα. Η ένταση του φωτός που μετράται από τον πίνακα αποστέλλεται στον μετατροπέα Ρεύμα σε Συχνότητα μέσα στη μονάδα. Ο μετατροπέας συχνότητας δημιουργεί ένα τετραγωνικό κύμα του οποίου η συχνότητα είναι άμεσα ανάλογη με την τιμή που αποστέλλεται από τον πίνακα. Με υψηλότερη τιμή από το ARRAY, ο μετατροπέας ρεύματος σε συχνότητα δημιουργεί το τετραγωνικό κύμα υψηλότερης συχνότητας.
Η συχνότητα σήματος εξόδου από τη μονάδα αισθητήρα χρώματος μπορεί να ρυθμιστεί σε τέσσερα επίπεδα. Αυτά τα επίπεδα επιλέγονται χρησιμοποιώντας S0 και S1 της μονάδας αισθητήρα, όπως φαίνεται στο παρακάτω σχήμα.
S0 |
S1 |
Κλιμάκωση συχνότητας εξόδου (f0) |
μεγάλο |
μεγάλο |
Διακοπή ρεύματος |
μεγάλο |
Η |
2% |
Η |
μεγάλο |
20% |
Η |
Η |
100% |
Αυτή η δυνατότητα είναι χρήσιμη όταν συνδέουμε αυτήν την ενότητα στο σύστημα με χαμηλό ρολόι. Με το Raspberry Pi θα επιλέξουμε 100%. Θυμηθείτε εδώ, κάτω από τη σκιά, το Color Sensor Module δημιουργεί μια έξοδο τετραγωνικού κύματος της οποίας η μέγιστη συχνότητα είναι 2500Hz (κλίμακα 100%) για κάθε χρώμα.
Παρόλο που η μονάδα παρέχει τετράγωνο κύμα εξόδου του οποίου η συχνότητα είναι ευθέως ανάλογη με την ένταση του φωτός που πέφτει στην επιφάνειά της, δεν υπάρχει εύκολος τρόπος υπολογισμού της έντασης φωτός κάθε χρώματος από αυτή τη μονάδα. Ωστόσο, μπορούμε να πούμε αν η ένταση του φωτός αυξάνεται ή μειώνεται για κάθε χρώμα. Επίσης, μπορούμε να υπολογίσουμε και να συγκρίνουμε τις τιμές κόκκινου, πράσινου, μπλε για να ανιχνεύσουμε το χρώμα του φωτός ή το χρώμα του προκαθορισμένου αντικειμένου στην επιφάνεια της μονάδας. Αυτό λοιπόν αφορά περισσότερο τη μονάδα αισθητήρα χρώματος και όχι τη μονάδα αισθητήρα έντασης φωτός.
Τώρα θα τροφοδοτήσουμε αυτήν την έξοδο τετραγωνικού κύματος στο Raspberry Pi, αλλά δεν μπορούμε να το δώσουμε απευθείας στο PI, επειδή το Raspberry Pi δεν διαθέτει εσωτερικούς μετρητές. Πρώτα λοιπόν θα δώσουμε αυτήν την έξοδο στο Binary Counter CD4040 και θα προγραμματίσουμε το Raspberry Pi να λαμβάνει την τιμή συχνότητας από τον μετρητή σε περιοδικά διαστήματα 100msec.
Έτσι, το PI διαβάζει μια τιμή 2500/10 = 250 max για κάθε ΚΟΚΚΙΝΟ, ΠΡΑΣΙΝΟ και ΜΠΛΕ χρώμα. Έχουμε επίσης προγραμματίσει το Raspberry Pi να εκτυπώσει αυτές τις τιμές που αντιπροσωπεύουν τις εντάσεις φωτός στην οθόνη, όπως φαίνεται παρακάτω. Οι τιμές αφαιρούνται από τις προεπιλεγμένες τιμές για να φτάσουν στο μηδέν. Αυτό είναι βολικό, ενώ αποφασίζετε το χρώμα.
Εδώ οι προεπιλεγμένες τιμές είναι οι τιμές του RGB, οι οποίες έχουν ληφθεί χωρίς να τοποθετηθεί κανένα αντικείμενο μπροστά από τον αισθητήρα. Εξαρτάται από τις συνθήκες φωτισμού του περιβάλλοντος και αυτές οι τιμές μπορεί να διαφέρουν ανάλογα με το περιβάλλον. Βασικά βαθμονομούν τον αισθητήρα για τυπικές μετρήσεις. Λοιπόν, εκτελέστε πρώτα το πρόγραμμα χωρίς να τοποθετήσετε κανένα αντικείμενο και σημειώστε τις αναγνώσεις. Αυτές οι τιμές δεν θα είναι κοντά στο μηδέν, καθώς θα υπάρχει πάντα λίγο φως στον αισθητήρα, όπου κι αν το τοποθετήσετε. Στη συνέχεια, αφαιρέστε αυτές τις μετρήσεις με τις αναγνώσεις που θα λάβουμε μετά την τοποθέτηση ενός αντικειμένου για δοκιμή. Με αυτόν τον τρόπο μπορούμε να έχουμε τυπικές αναγνώσεις.
Το Raspberry Pi είναι επίσης προγραμματισμένο να συγκρίνει τις τιμές R, G και B για να προσδιορίσει το χρώμα του αντικειμένου που βρίσκεται κοντά στον αισθητήρα. Αυτό το αποτέλεσμα φαίνεται από το λαμπερό RGB LED που είναι συνδεδεμένο στο Raspberry Pi.
Με λίγα λόγια,
1. Η μονάδα ανιχνεύει το φως που ανακλάται από το αντικείμενο που βρίσκεται κοντά στην επιφάνεια.
2. Η μονάδα αισθητήρα χρώματος παρέχει κύμα εξόδου για R ή G ή B, που επιλέγεται διαδοχικά από το Raspberry Pi μέσω των ακίδων S2 και S3.
3. Ο μετρητής CD4040 παίρνει το κύμα και μετρά την τιμή συχνότητας.
4. Το PI παίρνει την τιμή συχνότητας από τον μετρητή για κάθε χρώμα για κάθε 100ms. Μετά τη λήψη της τιμής κάθε φορά που το PI επαναφέρει τον μετρητή για να ανιχνεύσει την επόμενη τιμή.
5. Το Raspberry Pi εκτυπώνει αυτές τις τιμές στην οθόνη και συγκρίνει αυτές τις τιμές για να ανιχνεύσει το χρώμα του αντικειμένου και τελικά να ανάψει το RGB LED σε κατάλληλο χρώμα ανάλογα με το χρώμα του αντικειμένου.
Ακολουθήσαμε την παραπάνω ακολουθία στον κώδικα Python. Το πλήρες πρόγραμμα δίνεται παρακάτω με ένα βίντεο επίδειξης.
Εδώ το Raspberry Pi είναι προγραμματισμένο να ανιχνεύει μόνο τρία χρώματα, μπορείτε να ταιριάξετε τις τιμές R, G και B ανάλογα για να εντοπίσετε περισσότερα χρώματα που σας αρέσουν.