Αρχικό κείμενο από τον Eward Hage
Σε αυτό το άρθρο θα εξηγήσουμε πώς μπορείτε να μετατρέψετε ένα Arduino σε συσκευή πληκτρολογίου HID.
Αυτό γίνεται με την ενημέρωση του υλικολογισμικού (firmware) στο τσιπ επικοινωνίας του Arduino με ένα λογισμικό της ATMEL, το FLIP. Το ωραίο σε αυτό το κόλπο είναι ότι μπορείτε να φτιάξετε το δικό σας χειριστήριο παιχνιδιών ή μία μακροεντολή με τη δύναμη της μεθόδου κωδικοποίησης Arduino, οπότε η δυνατότητες είναι ατελείωτες για υπέροχη πρωτότυπα.
Όλα τα απαραίτητα αρχεία υπάρχουν στο νέφος για λήψη (Google Drive), στον σύνδεσμο: https: //drive.google.com/open? id = 1jfOJmFf9C6QCb8I _…
Έχω επίσης δημιουργήσει ένα βίντεο YouTube για το τμήμα του προγραμματρισμού.
Υλικά
- Arduino UNO ή Mega
- 4 κουμπιά
- 4 αντιστάσεις 1k ohm
- Καλώδια βραχυκύκλωσης
Βήμα 1ο: Ρύθμιση του Arduino
Η βασική ρύθμιση του Arduino για αυτό το παράδειγμα. (Αυτό μπορεί επίσης να γίνει με το Arduino Mega εάν απαιτούνται περισσότερες είσοδοι ακίδων) Σημειώστε ότι χρησιμοποιούμε τα 3.3v του Arduino ως ρεύμα εισόδου των κουμπιών πίεσης στις ψηφιακές ακίδες. Οι αντιστάσεις που χρησιμοποιούνται για αυτό το παράδειγμα είναι αντιστάσεις 1k ohm.
Βήμα 2ο: ΚΩΔΙΚΑΣ – Πώς να κωδικοποιήσετε ένα πάτημα πλήκτρου στο Arduino
Σύνδεσμος βίντεο: https://www.youtube.com/watch?v=j05vj8zRP1o
Βήμα 3: ΚΩΔΙΚΑΣ – Γράψτε ένα buffer πληκτρολογίου

Αρχικά προετοιμάζουμε ένα buffer πληκτρολογίου, αυτό απαιτείται για να στείλει το Arduino ένα μητρώο bit ως HID Keyboard.
Βήμα 4ο: ΚΩΔΙΚΑΣ – Ορίστε τις ακίδες για είσοδο στο Arduino

Ορίστε τις ακίδες του Arduino, μπορείτε επίσης να χρησιμοποιήσετε την εντολή
(const int PIN_W = 4;), αλλά προτιμώ τη μέθοδο #define.
Βήμα 5ο: ΚΩΔΙΚΑΣ – Γράψτε τη συνάρτηση εγκαινίασης

Γράψτε τη συνάρτηση εγκαινίασης, όπως σε κάθε έργο κώδικα Arduino, η ρύθμιση είναι σχεδόν η ίδια, εκτός από το ότι η ρύθμιση του ρυθμού Baud απαιτείται και η σειριακή επικοινωνία με τη συνάρτηση (Serial.begin (9600)) για την επικοινωνία του Arduino με τον υπολογιστή σας.
Βήμα 6ο: ΚΩΔΙΚΑΣ – Κωδικοποιήσετε μία απελευθέρωση πλήκτρου στο Arduino

Γράψτε μια μέθοδο προσωρινής αποθήκευσης για να στείλετε ένα byte όταν απελευθερωθεί το πλήκτρο, αυτό το βήμα απαιτείται για να τερματιστεί η ροή δεδομένων του πληκτρολογίου HID. Για αυτό το παράδειγμα, στέλνουμε τον κωδικό κλειδιού μέσω buf [2], οπότε πρέπει να τον επαναφέρουμε στο 0 όταν απελευθερωθεί το πλήκτρο στο Arduino. Σημείωση: Χωρίς αυτό το βήμα, το πληκτρολόγιο HID μπορεί να αρχίσει να στέλνει εισόδους κουμπιών, αλλά δεν θα σταματήσει ποτέ να στέλνει bit μέχρι να αποσυνδεθεί το USB HID πληκτρολογίου (Arduino).
Βήμα 7ο: ΚΩΔΙΚΑΣ – Κωδικοποιήσετε ένα πάτημα πλήκτρου στο Arduino

Σε αυτό το βήμα γίνεται η λειτουργία Loop () για ενημέρωση κάθε κύκλου που περνάει το Arduino ελέγχοντας αν πατηθεί ένα κουμπί.
Βήμα 8ο: Πλήρης κωδικός αναφοράς
uint8_t buf [8] = {0}; // Μνήμη αναφοράς πληκτρολογίου
#define PIN_W 4 // Καρφίτσα για w
#define PIN_A 5 // Pin for a
#define PIN_S 6 // Pin for s
#define PIN_D 7 // Καρφίτσα για d
void setup () {
Serial.begin (9600); // Ρύθμιση σειριακής επικοινωνίας
// Ορίστε pinmode των ακίδων εισαγωγής
pinMode (PIN_W, INPUT);
pinMode (PIN_A, INPUT);
pinMode (PIN_S, INPUT);
pinMode (PIN_D, INPUT);
}
void loop () {
// Όταν πατηθεί το κουμπί που αντιπροσωπεύει το W
εάν (digitalRead (PIN_W) == HIGH) {
buf [2] = 26; // Κωδικός κλειδιού W
Serial.write (buf, 8); // Αποστολή πάτημα πλήκτρων
releaseKey ();
}
// Όταν πατηθεί το κουμπί που αντιπροσωπεύει το Α
εάν (digitalRead (PIN_A) == HIGH) {buf [2] = 4; // Ένας κωδικός -κλειδί
Serial.write (buf, 8); // Αποστολή πάτημα πλήκτρων
releaseKey ();
}
// Όταν πατηθεί το κουμπί που αντιπροσωπεύει το S
εάν (digitalRead (PIN_S) == HIGH) {buf [2] = 22; // Κωδικός κλειδιού S
Serial.write (buf, 8); // Αποστολή πάτημα πλήκτρων
releaseKey ();
}
// Όταν πατηθεί το κουμπί που αντιπροσωπεύει το D
εάν (digitalRead (PIN_D) == HIGH) {buf [2] = 7; // Κωδικός κλειδιού D
Serial.write (buf, 8); // Αποστολή πάτημα πλήκτρων
releaseKey ();
}
}
// Λειτουργία για απελευθέρωση κλειδιού
void releaseKey () {
buf [0] = 0;
buf [2] = 0;
Serial.write (buf, 8); // Αποστολή κλειδιού έκδοσης
}
Βήμα 9ο: Εγκατάσταση του Flip
Για να εγκαταστήσετε το FLIP, εγκαταστήστε το JRE – Flip Installer – 3.4.7.112.exe που παρέχεται στο σύνδεσμο του Google Drive
Σημείωση: Κατά την εκκίνηση εμφανίζεται το σφάλμα “AtLibUsbDfu.dll not found” πρέπει να εγκαταστήσετε ένα πρόγραμμα οδήγησης.
Ακολουθεί μια λύση που δημιουργήθηκε από τον σύνδεσμο MDGrein: https://www.youtube.com/watch?v=KQ9BjKjGnIc
Βήμα 10ο: FLIP – Επιλογή συσκευής

Πατήστε το κουμπί επισημασμένου τσιπ και, στη συνέχεια, επιλέξτε ATmega16u2 και, στη συνέχεια, το κουμπί OK. Καθώς αυτό είναι το chipset για το Arduino Uno R3 και το Arduino Mega R3.
Και τώρα τελειώσατε με τη ρύθμιση του flip και μπορούμε να πάμε στο Επόμενο βήμα του Flashing του Arduino.
Βήμα 11ο: Ανεβάστε τον κώδικα Arduino

Θα λάβετε ένα μήνυμα στο κάτω μέρος από το Arduino IDE λέγοντας ολοκληρωμένη μεταφόρτωση
Σημείωση: εάν η μεταφόρτωση αποτύχει
Ελέγξτε 1 θύρα COM στην ενότητα Εργαλεία> θύρα εάν δεν είναι διαθέσιμη, αποσυνδέστε και επανασυνδέστε το USB ή ελέγξτε τη διαχείριση συσκευών. Ελέγξτε το 2 εάν έχετε επιλέξει τη σωστή πλακέτα στα Εργαλεία> πίνακας.
Βήμα 12ο: Arduino σε λειτουργία DFU

Βραχυκυκλώστε τις 2 ακίδες ICSP2 όπως φαίνεται στην εικόνα
Για να θέσετε το Arduino στη λειτουργία DFU (Ενημέρωση υλικολογισμικού συσκευής), έτσι ώστε το FLIP να έχει πρόσβαση στο υλικολογισμικό στο τσιπ Arduino. Περισσότερες πληροφορίες σε αυτόν τον σύνδεσμο αναφοράς: https: //www.arduino.cc/en/Hacking/DFUProgramming8 …
Βήμα 13ο: FLIP – Πατήστε το εικονίδιο USB στο FLIP και, στη συνέχεια, ανοίξτε
Βήμα 14ο: FLIP – Αναλύστε το FX Firmware HEX
Φορτώστε το arduino-keyboard.hex στο FLIP. Θα δείτε στο κάτω μέρος USB ON, αυτό σημαίνει ότι το Arduino συνδέεται μέσω της λειτουργίας DFU.
Βήμα 15ο: FLIP – Πατήστε RUN καιόχι Start Application
Βήμα 16ο: FLIP – Αποσυνδέστε και επανασυνδέστε το USB

Θα το δείτε όλο με πράσινο αν δεν κλείσετε το FLIP και επιστρέψτε στο βήμα 12 Arduino σε λειτουργία DFU.
Βήμα 17: Πώς να ελέγξετε εάν το φλας λειτουργούσε.

Από εδώ και πέρα το Arduino είναι ένα HID Keyboard Συγχαρητήρια!
Το μόνο πράγμα τώρα είναι ότι το Arduino IDE δεν υποστηρίζει πια το Arduino σας. Για να ελέγξουμε αν λειτουργεί το πληκτρολόγιο HID ανοίγουμε το Σημειωματάριο ή οποιοδήποτε άλλο πρόγραμμα επεξεργασίας κειμένου.
Βήμα 18ο: Θέλετε το Arduino σας πίσω 🙁
Μπορείτε να το κάνετε αυτό επαναλαμβάνοντας τα βήματα μετά το 12ο Βήμα (Arduino σε λειτουργία DFU), μόνο τότε επέλεξε το αρχείο Arduino-usbserial-uno.hex αντί για arduino-keyboard.hex