- Απαιτούμενα συστατικά:
- Ο αισθητήρας χρώματος TCS3200 λειτουργεί
- Pinout του TCS3200 Color Sensor:
- Διάγραμμα κυκλώματος
- Επεξήγηση κώδικα
Σε αυτό το έργο πρόκειται να εργαστούμε για μια καινοτόμο ιδέα έργου arduino, όπου μπορούμε να μετρήσουμε τα χαρτονομίσματα χαρτιού και να υπολογίσουμε το ποσό τους, ανιχνεύοντας το νόμισμα χαρτιού χρησιμοποιώντας το Color Sensor και το Arduino. Ο αισθητήρας χρώματος TCS230 θα χρησιμοποιηθεί για την ανίχνευση των χαρτονομισμάτων και, το Arduino UNO για την επεξεργασία των δεδομένων και την εμφάνιση του υπολοίπου σε LCD 16x2.
Απαιτούμενα συστατικά:
- Arduino UNO
- Αισθητήρας χρώματος TCS230
- Αισθητήρας υπερύθρων
- Ψωμί
- 16 * 2 αλφαριθμητική LCD
- Σύνδεση καλωδίων
Ο αισθητήρας χρώματος TCS3200 λειτουργεί
Ο αισθητήρας χρώματος TCS3200 χρησιμοποιείται για την ανίχνευση ενός μεγάλου εύρους χρωμάτων. Προηγουμένως διασυνδέσαμε τον αισθητήρα χρώματος TCS3200 με τα Arduino και Raspberry pi, και κατασκευάσαμε επίσης μερικά χρήσιμα έργα όπως η μηχανή ταξινόμησης χρωμάτων.
Ο αισθητήρας TCS230 διαθέτει ενσωματωμένες υπέρυθρες λυχνίες LED που χρησιμοποιούνται για να φωτίσουν το αντικείμενο του οποίου το χρώμα πρέπει να ανιχνευθεί. Αυτό διασφαλίζει ότι δεν θα υπάρχουν επιπτώσεις εξωτερικού περιβάλλοντος φωτός στο αντικείμενο. Αυτός ο αισθητήρας διαβάζει μια φωτοδίοδο συστοιχίας 8 * 8, η οποία αποτελείται από 16 φωτοδιόδους με κόκκινα φίλτρα, 16 με μπλε φίλτρα, 16 με πράσινα φίλτρα και 16 φωτοδιόδους χωρίς κανένα φίλτρο. Κάθε μία από τις συστοιχίες αισθητήρων σε αυτές τις τρεις συστοιχίες επιλέγεται ξεχωριστά ανάλογα με την απαίτηση. Ως εκ τούτου είναι γνωστό ως προγραμματιζόμενος αισθητήρας. Η ενότητα μπορεί να χαρακτηριστεί για να αισθανθεί το συγκεκριμένο χρώμα και να αφήσει τα άλλα. Περιέχει φίλτρα για αυτόν τον σκοπό επιλογής. Υπάρχει μια τέταρτη λειτουργία που ονομάζεται «λειτουργία χωρίς φίλτρο» στην οποία ο αισθητήρας ανιχνεύει λευκό φως.
Το σήμα εξόδου του αισθητήρα χρώματος TCS230 είναι ένα τετραγωνικό κύμα με κύκλο λειτουργίας 50% και η συχνότητά του είναι ανάλογη με την ένταση φωτός του επιλεγμένου φίλτρου.
Pinout του TCS3200 Color Sensor:
VDD- Τάση τροφοδοσίας του αισθητήρα. Διατίθεται με 5V DC.
GND - Καρφίτσα αναφοράς γείωσης ενός αισθητήρα χρώματος
S0, S1- Είσοδοι επιλογής κλιμάκωσης συχνότητας εξόδου
Είσοδοι επιλογής τύπου S2, S3- Φωτο-δίοδος
OUT- Καρφίτσα εξόδου ενός αισθητήρα χρώματος
OE- Ενεργοποίηση ακίδων για συχνότητα εξόδου
Έχουμε χρησιμοποιήσει επίσης έναν αισθητήρα υπερύθρων σε αυτό το έργο, του οποίου η λειτουργία μπορεί να γίνει κατανοητή από τον ακόλουθο σύνδεσμο.
Διάγραμμα κυκλώματος
Ακολουθεί το διάγραμμα κυκλώματος για τον μετρητή χρημάτων Arduino:
Εδώ, έφτιαξα μια μικρή δομή όπως μια μηχανή σάρωσης νομίσματος POS χρησιμοποιώντας χαρτόνια. Σε αυτήν τη δομή, ένας αισθητήρας χρώματος και ένας αισθητήρας υπερύθρων στερεώνονται με το χαρτόνι όπως φαίνεται στην παρακάτω εικόνα.
Εδώ ο αισθητήρας υπερύθρων χρησιμοποιείται για την ανίχνευση της παρουσίας νομίσματος μέσα στην υποδοχή και εάν υπάρχει μια σημείωση, τότε ο αισθητήρας χρώματος θα ανιχνεύσει το χρώμα της σημείωσης και θα στείλει την τιμή χρώματος στο Arduino. Και ο Arduino υπολογίζει περαιτέρω την αξία του νομίσματος με βάση το χρώμα της σημείωσης.
Επεξήγηση κώδικα
Στο τέλος του άρθρου παρέχεται πλήρης κωδικός μαζί με ένα βίντεο επίδειξης. Εδώ δίνεται η σταδιακή εξήγηση του πλήρους κώδικα.
Πρώτον, συμπεριλάβετε όλες τις βιβλιοθήκες στο πρόγραμμα. Εδώ χρειαζόμαστε μόνο τη βιβλιοθήκη LCD για να συμπεριληφθεί στο πρόγραμμα. Στη συνέχεια δηλώστε όλες τις μεταβλητές που χρησιμοποιούνται στον κώδικα.
#περιλαμβάνω
Μέσα στη ρύθμιση (), εκτυπώστε το μήνυμα καλωσορίσματος στην οθόνη LCD και ορίστε όλες τις οδηγίες δεδομένων των ψηφιακών καρφιτσών που χρησιμοποιούνται σε αυτό το έργο. Στη συνέχεια, ορίστε την κλιμάκωση συχνότητας εξόδου του αισθητήρα χρώματος, στην περίπτωσή μου, ορίζεται στο 20% που μπορεί να ρυθμιστεί δίνοντας παλμό HIGH στο S0 και παλμό LOW στο S1.
άκυρη ρύθμιση () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); lcd.print ("Έξυπνο πορτοφόλι"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); καθυστέρηση (2000); lcd.clear (); pinMode (2, OUTPUT); // S0 pinMode (3, OUTPUT); // S1 pinMode (11, OUTPUT); // S2 pinMode (12, OUTPUT); // S3 pinMode (13, INPUT); // OUT digitalWrite (2, ΥΨΗΛΟ); digitalWrite (3, LOW); }
Μέσα στον άπειρο βρόχο (), διαβάστε όλες τις εξόδους δεδομένων από τους αισθητήρες. Η έξοδος από τον αισθητήρα υπερύθρων μπορεί να βρεθεί διαβάζοντας τον ακροδέκτη Α0 και οι συχνότητες χρώματος εξόδου μπορούν να βρεθούν καλώντας τις επιμέρους λειτουργίες που γράφονται ως κόκκινο (), μπλε () και πράσινο (). Στη συνέχεια, εκτυπώστε όλα αυτά στη Σειριακή οθόνη. Αυτό είναι απαραίτητο όταν πρέπει να προσθέσουμε ένα νέο νόμισμα στο έργο μας.
αισθητήρας int = digitalRead (A0); int red1 = κόκκινο (); int blue1 = μπλε (); int green1 = πράσινο (); Serial.println (red1); Serial.println (blue1); Serial.println (πράσινο1); Serial.println ("-----------------------------");
Στη συνέχεια, γράψτε όλες τις συνθήκες για να ελέγξετε τη συχνότητα εξόδου του αισθητήρα χρώματος με τη συχνότητα αναφοράς που έχουμε ορίσει προηγουμένως. Εάν ταιριάζει, αφαιρεί το καθορισμένο ποσό από το υπόλοιπο του πορτοφολιού.
if (red1> = 20 && red1 <= 25 && blue1> = 30 && blue1 <= 35 && green1> = 30 && green1 <= 35 && a == 0 && sensor == ΥΨΗΛΟΣ] {a = 1; } αλλιώς εάν (αισθητήρας == ΧΑΜΗΛΗ && a == 1) {a = 0; εάν (σύνολο> = 10) {lcd.setCursor (0, 1); lcd.print ("10 ρουπίες !!!"); σύνολο = σύνολο-10; καθυστέρηση (1500) lcd.clear (); }}
Εδώ έχουμε ορίσει μόνο τους όρους για χρώμα 10 ρουπίες και 50 ρουπίες. Μπορείτε να ορίσετε περισσότερες συνθήκες για να εντοπίσετε περισσότερα όχι. χαρτονομισμάτων.
Σημείωση: Η έξοδος συχνότητας ενδέχεται να διαφέρει στην περίπτωσή σας, ανάλογα με τον εξωτερικό φωτισμό και τη ρύθμιση του αισθητήρα. Επομένως, συνιστάται να ελέγξετε τη συχνότητα εξόδου του νομίσματός σας και να ορίσετε την τιμή αναφοράς ανάλογα.
Ο παρακάτω κωδικός θα εμφανίσει το διαθέσιμο υπόλοιπο στο πορτοφόλι στην οθόνη LCD 16x2.
lcd.setCursor (0, 0); lcd.print ("Σύνολο Bal:"); lcd.setCursor (11, 0); lcd.print (σύνολο); καθυστέρηση (1000)
Η ακόλουθη συνάρτηση θα λάβει τη συχνότητα χρώματος εξόδου του κόκκινου περιεχομένου στο νόμισμα. Ομοίως, μπορούμε να γράψουμε άλλες συναρτήσεις για να λάβουμε αξία για το περιεχόμενο μπλε και πράσινου χρώματος.
int red () {digitalWrite (11, LOW); digitalWrite (12, LOW); συχνότητα = pulseIn (OutPut, LOW); συχνότητα επιστροφής }
Έτσι λοιπόν μπορεί να δημιουργηθεί εύκολα ένας μετρητής χρημάτων με βάση το Arduino χρησιμοποιώντας λίγα στοιχεία. Μπορούμε να το τροποποιήσουμε περαιτέρω ενσωματώνοντας κάποια επεξεργασία εικόνας και κάμερα για να εντοπίσουμε το νόμισμα χρησιμοποιώντας την εικόνα, με αυτόν τον τρόπο θα είναι πιο ακριβές και θα μπορέσουμε να εντοπίσουμε οποιοδήποτε νόμισμα.