Ασύρματος έλεγχος κινητήρων Lego με το Steam Controller

Ασύρματος έλεγχος κινητήρων Lego με το Steam Controller

Όταν ήμουν νέος, πάντα ήθελα να έχω σετ techno Lego για να φτιάχνω ωραία πράγματα. Αυτόνομα τανκς με περιστρεφόμενους πυργίσκους που πυροδοτούν τούβλα Lego. Αλλά τότε δεν είχα τέτοιο σετ.

Και δεν υπήρχαν καν κανονικά τουβλάκια Lego. Είχα μόνο έναν φίλο του οποίου ο αδερφός είχε όλα αυτά τα ακριβά παιχνίδια.

Και τώρα έχω έναν γιο αυτής της ηλικίας. Και φτιάχνει τανκς που ... βλακωδώς μπροστά μέχρι να πέσουν στον τοίχο 🙂

Και τώρα, ήρθε η ώρα για το ESP32 και τη μαγεία του κολλητηριού - ας συναρμολογήσουμε το κατάλληλο τηλεχειριστήριο για αυτούς!

Όχι, φυσικά ξέρω για την ύπαρξη τέτοιων τηλεχειριστηρίων. Αλλά κανένα από αυτά δεν μου ταιριάζει απόλυτα. Είναι είτε υπέρυθρες, με τεχνολογία της δεκαετίας του '80, είτε πολύ μεγάλα. Ή ακριβά. Και το πιο σημαντικό, δεν θα μπορώ να πω στον γιο μου για κανένα από αυτά: "Το έκανα ειδικά για σένα!"

Ας φτιάξουμε λοιπόν ένα νέο, βελτιωμένο τηλεχειριστήριο για να κυβερνά τους πάντες!

Ασύρματος έλεγχος κινητήρων Lego με το Steam Controller

Συστατικά:

  • ESP32-WROOM-32D | WiFi, BLE και επεξεργαστής με I/O - αρκετά για τον έλεγχο δύο κινητήρες и LED.
  • DRV8833 | διπλή γέφυρα H με αρκετή ισχύ για τους κινητήρες.
  • TPS62162 | πτώση τάσης στα 17V και επίσης για διασκέδαση κατά τη συγκόλληση της θήκης WSON-8 2x2mm
  • CP2104 | για προγραμματισμό ESP32
  • Συνδέσεις για τη σύνδεση κινητήρων και διόδων. Κόψτε τα καλώδια και κολλήστε τα στο κάτω μέρος και κολλήστε το σύνδεσμο Lego από πάνω.

Όλα αυτά θα τοποθετηθούν σε έναν μάλλον μικρό πίνακα - εδώ είναι η εμφάνισή του στο πρόγραμμα επεξεργασίας EasyEDA:

Ασύρματος έλεγχος κινητήρων Lego με το Steam Controller

Το καλώδιο, το οποίο είναι ορατό στη φωτογραφία τίτλου, χρειάζεται όχι για τη διόρθωση ορισμένων σφαλμάτων, αλλά για την παροχή ρεύματος από USB. Μπορεί να μην είναι αρκετό για τον κινητήρα, αλλά, δυστυχώς, επαφές από την Κίνα δεν έχουν έρθει ακόμα σε μένα. Επομένως, πρώτα ελέγχω τη λειτουργία των LED. Για ομορφιά στη φωτογραφία, απλά έβαλα το φις από το μοτέρ στην πλακέτα.

Η έκδοση 1.1 της πλακέτας μου (σε αντίθεση με την έκδοση 1.2 ήδη στο EasyEDA) δεν είχε LED, έτσι κόλλησα δύο αντιπαράλληλες διόδους στην έξοδο για να μπορώ να δω τι συμβαίνει. Αν κοιτάξετε προσεκτικά, το βίντεο δείχνει την εναλλακτική ενεργοποίηση ενός ζεύγους διόδων 0603, υποδεικνύοντας κίνηση προς τα εμπρός / προς τα πίσω.

