Lego-moottoreiden langaton ohjaus Steam Controllerin avulla

Lego-moottoreiden langaton ohjaus Steam Controllerin avulla

Nuorena halusin aina hankkia Lego-techno-settejä, joiden avulla rakentaa hienoja asioita. Itsenäiset tankit pyörivillä torneilla, jotka ampuvat legopalikoita. Mutta silloin minulla ei ollut sellaista settiä.

Eikä siellä ollut edes tavallisia legopalikoita. Minulla oli vain ystävä, jonka veljellä oli kaikki nämä kalliit lelut.

Ja nyt minulla on tuon ikäinen poika. Ja hän rakentaa tankkeja, jotka ... tyhmästi eteenpäin, kunnes ne törmäävät seinään 🙂

Ja nyt on ESP32:n ja juotosraudan taikuuden vuoro – kootaan heille oikea kaukosäädin!

Ei, tietysti tiedän tällaisten kaukosäätimien olemassaolosta. Mutta mikään niistä ei sovi minulle täydellisesti. Ne ovat joko infrapuna, 80-luvun tekniikkaa tai liian suuria. Tai kalliita. Ja mikä tärkeintä, en voi kertoa pojalleni yhdestäkään heistä: "Tein sen erityisesti sinua varten!"

Tehdään siis uusi, parannettu kaukosäädin hallitsemaan kaikkia!

Lego-moottoreiden langaton ohjaus Steam Controllerin avulla

Ainekset:

  • ESP32-WROOM-32D | WiFi, BLE ja prosessori I/O:lla – riittää kahden ohjaamiseen moottorit и LED.
  • DRV8833 | kaksinkertainen H-silta, jossa riittää tehoa moottoreille.
  • TPS62162 | laske jännite 17 V:iin, myös huvin vuoksi juotettaessa WSON-8 2x2mm koteloa
  • CP2104 | ESP32-ohjelmointiin
  • liittimet moottoreiden ja diodien kytkemiseen. Leikkaa johdot ja juota ne pohjalle ja liimaa Lego-liitin päälle.

Kaikki tämä sijoitetaan melko pienelle taululle - tässä on sen esiintyminen EasyEDA-editorissa:

Lego-moottoreiden langaton ohjaus Steam Controllerin avulla

Otsikkokuvassa näkyvää johtoa ei tarvita joidenkin virheiden korjaamiseen, vaan virran syöttämiseen USB:stä. Se ei ehkä riitä moottorille, mutta valitettavasti yhteystiedot Kiinasta eivät ole vielä tulleet minulle. Siksi tarkistan ensin LEDien toiminnan. Kuvan kauneuden vuoksi laitoin vain moottorin liittimen levylle.

Levyni versiossa 1.1 (toisin kuin EasyEDAn versiossa 1.2) ei ollut LED-valoja, joten juotin kaksi anti-rinnakkaista diodia ulostuloon, jotta voisin nähdä mitä tapahtuu. Jos katsot tarkasti, video näyttää diodiparin 0603 päällekytkennän, mikä osoittaa liikettä eteenpäin/taaksepäin.

Mitä tulee kaukosäätimeen, halusin aluksi vain koota lisälevyn painikkeilla ja toisen ESP32:n - klassisen kaukosäätimen.

Sitten muistin kuitenkin, että Steam-ohjaimissa on Bluetooth Low Energy (BLE) -toimintatila. Päätin käsitellä tätä ongelmaa, ja muutaman tunnin kuluttua opin vastaanottamaan paketteja ohjaimelta.

Tätä varten sinun tarvitsee vain etsiä HID-laite, joka kutsuu itseään SteamControlleriksi, ja muodostaa yhteys siihen. Käytä sitten Valven ja muutamien dokumentoimattomia palveluita dokumentoimattomia komentoja, joka mahdollistaa pakettien lähettämisen.

Lego-moottoreiden langaton ohjaus Steam Controllerin avulla

Törmäsin myös dokumentoimattomaan raporttimuotoon, jonka jäsensin manuaalisesti.

Lego-moottoreiden langaton ohjaus Steam Controllerin avulla

Noin tunnin kuluttua lippujen ja arvojen merkitys tuli minulle selväksi, ja onnistuin vilkkumaan LED-valoa Steam-ohjaimella ja ESP32:lla. ¯_(ツ)_/¯

tiedostojen

v1.0: "kokeilutapa"
- ensimmäinen vaihtoehto, jolle valitsin väärän jännitesäätimen. TPS62291 ottaa jännitteen vain 6 V:iin asti. Kehittelin useita projekteja rinnakkain, ja unohdin, että laitteen pitää toimia 9 V:lla.

v1.1: "tarpeeksi hyvä"
- tämä vaihtoehto näkyy videoissa, ja kaikki toimii

v1.2: "lopullinen"
- lisätty merkkivaloja lähtöön ja optimoitu levyn koko ja asettelu

Seuraava lyhyt video näyttää kytkentävaiheen (1-3 s virran kytkemisen jälkeen) ja moottorin lähtöjen ohjauksen. Legon liitintä ei ole vielä kytketty. Se siirtyy muiden liittimien vieressä olevaan tyhjään tilaan, joka on merkitty valkoisella suorakulmiolla.

Poikani käyttää nyt säännöllisesti tätä ohjainta ohjaamaan kokoamiaan koneita.

Rasitustestin aikana törmäsin vain yhteen ongelmaan: luulin, että moottoriohjaimen "fast decay" -tila [fast decay] toimisi parhaiten, mutta sen takia moottorin nopeus putosi muutaman sekunnin käytön jälkeen erittäin paljon. . Joten vaihdoin koodia niin, että se käyttää "slow decay" [hidas decay].

Lego-moottoreiden langaton ohjaus Steam Controllerin avulla

Vaikka en ole varma kuinka DRV toimii ja miksi moottori pyörii aluksi nopeasti, ja sitten 10 sekunnin kuluttua se alkaa vähitellen hidastua. Ehkä MOSFETit kuumenevat ja niiden vastus kasvaa liikaa.

Toivon, että tämä esimerkki siitä, kuinka Arduinoa käytetään vaivattomasti, inspiroi muita ihmisiä ja antaa heille mahdollisuuden esitellä lapsilleen elektroniikkaa.

Lähde: will.com

Lisää kommentti