Cov txheej txheem:

Arduino Raws (JETI) PPM rau USB Joystick Converter rau FSX: 5 Cov Kauj Ruam
Arduino Raws (JETI) PPM rau USB Joystick Converter rau FSX: 5 Cov Kauj Ruam

Video: Arduino Raws (JETI) PPM rau USB Joystick Converter rau FSX: 5 Cov Kauj Ruam

Video: Arduino Raws (JETI) PPM rau USB Joystick Converter rau FSX: 5 Cov Kauj Ruam
Video: Симулятор джойстика для аппаратуры управления на arduino / ppm 2024, Hlis ntuj nqeg
Anonim
Arduino Raws (JETI) PPM rau USB Joystick Converter rau FSX
Arduino Raws (JETI) PPM rau USB Joystick Converter rau FSX
Arduino Raws (JETI) PPM rau USB Joystick Converter rau FSX
Arduino Raws (JETI) PPM rau USB Joystick Converter rau FSX

Kuv txiav txim siab hloov kuv JETI DC-16 transmitter los ntawm Hom 2 mus rau Hom 1, uas ib txwm hloov Throttle thiab Elevator los ntawm sab laug mus rau sab xis thiab hloov pauv. Txij li thaum kuv tsis xav tsoo ib qho ntawm kuv tus qauv vim qee qhov sab laug/txoj cai tsis meej pem hauv kuv lub hlwb, Kuv xav tsis thoob tias nws puas tuaj yeem xyaum me ntsis hauv FSX.

Kuv nyeem thiab sim JETI tus xa xov yeej txhawb nqa Joystick hom tawm ntawm lub npov, txawm li cas los xij kuv xav tau kev hloov pauv tag nrho rau cov kab thiab hloov cov haujlwm thiab siv TX raws li tus qauv tiag. Los ntawm kev siv tus txais tus tso tawm, nws kuj tseem tuaj yeem siv lub teeb liab ua hauv DC-16 thiab siv cov khoom sib xyaw, theem ya davhlau, ob tus nqi, yam koj tuaj yeem ua haujlwm tau.

Tsis ntev los no kuv pom cov lus qhia zoo yuav ua li cas thiaj ua tau USB HID cov khoom siv, uas yog Joystick, tawm ntawm Arduino pheej yig zoo li Pro Micro:

www.instructables.com/id/Create-a-Joystick…

Qhov no yuav ua kom txhua yam xav tau los tswj lub dav hlau / nyoob hoom qav taub / ib yam dab tsi hauv FSX! Muaj ntau txoj kab thiab cov nyees khawm muaj.

Txij li thaum kuv nyuam qhuav muaj qhov seem JETI RSAT2, Kuv txiav txim siab los xaim nws nrog Arduino thiab sim siv qhov me me PPM parser nrog rau lub tsev qiv ntawv Joystick.

Kuv xav tias leej twg ua raws cov kauj ruam no tau paub txog kev txuas thiab ua haujlwm Arduino. Kuv yuav tsis lees paub qhov ua tsis raug lossis puas tsuaj!

Khoom siv

Koj yuav xav tau…

  • ib qho Arduino txhawb los ntawm lub tsev qiv ntawv Joystick, Kuv siv Sparkfun Pro Micro 5V / 16 MHz
  • ib qho tsis ntev los no ntawm Arduino IDE
  • ib qho RC tus txais tawm cov cim PPM, zoo li JETI RSAT2
  • ob peb jumper xov (min. 3)
  • lub tsev qiv ntawv Joystick tau teeb tsa hauv Arduino IDE
  • lub tsev qiv ntawv arduino-timer:

Kauj Ruam 1: Hlau RX thiab Arduino

Hlau RX thiab Arduino
Hlau RX thiab Arduino
Hlau RX thiab Arduino
Hlau RX thiab Arduino

Kev txuas yog yooj yim heev. Kuv txiav txim siab tsuas yog siv lub zog Arduino los ntawm USB, txij li nws yuav tsum ua raws li Joystick ntaus ntawv. Qhov no yuav muab Arduino nrog 5V, uas tuaj yeem siv tau rau lub zog RC tus txais.

Kuv siv tus Pin VCC, uas muab cov cai tswj hwm, thiab qhov ze Gnd tus pin - tsuas yog txuas nws rau PPM tus txuas + thiab - pins. Thaum Arduino tau txais lub zog, tus txais tam sim no tau txhawb zog, ib yam.

Txog qhov teeb liab PPM, Kuv txiav txim siab siv kev cuam tshuam los cais lawv. Kev cuam tshuam yog muaj xws li ntawm tus Pin 3, yog li tsuas yog txuas nws nyob ntawd - tsis muaj "tus lej RC tus lej" ntawm arduino, tab sis muaj peev xwm ntau dua thiab ntau txoj hauv kev los nyeem hauv lub cim txais.

Kuv yuav tsum tau lov tes taw RX lub tswb ntsuas hluav taws xob, txij li VCC qhov hluav taws xob nrog USB cov khoom siv yuav nyob ib puag ncig 4.5V nkaus xwb - tab sis ruaj khov heev, yog li tsis muaj teeb meem dab tsi.

Kauj Ruam 2: Tau Txais Qee Qhov Teeb Meem PPM

Tau Txais Qee Cov Cim PPM
Tau Txais Qee Cov Cim PPM
Tau Txais Qee Cov Cim PPM
Tau Txais Qee Cov Cim PPM

Thaum tus txais thiab TX tau siv, kuv tau txais PPM cov cim zoo li qhia hauv daim duab. 16 raws, rov ua tas mus li. Yog Failsafe ntawm RSAT yog neeg xiam oob khab thiab lub tshuab xa hluav taws xob tawm, PPM cov ntawv tso tawm yuav raug xiam oob khab.

Xav paub ntau ntxiv txog PPM muaj nyob ntawm no:

  • https://en.wikipedia.org/wiki/Pulse-position_modul…
  • https://wiki.rc-network.de/index.php/PPM

Txij li thaum kuv tsis ya cov khoom tiag hauv qhov no, Kuv tsis quav ntsej txog lub sijhawm theoretical thiab tsuas yog xam tawm ntawm oscilloscope qhov kuv tus txais tau txais txiaj ntsig zoo li cas thaum txav cov pas los ntawm sab laug mus rau sab xis (tus qauv teeb tsa hauv TX). Nws zoo li -100% sib xws rau cov noob taum nrog qhov ntev ntawm 600µs, thiab +100% txog 1600µs. Kuv kuj tsis quav ntsej txog qhov ntev ntawm kev ncua pulses (400µs) hauv kuv li Arduino code, tab sis kuv xav tias tus ncej nrug ntawm min. 3000s ib.

Kauj Ruam 3: Kho Tus Kws Tshaj Lij

Kho lub Transmitter
Kho lub Transmitter
Kho lub Transmitter
Kho lub Transmitter
Kho lub Transmitter
Kho lub Transmitter

Txij li tsuas yog txoj haujlwm tiag tiag ntawm cov chaw tswj hwm yuav tsum tau paub, ib qho channel / "servo" rau RC muaj nuj nqi txaus. Thiaj li, qhov teeb tsa yooj yim xa tuaj yeem ua tau - zoo ib yam li tus qauv RC ib txwm muaj. Lub luag haujlwm tseem ceeb aileron, of the elevator, rudder thiab throttle txhua tus xav tau tsuas yog ib qho servo feem cuam tshuam cov channel. Kuv kuj tau ntxiv cov flaps, nres thiab iav, tawm hauv 9 txoj kev pub dawb kom deb li deb. Thov nco ntsoov tias Flaps tau muab tso rau theem davhlau, thiab tsis raug tswj ncaj qha los ntawm tus pas, swb lossis khawm.

Kauj Ruam 4: Khiav Joystick

Khiav Joystick
Khiav Joystick
Khiav Joystick
Khiav Joystick

Lub tsev qiv ntawv Joystick siv tau yooj yim heev, thiab muab qee qhov piv txwv thiab kev sim. Nws yuav tsum muaj txiaj ntsig zoo los tshawb xyuas thawj zaug yog tias Arduino raug kuaj pom tias yog Joystick tsim nyog, cov lus qhia txuas hauv ntu nkag thiab lub tsev qiv ntawv nws tus kheej muab qee cov lus qhia zoo.

Hauv Devices thiab Printers tswj vaj huam sib luag, Arduino tau nthuav tawm zoo li "Sparkfun Pro Micro", thiab lub qhov rooj ntsuas qhov joystick tau qhia 7 qag thiab muaj cov khawm txhawb nqa ntau. Txawm tias lub kaus mom hloov pauv tuaj yeem siv tau thaum ua haujlwm hauv Arduino.

Kauj Ruam 5: Coding Arduino

Coding Arduino
Coding Arduino
Coding Arduino
Coding Arduino

Dab tsi tseem tseem ploj yog qhov txheeb xyuas qhov tseeb ntawm PPM lub teeb liab thiab ua haujlwm rau Joystick qij thiab cov nyees khawm. Kuv txiav txim siab rau daim duab qhia hauv qab no:

Channel / Function / Joystick txoj haujlwm:

  1. Throttle -> Throttle axis
  2. Aileron -> X axis
  3. Of Elevator -> Y axis
  4. Rudder -> X tig axis
  5. Flaps -> Y tig axis
  6. Nres -> Z axis
  7. Iav -> Khawm 0

Thaum lub iav poob, thawj lub khawm ntawm Joystick yuav tsum tau nias thiab yuav tso tawm thaum tsa lub iav. Txawm li cas los xij, qhov no yuav xav tau FSUIPC rau FSX, tawm ntawm lub thawv, FSX yuav lees txais tsuas yog ib lub pob rau toggling lub iav, uas tsis yog yam uas tshwm sim nrog kuv cov qauv.

Kuv tau muab kuv cov kab lus tam sim no nrog ntau cov lus pom, uas ua haujlwm tau zoo heev rau kuv - xav tias hloov pauv koj txoj haujlwm lossis ntxiv cov haujlwm tshiab. Qhov kawg 9 RC raws tam sim no tsis siv.

