Steam Controller менен Lego моторлорун зымсыз башкаруу

Steam Controller менен Lego моторлорун зымсыз башкаруу

Жаш кезимде мен ар дайым Лего технологиялык комплекттерин алгым келчү, ошондуктан алар менен ар кандай сонун нерселерди кура алмакмын. Айлануучу мунаралары бар автономдуу танктар. Бирок анда менде андай комплект болгон эмес.

Ал тургай кадимки Lego кирпичтери болгон эмес. Менин бир гана досум бар эле, анын бир тууганында ушул кымбат оюнчуктар бар болчу.

Мына азыр менин өзүм да ушул курактагы уулум бар. Жана ал танктарды курат, алар дубалга урунганга чейин келесоолук менен алдыга жылат :)

Эми, ESP32 жана ширетүүчү темирдин сыйкырына убакыт келди - келгиле, алар үчүн туура алыстан башкарууну чогулталы!

Жок, албетте, мен мындай пульттун бар экенин билем. Бирок алардын бири да мага толук ылайык келбейт. Алар же инфракызыл, 80-жылдардагы технология, же өтө чоң. Же кымбат. Эң негизгиси, мен уулума алардын эч бири жөнүндө айта албайм: "Мен муну сен үчүн өзгөчө кылдым!"

Келгиле, алардын баарын башкаруу үчүн жаңы жана жакшыртылган пультту жасайлы!

Steam Controller менен Lego моторлорун зымсыз башкаруу

заттар:

  • ESP32-WROOM-32D | WiFi, BLE жана I/O менен процессор - экөөнү башкаруу үчүн жетиштүү моторлор и LED.
  • DRV8833 | моторлор үчүн жетиштүү күч менен кош H-көпүрө.
  • TPS62162 | чыңалууну 17 В чейин төмөндөтүү, ошондой эле WSON-8 2x2 мм корпусун ширетүүдө көңүл ачуу үчүн
  • CP2104 | ESP32 программалоо үчүн
  • бириктиргичтери кыймылдаткычтарды жана диоддорду туташтыруу үчүн. Зымдарды кесип, ылдый жагына ширетебиз, үстүнө Лего туташтыргычын чаптайбыз.

Мунун баары бир аз тактайга туура келет - бул жерде EasyEDA редакторунда анын көрүнүшү:

Steam Controller менен Lego моторлорун зымсыз башкаруу

Титулдук сүрөттө көрүнүп турган зым эч кандай каталарды оңдоо үчүн эмес, USB'ден энергия менен камсыз кылуу үчүн керек. Бул мотор үчүн жетишсиз болушу мүмкүн, бирок, тилекке каршы, мен дагы эле Кытайдан байланыштарды ала элекмин. Ошентип, мен алгач светодиоддордун иштешин текшерем. Сүрөттөгү сулуулук үчүн мен жөн гана мотордон туташтыргычты тактага койдум.

Менин тактамдын 1.1 версиясында (EasyEDAда болгон 1.2 версиясынан айырмаланып) эч кандай светодиоддор жок болчу, ошондуктан мен эмне болуп жатканын көрүү үчүн чыгышка эки антипараллель диодду ширеттим. Эгер жакшылап карасаңыз, видеодо алдыга/артка кыймылды көрсөтүүчү 0603 жуп диоддорунун кезектешип активдештирилгени көрсөтүлгөн.

Башкаруу панелине келсек, алгач мен жөн гана баскычтары бар кошумча тактаны жана дагы бир ESP32 - классикалык алыстан башкарууну чогулткум келди.

Бирок, ошондо мен Steam контроллерлорунун Bluetooth Low Energy (BLE) иштөө режими бар экенин эстедим. Мен бул маселени чечүүнү чечтим жана бир нече сааттан кийин контроллерден пакеттерди алууну үйрөндүм.

Бул үчүн, сиз жөн гана өзүн SteamController деп атаган HID түзмөгүн издеп, ага туташуу керек. Андан кийин Valve жана бир нече документсиз кызматты колдонуңуз документсиз буйруктар, пакеттерди өткөрүүгө мүмкүндүк берет.

Steam Controller менен Lego моторлорун зымсыз башкаруу

Мен дагы документсиз отчет форматына туш болдум, аны кол менен талдап чыктым.

Steam Controller менен Lego моторлорун зымсыз башкаруу

Болжол менен бир сааттан кийин, желектердин жана баалуулуктардын мааниси мага түшүнүктүү болуп калды жана мен Steam контроллерин жана ESP32ди колдонуп, LEDди өчүрүүгө жетиштим. ¯_(ツ)_/¯

дептер

v1.0: "сыноо ыкмасы"
- туура эмес чыңалуу жөнгө салгычты тандап алган биринчи вариант. TPS62291 чыңалууну 6 V чейин гана көтөрөт. Мен параллелдүү бир нече долбоорлорду иштеп чыктым жана аппарат 9 V менен иштеши керек экенин унутуп калдым.

v1.1: "жетиштүү жакшы"
— бул параметр видеолордо көрүнүп турат жана баары иштейт

v1.2: "финал"
— чыгарууга индикатордук диоддор кошулду жана тактанын өлчөмүн жана макетін оптималдашты

Төмөнкү кыска видеодо туташуу фазасы (кубатты күйгүзгөндөн кийин 1-3 секунд) жана мотордун чыгышын башкаруу көрсөтүлгөн. Lego туташтыргычы азырынча туташа элек. Ал ак тик бурчтук менен белгиленген башка туташтыргычтардын жанындагы бош жерге барат.

Уулум азыр өзү курган аппараттарды башкаруу үчүн ушул контроллерди үзгүлтүксүз колдонот.

Стресс-тест учурунда мен бир гана көйгөйгө туш болдум: мен айдоочунун "тез ажыроо" режими эң жакшы иштейт деп ойлогом, бирок бир нече секунд иштегенден кийин мотордун ылдамдыгы кескин төмөндөп кетти. Ошентип, мен жай ажыроо колдонуу үчүн кодду өзгөрттү.

Steam Controller менен Lego моторлорун зымсыз башкаруу

Мен DRV кантип иштээрин жана эмне үчүн мотор адегенде тез айланып, анан 10 секунддан кийин акырындап жайлай баштаганын билбейм. Балким, MOSFETs ысып, алардын каршылыгы өтө эле өсүп жатат.

Ардуинону бул оңой колдонуу башкаларга балдарын электроникага тартуу үчүн илхам болот деп үмүттөнөм.

Source: www.habr.com

Комментарий кошуу