Bežična kontrola Lego motora sa Steam Controllerom

Bežična kontrola Lego motora sa Steam Controllerom

Kada sam bio mlad, oduvek sam želeo da imam Lego tech setove kako bih mogao da pravim sve vrste cool stvari od njih. Autonomni tenkovi sa rotirajućim kupolama koji pucaju na Lego kockice. 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.

A sada i ja imam sina ovih godina. I pravi tenkove koji se... glupo kreću napred dok se ne zabiju u zid :)

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

Ne, naravno da znam za postojanje takvih daljinskih upravljača. Ali nijedan od njih mi ne odgovara u potpunosti. Oni su ili infracrveni, tehnologija iz 80-ih ili preveliki. Ili skupe. I što je najvažnije, svom sinu neću moći reći ni za jednu od njih: „Ovo sam uradio posebno za tebe!“

Zato napravimo novi i poboljšani daljinski upravljač da upravljamo svima!

Bežična kontrola Lego motora sa Steam Controllerom

Sastojci:

  • ESP32-WROOM-32D | WiFi, BLE i procesor sa I/O - dovoljno za kontrolu dvoje motori и LED.
  • DRV8833 | dvostruki H-most sa dovoljno snage za motore.
  • TPS62162 | smanjenje napona na 17 V, kao i za zabavu prilikom lemljenja kućišta WSON-8 2x2 mm
  • CP2104 | za ESP32 programiranje
  • Konektori za spajanje motora i dioda. Isjeći ćemo žice i zalemiti ih na dnu, a na vrhu zalijepiti Lego konektor.

Sve će to stati na prilično malu ploču - evo njegovog izgleda u EasyEDA editoru:

Bežična kontrola Lego motora sa Steam Controllerom

Žica koja se vidi na naslovnoj fotografiji nije potrebna za ispravljanje grešaka, već za napajanje sa USB-a. Možda nije dovoljno za motor, ali, nažalost, još uvijek nisam dobio kontakte iz Kine. Zato prvo provjeravam rad LED dioda. Za ljepotu na fotografiji, jednostavno sam stavio konektor od motora na ploču.

Na verziji 1.1 moje ploče (za razliku od verzije 1.2, koja je već na EasyEDA) nije bilo LED dioda, pa sam zalemio dvije antiparalelne diode na izlaz kako bih mogao vidjeti šta se dešava. Ako pažljivo pogledate, video prikazuje naizmjeničnu aktivaciju para dioda 0603, što ukazuje na kretanje naprijed/nazad.

Što se tiče kontrolne ploče, u početku sam samo htio sastaviti dodatnu ploču s dugmadima i još jedan ESP32 - klasični daljinski upravljač.

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

Da biste to učinili, samo trebate potražiti HID uređaj koji sebe naziva SteamController i povezati se s njim. Zatim koristite nedokumentiranu uslugu od Valvea i nekoliko nedokumentovane komande, omogućavajući prijenos paketa.

Bežična kontrola Lego motora sa Steam Controllerom

Također sam naišao na nedokumentirani format izvještaja, koji sam raščlanio ručno.

Bežična kontrola Lego motora sa Steam Controllerom

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

Datoteke

v1.0: "probni pristup"
- prva opcija za koju sam izabrao pogrešan regulator napona. TPS62291 samo podiže napon na 6 V. Razvijao sam nekoliko projekata paralelno, a zaboravio sam da uređaj treba da radi sa 9 V.

v1.1: "dovoljno dobro"
— ova opcija je vidljiva u video zapisima i sve radi

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

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

Moj sin sada redovno koristi ovaj kontroler za kontrolu uređaja koje je napravio.

Tokom stres testa naišao sam samo na jedan problem: mislio sam da bi režim "brzog raspada" vozača motora najbolje funkcionirao, ali je uzrokovao drastičan pad brzine motora nakon nekoliko sekundi rada. Tako sam promijenio kod da koristim sporo raspadanje.

Bežična kontrola Lego motora sa Steam Controllerom

Još nisam siguran kako DRV radi i zašto se motor u početku brzo okreće, a onda nakon 10 sekundi počinje postepeno usporavati. Možda se MOSFET-ovi zagrijavaju i njihov otpor previše raste.

Nadam se da će ovo jednostavno korištenje Arduina poslužiti kao inspiracija drugima da svoju djecu uvedu u elektroniku.

izvor: www.habr.com

Dodajte komentar