![Arduino- ի վրա հիմնված (JETI) PPM- ից USB Joystick փոխարկիչ FSX- ի համար. 5 քայլ Arduino- ի վրա հիմնված (JETI) PPM- ից USB Joystick փոխարկիչ FSX- ի համար. 5 քայլ](https://i.howwhatproduce.com/images/006/image-17429-j.webp)
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48
![Arduino- ի վրա հիմնված (JETI) PPM- ից USB Joystick փոխարկիչ FSX- ի համար Arduino- ի վրա հիմնված (JETI) PPM- ից USB Joystick փոխարկիչ FSX- ի համար](https://i.howwhatproduce.com/images/006/image-17429-1-j.webp)
![Arduino- ի վրա հիմնված (JETI) PPM- ից USB Joystick փոխարկիչ FSX- ի համար Arduino- ի վրա հիմնված (JETI) PPM- ից USB Joystick փոխարկիչ FSX- ի համար](https://i.howwhatproduce.com/images/006/image-17429-2-j.webp)
Ես որոշեցի իմ JETI DC-16 հաղորդիչը 2 ռեժիմից միացնել 1 ռեժիմի, որը հիմնականում Throttle- ը և Elevator- ը ձախից աջ է փոխում և հակառակը: Քանի որ ես չէի ուզում խափանել իմ մոդելներից մեկը ՝ ուղեղումս ձախ/աջ շփոթության պատճառով, ինձ հետաքրքրում էր, թե հնարավո՞ր է մի փոքր զբաղվել FSX- ում:
Ես կարդացի և փորձարկեցի JETI հաղորդիչները, որոնք իրականում աջակցում են Joystick ռեժիմը տուփից դուրս, սակայն ես ուզում էի լիարժեք ճկունություն առանցքների և անջատիչների առաջադրանքների համար և օգտագործել TX- ը, ինչպես իսկական մոդելի դեպքում: Օգտագործելով ստացողի ելքը, հնարավոր է նաև օգտագործել լույսի ներքո DC-16- ում ազդանշանի մշակումը և օգտագործել խառնիչներ, թռիչքի փուլեր, երկակի դրույքաչափեր, ինչ որ կարող եք այնտեղ ծրագրավորել:
Վերջերս ես գտա մի գեղեցիկ ձեռնարկ, թե ինչպես պատրաստել USB HID մուտքային սարք, այն է `Joystick, էժան Arduino- ից, ինչպիսին է Pro Micro- ն:
www.instructables.com/id/Create-a-Joystick…
Սա հնարավորություն կտա ամեն ինչ անհրաժեշտ է ինքնաթիռը / ուղղաթիռը / ինչ էլ որ լինի FSX- ում վերահսկելու համար: Առկա են բազմաթիվ կացիններ և կոճակներ:
Քանի որ ես պարզապես ունեի պահեստային JETI RSAT2, ես որոշեցի այն միացնել Arduino- ի հետ և Joystick գրադարանի հետ միասին փորձեմ ներդնել մի փոքր PPM վերլուծիչ:
Ենթադրում եմ, որ այս քայլերին հետևող որևէ մեկը ծանոթ է Arduino- ի միացմանը և ծրագրավորմանը: Ես երաշխիքներ չեմ վերցնի անսարքությունների կամ վնասների համար:
Պարագաներ
Ձեզ հարկավոր կլինի…
- ցանկացած Arduino, որն աջակցում է Joystick գրադարանը, ես օգտագործել եմ Sparkfun Pro Micro 5V / 16 MHz
- Arduino IDE- ի վերջին տարբերակը
- ցանկացած RC ընդունիչ, որը թողարկում է PPM ազդանշան, ինչպես JETI RSAT2- ը
- մի քանի ցատկող լար (նվազ. 3)
- Arduino IDE- ում տեղադրված Joystick գրադարանը
- arduino-timer գրադարանը ՝
Քայլ 1: Միացրեք RX- ը և Arduino- ն
![Wire Up the RX և Arduino Wire Up the RX և Arduino](https://i.howwhatproduce.com/images/006/image-17429-3-j.webp)
![Wire Up the RX և Arduino Wire Up the RX և Arduino](https://i.howwhatproduce.com/images/006/image-17429-4-j.webp)
Էլեկտրագծերը բավականին պարզ են: Ես որոշեցի Arduino- ն միացնել միայն USB- ով, քանի որ այն պետք է ընդօրինակի Joystick սարքը: Սա Arduino- ին կմատակարարի 5 Վ լարման, որը կարող է օգտագործվել նաև RC ընդունիչին սնուցելու համար:
Ես օգտագործել եմ Pin VCC- ն, որն ապահովում է կարգավորվող ելք, և մոտակա Gnd քորոցը `պարզապես միացրեք այն PPM- ի միակցիչին + և - կապումներին: Երբ Arduino- ն սնվում է, ստացողը նույնպես միանում է:
PPM ազդանշանի համար ես որոշեցի օգտագործել ընդհատումները դրանք վերլուծելու համար: Ընդհատումները մատչելի են, օրինակ. Pin 3 -ում, այնպես որ պարզապես միացրեք այն այնտեղ. arduino- ում չկա «մայրենի RC կապ», բայց, հավանաբար, ընդունիչի ազդանշանում կարդալու ավելի ու ավելի տարբեր եղանակներ:
Ես ստիպված էի անջատել RX լարման ահազանգը, քանի որ VCC- ի լարումը USB մատակարարմամբ կլինի միայն 4.5V- ի սահմաններում, բայց բավականին կայուն, այնպես որ ընդհանրապես խնդիր չկա:
Քայլ 2: Ստացեք որոշ PPM ազդանշաններ
![Որոշ PPM ազդանշանների ստացում Որոշ PPM ազդանշանների ստացում](https://i.howwhatproduce.com/images/006/image-17429-5-j.webp)
![Որոշ PPM ազդանշանների ստացում Որոշ PPM ազդանշանների ստացում](https://i.howwhatproduce.com/images/006/image-17429-6-j.webp)
Երբ ստացողը և TX- ը սնուցվում են, ես ստանում էի PPM ազդանշաններ, ինչպես ցույց է տրված նկարում: 16 ալիք, ընդմիշտ կրկնվող: Եթե RSAT- ի Failsafe- ն անջատված է, և հաղորդիչն անջատված է, PPM- ի ելքը կանջատվի:
PPM- ի մասին լրացուցիչ տեղեկություններ հասանելի են այստեղ.
- https://hy.wikipedia.org/wiki/Pulse-position_modul…
- https://wiki.rc-network.de/index.php/PPM
Քանի որ այս դեպքում ես իրական իրեր չեմ թռչում, ես թքած ունեի տեսական ժամերի վրա և պարզապես պարզեցի, թե ոսկրոսկոպի վրա ինչ է իմ ստացողը սուր դուրս տալիս, երբ ձողերը ամբողջովին ձախից տեղափոխում է աջ (ստանդարտ պարամետրեր ՏՀՍ -ում). Թվում էր, թե -100% -ը համապատասխանում է 600 մկ երկարությամբ իմպուլսներին, և +100% -ից մինչև 1600 մկ: Ես նաև չէի մտածում իմ Arduino ծածկագրում դադարի իմպուլսների երկարության մասին (400μs), բայց ենթադրում էի, որ շրջանակի միջև ընկած հատվածը կազմում է րոպե: 3000μs
Քայլ 3: Հաղորդիչի կազմաձևում
![Հաղորդիչի կազմաձևում Հաղորդիչի կազմաձևում](https://i.howwhatproduce.com/images/006/image-17429-7-j.webp)
![Հաղորդիչի կազմաձևում Հաղորդիչի կազմաձևում](https://i.howwhatproduce.com/images/006/image-17429-8-j.webp)
![Հաղորդիչի կազմաձևում Հաղորդիչի կազմաձևում](https://i.howwhatproduce.com/images/006/image-17429-9-j.webp)
Քանի որ հսկիչ մակերևույթների միայն փաստացի դիրքը պետք է հայտնի լինի, մեկ RC ֆունկցիայի համար բավարար է մեկ ալիք / «servo»: Հետևաբար, կարող է կատարվել հաղորդիչի բավականին պարզ կարգավորում `նման սովորական RC մոդելի: Aileron- ի, վերելակի, ղեկի և շնչափողի հիմնական գործառույթներից յուրաքանչյուրը պահանջում է համապատասխանաբար միայն մեկ servo հաղորդիչ ալիք: Ավելացրել եմ նաև փեղկեր, արգելակներ և հանդերձում ՝ մինչ այժմ 9 ալիք ազատ թողնելով: Խնդրում ենք նկատի ունենալ, որ փեղկերը տեղադրվել են թռիչքի փուլում և ուղղակիորեն չեն վերահսկվում փայտի, սահիչի կամ կոճակի միջոցով:
Քայլ 4: Գործարկել Joystick- ը
![Գործարկում է Joystick- ը Գործարկում է Joystick- ը](https://i.howwhatproduce.com/images/006/image-17429-10-j.webp)
![Գործարկում է Joystick- ը Գործարկում է Joystick- ը](https://i.howwhatproduce.com/images/006/image-17429-11-j.webp)
Joystick գրադարանը բավականին հեշտ է օգտագործել և տալիս է որոշ օրինակներ և թեստեր: Օգտակար կլինի նախ ստուգել, արդյոք Arduino- ն ճանաչվում է որպես ճիշտ Joystick, մուտքի բաժնում և հրատարակված գրականությունը տալիս են որոշ լավ ուղեցույցներ:
«Սարքեր և տպիչներ» կառավարման վահանակում Arduino- ն ցուցադրվում էր որպես «Sparkfun Pro Micro», իսկ ջոյսթիկի փորձարկման պատուհանը ցույց էր տալիս 7 առանցք և բազմաթիվ աջակցվող կոճակներ: Նույնիսկ գլխարկի անջատիչը կարող է օգտագործվել Arduino- ում ծրագրավորվելիս:
Քայլ 5. Arduino- ի կոդավորումը
![Arduino- ի կոդավորում Arduino- ի կոդավորում](https://i.howwhatproduce.com/images/006/image-17429-12-j.webp)
![Arduino- ի կոդավորում Arduino- ի կոդավորում](https://i.howwhatproduce.com/images/006/image-17429-13-j.webp)
Այն, ինչ դեռ բացակայում է, PPM ազդանշանի իրական վերլուծությունն է և Joystick առանցքների և կոճակների նշանակումը: Ես որոշեցի հետևյալ քարտեզագրումը.
Ալիք / Ֆունկցիա / oyոյստիկ առաջադրանք.
- Շնչափող -> շնչափողի առանցք
- Այլերոն -> X առանցք
- Վերելակ -> Y առանցք
- Ղեկ -> X պտտման առանցք
- Flaալքեր -> Y ռոտացիայի առանցք
- Արգելակ -> Z առանցք
- Gear -> Կոճակ 0
Երբ հանդերձանքը իջնում է, Joystick- ի առաջին կոճակը պետք է սեղմվի և ազատվի հանդերձանքը բարձրացնելիս: Այնուամենայնիվ, դա կպահանջի FSUIPC FSX- ի համար, տուփից դուրս, FSX- ը կընդունի միայն հանդերձանքը փոխելու կոճակ, ինչը հենց այն չէ, ինչ կատարվում է իմ մոդելների հետ:
Ես տրամադրեցի կոդի իմ ընթացիկ տարբերակը բազմաթիվ մեկնաբանություններով, որոնք ինձ համար բավականին լավ են աշխատում. Ազատ զգալ փոխեք ձեր առաջադրանքը կամ ավելացրեք նոր գործառույթներ: Վերջին 9 RC ալիքները ներկայումս չեն օգտագործվում:
Կարգավորման համար Joystick դասը պետք է նախաստորագրվի ՝ հիմնականում թվային առանցքների տիրույթները սահմանելով.
/ * Սահմանել առանցքների տիրույթ (սահմանվում է վերնագրում, 0 - 1000) */
Joystick.setXAxisRange (CHANNEL_MIN, CHANNEL_MAX); Joystick.setYAxisRange (CHANNEL_MIN, CHANNEL_MAX); …
Օգտագործելով 0 -ից 1000 -ի արժեքները, հնարավոր է ուղղակիորեն քարտեզագրել զարկերակի երկարությունը (600 - 1600μs) ըստ ջոյսթիկի արժեքներին `առանց վերալիցքավորման:
DIN 3 – ը նախաստորագրված է որպես թվային մուտքագրում, քաշքշուկները միացված և ընդհատված ՝ կցված.
pinMode (PPM_PIN, INPUT_PULLUP);
attachInterrupt (digitalPinToInterrupt (PPM_PIN), PPM_Pin_Changed, CHANGE);
Վրիպազերծման նպատակների համար ես պարբերական պարբերականությամբ ավելացրել եմ որոշ տպագրություններ ՝ օգտագործելով arduino-timer գրադարանը.
եթե (SERIAL_PRINT_INTERVAL> 0) {
scheduler.every (SERIAL_PRINT_INTERVAL, (void*) -> bool {SerialPrintChannels (); true true;}); }
PIN- ի ընդհատումը կկոչվի ամեն անգամ, երբ pin- ի տրամաբանական արժեքը փոխվի, այնպես որ PPM ազդանշանի յուրաքանչյուր եզրին: Գնահատեք զարկերակի երկարությունը `պարզ ժամանակացույցով` օգտագործելով micros ():
uint32_t curTime = միկրո ();
uint32_t զարկերակLength = curTime - edgeTime; uint8_t curState = digitalRead (PPM_PIN);
Գնահատելով ընթացիկ քորոցի վիճակը և այն համատեղելով զարկերակի երկարության և անցյալ իմպուլսների հետ, կարող են դասակարգվել նոր իմպուլսները: Հետևյալ պայմանականությունը կբացահայտի միջանկյալ բացը.
եթե (lastState == 0 && զարկերակ Երկարություն> 3000 && զարկերակ Երկարություն <6000)
Հետագա իմպուլսների դեպքում զարկերակի երկարությունը քարտեզագրվելու է առանցքի վիճակի `ճարմանդների երկարությունը կտրելով և կողմնակալելով, որպեսզի համապատասխանի ջոյսթիկի առանցքի տիրույթին.
uint16_t rxLength = զարկերակային երկարություն;
rxLength = (rxLength> 1600)? 1600: rxLength; rxLength = (rxLength <600)? 600: rxLength; rxChannels [curChannel] = rxLength - 600;
RxChannels զանգվածը, ի վերջո, պարունակում է 0 - 1000 -ից 16 արժեք ՝ նշելով փայտի / սահիչի և կոճակի դիրքերը:
16 ալիք ստանալուց հետո Joystick- ի քարտեզագրումը կատարվում է.
/ * առանցքներ */
Joystick.setThrottle (ալիքներ [0]); Joystick.setXAxis (ալիքներ [1]); Joystick.setYAxis (1000 - ալիքներ [2]); Joystick.setRxAxis (ալիքներ [3]); Joystick.setRyAxis (ալիքներ [4]); Joystick.setZAxis (1000 - ալիքներ [5]); / * կոճակներ */ Joystick.setButton (0, (ալիքներ [6] <500? 1: 0)); / * տվյալների թարմացում USB */ Joystick.sendState ();
Ես կոդի մեջ մի քանի առանցք շրջեցի, ինչը բացարձակապես անհրաժեշտ չէ, քանի որ առանցքը կարող է նաև շրջվել ՝ շրջելով servo ուղղությունը կամ FSX- ում նշանակումը: Այնուամենայնիվ, ես որոշեցի պահպանել servo- ի ուղղությունները և նաև FSX- ի օրիգինալ հանձնարարականը:
Կոճակը միացված կամ անջատված է 7 -րդ շեմային ալիքով:
Եվ մի մոռացեք նշելու ժամանակացույցը … հակառակ դեպքում, վրիպազերծման տպումներ չեն երևա:
դատարկ շրջան () {
scheduler.tick (); }
Իմ կցած սքրինշոթում կարող եք տեսնել, որ 1 -ին ալիքը 1000 -ից (լրիվ շնչափող) տեղափոխվել է 0 (անգործուն):
FSX- ը Arduino- ն կբացահայտի այնպես, ինչպես ցանկացած այլ Joystick, այնպես որ պարզապես նշանակեք կոճակը և առանցքները և զվարճացեք թռիչքից:
Այս մոտեցման մեջ ինձ իսկապես դուր է գալիս այն, որ դուք կարող եք պարզապես օգտագործել ձեր հաղորդիչը, ինչպես իրական մոդելի դեպքում, օրինակ. թռիչքի փուլերի օգտագործումը և այլն:
Խորհուրդ ենք տալիս:
Արագ փոխարկիչ մինչև $ 50! Kazeshifter Arduino կարգավորելի արագ փոխարկիչ ՝ 7 քայլ
![Արագ փոխարկիչ մինչև $ 50! Kazeshifter Arduino կարգավորելի արագ փոխարկիչ ՝ 7 քայլ Արագ փոխարկիչ մինչև $ 50! Kazeshifter Arduino կարգավորելի արագ փոխարկիչ ՝ 7 քայլ](https://i.howwhatproduce.com/images/002/image-4654-j.webp)
Արագ փոխարկիչ մինչև $ 50! Kazeshifter Arduino կարգավորելի արագ փոխարկիչ. Ողջույն Superbike կամ մոտոցիկլետի սիրահարներ: Այս հրահանգով ես ձեզ կասեմ, թե ինչպես պատրաստել ձեր սեփական արագ փոխարկիչը էժան գնով: Այն մարդկանց համար, ովքեր ծույլ են կարդալ այս հրահանգը, պարզապես դիտեք իմ տեսանյութը: Նշում. արդեն օգտագործում են Վառելիքի ներարկման համակարգ, ինչ -որ
Առանց էկրանի / ցուցադրման (առանց գլխի) աշխատելը Raspberry Pi- ի կամ Linux- ի վրա հիմնված այլ համակարգիչների վրա `6 քայլ
![Առանց էկրանի / ցուցադրման (առանց գլխի) աշխատելը Raspberry Pi- ի կամ Linux- ի վրա հիմնված այլ համակարգիչների վրա `6 քայլ Առանց էկրանի / ցուցադրման (առանց գլխի) աշխատելը Raspberry Pi- ի կամ Linux- ի վրա հիմնված այլ համակարգիչների վրա `6 քայլ](https://i.howwhatproduce.com/images/010/image-27967-j.webp)
Առանց էկրանի / ցուցադրման (առանց գլխի) աշխատելը Raspberry Pi- ի կամ Linux- ի / unix- ի վրա հիմնված այլ համակարգիչների վրա. Երբ մարդկանց մեծ մասը գնում է Raspberry PI, նրանք կարծում են, որ իրենց անհրաժեշտ է համակարգչի էկրան: Մի վատնեք ձեր գումարը համակարգչի անհարկի մոնիտորների և ստեղնաշարերի վրա: Մի վատնեք ձեր ժամանակը համակարգիչների միջև ստեղնաշարեր և մոնիտորներ տեղափոխելով: Մի կապեք հեռուստացույց, երբ այն չկա
Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ - IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. 4 քայլ
![Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ - IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. 4 քայլ Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ - IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. 4 քայլ](https://i.howwhatproduce.com/images/001/image-764-35-j.webp)
Arduino- ի վրա հիմնված ոչ կոնտակտային ինֆրակարմիր ջերմաչափ | IR- ով հիմնված ջերմաչափ Arduino- ի միջոցով. Բարև ձեզ, այս հրահանգների մեջ մենք կդարձնենք ոչ կոնտակտային ջերմաչափ arduino- ով: Քանի որ երբեմն հեղուկի/պինդի ջերմաստիճանը չափազանց բարձր է կամ ցածր, ապա դժվար է դրա հետ կապ հաստատել և կարդալ այդ դեպքում ջերմաստիճանը
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)
![Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով) Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 վրա հիմնված միջինի գեներատոր). 4 քայլ (նկարներով)](https://i.howwhatproduce.com/images/002/image-3114-36-j.webp)
Եղանակի վրա հիմնված երաժշտության գեներատոր (ESP8266 Based Midi Generator). Բարև, այսօր ես կբացատրեմ, թե ինչպես պատրաստել ձեր սեփական եղանակի վրա հիմնված փոքր երաժշտության գեներատոր: Այն հիմնված է ESP8266- ի վրա, որը նման է Arduino- ին և արձագանքում է ջերմաստիճանին, անձրևին: և լույսի ուժգնություն: Մի ակնկալեք, որ այն ամբողջ երգեր կամ ակորդներ կհաղորդի
Ինչպես միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. 3 քայլ (նկարներով)
![Ինչպես միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. 3 քայլ (նկարներով) Ինչպես միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. 3 քայլ (նկարներով)](https://i.howwhatproduce.com/images/004/image-11395-33-j.webp)
Ինչպե՞ս միացնել MicroPython- ի որոնվածը ESP8266- ի վրա հիմնված Sonoff խելացի անջատիչի վրա. Այդ գծից ամենաճկուն և էժան սարքերից են Sonoff Basic- ը և Sonoff Dual- ը: Սրանք Wi-Fi- ով միացված անջատիչներ են ՝ հիմնված հիանալի չիպի ՝ ESP8266- ի վրա: Մինչդեռ