Πίνακας περιεχομένων:

Προσαρμογέας Arduino PS/2 σε USB: 7 βήματα (με εικόνες)
Προσαρμογέας Arduino PS/2 σε USB: 7 βήματα (με εικόνες)

Βίντεο: Προσαρμογέας Arduino PS/2 σε USB: 7 βήματα (με εικόνες)

Βίντεο: Προσαρμογέας Arduino PS/2 σε USB: 7 βήματα (με εικόνες)
Βίντεο: SKR Pro V1.1 - A4988 stepper driver install 2024, Νοέμβριος
Anonim
Προσαρμογέας Arduino PS/2 σε USB
Προσαρμογέας Arduino PS/2 σε USB
Προσαρμογέας Arduino PS/2 σε USB
Προσαρμογέας Arduino PS/2 σε USB

Θέλατε ποτέ να χρησιμοποιήσετε το παλιό σας πληκτρολόγιο PS/2 με φορητό υπολογιστή ή νέο επιτραπέζιο υπολογιστή και διαπιστώσατε ότι δεν διαθέτουν πλέον θύρες PS/2; Και στη συνέχεια, αντί να αγοράσετε έναν φθηνό προσαρμογέα PS/2 σε USB, όπως θα έκανε ένας κανονικός άνθρωπος, ήθελε να χρησιμοποιήσει το Arduino σας ως προσαρμογέα PS/2 σε USB. Τότε ήρθατε στο σωστό μέρος:)

Δίκαιη προειδοποίηση πριν μπούμε σε αυτό. Όταν χρησιμοποιείτε το UNO/Mega ως συσκευή USB-HID (Δεν περιορίζεται στο πληκτρολόγιο, μπορεί ακόμη και να είναι ποντίκι, joystick κ.λπ.) θα χάσετε προσωρινά τις λειτουργίες του ως Arduino. Με αυτό εννοώ ότι δεν μπορείτε να χρησιμοποιήσετε τις σειριακές επικοινωνίες και δεν μπορείτε να το επαναπρογραμματίσετε μέσω USB. Αυτό συμβαίνει επειδή θα γράψουμε υπερβολικά το υλικολογισμικό στο τσιπ διεπαφής USB του (μικρός άντρας κοντά στη θύρα USB Atmega8U2 και 16U2 ανάλογα με την αναθεώρηση). Αλλά μην ανησυχείτε ότι δεν μπορείτε πραγματικά να φτιάξετε το UNO/Mega σας κάνοντάς το αυτό είναι πάντα αναστρέψιμο.

Επίσης τυχαία, αν έχετε Arduino που διαθέτει ήδη δυνατότητα USB-HID (Arduino Pro Micro ή Leonardo, κλπ. Κάντε αναζήτηση στο Google), μπορείτε να ξεχάσετε αυτό το διδακτικό που υπήρχε ποτέ, πηγαίνετε απευθείας εδώ για να σωθείτε από έναν κόσμο προβλημάτων. αστεϊσμός!

Προμήθειες

  • Σκεύη, εξαρτήματα

    • Arduino UNO ή Mega
    • PS/2 Πληκτρολόγιο
    • Προαιρετικά, ένα πρόσθετο Arduino ή οποιοδήποτε είδος προγραμματιστή USB (USBasp, κλπ) μπορεί να είναι χρήσιμο.
  • Λογισμικό

    • Atmel FLIP
    • PS2KeyAdvanced βιβλιοθήκη για Arduino IDE

Βήμα 1: Καλωδίωση και ρύθμιση

Καλωδίωση και ρύθμιση
Καλωδίωση και ρύθμιση
Καλωδίωση και ρύθμιση
Καλωδίωση και ρύθμιση
Καλωδίωση και ρύθμιση
Καλωδίωση και ρύθμιση
Καλωδίωση και ρύθμιση
Καλωδίωση και ρύθμιση

Ανάλογα με την κατάσταση, μπορείτε είτε να βρείτε μια πλακέτα ξεμπλοκαρίσματος είτε να σώσετε μια παλιά θύρα από μια μητρική πλακέτα (η 2η προσπάθειά μου) ή αν αισθάνεστε ιδιαίτερα κακοδιάθετη, μπορείτε ακόμη και να κόψετε το μοβ γρύλο εντελώς και να εκθέσετε τα 4 σύρματα (1η μου προσπάθεια) και συνδέστε τα στο UNO.

Πληκτρολόγιο _Arduino

+5V (VCC) _+5V

GROUND_GND

ΡΟΛΟΙ _ PIN 2 **

ΔΕΔΟΜΕΝΑ _ PIN3*

*Μπορείτε να αλλάξετε την καρφίτσα DATA σε ό, τι θέλετε αλλά θυμηθείτε να ενημερώσετε το σκίτσο.

** Το ρολόι πρέπει να είναι συνδεδεμένο με έναν ακροδέκτη διακοπής στο Arduino, ο οποίος μπορεί να είναι μόνο PIN 2 ή 3 (θυμηθείτε να ενημερώσετε το σκίτσο) σε UNO. Για περισσότερες πληροφορίες και διαφορετικές ρυθμίσεις του πίνακα, μπορείτε να ελέγξετε την ενότητα σχολίων των παραδειγμάτων βιβλιοθήκης PS2KeyAdvanced.

Βήμα 2: Δοκιμή πληκτρολογίου

Πριν πάτε στο χέρι, βεβαιωθείτε ότι όλα λειτουργούν στο πληκτρολόγιο και τη βιβλιοθήκη.

Εδώ έχω επισυνάψει μια τροποποιημένη έκδοση του SimpleTest.ino από παραδείγματα βιβλιοθήκης PS2KeyAdvanced με ενημερωμένες καρφίτσες ρολογιού και δεδομένων και επίσης μια αναπαράσταση "make" και "break". Ακολουθεί κάποια εξήγηση για την έξοδο.

  • Αυτό το σύστημα "δημιουργίας" και "θραύσης" scancode και "Code" που είναι ο απομονωμένος (c & 0xFF) φάκελος είτε με το πάτημα πλήκτρου είτε με την απελευθέρωση πλήκτρου παίζει σημαντικό ρόλο στη μετατροπή PS/2 σε USB και σας συνιστώ να μελετήσετε τα άλλα 2 παραδείγματα που συνοδεύουν τη βιβλιοθήκη για καλύτερη κατανόηση εάν σχεδιάζετε να βελτιώσετε ή να αλλάξετε (επανατοποθέτηση κλειδιών σε διαφορετικές διατάξεις) το τελικό σκίτσο. Επίσης, μπορείτε να λάβετε μια πλήρη λίστα PS/2 scancodes από τη βιβλιοθήκη ανοίγοντας είτε αρχεία 'PS2KeyAdvanced.h' είτε 'PS2KeyCode.h' από '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
  • Το "Status Bits" αναφέρεται σε πλήκτρα τροποποίησης (Ctrl, Alt, Windows, Shift/Caps) και θα δείτε ότι με κάθε επιπλέον κλειδί τροποποίησης, αυτή η τιμή αλλάζει ενώ το κύριο "Κωδικός" του κανονικού (μη τροποποιητή) κλειδιού είναι αμετάβλητο. Αλλά στο τελευταίο σκίτσο αγνόησα αυτήν τη μέθοδο και εφάρμοσα αυτά τα πλήκτρα τροποποίησης ως απλά πατήματα πλήκτρων (Θα δείτε ότι αυτά τα πλήκτρα τροποποίησης έχουν επίσης "make" και "break" scancode ανεξάρτητα από τα κανονικά κλειδιά, ανεξάρτητα από το αν πατηθούν ή όχι πολλά πλήκτρα.) επειδή διευκολύνει τα πράγματα με το πρωτόκολλο USB-HID.

Βήμα 3: Προεπισκόπηση μετατροπής PS/2 σε USB

Πριν από την ενημέρωση του Atmega8U2 ή 16U2 (UNO Rev3) για να προσδιορίσουμε το Arduino ως πληκτρολόγιο USB, πρέπει να βεβαιωθούμε ότι όλα τα στοιχεία μετατροπής λειτουργούν σωστά και ότι το τελευταίο τελικό σκίτσο έχει μεταφορτωθεί ή διαφορετικά θα είναι μεγάλος πόνος να συνεχίσουμε να γράφουμε υλικολογισμικό ξανά και ξανά μεταξύ των αρχικών και των δεκαεξαδικών αρχείων πληκτρολογίου USB μόνο για να μπορείτε να ανεβάσετε το σωστό σκίτσο. Αυτό ισχύει ιδιαίτερα εάν δεν έχετε εξωτερικό προγραμματιστή όπως USBasp ή άλλο Arduino για χρήση ως ISP. Έτσι, εδώ θα ανεβάσουμε μια έκδοση 'DEBUG' του τελικού σκίτσου με μια αναγνώσιμη έξοδο από τον άνθρωπο (μέσω της σειριακής οθόνης) για να δοκιμάσουμε τα πράγματα.