Txog kev teeb tsa, chav kawm Joystick yuav tsum tau pib ua, ib txwm los ntawm kev txheeb xyuas cov lej ntawm cov lej:

/ * Teeb cov kab ntau yam (txhais hauv lub taub hau, 0 - 1000) */

Joystick.setXAxisRange (CHANNEL_MIN, CHANNEL_MAX); Joystick.setYAxisRange (CHANNEL_MIN, CHANNEL_MAX); …

Los ntawm kev siv qhov tseem ceeb ntawm 0 txog 1000, nws muaj peev xwm qhia ncaj qha daim ntawv qhia lub plawv dhia ntev (600 - 1600µs) mus rau tus lej joystick yam tsis muaj kev daws teeb meem.

DIN 3 tau pib ua cov tswv yim digital, rub tawm qhib, thiab cuam tshuam nrog:

pinMode (PPM_PIN, INPUT_PULLUP);

attachInterrupt (digitalPinToInterrupt (PPM_PIN), PPM_Pin_Changed, Hloov);

Txog kev daws teeb meem lub hom phiaj, Kuv tau ntxiv qee qhov luam tawm ntawm Serial interface hauv ntu ntu, siv lub tsev qiv ntawv arduino-timer:

yog (SERIAL_PRINT_INTERVAL> 0) {

scheduler.every (SERIAL_PRINT_INTERVAL, (void*) -> bool {SerialPrintChannels (); rov muaj tseeb;}); }

Tus pin cuam tshuam yuav raug hu thaum twg tus lej tus lej tus lej tau hloov pauv, yog li rau txhua ntug hauv PPM teeb liab. Txheeb xyuas qhov ntsuas qhov ntev tsuas yog siv lub sijhawm yooj yim siv micros ():

uint32_t curTime = micros ();

uint32_t mem tesLength = curTime - edgeTime; uint8_t curState = digitalRead (PPM_PIN);

Los ntawm kev tshuaj xyuas lub xeev tus lej tam sim no thiab sib txuas nws nrog qhov ntev ntawm cov mem tes thiab cov mem tes yav dhau los, cov noob taum tshiab tuaj yeem cais tawm. Cov hauv qab no raws txoj cai yuav txheeb xyuas qhov sib txawv ntawm qhov sib txawv:

yog (lastState == 0 && pulseLength> 3000 && pulseLength <6000)

Rau cov pluas noj tom ntej, qhov ntsuas qhov ntev yuav raug teeb tsa mus rau lub xeev axis los ntawm kev txiav thiab txiav txim siab qhov ntev ntawm cov mem tes kom haum rau joystick axis ntau:

uint16_t rxLength = mem tesLength;

rxLength = (rxLength> 1600)? 1600: rxLength; rxLength = (rxLength <600)? 600: rx ntev; rxChannels [curChannel] = rxLength - 600;

RxChannels array thaum kawg muaj 16 qhov tseem ceeb los ntawm 0 - 1000, qhia txog lo / swb thiab khawm txoj haujlwm.

Tom qab tau txais 16 txoj hauv kev, kev kos duab rau Joystick tau ua tiav:

/ * os */

Joystick.setThrottle (raws [0]); Joystick.setXAxis (raws [1]); Joystick.setYAxis (1000 - raws [2]); Joystick.setRxAxis (raws [3]); Joystick.setRyAxis (raws [4]); Joystick.setZAxis (1000 - raws [5]); / * nyees khawm */ Joystick.setButton (0, (raws [6] <500? 1: 0)); / * hloov kho cov ntaub ntawv ntawm USB */ Joystick.sendState ();

Kuv tau hloov qee txoj kab hauv txoj cai, uas tsis yog qhov tsim nyog kiag li, txij li lub hauv paus tseem tuaj yeem hloov pauv los ntawm kev xa cov lus qhia servo lossis txoj haujlwm hauv FSX. Txawm li cas los xij, Kuv txiav txim siab khaws cov lus qhia ua haujlwm thiab tseem yog thawj qhov haujlwm FSX.

Lub pob tau hloov lossis qhib los ntawm qhov pib qhov 7.

Thiab tsis txhob hnov qab zuam tus teem sijhawm… txwv tsis pub, tsis muaj qhov debug luam tawm yuav pom.

void voj () {

timer.tick (); }

Hauv qhov screenshot kuv txuas koj tuaj yeem pom, channel 1 tau txav los ntawm 1000 (tag nrho lub qhov rooj) mus rau 0 (tsis ua haujlwm).

FSX yuav txheeb xyuas Arduino ib yam li lwm yam Joystick, yog li tsuas yog muab lub pob thiab qag thiab muaj kev lom zem tshem tawm!

Qhov kuv nyiam tiag tiag txog txoj hauv kev no, koj tuaj yeem siv koj lub tshuab xa khoom raws li tus qauv tiag, piv txwv. siv davhlau ya nyob twg thiab lwm yam.

Pom zoo: