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

Arduino Keyboard Joystick Extender Box and Sound Controller Thing Using Deej: 8 βήματα
Arduino Keyboard Joystick Extender Box and Sound Controller Thing Using Deej: 8 βήματα

Βίντεο: Arduino Keyboard Joystick Extender Box and Sound Controller Thing Using Deej: 8 βήματα

Βίντεο: Arduino Keyboard Joystick Extender Box and Sound Controller Thing Using Deej: 8 βήματα
Βίντεο: Arduino Leanardo Project || USB Keyboard || HID Device || #Shorts || #ShortVideo | #TrendingVideo 2024, Ιούλιος
Anonim
Arduino Keyboard Joystick Extender Box and Sound Controller Thing Using Deej
Arduino Keyboard Joystick Extender Box and Sound Controller Thing Using Deej

Έργα Tinkercad »

Γιατί

Εδώ και λίγο καιρό ήθελα να προσθέσω ένα μικρό joystick στο πληκτρολόγιό μου για τον έλεγχο στοιχείων διεπαφής ή άλλες μικρότερες εργασίες σε παιχνίδια και προσομοιωτές (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons, κ.λπ.).

Επίσης, για το Elite: Dangerous, αγωνίζομαι με τη μίξη επιπέδων έντασης από εξωτερικό ήχο (η ενσωματωμένη μουσική, ενώ είναι καλή, γίνεται επαναλαμβανόμενη μετά από πολλές ώρες στο μαύρο), ήχος εντός παιχνιδιού και υποστήριξη εξωτερικού voicepack.

Ο ενσωματωμένος αναμίκτης πηγής των Windows είναι «εντάξει», αλλά είναι ένας πόνος να αλλάζετε οθόνες και ρυθμιστικά ελέγχου ποντικιού εν μέσω παιχνιδιού. Η ύπαρξη ενός εκτεταμένου πλαισίου ελέγχου πληκτρολογίου φάνηκε να είναι ο δρόμος. Η Deej είναι η λύση που βρήκα.

Πως

Πρόσφατα έμαθα για το Arduino και συνάντησα το έργο deej στο reddit. Φαινόταν ότι αυτό θα έλυνε και τα δύο αυτά προβλήματα σε ένα εύχρηστο πακέτο. Και θα με άφηνε να σχεδιάσω και να εκτυπώσω μια έξυπνη τρισδιάστατη θήκη.

Τι είναι το deej;

(από τον ιστότοπο) το deej είναι ένα ** μίξερ όγκου υλικού ανοιχτού κώδικα ** για υπολογιστές Windows και Linux. Σας επιτρέπει να χρησιμοποιείτε ρυθμιστικά πραγματικής ζωής (σαν DJ!) Για να ελέγχετε απρόσκοπτα την ένταση των διαφορετικών εφαρμογών ** (όπως το πρόγραμμα αναπαραγωγής μουσικής, το παιχνίδι που παίζετε και τη συνεδρία φωνητικής συνομιλίας) χωρίς να χρειάζεται να σταματήσετε κάνεις.

Η δική μου έκδοση

Για να κρατήσω το κουτί μικρό, επέλεξα κουμπιά (περιστροφικό γραμμικό ποτενσιόμετρο (γλάστρες = αντιστάσεις)) και όχι ρυθμιστικά. Λειτουργικά λειτουργούν το ίδιο. Τα τρέχοντα και δημοφιλή σχέδια deej δεν περιλαμβάνουν χειριστήριο, οπότε αυτό θα είναι λίγο υβριδικό σχεδιασμού. Διαφορετικά, είναι μια αρκετά απλή κατασκευή.

Ο Deej θα συνεργαστεί με Arduino Nano, Pro Micro ή Uno, αλλά τα Nano και Pro Micro είναι «επίσημα προτεινόμενα» από τον προγραμματιστή. Επέλεξα το Arduino Pro Micro επειδή ήθελα το joystick και η Arduino Joystick Library το υποστηρίζει. Μπορεί επίσης να χρησιμοποιήσω τη βιβλιοθήκη πληκτρολογίου Arduino όταν θέλω να χρησιμοποιήσω τη λειτουργία σίγασης του πληκτρολογίου πολυμέσων (και όχι τη «απαλή σίγαση») με το κουμπί του χειριστηρίου, αλλά αυτό είναι πιο κάτω.

Βήμα 1: Προμήθειες

Προμήθειες
Προμήθειες
Προμήθειες
Προμήθειες
Προμήθειες
Προμήθειες

Το κιβώτιο

Λήψη των αρχείων STL (σχεδιασμένα στο Tinkercad):

  • Περιεχόμενα αρχείων στην Prusa (https://www.prusaprinters.org/)
  • Thingiverse (σύντομα)

Το υλικό (μονάδα παραγωγής)

  • 1x Arduino Pro Micro
  • 4x 10k περιστροφικό (πόμολο) Ποτενσιόμετρα (όχι περιστροφικοί ελεγκτές, χρησιμοποιήστε γλάστρες)
  • 1x Joystick Arduino KY-023
  • 5ft καλώδιο δικτύου cat5 scrap
  • 1x καλώδιο micro USB A σε USB B (το USB A είναι ο μεγάλος τετραγωνικός συνδετήρας, το USB B micro είναι αυτό που υπάρχει στο Arduino Pro Micro)
  • Κόκκινο LED 1x 5mm
  • 1x αντίσταση 220 ohm

Είχα μερικά επιπλέον μέρη γύρω, οπότε σκέφτηκα ότι θα χτίσω μια μονάδα ανάπτυξης για να δοκιμάσω τα πράγματα. Η απλή σύνδεση των πραγμάτων σε ένα breadboard διευκόλυνε την απεικόνιση του τελικού.

  • 1x Arduino Pro Micro
  • 4x 10k περιστροφικό (πόμολο) Ποτενσιόμετρα (όχι περιστροφικοί ελεγκτές, χρησιμοποιήστε γλάστρες)
  • 1x στιγμιαίο διακόπτη κουμπιού (διακόπτης σκληρής επαναφοράς)
  • 1x καλώδιο micro USB A σε USB B (το USB A είναι ο μεγάλος τετραγωνικός συνδετήρας, το USB B micro είναι αυτό που υπάρχει στο Arduino Pro Micro)
  • διάφορα καλώδια άλτη
  • σανίδα ψωμιού
  • Κόκκινο LED 1x 5mm
  • 1x αντίσταση 220 ohm

Βήμα 2: Το περίβλημα

Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα
Το περίβλημα

Ο σχεδιασμός

Μου άρεσαν μερικά από τα άλλα σχέδια που παρουσιάστηκαν στη γκαλερί της κοινότητας deej, οπότε βασίστηκα στα χαρακτηριστικά που μου άρεσαν:

  • Εύκολος σχεδιασμός και εκτύπωση
  • Δεν εμποδίζω τα άλλα περιφερειακά της επιφάνειας εργασίας μου
  • Μη χρησιμοποιείτε βίδες ή συνδετήρες για να στερεώσετε το περίβλημα
  • Παρόμοια αισθητική σχεδίασης με το πληκτρολόγιο

Σχεδίασα και εκτύπωσα δύο πρωτότυπα πριν καταλήξω σε αυτό το τελικό σχέδιο. Μου αρέσει να έχω μια φυσική έκδοση για να παίξω στο χώρο που την χρησιμοποιώ καθώς μου δίνει μια καλύτερη αίσθηση του τρόπου λειτουργίας του τελικού αντικειμένου.

Ξεκίνησα σύντομα να σχεδιάζω στο Fusion360, αλλά δεν το ξέρω όσο το Tinkercad άλλαξα και δούλεψα εκεί.

Δεδομένου ότι ήθελα ένα σχέδιο χωρίς βίδες, δημιούργησα ένα κουτί φωλιάσματος. Το πρώτο πρωτότυπο είχε ένα λεπτό καπάκι και ένα βαθύ κουτί για τα πάντα. Το δεύτερο σχέδιο το αντικατέστησε με ένα βαθύ καπάκι και ένα ρηχό κάτω κουτί. Έπρεπε μόνο να κρατήσει το Arduino Pro Mini, οπότε πραγματικά δεν χρειαζόταν να είναι μεγάλο. Επίσης ενσωματώθηκαν τα ανάγλυφα εικονίδια.

Το τρίτο σχέδιο άλλαξε το μέγεθος για να ταιριάζει στο χώρο δίπλα στο πληκτρολόγιό μου.

Η εκτύπωση

Εκτύπωσα το κουτί σε PLA, προγραμματίζοντας μια ανταλλαγή νημάτων / στρωμάτων από Μαύρο σε Κόκκινο για το καπάκι όπου τα εικονίδια θα άρχιζαν να είναι ορατά και πάλι πίσω στο Μαύρο για το υπόλοιπο του καπακιού.

Ενα πρόβλημα

Σε όλο αυτό, η βάση του χειριστηρίου ήταν πρόβλημα. Ακόμα και στον τρίτο σχεδιασμό, το ραβδί προσκρούει στις βάσεις σε ένα μέρος. Η επόμενη επανάληψη θα έχει καλύτερες αποστάσεις. Θα μπορούσα να έχω δουλέψει περισσότερο στο σχεδιασμό αλλά ήθελα να περάσω στην επόμενη φάση, την εγκατάσταση.

Βήμα 3: Το κύκλωμα

Το Κύκλωμα
Το Κύκλωμα
Το Κύκλωμα
Το Κύκλωμα
Το Κύκλωμα
Το Κύκλωμα

Η χειρότερη δουλειά καλωδίωσης ποτέ

Εντάξει, αυτό είναι το πρώτο μου πλήρες έργο Arduino. Ναι, έχω κάνει πράγματα σε σανίδες παλαιού τύπου και χρησιμοποιώ ένα για να δημιουργήσω την έκδοση ανάπτυξης αυτού, αλλά όσον αφορά την πραγματική κατασκευή και συναρμολόγηση, αυτό είναι το πρώτο μου. Οπότε η καλωδίωση μου μοιάζει χάλια. Εκεί, αυτό είναι εκτός δρόμου:)

Ενημέρωση: Έκτοτε έχω κατασκευάσει ένα άλλο και η καλωδίωση είναι πολύ πιο ωραία εκεί. Δείτε τις εικόνες:)

Μονάδα παραγωγής - Τι συμβαίνει που

Το Arduino Pro Micro είναι ένας μικροσκοπικός πίνακας και θα χωρέσει στο καλούπι στη βάση. Τα πόμολα και το χειριστήριο ταιριάζουν στις αντίστοιχες οπές τους στο καπάκι. Αλλά μην τοποθετείτε τίποτα μέχρι να κερδίσετε τον ανταγωνισμό συγκόλλησης.

Καλωδίωση

Δεν είχα κανένα κατάλληλο καλώδιο κυκλώματος, αλλά είχα ένα υπόλοιπο ρολό καλωδίου δικτύου συμπαγούς πυρήνα cat5, οπότε αυτό χρησιμοποίησα. Είναι λίγο πιο άκαμπτο και ίσως πιο εύθραυστο από το καλώδιο κυκλώματος, αλλά λειτουργεί.

Τοποθετώντας τα εξαρτήματα σε μια προσέγγιση της τελικής θέσης τοποθέτησής τους, εκτίμησα την απόσταση, για κάθε σύρμα, πρόσθεσα λίγο περισσότερο για χαλάρωση κ.λπ., έπειτα έκοψα και έκοψα το σύρμα. Άφησα πολύ χαλάρωση.

Αναφερόμενος στο διάγραμμα καλωδίωσης, έτρεξα το κοινό έδαφος (Μαύρο) και το VCC (Κόκκινο) στα πόμολα και το χειριστήριο όπου υποδεικνύεται. Δεδομένου ότι το καλώδιο δικτύου δεν έρχεται σε αυτά τα χρώματα, απλώς επέλεξα ένα χρώμα και κράτησα την καλωδίωσή μου συνεπή με τη λειτουργία.

Το ατομικό δοχείο. οι αναλογικές γραμμές (κίτρινες) έτρεχαν στις ακίδες A0 - A3. Οι γραμμές Joystick (Πορτοκαλί), επίσης αναλογικές, έτρεχαν στις ακίδες εισόδου/εξόδου 8 και 9. Αυτές θα πρέπει να ορίζονται ως Αναλογικές στον κωδικό Arduino ως A8 και A9.

Ο πείρος του διακόπτη χειριστηρίου (Μπλε) έτρεξε στον πείρο 7. Αυτό θα είναι μια ψηφιακή ακίδα στον κώδικα.

Μόνωση

Δεδομένου ότι αυτό το άκαμπτο σύρμα πρόκειται να γεμίσει σε ένα μικρό χώρο, επέλεξα να μονώσω τις συνδέσεις συγκόλλησης με ένα υγιές κουτάκι κόλλας θερμής τήξης. Στη συνέχεια, τα έβαλε όλα στη θέση τους και έκαναν μια απλή δοκιμή στον πίνακα και τα δοχεία χρησιμοποιώντας την έκδοση του κώδικα Arduino Παράδειγμα αναλογικής εισαγωγής - τροποποιήθηκε για να διαβάσει όλα τα δοχεία.

Δεύτερη έκδοση

Οι δύο τελευταίες εικόνες παραπάνω δείχνουν το επόμενο πλαίσιο που χτίζω. Αυτό θα έχει 5 κουμπιά και ένα στιγμιαίο κουμπί για τη σίγαση. Χωρίς χειριστήριο. Ameδιου μεγέθους κουτί.

Βήμα 4: Ολοκληρώνοντας το υλικό

Ολοκληρώνοντας το υλικό
Ολοκληρώνοντας το υλικό

Μέχρι να εγκαταστήσω το Joystick, συνειδητοποίησα ότι δεν υπήρχε μεγάλη απόσταση μεταξύ του πίνακα και των κεφαλίδων καρφιτσών που είχαν απομείνει στο Pro Micro.

Μετά από λίγο προσεκτική κάμψη των επικεφαλίδων του πείρου και μια επανάληψη κόλλας θερμής τήξης (για μόνωση), το περίβλημα έκλεισε σωστά.

Η εγκατάσταση των δοχείων έγινε χωρίς πρόβλημα.

Και πάλι με τα καλώδια

Τα καλώδια συμπαγούς πυρήνα είναι λίγο άκαμπτα και μπορεί να είναι εύθραυστα αν λυγίσουν πάρα πολλές φορές, οπότε διπλώστε τα προσεκτικά (χωρίς αιχμηρές γωνίες) στον διαθέσιμο χώρο. Μερικά από τα δικά μου ήταν πολύ μακριά και απαιτούσαν λίγο επιπλέον δίπλωμα.

Μόλις όλα μπουν στη θέση τους, απλώς τοποθετήστε τη βάση στην κορυφή και θα πρέπει να τελειώσετε με το υλικό….

Αλλά περιμένετε, υπάρχουν περισσότερα

Φυσικά, μετά από μερικές εβδομάδες χρήσης, αποφάσισα ότι χρειαζόμουν έναν δείκτη για να με ενημερώσει ποια είναι η κατάσταση της λειτουργίας MUTE με μαλακό κωδικό.

Αφού επεξεργάστηκα τον κώδικα για να προσθέσω τη λειτουργικότητα των LED (δείτε την επόμενη ενότητα), κόλλησα γρήγορα το LED / τα καλώδια / την αντίσταση και τα συνδέσα στην πλακέτα.

Πέρασα περισσότερο χρόνο για να ανοίξω την τρύπα στην κορυφή της θήκης καθώς δεν ήθελα να χαλάσω το επάνω φινίρισμα. Σημάδεψα ένα κεντρικό σημείο, το τρύπησα, έπειτα έστρεψα με το χέρι ένα τρυπάνι για να κάνω την τρύπα.

