Lego motorok vezeték nélküli vezérlése a Steam Controllerrel

Lego motorok vezeték nélküli vezérlése a Steam Controllerrel

Fiatal koromban mindig szerettem volna Lego techeket, akikkel klassz dolgokat építhetek. Autonóm tankok forgó tornyokkal, amelyek Lego kockákat tüzelnek. De akkor még nem volt ilyen készletem.

És még rendes Lego kockák sem voltak. Csak egy barátom volt, akinek a bátyjának voltak ezek a drága játékok.

És most van egy ilyen korú fiam. És tankokat épít, amik... hülyén haladnak előre, amíg a falnak nem ütköznek 🙂

És most itt az ideje az ESP32-nek és a forrasztópáka varázsának – állítsuk össze nekik a megfelelő távirányítót!

Nem, természetesen tudok ilyen távirányítók létezéséről. De nekem egyik sem felel meg tökéletesen. Vagy infravörösek, a 80-as évek technológiájával, vagy túl nagyok. Vagy drágák. És ami a legfontosabb, egyikről sem fogom tudni elmondani a fiamnak: „Kifejezetten érted tettem!”

Tehát készítsünk egy új, továbbfejlesztett távirányítót, amely mindenkit irányít!

Lego motorok vezeték nélküli vezérlése a Steam Controllerrel

Hozzávalók:

  • ESP32-WROOM-32D | WiFi, BLE és processzor I/O-val – elég kettő vezérléséhez motorok и VEZETTE.
  • DRV8833 | dupla H-híd elegendő teljesítménnyel a motorokhoz.
  • TPS62162 | csökkentse a feszültséget 17 V-ra, szórakozásból a WSON-8 2x2 mm-es ház forrasztásakor is
  • CP2104 | ESP32 programozáshoz
  • csatlakozók motorok és diódák csatlakoztatásához. Vágja le a vezetékeket és forrassza le őket alul, és ragassza fel a Lego csatlakozót.

Mindez egy meglehetősen kis táblán lesz elhelyezve - itt van a megjelenése az EasyEDA szerkesztőben:

Lego motorok vezeték nélküli vezérlése a Steam Controllerrel

A címképen látható vezeték nem bizonyos hibák kijavításához szükséges, hanem az USB-ről való tápellátáshoz. Lehet, hogy ez nem elég a motorhoz, de sajnos Kínából még nem jöttek hozzám a kapcsolatok. Ezért először a LED-ek működését ellenőrzöm. A képen látható szépség kedvéért csak a motor csatlakozóját tettem a táblára.

A kártyám 1.1-es verziójában (ellentétben az EasyEDA 1.2-es verziójával) nem volt LED, ezért két anti-párhuzamos diódát forrasztottam a kimenetre, hogy lássam, mi történik. Ha alaposan megnézi, a videó egy 0603-as diódapár váltakozó bekapcsolását mutatja, jelezve az előre/hátra mozgást.

Ami a távirányítót illeti, először csak egy kiegészítő táblát akartam összeszerelni gombokkal és egy másik ESP32-vel - egy klasszikus távirányítóval.

Ekkor azonban eszembe jutott, hogy a Steam Controllerek Bluetooth Low Energy (BLE) üzemmóddal rendelkeznek. Úgy döntöttem, hogy foglalkozom ezzel a problémával, és néhány óra múlva megtanultam, hogyan kell csomagokat fogadni a vezérlőtől.

Ehhez csak keresni kell egy HID eszközt, amely SteamControllernek nevezi magát, és csatlakozni kell hozzá. Ezután használjon egy nem dokumentált Valve szolgáltatást és néhányat nem dokumentált parancsok, amely lehetővé teszi a csomagok továbbítását.

Lego motorok vezeték nélküli vezérlése a Steam Controllerrel

Találkoztam egy nem dokumentált jelentésformátummal is, amelyet manuálisan elemeztem.

Lego motorok vezeték nélküli vezérlése a Steam Controllerrel

Körülbelül egy óra múlva világossá vált számomra a zászlók és az értékek jelentése, és a Steam vezérlő és az ESP32 segítségével sikerült villogni a LED-en. ¯_(ツ)_/¯

fájlok

v1.0: "próba megközelítés"
- az első lehetőség, amelyhez rossz feszültségszabályozót választottam. A TPS62291 csak 6V-ig veszi fel a feszültséget, párhuzamosan több projektet is fejlesztettem, és elfelejtettem, hogy a készüléknek 9V-ról kell működnie.

v1.1: "elég jó"
- ez a lehetőség látható a videókon, és minden működik

v1.2: "végső"
- jelző LED-eket adtunk a kimenethez, és optimalizáltuk a tábla méretét és elrendezését

Az alábbi rövid videó bemutatja a csatlakozási fázist (1-3 mp bekapcsolás után) és a motor kimeneteinek vezérlését. A Lego csatlakozója még nincs csatlakoztatva. A többi csatlakozó melletti üres helyre kerül, amelyet fehér téglalap jelöl.

A fiam most rendszeresen ezt a vezérlőt használja az általa összeállított gépek vezérlésére.

A stresszteszt során egyetlen problémával találkoztam: azt hittem, hogy a motor meghajtó „fast decay” üzemmódja [fast decay] működik a legjobban, de emiatt néhány másodperces működés után a motor fordulatszáma nagyon leesett. . Tehát megváltoztattam a kódot, hogy "lassú lebomlást" használjon [slow decay].

Lego motorok vezeték nélküli vezérlése a Steam Controllerrel

Bár nem tudom, hogyan működik a DRV, és miért pörög először gyorsan a motor, majd 10 másodperc múlva fokozatosan lassulni kezd. Lehet, hogy a MOSFET-ek felmelegednek, és az ellenállásuk túlságosan megnő.

Remélem, hogy ez a példa az Arduino könnyű használatára inspirál másokat, és lehetővé teszi számukra, hogy megismertessék gyermekeiket az elektronikával.

Forrás: will.com

Hozzászólás