Όσο για το τηλεχειριστήριο, στην αρχή ήθελα απλώς να συναρμολογήσω μια πρόσθετη πλακέτα με κουμπιά και ένα άλλο ESP32 - ένα κλασικό τηλεχειριστήριο.

Ωστόσο, τότε θυμήθηκα ότι τα Steam Controllers έχουν λειτουργία Bluetooth Low Energy (BLE). Αποφάσισα να ασχοληθώ με αυτό το θέμα και μετά από λίγες ώρες έμαθα πώς να λαμβάνω πακέτα από τον ελεγκτή.

Για να το κάνετε αυτό, απλά πρέπει να αναζητήσετε μια συσκευή HID που αυτοαποκαλείται SteamController και να συνδεθείτε σε αυτήν. Και στη συνέχεια χρησιμοποιήστε μια υπηρεσία χωρίς έγγραφα από τη Valve και μερικές εντολές χωρίς έγγραφα, επιτρέποντας τη μετάδοση πακέτων.

Ασύρματος έλεγχος κινητήρων Lego με το Steam Controller

Βρήκα επίσης μια μη τεκμηριωμένη μορφή αναφοράς που ανέλυσα με μη αυτόματο τρόπο.

Ασύρματος έλεγχος κινητήρων Lego με το Steam Controller

Μετά από περίπου μία ώρα, η σημασία των σημαιών και των τιμών έγινε σαφής σε μένα και κατάφερα να αναβοσβήσω το LED χρησιμοποιώντας τον ελεγκτή Steam και το ESP32. ¯_(ツ)_/¯

Αρχεία

v1.0: "δοκιμαστική προσέγγιση"
- η πρώτη επιλογή για την οποία επέλεξα λάθος ρυθμιστή τάσης. Το TPS62291 παίρνει την τάση μόνο μέχρι 6 V. Έκανα πολλά έργα παράλληλα και ξέχασα ότι η συσκευή πρέπει να λειτουργεί με 9V.

v1.1: "αρκετά καλό"
- αυτή η επιλογή είναι ορατή στα βίντεο και όλα λειτουργούν

v1.2: "τελικός"
- Πρόσθεσε ενδεικτικά LED στην έξοδο και βελτιστοποίησε το μέγεθος και τη διάταξη της πλακέτας

Το παρακάτω σύντομο βίντεο δείχνει τη φάση σύνδεσης (1-3 δευτερόλεπτα μετά την ενεργοποίηση) και τον έλεγχο των εξόδων του κινητήρα. Ο σύνδεσμος από τη Lego δεν έχει συνδεθεί ακόμα. Θα πάει στον κενό χώρο δίπλα στις άλλες υποδοχές, που επισημαίνονται με ένα λευκό ορθογώνιο.

Ο γιος μου τώρα χρησιμοποιεί τακτικά αυτό το χειριστήριο για να ελέγχει τα μηχανήματα που έχει κατασκευάσει.

Κατά τη διάρκεια του stress test, αντιμετώπισα μόνο ένα πρόβλημα: σκέφτηκα ότι η λειτουργία "γρήγορης αποσύνθεσης" του οδηγού κινητήρα θα λειτουργούσε καλύτερα, αλλά εξαιτίας αυτού, μετά από λίγα δευτερόλεπτα λειτουργίας, η ταχύτητα του κινητήρα έπεσε πολύ πολύ. Έτσι άλλαξα τον κώδικα ώστε να χρησιμοποιεί "αργή αποσύνθεση" [αργή αποσύνθεση].

Ασύρματος έλεγχος κινητήρων Lego με το Steam Controller

Ενώ δεν είμαι σίγουρος πώς λειτουργεί το DRV και γιατί ο κινητήρας περιστρέφεται γρήγορα στην αρχή και μετά από 10 δευτερόλεπτα αρχίζει να επιβραδύνεται σταδιακά. Ίσως τα MOSFET θερμαίνονται και η αντίστασή τους αυξάνεται πάρα πολύ.

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

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο