Draadloze bediening van Lego-motoren met de Steam Controller

Draadloze bediening van Lego-motoren met de Steam Controller

Toen ik jong was, wilde ik altijd Lego-technosets hebben om coole dingen mee te bouwen. Autonome tanks met draaiende torentjes die Legoblokjes afvuren. Maar toen had ik zo’n setje niet.

En er waren niet eens gewone Legosteentjes. Ik had alleen een vriend wiens broer al dat dure speelgoed had.

En nu heb ik een zoon van die leeftijd. En hij bouwt tanks die ... stom vooruit totdat ze tegen de muur botsen 🙂

En nu is het tijd voor de ESP32 en de magie van de soldeerbout - laten we de juiste afstandsbediening voor hen samenstellen!

Nee, natuurlijk weet ik van het bestaan ​​van dergelijke afstandsbedieningen. Maar geen enkele past perfect bij mij. Ze zijn óf infrarood, met technologie uit de jaren 80, óf te groot. Of dure. En het belangrijkste is dat ik mijn zoon over geen van deze dingen kan vertellen: "Ik heb het speciaal voor jou gedaan!"

Laten we dus een nieuwe, verbeterde afstandsbediening maken om iedereen te regeren!

Draadloze bediening van Lego-motoren met de Steam Controller

Ingrediënten:

  • ESP32-WROOM-32D | WiFi, BLE en processor met I/O - genoeg om er twee te bedienen motoren и LED.
  • DRV8833 | dubbele H-brug met voldoende vermogen voor de motoren.
  • TPS62162 | verlaag de spanning naar 17V, ook voor de lol bij het solderen van de WSON-8 2x2mm behuizing
  • CP2104 | voor ESP32-programmering
  • connectors voor het aansluiten van motoren en diodes. Knip de draden door, soldeer ze aan de onderkant en lijm de Lego-connector er bovenop.

Dit alles zal op een vrij klein bord worden geplaatst - hier is het uiterlijk in de EasyEDA-editor:

Draadloze bediening van Lego-motoren met de Steam Controller

De draad, die zichtbaar is op de titelfoto, is niet nodig om enkele fouten te corrigeren, maar om stroom te leveren via USB. Het is misschien niet genoeg voor de motor, maar helaas zijn de contacten uit China nog niet bij mij terechtgekomen. Daarom controleer ik eerst de werking van de LED's. Voor de schoonheid van de foto heb ik gewoon de connector van de motor op het bord geplaatst.

Versie 1.1 van mijn bord (in tegenstelling tot versie 1.2 die al op EasyEDA stond) had geen LED's, dus heb ik twee anti-parallelle diodes aan de uitgang gesoldeerd zodat ik kon zien wat er gebeurde. Als je goed kijkt, toont de video het afwisselend inschakelen van een paar diodes 0603, wat een voorwaartse / achterwaartse beweging aangeeft.

Wat de afstandsbediening betreft, wilde ik in eerste instantie gewoon een extra bord met knoppen en nog een ESP32 monteren - een klassieke afstandsbediening.

Toen herinnerde ik me echter dat de Steam Controllers een Bluetooth Low Energy (BLE) werkingsmodus hebben. Ik besloot dit probleem aan te pakken en na een paar uur leerde ik hoe ik pakketten van de controller kon ontvangen.

Om dit te doen, hoeft u alleen maar op zoek te gaan naar een HID-apparaat dat zichzelf de SteamController noemt en er verbinding mee te maken. En gebruik dan een ongedocumenteerde service van Valve en een paar ongedocumenteerde opdrachten, waardoor de verzending van pakketten mogelijk is.

Draadloze bediening van Lego-motoren met de Steam Controller

Ik kwam ook een ongedocumenteerd rapportformaat tegen dat ik handmatig parseerde.

Draadloze bediening van Lego-motoren met de Steam Controller

Na ongeveer een uur werd de betekenis van de vlaggen en waarden mij duidelijk en slaagde ik erin de LED te laten knipperen met de Steam-controller en ESP32. ¯_(ツ)_/¯

bestanden

v1.0: "proefaanpak"
- de eerste optie waarvoor ik de verkeerde spanningsregelaar heb gekozen. De TPS62291 neemt de spanning slechts op tot 6 V. Ik was verschillende projecten parallel aan het ontwikkelen, en ik vergat dat het apparaat met 9 V moet werken.

v1.1: "goed genoeg"
- deze optie is zichtbaar in de video's en alles werkt

v1.2: "laatste"
- indicator-LED's toegevoegd aan de uitgang en de grootte en lay-out van het bord geoptimaliseerd

De volgende korte video toont de aansluitfase (1-3 sec na het inschakelen) en de besturing van de motoruitgangen. Connector van Lego is nog niet aangesloten. Het gaat naar de lege ruimte naast de andere connectoren, gemarkeerd met een witte rechthoek.

Mijn zoon gebruikt deze controller nu regelmatig om de machines die hij in elkaar heeft gezet te besturen.

Tijdens de stresstest kwam ik slechts één probleem tegen: ik dacht dat de ‘fast decay’-modus [snel verval] van de motoraansturing het beste zou werken, maar daardoor daalde het motortoerental na een paar seconden gebruik heel erg. . Dus heb ik de code gewijzigd zodat deze "langzaam verval" [langzaam verval] gebruikt.

Draadloze bediening van Lego-motoren met de Steam Controller

Hoewel ik niet zeker weet hoe de DRV werkt en waarom de motor eerst snel draait, en na 10 seconden geleidelijk begint te vertragen. Misschien zijn de MOSFET's aan het opwarmen en neemt hun weerstand te veel toe.

Ik hoop dat dit voorbeeld van het gebruik van de Arduino moeiteloos andere mensen inspireert en hen in staat stelt hun kinderen kennis te laten maken met elektronica.

Bron: www.habr.com

Voeg een reactie