Երբ ես երիտասարդ էի, ես միշտ ցանկացել էի ունենալ Lego տեխնո հավաքածուներ, որոնցով հիանալի իրեր պատրաստելու համար: Ինքնավար տանկեր՝ պտտվող պտուտահաստոցներով, որոնք կրակում են լեգո աղյուսներով: Բայց հետո ես այդպիսի հավաքածու չունեի:
Եվ նույնիսկ սովորական Lego աղյուսներ չկային: Ես միայն ընկեր ունեի, ում եղբայրն ուներ այս թանկարժեք խաղալիքները:
Իսկ հիմա ես այդ տարիքի որդի ունեմ։ Եվ նա տանկեր է կառուցում, որոնք ... հիմարաբար առաջ են տանում, մինչև բախվեն պատին 🙂
Եվ հիմա, ժամանակն է ESP32-ի և զոդման երկաթի կախարդանքի համար. եկեք հավաքենք նրանց համար ճիշտ հեռակառավարման վահանակը:
Չէ, իհարկե գիտեմ նման հեռակառավարիչների գոյության մասին։ Բայց նրանցից ոչ մեկն ինձ լիովին չի սազում։ Դրանք կամ ինֆրակարմիր են, 80-ականների տեխնոլոգիայով, կամ չափազանց մեծ են: Կամ թանկարժեքները: Եվ ամենակարևորը, ես չեմ կարողանա որդուս ասել դրանցից որևէ մեկի մասին. «Ես դա հատուկ քեզ համար եմ արել»:
Այսպիսով, եկեք ստեղծենք նոր, կատարելագործված հեռակառավարման վահանակ՝ բոլորին կառավարելու համար:
Բաղադրությունը:
ESP32-WROOM-32D | WiFi, BLE և I/O պրոցեսոր - բավական է երկուսը կառավարելու համար շարժիչներ и LED.
DRV8833 | կրկնակի H-կամուրջ՝ շարժիչների համար բավարար հզորությամբ:
TPS62162 | իջեցրեք լարումը մինչև 17 Վ, ինչպես նաև զվարճանքի համար WSON-8 2x2 մմ պատյանը զոդելիս
CP2104 | ESP32 ծրագրավորման համար
Միակցիչներ շարժիչների և դիոդների միացման համար. Կտրեք լարերը և կպցրեք դրանք ներքևի մասում, իսկ վերևում կպցրեք Lego միակցիչը:
Այս ամենը կտեղադրվի բավականին փոքր տախտակի վրա. ահա դրա տեսքը EasyEDA խմբագրիչում.
Լարը, որը երևում է վերնագրի լուսանկարում, անհրաժեշտ է ոչ թե որոշ սխալներ շտկելու, այլ USB-ից էներգիա մատակարարելու համար։ Հնարավոր է, որ դա բավարար չէ շարժիչի համար, բայց, ցավոք, Չինաստանից կոնտակտներ ինձ դեռ չեն հասել: Հետեւաբար, ես նախ ստուգում եմ LED- ների աշխատանքը: Լուսանկարում գեղեցկության համար ես պարզապես շարժիչից միակցիչը դրեցի տախտակի վրա:
Իմ տախտակի 1.1 տարբերակը (ի տարբերություն EasyEDA-ի 1.2 տարբերակի) չուներ LED-ներ, այնպես որ ես երկու հակազուգահեռ դիոդ զոդեցի ելքին, որպեսզի կարողանայի տեսնել, թե ինչ է կատարվում: Եթե ուշադիր նայեք, տեսահոլովակը ցույց է տալիս 0603 զույգ դիոդների այլընտրանքային միացումը՝ ցույց տալով առաջ/հետ շարժումը:
Ինչ վերաբերում է հեռակառավարմանը, ապա սկզբում ես պարզապես ուզում էի հավաքել լրացուցիչ տախտակ կոճակներով և ևս մեկ ESP32՝ դասական հեռակառավարման վահանակ:
Այնուամենայնիվ, հետո հիշեցի, որ Steam Controller-ներն ունեն Bluetooth ցածր էներգիայի (BLE) ռեժիմ: Ես որոշեցի զբաղվել այս հարցով, և մի քանի ժամ անց սովորեցի, թե ինչպես ստանալ փաթեթներ վերահսկիչից:
Դա անելու համար պարզապես պետք է փնտրել HID սարք, որն իրեն անվանում է SteamController և միանալ դրան: Եվ հետո օգտագործեք ոչ փաստաթղթավորված ծառայություն Valve-ից և մի քանիսը չփաստաթղթավորված հրամաններ, որը թույլ է տալիս փաթեթների փոխանցումը:
Ես հանդիպեցի նաև չփաստաթղթավորված հաշվետվության ձևաչափի, որը ես ձեռքով վերլուծեցի:
Մոտ մեկ ժամ անց դրոշների և արժեքների իմաստը պարզ դարձավ ինձ համար, և ես կարողացա թարթել LED-ն՝ օգտագործելով Steam կարգավորիչը և ESP32-ը: ¯_(ツ)_/¯
v1.0: «փորձնական մոտեցում»
- առաջին տարբերակը, որի համար ես ընտրեցի սխալ լարման կարգավորիչը: TPS62291-ը միայն լարումը վերցնում է մինչև 6 Վ, ես զուգահեռ մի քանի նախագծեր էի մշակում և մոռացել էի, որ սարքը պետք է աշխատի 9 Վ-ով:
v1.1: "բավական լավ"
- այս տարբերակը տեսանելի է տեսանյութերում, և ամեն ինչ աշխատում է
v1.2: «վերջնական»
- ավելացրեց ցուցիչի LED-ները ելքին և օպտիմիզացրեց տախտակի չափն ու դասավորությունը
Հետևյալ կարճ տեսանյութը ցույց է տալիս միացման փուլը (միացումից 1-3 վայրկյան հետո) և շարժիչի ելքերի կառավարումը: Lego-ի միակցիչը դեռ միացված չէ: Այն կգնա մյուս միակցիչների կողքին գտնվող դատարկ տարածությունը, որը նշված է սպիտակ ուղղանկյունով:
Իմ որդին այժմ պարբերաբար օգտագործում է այս կարգավորիչը՝ իր հավաքած մեքենաները կառավարելու համար:
Սթրես թեստի ժամանակ ես հանդիպեցի միայն մեկ խնդրի. կարծում էի, որ շարժիչի վարորդի «արագ քայքայման» ռեժիմը [արագ քայքայումը] լավագույնս կաշխատի, բայց դրա պատճառով մի քանի վայրկյան աշխատելուց հետո շարժիչի արագությունը շատ իջավ։ . Այսպիսով, ես փոխեցի կոդը այնպես, որ այն օգտագործի «դանդաղ քայքայումը» [դանդաղ քայքայումը]:
Թեև ես վստահ չեմ, թե ինչպես է աշխատում DRV-ն և ինչու է շարժիչը սկզբում արագ պտտվում, իսկ հետո 10 վայրկյան հետո սկսում է աստիճանաբար դանդաղել: Միգուցե MOSFET-ները տաքանում են, և նրանց դիմադրությունը չափազանց բարձրանում է:
Հուսով եմ, որ Arduino-ն առանց ջանքերի օգտագործելու այս օրինակը ոգեշնչում է այլ մարդկանց և թույլ է տալիս նրանց երեխաներին ծանոթացնել էլեկտրոնիկայի հետ: