Bežično upravljanje Lego motorima pomoću Steam Controllera

Bežično upravljanje Lego motorima pomoću Steam Controllera

Kad sam bio mlad, uvijek sam želio imati Lego Technics setove kako bih mogao graditi fora stvari. Autonomne tenkove s rotirajućim kupolama koje ispaljuju Lego kockice. Ali tada nisam imao nijedan.

Nisam čak ni imao obične Lego kockice. Imao sam samo prijatelja čiji je brat imao sve te skupe igračke.

A sada i ja imam sina tih godina. I on gradi tenkove koji... samo nastavljaju gurati naprijed dok se ne sruše u zid 🙂

A sada je vrijeme za ESP32 i čaroliju lemilice – sastavimo pravi daljinski upravljač za njih!

Ne, znam za ove daljinske upravljače, naravno. Ali nijedan od njih mi u potpunosti ne odgovara. Ili su infracrveni, koriste tehnologiju iz 80-ih, ili su preveliki. Ili su skupi. I najvažnije, ne mogu sinu reći: "Ovo sam napravio posebno za tebe!" ni za jedan od njih.

Zato napravimo novi, poboljšani daljinski upravljač koji će vladati svima njima!

Bežično upravljanje Lego motorima pomoću Steam Controllera

Sastojci:

  • ESP32-WROOM-32D | WiFi, BLE i procesor s I/O dovoljni su za upravljanje dvama motori и LED.
  • DRV8833 | Dvostruki H-most s dovoljno snage za motore.
  • TPS62162 | Snižavanje napona na 17V, također za zabavu pri lemljenju WSON-8 2x2mm kućišta
  • CP2104 | za programiranje ESP32
  • konektori Za spajanje motora i dioda. Žice ćemo prerezati i zalemiti na dnu, a Lego konektor zalijepiti na vrh.

Sve će se ovo smjestiti na prilično malu ploču – evo kako to izgleda u EasyEDA editoru:

Bežično upravljanje Lego motorima pomoću Steam Controllera

Žica vidljiva na glavnoj fotografiji nije za rješavanje problema, već za napajanje putem USB-a. Možda nije dovoljno duga za motor, ali nažalost, još uvijek nisam primio kontakte iz Kine. Dakle, prvo provjeravam LED diode. Radi izgleda na fotografiji, jednostavno sam stavio konektor motora na ploču.

Verzija 1.1 moje ploče (za razliku od verzije 1.2, koja je već na EasyEDA-i) nije imala LED diode, pa sam na izlaz zalemio dvije antiparalelne diode kako bi bilo lakše vidjeti što se događa. Ako bolje pogledate, u videu možete vidjeti naizmjenično uključivanje para 0603 dioda koje označavaju kretanje naprijed/natrag.

Reproduciraj videozapis

Što se tiče daljinskog upravljača, isprva sam samo htio sastaviti dodatnu ploču s tipkama i još jednim ESP32 - klasičnim daljinskim upravljačem.

Međutim, onda sam se sjetio da Steam kontroleri imaju Bluetooth Low Energy (BLE) način rada. Odlučio sam to provjeriti i u roku od nekoliko sati mogao sam primati pakete s kontrolera.

Da biste to učinili, jednostavno potražite HID uređaj pod nazivom SteamController i spojite se na njega. Zatim upotrijebite Valveovu nedokumentiranu uslugu i nekoliko nedokumentirane naredbe, što omogućuje prijenos paketa.

Bežično upravljanje Lego motorima pomoću Steam Controllera

Također sam naišao na nedokumentirani format izvješća, koji sam ručno analizirao.

Bežično upravljanje Lego motorima pomoću Steam Controllera

Nakon otprilike sat vremena, značenje zastavica i vrijednosti mi je postalo jasno i uspio sam treptati LED pomoću Steam kontrolera i ESP32. ¯_(ツ)_/¯

slika

v1.0: "probni pristup"
— prva opcija za koju sam odabrao pogrešan regulator napona. TPS62291 podiže napon samo na 6 V. Razvijao sam nekoliko projekata paralelno i zaboravio da uređaj treba raditi na 9 V.

v1.1: "dovoljno dobro"
- Ova opcija je vidljiva u videozapisima i sve radi.

v1.2: "konačan"
— dodane su LED indikatorske diode na izlaz i optimizirana je veličina i raspored ploče

Sljedeći kratki video prikazuje fazu spajanja (1-3 sekunde nakon uključivanja) i upravljanje izlazom motora. Lego konektor još nije spojen. Umetnut će se u prazan prostor pored ostalih konektora, označen bijelim pravokutnikom.

Reproduciraj videozapis

Moj sin sada redovito koristi ovaj kontroler za upravljanje uređajima koje je sastavio.

Tijekom testa opterećenja naišao sam samo na jedan problem: mislio sam da će način rada "brzog opadanja" upravljačkog programa motora najbolje funkcionirati, ali je uzrokovao značajan pad brzine motora nakon nekoliko sekundi rada. Stoga sam promijenio kod da koristi "sporo opadanje".

Bežično upravljanje Lego motorima pomoću Steam Controllera

Nisam još siguran kako DRV radi ili zašto se motor isprva brzo okreće, a zatim postupno usporava nakon otprilike 10 sekundi. Možda se MOSFET-i zagrijavaju, što uzrokuje preveliko povećanje otpora.

Reproduciraj videozapis

Nadam se da će ovaj jednostavni Arduino tutorial inspirirati i druge da zainteresiraju svoju djecu za elektroniku.

Izvor: www.habr.com

Dodajte komentar