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 techno setove za gradnju cool stvari. Autonomni tenkovi s rotirajućim kupolama koje ispaljuju Lego kocke. Ali tada nisam imao takav set.

A nije bilo ni običnih Lego kockica. Imao sam samo prijatelja čiji je brat imao sve te skupe igračke.

I sad imam sina tih godina. I gradi tenkove koji ... glupo naprijed dok se ne zabiju u zid 🙂

A sada je vrijeme za ESP32 i čari lemilice - sastavimo pravi daljinski upravljač za njih!

Ne, naravno da znam za postojanje takvih daljinskih upravljača. Ali niti jedan mi savršeno ne pristaje. Ili su infracrveni, s tehnologijom iz 80-ih, ili preveliki. Ili one skupe. I što je najvažnije, neću moći reći svom sinu ni o jednom od njih: "Učinio sam to posebno za tebe!"

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

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

Sastojci:

  • ESP32-WOOM-32D | WiFi, BLE i procesor s I/O - dovoljno za kontrolu dva motori и LED.
  • DRV8833 | dvostruki H-most s dovoljno snage za motore.
  • TPS62162 | smanjite napon na 17V, također za zabavu prilikom lemljenja kućišta WSON-8 2x2mm
  • CP2104 | za ESP32 programiranje
  • konektori za spajanje motora i dioda. Odrežite žice i zalemite ih s donje strane, a gore zalijepite Lego konektor.

Sve će to biti postavljeno na prilično malu ploču - evo kako izgleda u uređivaču EasyEDA:

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

Žica, koja je vidljiva na naslovnoj fotografiji, potrebna je ne za ispravljanje nekih grešaka, već za napajanje s USB-a. Možda nije dovoljno za motor, ali, nažalost, kontakti iz Kine još nisu došli do mene. Stoga prvo provjeravam rad LED dioda. Za ljepotu na fotografiji, samo sam stavio konektor s motora na ploču.

Verzija 1.1 moje ploče (za razliku od verzije 1.2 koja je već na EasyEDA) nije imala LED diode, pa sam zalemio dvije antiparalelne diode na izlaz kako bih mogao vidjeti što se događa. Ako pažljivo pogledate, video prikazuje naizmjenično uključivanje para dioda 0603, što ukazuje na kretanje naprijed / natrag.

Što se tiče daljinskog upravljača, prvo sam samo htio složiti dodatnu pločicu s tipkama i još jedan ESP32 - klasični daljinski upravljač.

Međutim, tada sam se sjetio da Steam Controlleri imaju Bluetooth Low Energy (BLE) način rada. Odlučio sam se pozabaviti ovim problemom i nakon nekoliko sati naučio sam kako primati pakete od kontrolera.

Da biste to učinili, samo trebate potražiti HID uređaj koji sebe naziva SteamController i spojiti se na njega. A zatim upotrijebite nedokumentiranu uslugu Valvea i još nekolicine nedokumentirane naredbe, omogućujući 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, postalo mi je jasno značenje zastavica i vrijednosti i uspio sam zatreptati LED pomoću Steam kontrolera i ESP32. ¯_(ツ)_/¯

slika

v1.0: "probni pristup"
- prva opcija za koju sam izabrao pogrešan regulator napona. TPS62291 uzima samo napon do 6 V. Razvijao sam nekoliko projekata paralelno, a zaboravio sam da uređaj mora raditi s 9 V.

v1.1: "dovoljno dobro"
- ova opcija je vidljiva u videima, i sve radi

v1.2: "konačni"
- dodane indikatorske LED diode na izlaz i optimizirana veličina i izgled ploče

Sljedeći kratki video prikazuje fazu spajanja (1-3 sekunde nakon uključivanja) i kontrolu izlaza motora. Konektor iz Lega još nije spojen. Ići će na prazan prostor pored ostalih konektora, označen bijelim pravokutnikom.

Moj sin sada redovito koristi ovaj kontroler za upravljanje strojevima koje je sastavio.

Tijekom stres testa naišao sam na samo jedan problem: mislio sam da bi "fast decay" mod [fast decay] pokretačkog programa motora najbolje funkcionirao, ali zbog toga je nakon nekoliko sekundi rada brzina motora jako pala . Pa sam promijenio kod tako da koristi "slow decay" [sporo propadanje].

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

Dok nisam siguran kako radi DRV i zašto se motor prvo brzo vrti, a onda nakon 10 sekundi počinje postupno usporavati. Možda se MOSFET-ovi zagrijavaju i njihov otpor previše raste.

Nadam se da će ovaj primjer kako koristiti Arduino bez napora nadahnuti druge ljude i omogućiti im da svoju djecu upoznaju s elektronikom.

Izvor: www.habr.com

Dodajte komentar