Bezdrátové ovládání Lego motorů pomocí Steam Controller

Bezdrátové ovládání Lego motorů pomocí Steam Controller

Když jsem byl mladý, vždycky jsem chtěl mít Lego techno sady, ze kterých bych mohl stavět skvělé věci. Autonomní tanky s otočnými věžičkami, které odpalují kostky Lego. Ale pak jsem takovou sadu neměl.

A nebyly tam ani obyčejné Lego kostky. Měl jsem jen kamaráda, jehož bratr měl všechny tyhle drahé hračky.

A teď mám syna v tomto věku. A staví tanky, které ... hloupě dopředu, dokud nenarazí do zdi 🙂

A teď je čas na ESP32 a kouzlo páječky – pojďme jim sestavit ten správný dálkový ovladač!

Ne, samozřejmě vím o existenci takových dálkových ovladačů. Žádný z nich mi ale dokonale nevyhovuje. Jsou buď infračervené, s technologií 80. let, nebo příliš velké. Nebo ty drahé. A co je nejdůležitější, o žádné z nich nebudu moci svému synovi říct: "Udělal jsem to speciálně pro tebe!"

Pojďme tedy vyrobit nové, vylepšené dálkové ovládání, které bude vládnout všem!

Bezdrátové ovládání Lego motorů pomocí Steam Controller

Složení:

  • ESP32-WROOM-32D | WiFi, BLE a procesor s I/O - stačí na ovládání dvou motory и VEDENÝ.
  • DRV8833 | dvojitý H-můstek s dostatečným výkonem pro motory.
  • TPS62162 | snížit napětí na 17V, také pro zábavu při pájení pouzdra WSON-8 2x2mm
  • CP2104 | pro programování ESP32
  • Konektory pro připojení motorů a diod. Odřízněte dráty a připájejte je na spodní straně a nalepte konektor Lego nahoru.

To vše bude umístěno na poměrně malé desce - zde je její podoba v editoru EasyEDA:

Bezdrátové ovládání Lego motorů pomocí Steam Controller

Vodič, který je vidět na titulní fotce, je potřeba ne k opravě některých chyb, ale k napájení z USB. Na motor to možná nestačí, ale kontakty z Číny mi zatím bohužel nepřišly. Proto nejprve zkontroluji činnost LED diod. Pro krásu na fotce jsem jen dal na desku konektor od motoru.

Verze 1.1 mé desky (na rozdíl od verze 1.2 již na EasyEDA) neměla LED, tak jsem na výstup připájel dvě antiparalelní diody, abych viděl, co se děje. Pokud se podíváte pozorně, na videu je vidět střídavé zapínání dvojice diod 0603, indikující pohyb vpřed/vzad.

Co se týče dálkového ovládání, chtěl jsem nejprve jen sestavit přídavnou desku s tlačítky a další ESP32 - klasické dálkové ovládání.

Pak jsem si však vzpomněl, že ovladače Steam mají režim provozu Bluetooth Low Energy (BLE). Rozhodl jsem se tento problém řešit a po pár hodinách jsem se naučil přijímat pakety z řadiče.

K tomu stačí vyhledat HID zařízení, které si říká SteamController a připojit se k němu. A pak použijte nezdokumentovanou službu od Valve a pár nezdokumentované příkazy, umožňující přenos paketů.

Bezdrátové ovládání Lego motorů pomocí Steam Controller

Také jsem narazil na nezdokumentovaný formát zprávy, který jsem analyzoval ručně.

Bezdrátové ovládání Lego motorů pomocí Steam Controller

Asi po hodině mi byl význam příznaků a hodnot jasný a podařilo se mi zablikat LED pomocí ovladače Steam a ESP32. ¯_(ツ)_/¯

Soubory

v1.0: "zkušební přístup"
- první možnost, pro kterou jsem zvolil špatný regulátor napětí. TPS62291 bere napětí pouze do 6V. Vyvíjel jsem několik projektů paralelně a zapomněl jsem, že zařízení musí pracovat s 9V.

v1.1: "dostatečně dobrý"
- tato možnost je viditelná ve videích a vše funguje

v1.2: "finále"
- přidány indikační LED na výstup a optimalizována velikost a rozložení desky

Následující krátké video ukazuje fázi připojení (1-3 sekundy po zapnutí) a ovládání výstupů motoru. Konektor z Lega ještě není připojen. Přejde na prázdné místo vedle ostatních konektorů označené bílým obdélníkem.

Můj syn nyní pravidelně používá tento ovladač k ovládání strojů, které sestavil.

Během zátěžového testu jsem narazil pouze na jeden problém: myslel jsem si, že režim „rychlý pokles“ [rychlý rozpad] ovladače motoru bude fungovat nejlépe, ale kvůli tomu po několika sekundách provozu otáčky motoru velmi klesly. . Změnil jsem tedy kód tak, aby používal „pomalý rozpad“ [pomalý rozpad].

Bezdrátové ovládání Lego motorů pomocí Steam Controller

I když si nejsem jistý, jak funguje DRV a proč se motor nejprve rychle točí, a pak po 10 sekundách začne postupně zpomalovat. Možná se MOSFETy zahřívají a jejich odpor příliš stoupá.

Doufám, že tento příklad toho, jak bez námahy používat Arduino, inspiruje další lidi a umožní jim seznámit své děti s elektronikou.

Zdroj: www.habr.com

Přidat komentář