Trådløs styring af Lego-motorer med Steam Controller

Trådløs styring af Lego-motorer med Steam Controller

Da jeg var ung, ville jeg altid have Lego techno sæt at bygge fede ting med. Autonome tanke med roterende tårne, der affyrer legoklodser. Men så havde jeg ikke sådan et sæt.

Og der var ikke engang almindelige legoklodser. Jeg havde kun en ven, hvis bror havde alt det her dyre legetøj.

Og nu har jeg en søn på den alder. Og han bygger tanke, der ... dumt frem, indtil de styrter ind i væggen 🙂

Og nu er det tid til ESP32 og loddekolbens magi - lad os samle den rigtige fjernbetjening til dem!

Nej, selvfølgelig kender jeg til eksistensen af ​​sådanne fjernbetjeninger. Men ingen af ​​dem passer mig perfekt. De er enten infrarøde, med 80'er-teknologi eller for store. Eller dyre. Og vigtigst af alt, jeg vil ikke være i stand til at fortælle min søn om nogen af ​​dem: "Jeg gjorde det specielt for dig!"

Så lad os lave en ny, forbedret fjernbetjening til at styre alle!

Trådløs styring af Lego-motorer med Steam Controller

Ingredienser:

  • ESP32-WROOM-32D | WiFi, BLE og processor med I/O - nok til at styre to motorer и LED.
  • DRV8833 | dobbelt H-bro med kraft nok til motorerne.
  • TPS62162 | sænk spændingen til 17V, også for sjov ved lodning af WSON-8 2x2mm kabinettet
  • CP2104 | til ESP32-programmering
  • stik til tilslutning af motorer og dioder. Klip ledningerne over og lod dem i bunden, og lim Lego-stikket ovenpå.

Alt dette vil blive placeret på en ret lille tavle - her er dens udseende i EasyEDA-editoren:

Trådløs styring af Lego-motorer med Steam Controller

Ledningen, som er synlig på titelbilledet, er nødvendig for ikke at rette nogle fejl, men for at levere strøm fra USB. Det er måske ikke nok til motoren, men desværre er kontakter fra Kina endnu ikke kommet til mig. Derfor tjekker jeg først driften af ​​lysdioderne. For skønheden på billedet satte jeg bare stikket fra motoren på brættet.

Version 1.1 af mit board (i modsætning til version 1.2 allerede på EasyEDA) havde ingen lysdioder, så jeg loddede to anti-parallelle dioder til udgangen, så jeg kunne se, hvad der skete. Hvis du ser godt efter, viser videoen skiftevis tænding af et par dioder 0603, hvilket indikerer fremad/bagudgående bevægelse.

Hvad angår fjernbetjeningen, ville jeg først bare samle et ekstra board med knapper og en anden ESP32 - en klassisk fjernbetjening.

Men så huskede jeg, at Steam-controllerne har en Bluetooth Low Energy (BLE) funktionstilstand. Jeg besluttede at håndtere dette problem, og efter et par timer lærte jeg at modtage pakker fra controlleren.

For at gøre dette skal du bare lede efter en HID-enhed, der kalder sig selv SteamController og oprette forbindelse til den. Og brug så en udokumenteret service fra Valve og et par stykker udokumenterede kommandoer, der tillader transmission af pakker.

Trådløs styring af Lego-motorer med Steam Controller

Jeg stødte også på et udokumenteret rapportformat, som jeg parsede manuelt.

Trådløs styring af Lego-motorer med Steam Controller

Efter cirka en time blev betydningen af ​​flagene og værdierne klar for mig, og det lykkedes mig at blinke LED'en ved hjælp af Steam-controlleren og ESP32. ¯_(ツ)_/¯

filer

v1.0: "prøvetilgang"
- den første mulighed, som jeg valgte den forkerte spændingsregulator til. TPS62291 tager kun spændingen op til 6 V. Jeg udviklede flere projekter parallelt, og jeg glemte, at enheden skal fungere med 9V.

v1.1: "godt nok"
- denne mulighed er synlig i videoerne, og alt fungerer

v1.2: "endelig"
- tilføjede indikator-LED'er til outputtet og optimeret størrelsen og layoutet af kortet

Den følgende korte video viser tilslutningsfasen (1-3 sek efter opstart) og styring af motorudgangene. Connector fra Lego er ikke tilsluttet endnu. Det vil gå til det tomme rum ved siden af ​​de andre stik, markeret med et hvidt rektangel.

Min søn bruger nu jævnligt denne controller til at styre de maskiner, han har samlet.

Under stresstesten stødte jeg kun på ét problem: Jeg troede, at "hurtigt henfald"-tilstand [hurtigt henfald] for motorføreren ville fungere bedst, men på grund af det, efter et par sekunders drift, faldt motorhastigheden meget. . Så jeg ændrede koden, så den bruger "slow decay" [slow decay].

Trådløs styring af Lego-motorer med Steam Controller

Selvom jeg ikke er sikker på, hvordan DRV'en fungerer, og hvorfor motoren først drejer hurtigt, og derefter efter 10 sekunder begynder den gradvist at bremse. Måske er MOSFET'erne ved at varme op, og deres modstand stiger for meget.

Jeg håber, at dette eksempel på, hvordan man bruger Arduino ubesværet inspirerer andre mennesker og giver dem mulighed for at introducere deres børn til elektronik.

Kilde: www.habr.com

Tilføj en kommentar