Πρόσθετη προσεκτική κατάθεση καθάρισε την τρύπα και εξασφάλισε ένα ωραίο σφιχτό πάτημα για να εξασφαλίσει ότι το LED δεν προεξέχει πολύ πάνω από την επάνω επιφάνεια.

Βήμα 5: Το Λογισμικό

Το λογισμικό
Το λογισμικό
Το λογισμικό
Το λογισμικό
Το λογισμικό
Το λογισμικό

ΣΦΑΙΡΙΚΗ ΕΙΚΟΝΑ

Έτσι, αυτή είναι μια διαδικασία δύο μερών.

  1. Μάθετε και κατανοήστε πώς λειτουργεί το Deej και επεξεργαστείτε το αρχείο Config.yaml
  2. Επεξεργαστείτε τον κώδικα Arduino για να ταιριάζει με το υλικό και τις επιθυμητές δυνατότητες
  3. Αποκτήστε τη βιβλιοθήκη Arduino Joystick

Στην περίπτωσή μου, ήθελα αυτές τις δυνατότητες:

  • Κουμπιά που ελέγχουν τα επίπεδα (μικρόφωνο και έξοδος)
  • Διακόπτης σίγασης
  • Το joystick 2 αξόνων αναγνωρίζεται από τα Windows για χρήση εφαρμογών

Επίπεδα

Ο Deej φροντίζει λίγο πολύ το πρώτο σημείο καθώς έρχεται. Δεν τροποποίησα αυτήν τη λειτουργικότητα

Διακόπτης σίγασης

Είχα αποφασίσει από νωρίς ότι θα χρησιμοποιούσα το πάτημα/διακόπτη στο Joystick ως λειτουργικό κουμπί σίγασης.

Όταν εξετάζετε τον κώδικα, θα δείτε ότι έχω επιλέξει (αρχικά) να χρησιμοποιήσω μια «απαλή» σίγαση - όταν πατήσετε το κουμπί, η ένταση του MIC μειώνεται στο μηδέν (και η λυχνία LED ανάβει). Όταν πατηθεί ξανά, η ένταση του MIC επιστρέφει στην προηγούμενη ρύθμιση και η λυχνία LED σβήνει.

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

Υλοποίηση Joystick

Αυτό απαιτεί τη χρήση της βιβλιοθήκης Arduino Joystick για να διασφαλιστεί ότι το joystick αναγνωρίζεται ως συσκευή HID από τα Windows και κατά συνέπεια από οποιοδήποτε παιχνίδι/εφαρμογή.

Είμαι λίγο ασήμαντος όσον αφορά την κωδικοποίηση και βρήκα την τεκμηρίωση της βιβλιοθήκης Joystick λίγο αραιή στην πραγματική πλευρά της εφαρμογής - αλλά λίγο εστιασμένο googling με οδήγησε σε άλλα παραδείγματα που με βοήθησαν να καταλάβω τι συμβαίνει. Ελέγξτε την ενότητα πόρων στο τέλος για λεπτομέρειες.

Το μόνο που έπρεπε να κάνω ήταν να προσδιορίσω τις ακίδες X/Y, να διαβάσω την κατάστασή τους και να το στείλω στη βιβλιοθήκη του Joystick. Το Arduino εμφανίστηκε ως Leonardo στα Windows και διαμορφώθηκε σωστά ως συσκευή Joystick.

Wasμουν σε θέση να το εγκαταστήσω στο Elite Dangerous, παράλληλα με την υπάρχουσα ρύθμιση HOTAS και να κάνω το Joystick να ελέγχει σωστά τα πράγματα και να μην έρχεται σε σύγκρουση με το HOTAS. Λειτουργεί επίσης καλά στο Star Wars: Squadrons - το έχω θέσει ως γρήγορη εναλλαγή για τη ρύθμιση των ασπίδων ενώ βρίσκεστε σε μάχη.

Τα αρχεία που λειτουργούν με τη ρύθμιση του Joystick

Έχω ανεβάσει τα τρέχοντα αρχεία μου (Οκτώβριος 2020) στο Codepile.

  • Κωδικός Arduino (αρχείο.ino)
  • Deej config.yaml

Βήμα 6: Τέλος

Τέλος
Τέλος

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

Βήμα 7: Πρόσθετο.. ντουμ.. ντουμ

Πρόσθετο.. ντουμ.. ντουμ
Πρόσθετο.. ντουμ.. ντουμ

VLC - αυτό το φοβερό πρόγραμμα αναπαραγωγής ήχου και βίντεο έχει μια μικρή περίεργη κατάσταση, όπου το επίπεδο έντασης, όταν ελέγχεται εξωτερικά, πηδά από 0% σε 27%. Αυτό δεν συμβαίνει όταν προσαρμόζετε το επίπεδο χρησιμοποιώντας τον έλεγχο έντασης διεπαφής εντός εφαρμογής, μόνο με εξωτερικά στοιχεία ελέγχου όπως το Deej.

Ο προγραμματιστής Deej βρήκε γρήγορα μια λύση-in-VLC που κάνει τη δουλειά, δείτε την παραπάνω εικόνα:

"… εάν θέλετε να απενεργοποιήσετε αυτήν τη συμπεριφορά" Παρακολούθηση ", μπορείτε να το κάνετε αλλάζοντας τη μονάδα εξόδου ήχου του VLC. Χρησιμοποίησα το DirectX στις προσπάθειές μου εδώ. Θα χρειαστεί να επανεκκινήσετε το VLC για να εφαρμοστεί η αλλαγή. (Θα συνεχίσετε να έχετε μια συνεδρία ήχου στα Windows και να μπορείτε να το ελέγξετε μέσω deej, αυτό θα αποτρέψει την κίνηση της γραμμής έντασης VLC μαζί του)"

Βήμα 8: Πρόσθετοι πόροι

Επιπρόσθετοι πόροι
Επιπρόσθετοι πόροι

Βρέθηκε μέσω του ισχυρού Goog, που απαριθμείται χωρίς ιδιαίτερη σειρά…

  • Βιβλιοθήκη Arduino Joystick (v2) - απαιτείται για την ενσωμάτωση του joystick
  • Οδηγός σύνδεσης Sparkfun Pro Micro - καλός πόρος για αυτό το Arduino
  • deej - το λογισμικό που κινεί τα κουμπιά
  • Τύποι σύνδεσης USB - ποιος ήξερε ότι υπήρχαν τόσες πολλές παραλλαγές;
  • Arduino Pro Micro Analog Pinouts
  • Arduino Leonardo Gaming Joystick - Το Leonardo είναι παρόμοιο με το Pro Micro, μόνο μεγαλύτερο
  • Η θύρα Arduino Pro Micro (Κλώνος) δεν εντοπίστηκε (Λύση) - όταν τοποθετείτε το Pro Micro (το έκανα)
  • Arduino Leonardo/Micro ως Game Controller/Joystick
  • Παράδειγμα χρήσης κλειδιού πολυμέσων για σίγαση - χρησιμοποιώντας τη βιβλιοθήκη του έργου HID
  • Παράδειγμα κώδικα βιβλιοθήκης HID Project για παύση / αναπαραγωγή πολυμέσων
  • Ένα άλλο παράδειγμα κώδικα που δείχνει τον ελεγκτή gamepad.
  • ArduinoGamingController_updated - καλή περιγραφή κώδικα για τη χρήση της βιβλιοθήκης Joystick
  • Υπολογιστής LED Resistor thingie - για να μάθετε πόσο μεγάλη αντίσταση χρειάζεστε στο έργο σας
  • Βιβλιοθήκη εικονιδίων - flaticon.com - πηγή των εικόνων που χρησιμοποιούνται πάνω από τα κουμπιά
  • Ένας άλλος αποκωδικοποιητής χρώματος Resistor - κάντε κλικ σε ένα χρώμα και βιόλα!

Συνιστάται: