Bezdrôtové ovládanie Lego motorov pomocou Steam Controller

Bezdrôtové ovládanie Lego motorov pomocou Steam Controller

Keď som bol mladý, vždy som chcel mať Lego techno sady, z ktorých by som mohol stavať skvelé veci. Autonómne tanky s otáčajúcimi sa vežami, ktoré strieľajú z lego kociek. Ale potom som nemal takú sadu.

A neboli tam ani obyčajné Lego kocky. Mal som len kamaráta, ktorého brat mal všetky tieto drahé hračky.

A teraz mám syna v takom veku. A stavia tanky, ktoré ... hlúpo dopredu, až kým nenabúrajú do steny 🙂

A teraz je čas na ESP32 a kúzlo spájkovačky - poďme pre nich zostaviť to správne diaľkové ovládanie!

Nie, samozrejme, že viem o existencii takýchto diaľkových ovládačov. Žiadny z nich mi však úplne nevyhovuje. Buď sú infračervené, s technológiou 80. rokov, alebo príliš veľké. Alebo tie drahé. A čo je najdôležitejšie, o žiadnom z nich nebudem môcť povedať svojmu synovi: "Urobil som to špeciálne pre teba!"

Vyrobme teda nové, vylepšené diaľkové ovládanie, ktoré bude vládnuť všetkým!

Bezdrôtové ovládanie Lego motorov pomocou Steam Controller

Zloženie:

  • ESP32-WROOM-32D | WiFi, BLE a procesor s I/O - dosť na ovládanie dvoch motory и LED.
  • DRV8833 | dvojitý H-most s dostatočným výkonom pre motory.
  • TPS62162 | znížte napätie na 17V, aj pre zábavu pri spájkovaní puzdra WSON-8 2x2mm
  • CP2104 | pre programovanie ESP32
  • konektory na pripojenie motorov a diód. Odrežte drôty a prispájkujte ich na spodnej strane a nalepte konektor Lego na vrch.

To všetko bude umiestnené na pomerne malej doske - tu je jej vzhľad v editore EasyEDA:

Bezdrôtové ovládanie Lego motorov pomocou Steam Controller

Kábel, ktorý je viditeľný na titulnej fotografii, je potrebný nie na opravu niektorých chýb, ale na napájanie z USB. Na motor to možno nestačí, ale kontakty z Číny mi, žiaľ, ešte neprišli. Preto najprv skontrolujem činnosť LED diód. Pre krásu na fotke som len dal na dosku konektor od motora.

Verzia 1.1 mojej dosky (na rozdiel od verzie 1.2 už na EasyEDA) nemala LED, tak som na výstup prispájkoval dve antiparalelné diódy, aby som videl, čo sa deje. Ak sa dobre pozriete, na videu je vidieť striedavé zapínanie dvojice diód 0603, indikujúcich pohyb vpred/vzad.

Co sa tyka dialkoveho ovladania, najprv som chcel len poskladat pridavnu dosku s tlacidlami a dalsie ESP32 - klasicky dialkovy ovladac.

Potom som si však spomenul, že ovládače Steam majú režim prevádzky Bluetooth Low Energy (BLE). Rozhodol som sa zaoberať sa týmto problémom a po niekoľkých hodinách som sa naučil prijímať pakety z ovládača.

Ak to chcete urobiť, stačí vyhľadať zariadenie HID, ktoré sa nazýva SteamController, a pripojiť sa k nemu. A potom použite nedokumentovanú službu od Valve a niekoľko nezdokumentované príkazy, umožňujúci prenos paketov.

Bezdrôtové ovládanie Lego motorov pomocou Steam Controller

Narazil som aj na nezdokumentovaný formát správy, ktorý som analyzoval manuálne.

Bezdrôtové ovládanie Lego motorov pomocou Steam Controller

Asi po hodine mi bol význam príznakov a hodnôt jasný a podarilo sa mi zablikať LED pomocou ovládača Steam a ESP32. ¯_(ツ)_/¯

súbory

v1.0: "skúšobný prístup"
- prvá možnosť, pre ktorú som zvolil nesprávny regulátor napätia. TPS62291 odoberá napätie len do 6V. Vyvíjal som paralelne niekoľko projektov a zabudol som, že zariadenie potrebuje pracovať s 9V.

v1.1: "dosť dobrý"
- táto možnosť je viditeľná vo videách a všetko funguje

v1.2: "Konečný"
- pridané indikačné LED na výstup a optimalizovaná veľkosť a rozloženie dosky

Nasledujúce krátke video ukazuje fázu pripojenia (1-3 sekundy po zapnutí) a ovládanie výstupov motora. Konektor z Lega ešte nie je pripojený. Prejde na prázdne miesto vedľa ostatných konektorov označené bielym obdĺžnikom.

Môj syn teraz pravidelne používa tento ovládač na ovládanie strojov, ktoré zostavil.

Počas záťažového testu som narazil len na jeden problém: myslel som si, že režim „rýchly pokles“ [rýchly pokles] vodiča motora bude fungovať najlepšie, ale kvôli nemu po niekoľkých sekundách prevádzky otáčky motora veľmi klesli. . Tak som zmenil kód tak, aby používal "pomalý rozpad" [pomalý rozpad].

Bezdrôtové ovládanie Lego motorov pomocou Steam Controller

Aj keď si nie som istý, ako funguje DRV a prečo sa motor najprv rýchlo točí a potom po 10 sekundách začne postupne spomaľovať. Možno sa MOSFETy zahrievajú a ich odpor príliš stúpa.

Dúfam, že tento príklad toho, ako bez námahy používať Arduino, inšpiruje ostatných ľudí a umožní im zoznámiť svoje deti s elektronikou.

Zdroj: hab.com

Pridať komentár