Steam Controller bilan Lego motorlarini simsiz boshqarish

Steam Controller bilan Lego motorlarini simsiz boshqarish

Yoshligimda men har doim ajoyib narsalarni qurish uchun Lego texno to'plamlariga ega bo'lishni xohlardim. Lego g'ishtlarini yoqadigan aylanuvchi minorali avtonom tanklar. Ammo keyin menda bunday to'plam yo'q edi.

Va hatto oddiy Lego g'ishtlari ham yo'q edi. Mening faqat bir do'stim bor edi, uning akasi bu qimmatbaho o'yinchoqlarga ega edi.

Hozir esa o‘sha yoshdagi o‘g‘lim bor. Va u tanklar quradi, ular devorga urilib ketguncha ... ahmoqona oldinga siljiydilar 🙂

Va endi, ESP32 va lehim temirining sehrli vaqti keldi - keling, ular uchun to'g'ri masofadan boshqarish pultini yig'amiz!

Yo'q, albatta, men bunday pultlarning mavjudligi haqida bilaman. Lekin ularning hech biri menga to'liq mos kelmaydi. Ular infraqizil, 80-yillarning texnologiyasiga ega yoki juda katta. Yoki qimmatlari. Va eng muhimi, men o'g'limga ularning hech biri haqida gapira olmayman: "Men buni ayniqsa siz uchun qildim!"

Shunday qilib, keling, hammani boshqarish uchun yangi, takomillashtirilgan masofadan boshqarish pultini yarataylik!

Steam Controller bilan Lego motorlarini simsiz boshqarish

Tarkibi:

  • ESP32-WROOM-32D | WiFi, BLE va I/U bilan protsessor - ikkitasini boshqarish uchun etarli motorlar и LED.
  • DRV8833 | motorlar uchun etarli quvvatga ega ikki tomonlama H-ko'prik.
  • TPS62162 | kuchlanishni 17V ga pasaytiring, shuningdek, WSON-8 2x2mm korpusini lehimlashda zavqlanish uchun
  • CP2104 | ESP32 dasturlash uchun
  • Ulagichlar motorlar va diodlarni ulash uchun. Simlarni kesib oling va ularni pastki qismga lehimlang va tepaga Lego ulagichini yopishtiring.

Bularning barchasi juda kichik doskaga joylashtiriladi - bu uning EasyEDA muharririda ko'rinishi:

Steam Controller bilan Lego motorlarini simsiz boshqarish

Sarlavha fotosuratida ko'rinadigan sim ba'zi xatolarni tuzatish uchun emas, balki USB dan quvvat olish uchun kerak. Dvigatel uchun bu etarli bo'lmasligi mumkin, ammo, afsuski, Xitoydan aloqalar menga hali kelmagan. Shuning uchun, men birinchi navbatda LEDlarning ishlashini tekshiraman. Suratdagi go'zallik uchun men shunchaki dvigateldan ulagichni taxtaga qo'ydim.

Mening platamning 1.1-versiyasida (EasyEDA-dagi 1.2-versiyasidan farqli o'laroq) LED yo'q edi, shuning uchun nima bo'layotganini ko'rishim uchun chiqishga ikkita antiparallel diodni lehimladim. Agar siz diqqat bilan qarasangiz, videoda oldinga / orqaga harakatni ko'rsatadigan 0603 diodli juftligini muqobil ravishda yoqish ko'rsatilgan.

Masofadan boshqarish pultiga kelsak, dastlab men tugmachalar bilan qo'shimcha platani va boshqa ESP32 - klassik masofadan boshqarish pultini yig'moqchi edim.

Biroq, keyin men Steam Controllers Bluetooth Low Energy (BLE) ish rejimiga ega ekanligini esladim. Men bu muammoni hal qilishga qaror qildim va bir necha soatdan so'ng men paketlarni kontrollerdan qanday olishni o'rgandim.

Buni amalga oshirish uchun siz o'zini SteamController deb ataydigan HID qurilmasini izlashingiz va unga ulanishingiz kerak. Va keyin Valve va bir nechta hujjatsiz xizmatdan foydalaning hujjatsiz buyruqlar, paketlarni uzatish imkonini beradi.

Steam Controller bilan Lego motorlarini simsiz boshqarish

Men qo'lda tahlil qilgan hujjatsiz hisobot formatiga ham duch keldim.

Steam Controller bilan Lego motorlarini simsiz boshqarish

Taxminan bir soat o'tgach, men uchun bayroqlar va qadriyatlarning ma'nosi aniq bo'ldi va men Steam boshqaruvchisi va ESP32 yordamida LEDni miltillashga muvaffaq bo'ldim. ¯_(ツ)_/¯

Fayllar

v1.0: "sinov usuli"
- noto'g'ri voltaj regulyatorini tanlagan birinchi variant. TPS62291 faqat 6V gacha kuchlanishni oladi.Men parallel ravishda bir nechta loyihalarni ishlab chiqdim va qurilma 9V bilan ishlashi kerakligini unutib qo'ydim.

v1.1: "etarlicha yaxshi"
- bu variant videolarda ko'rinadi va hamma narsa ishlaydi

v1.2: "yakuniy"
- chiqishga indikatorli LEDlar qo'shildi va taxtaning o'lchami va tartibi optimallashtirildi

Quyidagi qisqa videoda ulanish bosqichi (quvvat yoqilgandan keyin 1-3 soniya) va vosita chiqishlarini boshqarish ko'rsatilgan. Lego ulagichi hali ulanmagan. U oq to'rtburchak bilan belgilangan boshqa ulagichlar yonidagi bo'sh joyga o'tadi.

O'g'lim hozir yig'ilgan mashinalarni boshqarish uchun muntazam ravishda ushbu kontrollerdan foydalanadi.

Stress-test paytida men faqat bitta muammoga duch keldim: men haydovchining "tez parchalanishi" rejimini [tez parchalanishi] eng yaxshi ishlaydi deb o'yladim, lekin shu sababli, bir necha soniya ishlagandan so'ng, vosita tezligi juda pasayib ketdi. . Shunday qilib, men kodni "sekin parchalanish" [sekin parchalanish] dan foydalanishi uchun o'zgartirdim.

Steam Controller bilan Lego motorlarini simsiz boshqarish

Men DRV qanday ishlashini va motor nima uchun dastlab tez aylanayotganini bilmayman, keyin esa 10 soniyadan keyin u asta-sekin sekinlasha boshlaydi. Ehtimol, MOSFETlar qiziydi va ularning qarshiligi juda ko'p ortadi.

Umid qilamanki, Arduino-dan qanday qilib oson foydalanish haqidagi ushbu misol boshqa odamlarni ilhomlantiradi va ularga o'z farzandlarini elektronika bilan tanishtirishga imkon beradi.

Manba: www.habr.com

a Izoh qo'shish