Brezžično upravljanje Lego motorjev s Steam Controllerjem

Brezžično upravljanje Lego motorjev s Steam Controllerjem

Ko sem bil mlad, sem si vedno želel imeti Lego tehnike, da bi z njimi sestavljal kul stvari. Avtonomni tanki z vrtljivimi kupolami, ki izstreljujejo lego kocke. Ampak takrat nisem imel takega kompleta.

In sploh ni bilo običajnih Lego kock. Imel sem samo prijatelja, čigar brat je imel vse te drage igrače.

In zdaj imam sina teh let. In gradi tanke, ki ... neumno naprej, dokler se ne zaletijo v zid 🙂

In zdaj je čas za ESP32 in čare spajkalnika – sestavimo pravi daljinski upravljalnik zanje!

Ne, seveda vem za obstoj takih daljincev. Ampak nobena mi ne ustreza popolnoma. Ali so infrardeči, s tehnologijo iz 80-ih ali preveliki. Ali pa drage. In kar je najpomembneje, sinu ne bom mogel povedati o nobenem od njih: "To sem naredil posebej zate!"

Naredimo torej nov, izboljšan daljinski upravljalnik, ki bo vladal vsem!

Brezžično upravljanje Lego motorjev s Steam Controllerjem

Sestavine:

  • ESP32-SOBNA-32D | WiFi, BLE in procesor z I/O – dovolj za nadzor dveh motorji и LED.
  • DRV8833 | dvojni H-most z dovolj moči za motorje.
  • TPS62162 | znižajte napetost na 17 V, tudi za zabavo pri spajkanju ohišja WSON-8 2x2 mm
  • CP2104 | za programiranje ESP32
  • Konektorji za povezovanje motorjev in diod. Odrežite žice in jih prispajkajte na dnu, na vrh pa prilepite lego konektor.

Vse to bo postavljeno na precej majhno ploščo - tukaj je njen videz v urejevalniku EasyEDA:

Brezžično upravljanje Lego motorjev s Steam Controllerjem

Žica, ki je vidna na naslovni fotografiji, ni potrebna za popravljanje nekaterih napak, ampak za napajanje iz USB-ja. Morda ne bo dovolj za motor, a na žalost stiki s Kitajske še niso prišli do mene. Zato najprej preverim delovanje LED diod. Za lepoto na fotografiji sem samo dal konektor iz motorja na ploščo.

Različica 1.1 moje plošče (za razliko od različice 1.2, ki je že na EasyEDA) ni imela LED diod, zato sem na izhod spajkal dve antiparalelni diodi, da sem lahko videl, kaj se dogaja. Če natančno pogledate, video prikazuje izmenično vklop para diod 0603, ki označuje gibanje naprej / nazaj.

Glede daljinca pa sem sprva samo hotel sestaviti dodatno ploščo z gumbi in še en ESP32 - klasičen daljinec.

Vendar sem se potem spomnil, da imajo krmilniki Steam način delovanja Bluetooth Low Energy (BLE). Odločil sem se, da bom rešil to težavo in po nekaj urah sem se naučil prejemati pakete od krmilnika.

Če želite to narediti, morate le poiskati napravo HID, ki se imenuje SteamController, in se z njo povezati. In nato uporabite nedokumentirano storitev podjetja Valve in še nekaterih nedokumentirani ukazi, ki omogoča prenos paketov.

Brezžično upravljanje Lego motorjev s Steam Controllerjem

Naletel sem tudi na nedokumentirano obliko poročila, ki sem jo razčlenil ročno.

Brezžično upravljanje Lego motorjev s Steam Controllerjem

Po približno eni uri mi je pomen zastavic in vrednosti postal jasen in uspel sem utripati LED s pomočjo krmilnika Steam in ESP32. ¯_(ツ)_/¯

Datoteke

v1.0: "poskusni pristop"
- prva možnost, za katero sem izbral napačen regulator napetosti. TPS62291 prevzame samo napetost do 6 V. Razvijal sem več projektov vzporedno in sem pozabil, da mora naprava delati z 9 V.

v1.1: "dovolj dobro"
- ta možnost je vidna v videih in vse deluje

v1.2: "končno"
- dodane indikatorske LED na izhod ter optimizirane velikost in postavitev plošče

Naslednji kratek video prikazuje fazo povezave (1-3 sekunde po vklopu) in nadzor izhodov motorja. Konektor iz Lego še ni povezan. Šla bo v prazen prostor poleg drugih konektorjev, označen z belim pravokotnikom.

Moj sin zdaj redno uporablja ta krmilnik za krmiljenje strojev, ki jih je sestavil.

Med stresnim testom sem naletel le na eno težavo: mislil sem, da bo način "hitrega razpada" [fast decay] gonilnika motorja najbolje deloval, vendar je zaradi tega po nekaj sekundah delovanja hitrost motorja zelo padla . Zato sem kodo spremenil tako, da uporablja "slow decay" [slow decay].

Brezžično upravljanje Lego motorjev s Steam Controllerjem

Medtem ko nisem prepričan, kako deluje DRV in zakaj se motor najprej hitro vrti, nato pa po 10 sekundah začne postopoma upočasnjevati. Morda se MOSFET-ji segrevajo in njihov upor preveč narašča.

Upam, da bo ta primer, kako uporabljati Arduino brez truda, navdihnil druge ljudi in jim omogočil, da svoje otroke seznanijo z elektroniko.

Vir: www.habr.com

Dodaj komentar