Mundarija:
- Ta'minotlar
- 1 -qadam: RX va Arduino -ni ulang
- 2 -qadam: Ba'zi PPM signallarini olish
- 3 -qadam: Transmitterni sozlash
- 4 -qadam: Joystikni ishga tushirish
- 5 -qadam: Arduino -ni kodlash
Video: Arduino asosidagi (JETI) PPM -dan FSX uchun USB -konvertor konvertori: 5 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Men JETI DC-16 uzatgichimni 2-rejimdan 1-rejimga o'tkazishga qaror qildim, u asosan gaz va liftni chapdan o'ngga va aksincha o'zgartiradi. Miyamda chap/o'ng chalkashlik tufayli o'z modellarimdan birini buzishni xohlamaganim uchun, men FSXda biroz mashq qilish mumkinmi, deb hayron bo'ldim.
Men JETI transmitterlarini o'qib chiqdim va sinab ko'rdim, aslida qutidan tashqarida Joystick rejimini qo'llab -quvvatlayman, lekin men o'qlar va kalitlarni almashtirish uchun to'liq moslashuvchanlikni va TXni haqiqiy modeldagi kabi ishlatishni xohlardim. Qabul qiluvchining chiqishidan foydalanib, siz DC-16 signallarini qayta ishlashdan foydalanishingiz va mikserlardan, uchish fazalaridan, ikkilamchi tariflardan va u erda dasturlash mumkin bo'lgan narsalardan foydalanishingiz mumkin.
Yaqinda men Pro Micro kabi arzon Arduino -dan USB HID kirish moslamasini, ya'ni Joystickni qanday yasash bo'yicha yaxshi qo'llanma topdim:
www.instructables.com/id/Create-a-Joystick…
Bu FSXda samolyot / vertolyot / nima bo'lishidan qat'i nazar, hamma narsani boshqarishga imkon beradi! Ko'p sonli o'qlar va tugmalar mavjud.
Menda zaxira JETI RSAT2 bo'lgani uchun, men uni Arduino -ga ulashga qaror qildim va Joystick kutubxonasi bilan bir qatorda kichik PPM -analizatorini o'rnatishga harakat qildim.
O'ylaymanki, kimdir bu qadamlarni bajarsa, Arduino -ni ulash va dasturlash bilan tanish. Nosozliklar yoki shikastlanishlar uchun hech qanday kafolat olmayman!
Ta'minotlar
Sizga kerak bo'ladi…
- Joystick kutubxonasi tomonidan qo'llab -quvvatlanadigan har qanday Arduino, men Sparkfun Pro Micro 5V / 16 MGts dan foydalanardim.
- Arduino IDE -ning so'nggi versiyasi
- PPM signalini chiqaradigan har qanday RC qabul qiluvchisi, masalan, JETI RSAT2
- bir nechta o'tish simlari (min. 3)
- Arduino IDE -da o'rnatilgan Joystick kutubxonasi
- arduino-taymer kutubxonasi:
1 -qadam: RX va Arduino -ni ulang
Kabelning ulanishi deyarli aniq. Men faqat Arduino -ni USB -dan quvvatlantirishga qaror qildim, chunki u Joystick qurilmasini taqlid qiladi. Bu Arduino -ni 5V bilan ta'minlaydi, uni RC qabul qilgichini quvvatlantirish uchun ham ishlatish mumkin.
Men tartibga solingan chiqishni ta'minlaydigan Pin VCC va eng yaqin Gnd pinidan foydalandim - uni PPM + va - pinlariga ulang. Arduino quvvat olganda, qabul qilgich ham quvvat oladi.
PPM signali uchun men ularni ajratish uchun uzilishlardan foydalanishga qaror qildim. Tanaffuslar mavjud, masalan. 3 -pin, shuning uchun uni shu erga ulang - arduino -da "mahalliy RC -pin" yo'q, lekin qabul qilish signalida o'qishning har xil usullari bo'lishi mumkin.
Men RX kuchlanish signalini o'chirib qo'yishga majbur bo'ldim, chunki USB quvvat manbai bo'lgan VCC voltaji atigi 4,5 V atrofida bo'ladi, lekin juda barqaror, shuning uchun hech qanday muammo yo'q.
2 -qadam: Ba'zi PPM signallarini olish
Qabul qilgich va TX quvvat olganda, men rasmda ko'rsatilgandek PPM signallarini oldim. 16 kanal, abadiy takrorlanadi. Agar RSAT -da Failsafe o'chirilgan bo'lsa va transmitter o'chirilgan bo'lsa, PPM chiqishi o'chiriladi.
PPM haqida ko'proq ma'lumot bu erda mavjud:
- https://uz.wikipedia.org/wiki/Pulse-position_modul…
- https://wiki.rc-network.de/index.php/PPM
Men bu erda haqiqiy narsalarni uchirmaganim uchun, nazariy vaqtlarga ahamiyat bermadim va tayoqlarni to'liq chapdan to'liq o'ngga siljitish paytida qabul qilgichim qanday aniq chiqishini osiloskopda aniqladim (TX standart sozlamalari). Ko'rinib turibdiki, -100% uzunligi 600 mks va +100% dan 1600 mks gacha bo'lgan pulslarga to'g'ri keladi. Men ham Arduino kodimdagi pauza pulslarining uzunligiga (400 miks) ahamiyat bermadim, lekin men minut oralig'ida ramka oralig'ini qabul qildim. 3000 ms.
3 -qadam: Transmitterni sozlash
Boshqarish yuzalarining faqat haqiqiy holatini bilish kerak bo'lgani uchun, bitta RC funktsiyasi uchun bitta kanal / "servo" etarli. Shunday qilib, oddiy RC modeliga o'xshash transmitterni juda oddiy sozlash mumkin. Aleron, lift, rul va gazning asosiy funktsiyalari har biri mos ravishda bitta servo uzatuvchi kanalni talab qiladi. Shuningdek, men flaplar, tormozlar va viteslarni qo'shib qo'ydim, shu paytgacha 9 ta kanal bo'sh qoldi. E'tibor bering, flaplar uchish bosqichiga o'tkazildi va ular to'g'ridan -to'g'ri tayoq, slayder yoki tugma orqali boshqarilmaydi.
4 -qadam: Joystikni ishga tushirish
Joystick kutubxonasidan foydalanish juda oson va ba'zi misollar va testlarni taqdim etadi. Avval Arduino tegishli Joystik aniqlanganligini, kirish bo'limida ko'rsatilgan ko'rsatmalar va kutubxonaning o'zi yaxshi ko'rsatma berishini tekshirish foydali bo'lishi kerak.
Qurilmalar va printerlar boshqaruv panelida Arduino "Sparkfun Pro Micro", joystik test oynasida esa 7 o'q va qo'llab -quvvatlanadigan tugmalar ko'p bo'lgan. Hatto shlyapa kalitini ham Arduino -da dasturlash mumkin.
5 -qadam: Arduino -ni kodlash
Hali ham etishmayotgan narsa - bu PPM signalini haqiqiy tahlil qilish va Joystick o'qlari va tugmalariga tayinlash. Men quyidagi xaritani tuzishga qaror qildim:
Kanal / Funktsiya / Joystik vazifasi:
- Gaz kelebeği -> Gaz oqi o'qi
- Aileron -> X o'qi
- Lift -> Y o'qi
- Rulda -> X aylanish o'qi
- Qoplamalar -> Y aylanish o'qi
- Tormoz -> Z o'qi
- Gear -> 0 tugmasi
Vites tushganda, Joystikning birinchi tugmasi bosiladi va vitesni ko'targanda qo'yib yuboriladi. Biroq, buning uchun FSX uchun FSUIPC kerak bo'ladi, qutidan tashqarida, FSX faqat vitesni almashtirish tugmachasini qabul qiladi, bu mening modellarim bilan aniq emas.
Men kodning hozirgi versiyasini ko'plab sharhlar bilan ta'minladim, bu men uchun juda yaxshi ishlaydi - o'z vazifangizni o'zgartiring yoki yangi funktsiyalarni qo'shing. Oxirgi 9 ta RC kanallari hozircha ishlatilmayapti.
O'rnatish uchun Joystick sinfini raqamli o'qlar diapazonini aniqlash orqali boshlash kerak:
/ * Eksa diapazonini o'rnating (sarlavhada ko'rsatilgan, 0 - 1000) */
Joystick.setXAxisRange (CHANNEL_MIN, CHANNEL_MAX); Joystick.setYAxisRange (CHANNEL_MIN, CHANNEL_MAX); …
0 dan 1000 gacha bo'lgan qiymatlarni ishlatib, puls uzunligini (600 - 1600 ms) o'lchov o'lchovisiz joystik qiymatlariga to'g'ridan -to'g'ri solishtirish mumkin.
DIN 3 raqamli kirish sifatida ishga tushiriladi, tortishish yoqiladi va uzilish biriktiriladi:
pinMod (PPM_PIN, INPUT_PULLUP);
attachInterrupt (digitalPinToInterrupt (PPM_PIN), PPM_Pin_Changed, CHANGE);
Nosozliklarni tuzatish maqsadida, men arduino-taymer kutubxonasidan foydalanib, ketma-ket ketma-ket interfeys orqali bir nechta nashrlarni qo'shdim:
agar (SERIAL_PRINT_INTERVAL> 0) {
scheduler.every (SERIAL_PRINT_INTERVAL, (void*) -> bool {SerialPrintChannels (); rostini qaytarish;}); }
PIN -kodning mantiqiy qiymati o'zgarganda, pin uzilishi chaqiriladi, shuning uchun PPM signalining har bir chekkasi uchun. Puls uzunligini micros () yordamida oddiy vaqt bilan baholang:
uint32_t curTime = mikrosxemalar ();
uint32_t pulseLength = curTime - edgeTime; uint8_t curState = digitalRead (PPM_PIN);
Hozirgi pin holatini baholab, uni impuls uzunligi va o'tgan pulslar bilan birlashtirib, yangi impulslarni tasniflash mumkin. Quyidagi shartlar ramkalar orasidagi bo'shliqni aniqlaydi:
if (lastState == 0 && pulseLength> 3000 && pulseLength <6000)
Keyingi impulslar uchun pulsning uzunligi eksa holatiga moslashtiriladi, bu puls uzunligini joystik o'qi diapazoniga mos kelishi uchun qirqiladi va egiladi.
uint16_t rxLength = zarba uzunligi;
rxLength = (rxLength> 1600)? 1600: rxLength; rxLength = (rxLength <600)? 600: rxLength; rxChannels [curChannel] = rxLength - 600;
Oxir -oqibat rxChannels massivida tayoq / slayder va tugma pozitsiyalarini ko'rsatuvchi 0 dan 1000 gacha 16 ta qiymat mavjud.
16 ta kanalni olgandan so'ng, Joystikka xaritalash amalga oshiriladi:
/ * o'qlar */
Joystick.setThrottle (kanallar [0]); Joystick.setXAxis (kanallar [1]); Joystick.setYAxis (1000 - kanal [2]); Joystick.setRxAxis (kanallar [3]); Joystick.setRyAxis (kanallar [4]); Joystick.setZAxis (1000 - kanal [5]); / * tugmalari */ Joystick.setButton (0, (kanallar [6] <500? 1: 0)); / * ma'lumotlarni USB orqali yangilash */ Joystick.sendState ();
Men koddagi ba'zi o'qlarni teskari aylantirdim, bu mutlaqo kerak emas, chunki o'qni servo yo'nalishini yoki FSX -dagi topshiriqni teskari burish mumkin. Biroq, men servo yo'nalishlarini va asl FSX topshirig'ini saqlashga qaror qildim.
Tugma 7 -sonli kanal orqali yoqiladi yoki o'chadi.
Rejalashtiruvchini belgilashni unutmang, aks holda disk raskadrovka izlari ko'rinmaydi.
void loop () {
scheduler.tick (); }
Men biriktirgan skrinshotda siz ko'rasiz, 1 -kanal 1000 (to'liq gaz) dan 0 (bo'sh) ga ko'chirildi.
FSX boshqa Joystiklar singari Arduino -ni ham aniqlaydi, shuning uchun tugma va boltalarni belgilang va uchishdan zavqlaning!
Menga bu yondashuvning yoqishi shundaki, siz transmitteringizni haqiqiy modeldagi kabi ishlatishingiz mumkin, masalan. parvoz bosqichlaridan foydalanish va boshqalar.
Tavsiya:
Qayta aloqa regulyatori bilan ajoyib Blynk interfeysi bilan Esp8266 asosidagi Boost konvertori: 6 qadam
Qayta aloqa regulyatori bilan ajoyib Blynk interfeysi bilan Esp8266 asosidagi Boost konvertori: Ushbu loyihada men sizga shahar kuchlanishlarini kuchaytirishning samarali va keng tarqalgan usulini ko'rsataman. Men sizga Nodemcu yordamida kuchaytirgichni qurish qanchalik oson bo'lishini ko'rsataman. Keling, uni quraylik. Shuningdek, u ekrandagi voltmetrni va teskari aloqa ma'lumotlarini o'z ichiga oladi
DSO138 USB quvvati: Boost konvertori yo'q!: 3 qadam
DSO138 USB quvvati: Konvertor kuchaytirilmaydi! Muammo shundaki, u portativ emas, chunki u 9V quvvat adapteriga muhtoj. Agar standartdan etkazib berilsa yaxshi bo'lardi
Kichik shamol turbinalari uchun Boost konvertori: 6 qadam
Kichik shamol turbinalari uchun konvertorni kuchaytirish: Maksimal quvvat nuqtalarini kuzatish (MPPT) tekshirgichlari haqidagi oxirgi maqolamda shamol turbinasi va batareyani zaryadlash kabi o'zgaruvchan manbadan keladigan energiyadan foydalanishning standart usulini ko'rsatdim. Men ishlatgan generator Nema qadamli dvigateli edi
3.3V qurilmalar uchun oddiy DIY mantiqiy konvertori: 4 qadam
3.3V qurilmalar uchun oddiy DIY mantiqiy konvertori: Men sizga 5V dan 3.3V gacha bo'lgan 5V datchiklarni yangi Arduino platalari va Raspberry Pi -ga ulash uchun qanday qilib o'zingiz 5V dan 3.3Vgacha bo'lgan mantiqiy konvertorni yasashingiz mumkinligini ko'rsataman. Ko'pchiligingiz Arduino va Raspberry Pi duri bilan o'ynashni yaxshi ko'rasiz
Arduino asosidagi kontaktsiz infraqizil termometr - Arduino yordamida IQ asosidagi termometr: 4 qadam
Arduino asosidagi kontaktsiz infraqizil termometr | IQ asosidagi termometr Arduino yordamida: Salom bolalar, biz ko'rsatma beramiz, biz arduino yordamida aloqa qilmaydigan termometrni yaratamiz, chunki ba'zida suyuqlik/qattiqning harorati juda yuqori yoki pastgacha bo'ladi, keyin u bilan aloqa qilish va uni o'qish qiyin. bu sahnada harorat