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!
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:
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.
Törmäsin myös dokumentoimattomaan raporttimuotoon, jonka jäsensin manuaalisesti.
Noin tunnin kuluttua lippujen ja arvojen merkitys tuli minulle selväksi, ja onnistuin vilkkumaan LED-valoa Steam-ohjaimella ja ESP32:lla. ¯_(ツ)_/¯
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].
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.