Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Γεια σας κατασκευαστές, Είμαι ο Tahir Miriyev, απόφοιτος του 2018 από το Τεχνικό Πανεπιστήμιο Μέσης Ανατολής, Άγκυρα/ Τουρκία. Αποφοίτησα από τα Εφαρμοσμένα Μαθηματικά, αλλά πάντα μου άρεσε να φτιάχνω πράγματα, ειδικά όταν αφορούσε κάποια χειροτεχνία με ηλεκτρονικά, σχεδιασμό και προγραμματισμό. Χάρη σε ένα μοναδικό μάθημα πρωτοτυπίας, που προσφέρθηκε στο τμήμα Βιομηχανικού Σχεδιασμού, είχα την ευκαιρία να κάνω κάτι πραγματικά ενδιαφέρον. Το έργο μπορεί να αντιμετωπιστεί ως Έργο Διάρκειας, διάρκειας για ολόκληρο εξάμηνο (4 μήνες). Ανατέθηκε στους μαθητές να βρουν μια δημιουργική προσέγγιση στο σχεδιασμό ήδη υπαρχόντων προϊόντων/επιδείξεων και να υλοποιήσουν τις ιδέες τους χρησιμοποιώντας μικροελεγκτές και αισθητήρες Arduino. Σκεφτόμουν το σκάκι και αφού έκανα έρευνα σε επιτυχημένα έργα, παρατήρησα ότι σε προηγούμενα έργα οι κατασκευαστές χρησιμοποιούσαν βασικά έτοιμες μηχανές σκακιού (όπου όλες οι κινήσεις κάθε φιγούρας ήταν προγραμματισμένες στον πυρήνα), μαζί με το Raspberry Pi, μερικά MUX Διακόπτες LED και καλαμιών. Στο πρότζεκτ μου, όμως, αποφάσισα να απαλλαγώ από οποιοδήποτε εξωτερικό λογισμικό σε ό, τι αφορά τη σκακιστική μηχανή και να βρω μια δημιουργική λύση για το πρόβλημα Αναγνώριση Εικόνας, χρησιμοποιώντας αναγνώστη RFID, αισθητήρες Hall-effect και Arduino Mega.
Βήμα 1: Τι είναι ένα πρόβλημα αναγνώρισης σχήματος και πώς το έλυσα
Για να το πούμε απλά, ας υποθέσουμε ότι έχετε μια σκακιέρα με έναν «εγκέφαλο» = μικροελεγκτή και πρέπει να κάνετε τον πίνακα σας να καταλάβει ποια φιγούρα κρατούσατε στο χέρι σας και πού την τοποθετήσατε. Αυτό είναι το πρόβλημα της Αναγνώρισης Σχήματος. Η λύση σε αυτό το πρόβλημα είναι ασήμαντη όταν έχετε μια σκακιστική μηχανή με όλα τα κομμάτια να στέκονται στις αρχικές τους θέσεις στον πίνακα. Πριν εξηγήσω γιατί είναι έτσι, επιτρέψτε μου να κάνω κάποιες παρατηρήσεις.
Για εκείνους που είναι ενθουσιασμένοι με το πώς λειτουργούν τα πράγματα εδώ, πρέπει να κάνω μια διευκρίνιση γιατί χρειαζόμαστε διακόπτες καλαμιών (ή στην περίπτωσή μου, χρησιμοποίησα αισθητήρες φαινομένου Hall): αν τοποθετήσετε έναν μαγνήτη κάτω από κάθε κομμάτι και τον παραλάβετε από ένα τετράγωνο στον πίνακα (υποθέτοντας ότι υπάρχει ένας διακόπτης καλαμιών κάτω από κάθε τετράγωνο) λόγω της ύπαρξης/μη ύπαρξης μαγνητικού πεδίου πάνω από τον αισθητήρα, μπορείτε να κάνετε τον ελεγκτή σας να καταλάβει εάν δεν υπάρχει/δεν υπάρχει ένα κομμάτι που στέκεται στο τετράγωνο Το Ωστόσο, εξακολουθεί να μην λέει τίποτα στον μικροελεγκτή για το ποιο ακριβώς κομμάτι στέκεται στην πλατεία. Λέει μόνο ότι υπάρχει/όχι ένα κομμάτι σε ένα τετράγωνο. Σε αυτό το σημείο, είμαστε αντιμέτωποι με ένα πρόβλημα αναγνώρισης σχήματος, το οποίο μπορεί να λυθεί χρησιμοποιώντας μια σκακιστική μηχανή, με όλα τα κομμάτια να τοποθετούνται στις αρχικές τους θέσεις όταν ξεκινά η σκακιστική παρτίδα. Με αυτόν τον τρόπο, ο μικροελεγκτής "γνωρίζει" πού βρίσκεται κάθε κομμάτι από την αρχή, με όλες τις διευθύνσεις καθορισμένες στη μνήμη. Παρ 'όλα αυτά, αυτό μας φέρνει έναν τεράστιο περιορισμό: δεν μπορείτε να επιλέξετε, ας πούμε, οποιοδήποτε αριθμό κομματιών και να τα τοποθετήσετε τυχαία οπουδήποτε στον πίνακα και να ξεκινήσετε την ανάλυση του παιχνιδιού. Πρέπει πάντα να ξεκινάτε από την αρχή, όλα τα κομμάτια πρέπει να είναι στον πίνακα αρχικά, καθώς αυτός είναι ο μόνος τρόπος για τον μικροελεγκτή να παρακολουθεί τις θέσεις του μόλις σηκώσετε ένα κομμάτι και τοποθετήσετε σε κάποιο άλλο τετράγωνο. Στην ουσία, αυτό ήταν το πρόβλημα που παρατήρησα και αποφάσισα να δουλέψω.
Η λύση μου ήταν αρκετά απλή, αν και δημιουργική. Τοποθέτησα έναν αναγνώστη RFID στην μπροστινή πλευρά ενός πίνακα. Εν τω μεταξύ, έβαλα όχι μόνο έναν μαγνήτη κάτω από κομμάτια αλλά και μια ετικέτα RFID, με κάθε κομμάτι να έχει μια μοναδική ταυτότητα. Ως εκ τούτου, πριν τοποθετήσετε μια εικόνα σε οποιοδήποτε επιθυμητό τετράγωνο, μπορείτε πρώτα να κρατήσετε το κομμάτι κοντά στον αναγνώστη RFID και να το αφήσετε να διαβάσει το αναγνωριστικό, να αναγνωρίσει το κομμάτι, να το αποθηκεύσετε στη μνήμη και στη συνέχεια να το τοποθετήσετε όπου θέλετε. Επίσης, αντί να χρησιμοποιώ διακόπτες καλαμιών, για να απλοποιήσω τον σχεδιασμό του κυκλώματος, χρησιμοποίησα αισθητήρες εφέ αίθουσας, οι οποίοι λειτουργούν παρόμοια, με τη μόνη διαφορά της αποστολής 0 ή 1 σε έναν μικροελεγκτή ως ψηφιακά δεδομένα, που σημαίνει "υπάρχει" ή "δεν υπάρχει" κανένα κομμάτι στο τετράγωνο, αντίστοιχα. Πρόσθεσα επίσης LED (δυστυχώς όχι του ίδιου χρώματος, δεν είχε), έτσι ώστε όταν σηκώνετε το κομμάτι, να ανάβουν όλες οι τετράγωνες θέσεις, όπου θα μπορούσε να τοποθετηθεί ένα ανυψωμένο κομμάτι. Σκεφτείτε το ως μια εκπαιδευτική πρακτική για όσους μαθαίνουν σκάκι:)
Τέλος, θα ήθελα να σημειώσω ότι παρά το γεγονός ότι χρησιμοποίησα αρκετές τεχνικές, το έργο παραμένει απλό και κατανοητό, όχι βαθιά επεξεργασμένο ή υπερβολικά περίπλοκο. Δεν είχα αρκετό χρόνο για να προχωρήσω σε σκακιέρα 8x8 (επίσης επειδή 64 αισθητήρες εφέ αίθουσας είναι δαπανηροί στην Τουρκία, κάλυψα όλα τα έξοδα που σχετίζονται με την προβολή), γι 'αυτό έκανα επίδειξη 4x4 με δύο μόνο δοκιμασμένα κομμάτια: Πιόν και Βασίλισσα. Αντί για σκακιστική μηχανή, έγραψα έναν πηγαίο κώδικα για το Arduino, ο οποίος δημιουργεί όλα όσα θα δείτε στο παρακάτω βίντεο.
Βήμα 2: Πώς λειτουργούν τα πράγματα
Πριν περάσουμε στη βήμα προς βήμα εξήγηση για το πώς έγινε το έργο, νομίζω ότι θα ήταν καλύτερο να παρακολουθήσουμε ένα επεξηγηματικό βίντεο και να πάρουμε μια διαισθητική ιδέα για το τι μιλάω.
Σημείωση #1: ένα από τα κόκκινα LED (πρώτο στη σειρά/ από αριστερά προς τα δεξιά) κάηκε, δεν πειράζει.
Σημείωση #2: αν και χρησιμοποιείται ευρέως, από την εμπειρία μου μπορώ να πω ότι η τεχνολογία RFID δεν είναι η καλύτερη ιδέα για χρήση σε εφαρμογές DIY (φυσικά αν έχετε εναλλακτικές λύσεις). Πριν λειτουργήσουν όλα, έκανα πολλές δοκιμές με την τοποθέτηση σκακιστικών κομματιών κοντά στον αναγνώστη και την αναμονή μέχρι να διαβάσει σωστά την ταυτότητα. Η σειριακή θύρα πρέπει να ρυθμιστεί για αυτό, επειδή ο τρόπος με τον οποίο ο αναγνώστης RFID διαβάζει το αναγνωριστικό είναι απλώς ένας πονοκέφαλος. Κάποιος πρέπει να προσπαθήσει μόνος του για να καταλάβει το ζήτημα. Εάν χρειάζεστε περισσότερη βοήθεια, στείλτε μου μήνυμα ([email protected]) ή προσθέστε στο skype (tahir.miriyev9r1), ώστε να προγραμματίσουμε μια συνομιλία και να συζητήσουμε τα πράγματα λεπτομερώς, θα τα εξηγήσω όλα διεξοδικά.
Βήμα 3: Εργαλεία και εξαρτήματα
Ακολουθεί η λίστα με όλα τα εργαλεία που χρησιμοποίησα για το έργο: Ηλεκτρονικά εξαρτήματα:
- Breadboard (x1)
- Omnidirectional A1126LUA-T (IC-1126 SW OMNI 3-SIP ALLEGRO) Αισθητήρες εφέ Hall (x16)
- Βασικά LED 5 mm (x16)
- Καλώδια βραχυκυκλωτήρων
- 125 kHz RFID Reader και κεραία (x1)
- Arduino Mega (x1)
- Ετικέτες RFID 3M (x2)
Άλλα υλικά:
- Πλεξιγκλάς
- Γυαλιστερό χαρτί
- κοντές σανίδες (ξύλινες)
- Ακρυλικό χρώμα (σκούρο πράσινο και κρεμ) x2
- Λεπτό χαρτόνι
- Στρογγυλοί μαγνήτες 10 mm (x2)
- Κομμάτια πιόνι και βασίλισσα
- Συγκολλητικό σίδερο και υλικά συγκόλλησης
Βήμα 4: Σχήματα (Fritzing)
Τα σχήματα είναι λίγο περίπλοκα, ξέρω, αλλά η ιδέα πρέπει να είναι σαφής. Ταν η πρώτη φορά που χρησιμοποίησα το Fritzing (συνιστάται ιδιαίτερα), πιθανότατα οι συνδέσεις θα μπορούσαν να γίνουν με μεγαλύτερη ακρίβεια. Τέλος πάντων, σημείωσα τα πάντα μέσα στα σχήματα. Σημείωση: Δεν μπόρεσα να βρω το ακριβές μοντέλο του RDIF Reader μεταξύ των στοιχείων στη βάση δεδομένων του Fritzing. Το μοντέλο που χρησιμοποίησα είναι μονάδα RFID 125Khz - UART. Μπορείτε να βρείτε μαθήματα στο Youtube σχετικά με τον τρόπο ρύθμισης αυτής της μονάδας με το Arduino.
Βήμα 5: Διαδικασία
Timeρα να εξηγήσουμε πώς φτιάχτηκαν τα πράγματα. Ακολουθήστε τη περιγραφή βήμα προς βήμα:
1. Πάρτε ένα χαρτόνι 21x21 εκ., Καθώς και λίγο επιπλέον χαρτόνι για να κόψετε και να κολλήσετε τα τοιχώματα του άνω μέρους της σανίδας, ώστε να γίνουν 16 τετράγωνα με απαριθμημένο το Α Β Γ Δ 1 2 3 4. Δεδομένου ότι το χαρτόνι είναι λεπτό, μπορείτε να κολλήσετε 16 αισθητήρες εφέ αίθουσας σε κάθε τετράγωνο, με 3 πόδια το καθένα και 16 LED με 2 πόδια το καθένα.
2. Αφού ορίσετε εξαρτήματα, θα χρειαστεί να κάνετε λίγη συγκόλληση, για να κολλήσετε πόδια των αισθητήρων εφέ Hall και LED για καλώδια βραχυκυκλωτήρων. Σε αυτό το σημείο, θα συνιστούσα να επιλέξετε έγχρωμα καλώδια με έξυπνο τρόπο, ώστε να μην μπερδευτείτε με τα πόδια + και - των LED, καθώς και πόδια VCC, GND και PIN των αισθητήρων εφέ Hall. Φυσικά, κάποιος μπορεί να εκτυπώσει ένα PCB με αισθητήρες και ακόμη και τύπου LED WS2812 που έχουν ήδη κολληθεί, αλλά αποφάσισα να κρατήσω το έργο απλό και να κάνω κάποια ακόμη "χειροτεχνία". Σε αυτό το σημείο, το μόνο που έχετε να κάνετε είναι να προετοιμάσετε κορδόνια και αισθητήρες, σε μεταγενέστερα στάδια μετά το σχήμα Fritzing μπορείτε να δείτε πού πρέπει να στερεώσετε το άκρο κάθε σύρματος. Σύντομα, μερικά από αυτά θα πάνε απευθείας στα PIN του Arduino Mega (υπάρχουν αρκετά από αυτά στο Arduino), άλλα στο breadboard και όλα τα GND μπορούν να κολληθούν σε ένα κομμάτι κορδόνι (που κάνει κοινό τόπο) το οποίο αργότερα πρέπει να συνδεθεί με το GND στον πίνακα Arduino. Μια σημαντική σημείωση εδώ: Οι αισθητήρες φαινομένου Hall είναι ΠΑΝΤΕΛΕΣΤΙΚΟΙ, πράγμα που σημαίνει ότι δεν έχει σημασία ποιος πόλος ενός μαγνήτη θα κρατηθεί κοντά στον αισθητήρα, θα στείλει 0 δεδομένα ενώ υπάρχει κάποιο μαγνητικό πεδίο κοντά και 1 όταν δεν υπάρχει, Δηλαδή, ο μαγνήτης βρίσκεται μακριά (ας πούμε 5 sm) από τον αισθητήρα.
3. Ετοιμάστε παρόμοιο χαρτόνι 21x21 cm και στερεώστε το Arduino Mega και ένα μακρύ ψωμί σε αυτό. Μπορείτε επίσης να κόψετε ξανά 4 τοίχους οποιουδήποτε ύψους από χαρτόνι και να τους κολλήσετε κάθετα με αυτά τα δύο στρώματα τετράγωνων σανίδων 21x21 cm. Στη συνέχεια, ακολουθήστε τα σχήματα Fritzing για να ρυθμίσετε τα πράγματα. Μπορείτε επίσης να ρυθμίσετε τον αναγνώστη RFID αφού τελειώσετε με τις λυχνίες LED και τους αισθητήρες εφέ Hall.
4. Ελέγξτε εάν λειτουργούν όλα τα LED και οι αισθητήρες, στέλνοντας σήματα χρησιμοποιώντας βασικούς κωδικούς. Μην αποφύγετε αυτό το βήμα καθώς θα σας επιτρέψει να δοκιμάσετε αν όλα λειτουργούν σωστά και να περάσετε στην περαιτέρω κατασκευή του πίνακα.
5. Προετοιμάστε το Pawn and Queen, με δύο μαγνήτες ακτίνας 10 cm προσαρτημένους παρακάτω, καθώς και στρογγυλές ετικέτες RFID. Αργότερα, θα πρέπει να διαβάσετε τα αναγνωριστικά αυτών των ετικετών από τη Σειριακή οθόνη στο Arduino IDE.
6. Εάν όλα λειτουργούν τέλεια, μπορείτε να ξεκινήσετε τον κύριο κώδικα και να δοκιμάσετε τα πράγματα!
7 (προαιρετικό). Μπορείτε να κάνετε κάποια καλλιτεχνική δουλειά με ξύλο που θα δώσει στο demo σας μια πιο φυσική θέα. Αυτό εξαρτάται από τη θέληση και τη φαντασία σας.
Βήμα 6: Ορισμένες φωτογραφίες και βίντεο από διαφορετικά στάδια
Βήμα 7: Πηγαίος κώδικας
Τώρα, όταν τελειώσουμε με ένα πρωτότυπο, είμαστε έτοιμοι να το ζωντανέψουμε με τον παρακάτω κώδικα Arduino. Προσπάθησα να αφήσω όσα περισσότερα σχόλια μπορούσα, προκειμένου να κατανοήσω τη διαδικασία ανάλυσης κώδικα. Για να είμαι ειλικρινής, η λογική μπορεί να φαίνεται λίγο περίπλοκη από την πρώτη ματιά, αλλά αν εμβαθύνεις στη λογική του κώδικα, θα φαίνεται πιο περιεκτική.
Σημείωση: Παρόμοια με την πραγματική σκακιέρα, αριθμούσα αφηρημένα τετράγωνα ως A1, A2, A3, A4, B1,…, C1,…, D1,.., D4. Ωστόσο, στον κώδικα, δεν είναι πρακτικό να χρησιμοποιήσετε αυτήν τη σημειογραφία. Ως εκ τούτου, χρησιμοποίησα πίνακες και παρουσίασα τετράγωνα ως 00, 01, 02, 03, 10, 11, 12, 13,…, 32, 33 αντίστοιχα.
Σας ευχαριστώ για την προσοχή σας! Δοκιμάστε τα πάντα και μείνετε ελεύθεροι να γράψετε στα σχόλια για κάθε είδους λάθη που έχασα, βελτιώσεις, προτάσεις κ.λπ. Ανυπομονώ να ακούσω κάποιες απόψεις σχετικά με το έργο. Εάν χρειάζεστε οποιαδήποτε βοήθεια στο έργο, στείλτε μου μήνυμα ([email protected]) ή προσθέστε στο skype (tahir.miriyev9r1), ώστε να προγραμματίσουμε μια συνομιλία και να συζητήσουμε πράγματα με λεπτομέρειες. Καλή τύχη!