Η έξοδος που βλέπετε θα διαμορφωθεί ως εξής όταν απελευθερώνεται κάθε κλειδί, 00 00 00 00 00 00 00 00

Ακολουθεί μια βασική εξήγηση για την αναμενόμενη παραγωγή,

Για κάθε νέο πλήκτρο τροποποίησης πολλαπλών τροποποιήσεων θα πρέπει να λάβετε μια νέα γραμμή με διαφορετικές τιμές για 'xx'. Τέλος, όταν απελευθερώνετε όλα τα κλειδιά τροποποίησης, το 'xx' πρέπει να γίνει 00

xx 00 00 00 00 00 00 00 00

Για κάθε νέο πολλαπλό κανονικό πάτημα πλήκτρων (για παράδειγμα θα πατήσουμε τόσο το υποθετικό πλήκτρο a, το πλήκτρο b και το πλήκτρο c με τιμές 'xx', 'yy' και 'zz' με αυτή τη σειρά) θα πρέπει να έχετε συνεχή (όχι υποχρεωτική) νέες γραμμές όπως αυτή,

00 00 xx yy zz 00 00 00

όταν αφήνετε μόνο το κλειδί b, η έξοδος πρέπει να αλλάξει σε,

00 00 xx 00 zz 00 00 00

και αν πατήσετε το νέο πλήκτρο d με τιμή 'nn' χωρίς να αφήσετε το κλειδί a ή b, η έξοδός σας θα αλλάξει σε,

00 00 xx nn zz 00 00 00

και τέλος να επιστρέψω σε αυτό όταν απελευθερωθεί κάθε κλειδί,

00 00 00 00 00 00 00 00

και τέλος αν πατήσετε είτε Caps Lock, Num Lock είτε Scroll Lock θα πρέπει να πάρετε κάτι τέτοιο με πολλές γραμμές ταυτόχρονα,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Εάν όλα συμβούν εδώ, μπορείτε να συνεχίσετε!

Βήμα 4: Τεχνική επεξήγηση

Τεχνική Επεξήγηση
Τεχνική Επεξήγηση
Τεχνική Επεξήγηση
Τεχνική Επεξήγηση

Αν σας αρέσει μπορείτε να παραλείψετε αυτό το βήμα. Αυτό είναι απλώς μια εξήγηση για τα προηγούμενα αποτελέσματα. Ο πίνακας εξόδου 8 byte που είδατε διαμορφώνεται σύμφωνα με το παραπάνω σχήμα 1. Μπορείτε να μάθετε πολύ περισσότερα για αυτό και επίσης πώς γράφεται το byte κατάστασης των κλειδιών τροποποιητών από αυτό το wiki για USB-HID. Βασικά αυτό που κάνει ο κωδικός μου είναι κάθε φορά που πατάτε ένα νέο κλειδί (το πρωτόκολλο PS/2 αναφέρεται σε αυτό ως "make") περνάει από τα τελευταία 6 byte του πίνακα που χρησιμοποιούνται για κανονικές πιέσεις πλήκτρων και συμπληρώνει το πρώτο βρίσκει κενό byte με το σχετικό 'HID scancode' (Εμφανίζεται όπως στο σχήμα 2 Επίσης, μπορείτε να βρείτε μια πλήρη λίστα από το συνημμένο PDF) για το ληφθέν 'scancode PS/2'. Και τέλος όταν κυκλοφορήσει το σχετικό κλειδί (το πρωτόκολλο PS/2 αναφέρεται σε αυτό ως "break") ο κώδικας θα κυκλώσει τον τρέχοντα πίνακα byte και θα διαγράψει μόνο το σχετικό byte.

Αν ακολουθήσατε μέχρι εδώ και επίσης αν διαβάσετε τη σελίδα wiki θα δείτε ότι υπάρχει ένα μικρό πρόβλημα σε αυτήν τη μέθοδο, κανονικά όταν απελευθερώνεται το κλειδί, στο πρωτόκολλο HID τα υπόλοιπα byte τακτοποιούνται εκ νέου για να απαλλαγούν από τα κενά bytes μεταξύ των υπόλοιπων μη κενών byte. Αλλά για κάποιο λόγο, ανεξάρτητα από τους πολλούς τρόπους που προσπάθησα, δεν κατάφερα να λειτουργήσει όπως έπρεπε χωρίς να καθαρίσω κατά λάθος τα ανεπιθύμητα byte και για τα πατημένα πλήκτρα. Εάν μπορείτε να το βελτιώσετε για να λειτουργήσει, αφήστε ένα σχόλιο. Παρόλο που στο τέλος της ημέρας αυτό το πρόβλημα δεν επηρεάζει τη λειτουργικότητα του πληκτρολογίου, αρκεί το Arduino να καταγράφει ακόμα κάθε πατημένο πλήκτρο ανεξάρτητα από τη σειρά που έχει πατηθεί (Αυτό δεν επηρεάζει τίποτα στην πρακτική χρήση).

Βήμα 5: Μεταφόρτωση του τελικού σκίτσου

Έτσι, πριν ενημερώσετε τελικά το υλικολογισμικό του Atmega8U2 ή 16U2 (UNO Rev3) για να προσδιορίσετε το Arduino μας ως πληκτρολόγιο USB, πρέπει να ανεβάσουμε το Τελικό Σκίτσο. Αφού το ανεβάσετε, αν πάτε στη σειριακή οθόνη θα δείτε ότι εκτυπώνει σκουπίδια με κάθε νέο πλήκτρο πατημένο, αυτό είναι καλός οιωνός ότι όλα λειτουργούν όπως πρέπει και μπορούμε να προχωρήσουμε στο τελικό βήμα. ΝΑΙ !!!

Βήμα 6: Ενημέρωση του υλικολογισμικού

Τέλος, μπορείτε να ενημερώσετε το υλικολογισμικό του Arduino για να το καταχωρίσετε ως πληκτρολόγιο USB. Γι 'αυτό δεν πρόκειται να μπω σε πολλές λεπτομέρειες, καθώς θα γίνει πολύ διδακτικό.

  1. Ακολουθήστε αυτόν τον οδηγό από το arduino.cc σχετικά με την "Ενημέρωση των Atmega8U2 και 16U2 σε Uno ή Mega2560 χρησιμοποιώντας DFU" αλλά αντί για τη χρήση του "Arduino-usbserial-uno.hex" χρησιμοποιήστε το προσαρτημένο "Arduino-πληκτρολόγιο-0.3.hex"
  2. Στο FLIP θυμηθείτε να επιλέξετε τη συσκευή προορισμού ως Atmega8U2 ή 16U2 ανάλογα με εσάς Arduino και, από το μέσο επικοινωνίας, επιλέξτε USB και τέλος Φορτώστε το σωστό εξάγωνο αρχείο πριν επιλέξετε εκτέλεση.
  3. Αν αντιμετωπίσετε σφάλμα προγράμματος οδήγησης, μεταβείτε στη διαχείριση συσκευών των Windows και επιλέξτε για αναζήτηση του άγνωστου προγράμματος οδήγησης μέσα στον κατάλογο εγκατάστασης του FLIP '\ Program Files (x86) Atmel \'
  4. Εάν αντιμετωπίσατε σφάλματα κατά την ενημέρωση του υλικολογισμικού από το FLIP πολλές φορές, κλείστε το FLIP και εκτελέστε τις "Επαναφορά προτιμήσεων" από το μενού "Έναρξη / FLIP \" και, στη συνέχεια, επανεκκινήστε το FLIP και κάντε τα βήματα διαμόρφωσης πριν προσπαθήσετε ξανά, αυτό συνήθως λειτουργεί για μένα.
  5. Εάν θέλετε να επαναφέρετε το Arduino στην αρχική του κατάσταση, απλώς ακολουθήστε τον παραπάνω οδηγό arduino.cc χωρίς να χρησιμοποιήσετε αυτό το εξάγωνο αρχείο.

Βήμα 7: Απολαύστε ……

Απολαμβάνω……
Απολαμβάνω……

Τώρα απολαύστε το νέο πληκτρολόγιο PS/2 σε USB…. ΥΣΤΕΡΟΓΡΑΦΟ. Αυτό το Instructable γράφτηκε πλήρως από ένα εξωτερικό πληκτρολόγιο PS/2 συνδεδεμένο στο φορητό υπολογιστή μου μέσω του Arduino:)

Συνιστάται: