Belaidis Lego variklių valdymas su Steam Controller

Belaidis Lego variklių valdymas su Steam Controller

Kai buvau jaunas, visada norėjau turėti „Lego“ technikos rinkinius, kad galėčiau su jais susikurti įvairiausių šaunių dalykų. Autonominiai tankai su besisukančiais bokšteliais, kuriais šaudoma Lego kaladėlėmis. Bet tada aš tokio rinkinio neturėjau.

Ir net nebuvo įprastų Lego kaladėlių. Turėjau tik draugą, kurio brolis turėjo visus šiuos brangius žaislus.

Ir dabar aš pati turiu tokio amžiaus sūnų. Ir stato tankus, kurie... kvailai juda į priekį, kol atsitrenkia į sieną :)

O dabar laikas ESP32 ir lituoklio magijai – surinkime jiems tinkamą nuotolinio valdymo pultą!

Ne, žinoma, aš žinau apie tokių nuotolinio valdymo pultelių egzistavimą. Bet nė vienas iš jų man visiškai netinka. Jie yra infraraudonųjų spindulių, 80-ųjų technologijos arba per dideli. Arba brangių. Ir, svarbiausia, aš negalėsiu pasakyti savo sūnui apie nė vieną iš jų: „Aš tai padariau specialiai dėl tavęs!

Taigi sukurkime naują ir patobulintą nuotolinio valdymo pultą, kuris valdys juos visus!

Belaidis Lego variklių valdymas su Steam Controller

Sudėtis:

  • ESP32-WROOM-32D | WiFi, BLE ir procesorius su I/O – pakanka valdyti du variklius и LED.
  • DRV8833 | dvigubas H tiltas, turintis pakankamai galios varikliams.
  • TPS62162 | įtampos sumažinimas iki 17 V, taip pat pramogoms lituojant WSON-8 2x2 mm korpusą
  • CP2104 | ESP32 programavimui
  • Jungtys variklių ir diodų prijungimui. Nupjausime laidus ir sulituosime apačioje, o viršuje klijuojame Lego jungtį.

Visa tai tilps ant gana mažos lentos - štai jos išvaizda EasyEDA redaktoriuje:

Belaidis Lego variklių valdymas su Steam Controller

Antraštinėje nuotraukoje matomas laidas reikalingas ne klaidoms ištaisyti, o maitinti iš USB. Varikliui to gali nepakakti, bet, deja, kontaktų iš Kinijos vis dar negavau. Taigi pirmiausia patikrinu šviesos diodų veikimą. Dėl grožio nuotraukoje aš tiesiog uždėjau jungtį iš variklio ant plokštės.

Mano plokštės 1.1 versijoje (skirtingai nuo 1.2 versijos, kuri jau yra EasyEDA) nebuvo šviesos diodų, todėl prie išėjimo prilitavau du antilygiagrečius diodus, kad galėčiau matyti, kas vyksta. Jei atidžiai pažvelgsite, vaizdo įraše rodomas kintamos diodų poros 0603 aktyvavimas, nurodantis judėjimą pirmyn / atgal.

Kalbant apie valdymo pultą, iš pradžių tiesiog norėjau surinkti papildomą plokštę su mygtukais ir kitą ESP32 - klasikinį nuotolinio valdymo pultą.

Tačiau tada prisiminiau, kad „Steam Controllers“ turi „Bluetooth Low Energy“ (BLE) veikimo režimą. Nusprendžiau išspręsti šią problemą ir po kelių valandų išmokau gauti paketus iš valdiklio.

Norėdami tai padaryti, tereikia surasti HID įrenginį, kuris vadinasi SteamController, ir prie jo prisijungti. Ir tada naudokite nedokumentuotą paslaugą iš Valve ir kelių nedokumentuotos komandos, leidžianti perduoti paketus.

Belaidis Lego variklių valdymas su Steam Controller

Taip pat aptikau nedokumentuotą ataskaitos formatą, kurį analizavau rankiniu būdu.

Belaidis Lego variklių valdymas su Steam Controller

Maždaug po valandos man tapo aiški vėliavėlių ir verčių reikšmė, ir aš sugebėjau mirksėti LED naudojant Steam valdiklį ir ESP32. ¯_(ツ)_/¯

Failai

v1.0: „bandomasis požiūris“
- pirmasis variantas, kuriam pasirinkau netinkamą įtampos reguliatorių. TPS62291 įtampą pakelia tik iki 6 V. Lygiagrečiai kūriau kelis projektus ir pamiršau, kad įrenginys turi veikti su 9 V.

v1.1: "pakankamai gerai"
— ši parinktis matoma vaizdo įrašuose ir viskas veikia

v1.2: "finalinis"
- prie išvesties pridedami indikatoriniai šviesos diodai ir optimizuotas plokštės dydis bei išdėstymas

Toliau pateiktame trumpame vaizdo įraše parodyta prijungimo fazė (1-3 sekundės po maitinimo įjungimo) ir variklio išėjimų valdymas. Lego jungtis dar neprijungta. Jis pateks į tuščią vietą šalia kitų jungčių, pažymėtų baltu stačiakampiu.

Dabar mano sūnus reguliariai naudoja šį valdiklį savo sukurtiems įrenginiams valdyti.

Atliekant testavimą nepalankiausiomis sąlygomis susidūriau tik su viena problema: maniau, kad variklio vairuotojo „greito skilimo“ režimas veiktų geriausiai, tačiau dėl to variklio greitis po kelių veikimo sekundžių smarkiai sumažėjo. Taigi pakeičiau kodą, kad naudočiau lėtą skilimą.

Belaidis Lego variklių valdymas su Steam Controller

Dar nesu tikras, kaip veikia DRV ir kodėl variklis iš pradžių greitai sukasi, o po 10 sekundžių pradeda palaipsniui lėtėti. Galbūt MOSFETai įkaista ir jų varža per daug išauga.

Tikiuosi, kad šis nesudėtingas Arduino naudojimas bus įkvėpimas kitiems, kad vaikai galėtų mokytis elektronikos.

Šaltinis: www.habr.com

Добавить комментарий