Πώς να φτιάξετε ένα πληκτρολόγιο Arduino HID

Αρχικό κείμενο από τον

Σε αυτό το άρθρο θα εξηγήσουμε πώς μπορείτε να μετατρέψετε ένα 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

Setup of the Arduino

Η βασική ρύθμιση του Arduino για αυτό το παράδειγμα. (Αυτό μπορεί επίσης να γίνει με το Arduino Mega εάν απαιτούνται περισσότερες είσοδοι ακίδων) Σημειώστε ότι χρησιμοποιούμε τα 3.3v του Arduino ως ρεύμα εισόδου των κουμπιών πίεσης στις ψηφιακές ακίδες. Οι αντιστάσεις που χρησιμοποιούνται για αυτό το παράδειγμα είναι αντιστάσεις 1k ohm.

 

Βήμα 2ο: ΚΩΔΙΚΑΣ – Πώς να κωδικοποιήσετε ένα πάτημα  πλήκτρου στο Arduino

Σύνδεσμος βίντεο: https://www.youtube.com/watch?v=j05vj8zRP1o

Βήμα 3: ΚΩΔΙΚΑΣ – Γράψτε ένα buffer πληκτρολογίου

CODE - Write a Keyboard Buffer

Αρχικά προετοιμάζουμε ένα buffer πληκτρολογίου, αυτό απαιτείται για να στείλει το Arduino ένα μητρώο bit ως HID Keyboard.

Βήμα 4ο: ΚΩΔΙΚΑΣ – Ορίστε τις ακίδες για είσοδο στο Arduino

CODE - Define the Pins for Input Into the Arduino

Ορίστε τις ακίδες του Arduino, μπορείτε επίσης να χρησιμοποιήσετε την εντολή
(const int PIN_W = 4;), αλλά προτιμώ τη μέθοδο #define.

Βήμα 5ο: ΚΩΔΙΚΑΣ – Γράψτε τη συνάρτηση εγκαινίασης

CODE - Write the Setup Function

Γράψτε τη συνάρτηση εγκαινίασης, όπως σε κάθε έργο κώδικα Arduino, η ρύθμιση είναι σχεδόν η ίδια, εκτός από το ότι η ρύθμιση του ρυθμού Baud απαιτείται  και η σειριακή επικοινωνία με τη συνάρτηση (Serial.begin (9600)) για την επικοινωνία του Arduino με τον υπολογιστή σας.

Βήμα 6ο: ΚΩΔΙΚΑΣ – Κωδικοποιήσετε μία απελευθέρωση πλήκτρου στο Arduino

CODE - Write a Button Release

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

Βήμα 7ο: ΚΩΔΙΚΑΣ – Κωδικοποιήσετε ένα πάτημα πλήκτρου στο Arduino

CODE - Write a Keypress

Σε αυτό το βήμα γίνεται η λειτουργία 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 – Επιλογή συσκευής

FLIP - Device Selection

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

Βήμα 11ο: Ανεβάστε τον κώδικα Arduino

Upload Your Arduino Code

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

Βήμα 12ο: Arduino σε λειτουργία DFU

Arduino Into DFU Mode

Βραχυκυκλώστε τις 2 ακίδες ICSP2 όπως φαίνεται στην εικόνα

Για να θέσετε το Arduino στη λειτουργία DFU (Ενημέρωση υλικολογισμικού συσκευής), έτσι ώστε το FLIP να έχει πρόσβαση στο υλικολογισμικό στο τσιπ Arduino. Περισσότερες πληροφορίες σε αυτόν τον σύνδεσμο αναφοράς: https: //www.arduino.cc/en/Hacking/DFUProgramming8 …

Βήμα 13ο: FLIP – Πατήστε το εικονίδιο USB στο FLIP και, στη συνέχεια, ανοίξτε

FLIP - Press the USB Icon in FLIP and Then Open

Βήμα 14ο: FLIP – Αναλύστε το FX Firmware HEX

FLIP - Parse the Firmware HEX

 

Φορτώστε το arduino-keyboard.hex στο FLIP. Θα δείτε στο κάτω μέρος USB ON, αυτό σημαίνει ότι το Arduino συνδέεται μέσω της λειτουργίας DFU.

Βήμα 15ο: FLIP – Πατήστε RUN καιόχι Start Application

FLIP - Press RUN Not Start Application

Βήμα 16ο: FLIP – Αποσυνδέστε και επανασυνδέστε το USB

FLIP - Unplug and Replug USB

Θα το δείτε όλο με πράσινο αν δεν κλείσετε το FLIP και επιστρέψτε στο βήμα 12 Arduino σε λειτουργία DFU.

Βήμα 17: Πώς να ελέγξετε εάν το φλας λειτουργούσε.

How to Check If the Flash Worked.

Από εδώ και πέρα ​​το Arduino είναι ένα HID Keyboard Συγχαρητήρια!
Το μόνο πράγμα τώρα είναι ότι το Arduino IDE δεν υποστηρίζει πια το Arduino σας. Για να ελέγξουμε αν λειτουργεί το πληκτρολόγιο HID ανοίγουμε το Σημειωματάριο ή οποιοδήποτε άλλο πρόγραμμα επεξεργασίας κειμένου.

Βήμα 18ο: Θέλετε το Arduino σας πίσω 🙁

Μπορείτε να το κάνετε αυτό επαναλαμβάνοντας τα βήματα μετά το 12ο Βήμα (Arduino σε λειτουργία DFU), μόνο τότε επέλεξε το αρχείο Arduino-usbserial-uno.hex αντί για arduino-keyboard.hex