فهرست مطالب:
- تدارکات
- مرحله 1: RX و Arduino را سیم کشی کنید
- مرحله 2: دریافت برخی از سیگنال های PPM
- مرحله 3: پیکربندی فرستنده
- مرحله 4: اجرای جوی استیک
- مرحله 5: کدنویسی آردوینو
![مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX: 5 مرحله مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX: 5 مرحله](https://i.howwhatproduce.com/images/006/image-17429-j.webp)
تصویری: مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX: 5 مرحله
![تصویری: مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX: 5 مرحله تصویری: مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX: 5 مرحله](https://i.ytimg.com/vi/TqQKXTqZ5F8/hqdefault.jpg)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:53
![مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX](https://i.howwhatproduce.com/images/006/image-17429-1-j.webp)
![مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX مبدل PPM به Joystick مبتنی بر آردوینو (JETI) برای FSX](https://i.howwhatproduce.com/images/006/image-17429-2-j.webp)
تصمیم گرفتم فرستنده JETI DC-16 خود را از حالت 2 به حالت 1 تغییر دهم ، که اساساً دریچه گاز و آسانسور را از چپ به راست و بالعکس تغییر می دهد. از آنجا که من نمی خواستم یکی از مدلهایم را به دلیل سردرگمی چپ/راست در مغزم خراب کنم ، می پرسیدم آیا می توان کمی در FSX تمرین کرد؟
من فرستنده های JETI را که واقعاً از حالت Joystick پشتیبانی می کند ، خارج از جعبه خواندم و آزمایش کردم ، با این حال من انعطاف پذیری کامل را برای محورها و سوئیچ ها می خواهم و از TX به عنوان یک مدل واقعی استفاده می کنم. با استفاده از خروجی گیرنده ، همچنین می توانید از پردازش سیگنال در DC-16 استفاده کنید و از میکسرها ، مراحل پرواز ، نرخ دوگانه ، هر آنچه که می توانید در آنجا برنامه ریزی کنید ، استفاده کنید.
اخیراً یک آموزش خوب در مورد نحوه ساخت دستگاه ورودی USB HID ، یعنی Joystick ، از Arduino ارزان قیمت مانند Pro Micro پیدا کردم:
www.instructables.com/id/Create-a-Joystick…
این امر همه چیز مورد نیاز برای کنترل هواپیما / هلیکوپتر / هر چیزی را در FSX فعال می کند! تعداد زیادی محور و دکمه در دسترس است.
از آنجا که من فقط یک JETI RSAT2 اضافی داشتم ، تصمیم گرفتم آن را با Arduino وصل کنم و سعی کنم یک تجزیه کننده کوچک PPM را به همراه کتابخانه Joystick پیاده سازی کنم.
فرض می کنم هرکسی این مراحل را دنبال می کند با اتصال و برنامه نویسی آردوینو آشنا است. من هیچ گونه ضمانتی برای نقص یا آسیب نمی بینم!
تدارکات
شما نیاز خواهید داشت…
- هر آردوینویی که توسط کتابخانه Joystick پشتیبانی می شود ، من از Sparkfun Pro Micro 5V / 16 MHz استفاده کردم
- یک نسخه جدید از Arduino IDE
- هر گیرنده RC خروجی یک سیگنال PPM ، مانند JETI RSAT2
- چند سیم جهنده (حداقل 3)
- کتابخانه Joystick که در Arduino IDE نصب شده است
- کتابخانه زمان سنج arduino:
مرحله 1: RX و Arduino را سیم کشی کنید
![RX و آردوینو را سیم کشی کنید RX و آردوینو را سیم کشی کنید](https://i.howwhatproduce.com/images/006/image-17429-3-j.webp)
![RX و آردوینو را سیم کشی کنید RX و آردوینو را سیم کشی کنید](https://i.howwhatproduce.com/images/006/image-17429-4-j.webp)
سیم کشی بسیار ساده است. من تصمیم گرفتم که آردوینو را فقط از USB تغذیه کنم ، زیرا از دستگاه Joystick تقلید می کند. این آردوینو را با ولتاژ 5 ولت تغذیه می کند که می تواند برای تغذیه گیرنده RC نیز مورد استفاده قرار گیرد.
من از Pin VCC ، که خروجی تنظیم شده را ارائه می دهد ، و نزدیکترین پین Gnd استفاده کردم - فقط آن را به پین + و - PPM متصل کنید. وقتی آردوینو تغذیه می شود ، گیرنده نیز روشن می شود.
برای سیگنال PPM ، تصمیم گرفتم از وقفه ها برای تجزیه آنها استفاده کنم. وقفه در دسترس است به عنوان مثال در پین 3 ، بنابراین فقط آن را وصل کنید - هیچ "پین RC بومی" در آردوینو وجود ندارد ، اما احتمالاً روشهای مختلف و متفاوتی برای خواندن سیگنال گیرنده وجود دارد.
من مجبور شدم زنگ ولتاژ RX را غیرفعال کنم ، زیرا ولتاژ VCC با منبع USB فقط در حدود 4.5 ولت خواهد بود - اما کاملاً پایدار است ، بنابراین هیچ مشکلی ندارد.
مرحله 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 کانال ، برای همیشه تکرار می شود. اگر Failsafe در RSAT غیرفعال باشد و فرستنده خاموش باشد ، خروجی PPM غیرفعال می شود.
اطلاعات بیشتر در مورد PPM در اینجا موجود است:
- https://fa.wikipedia.org/wiki/Pulse-position_modul…
- https://wiki.rc-network.de/index.php/PPM
از آنجا که در این مورد من چیزهای واقعی پرواز نمی کنم ، من به زمان های نظری اهمیت نمی دادم و فقط در یک اسیلوسکوپ فهمیدم که گیرنده من هنگام حرکت چوب ها از چپ به راست به طور کامل چه چیزی را به طور حتم خروج می کند (تنظیمات استاندارد در TX) به به نظر می رسید -100 to مربوط به پالس هایی با طول 600 میکرو ثانیه و +100 to تا 1600 میکرو ثانیه است. من همچنین به طول پالس های مکث (400µs) در کد آردوینو خود اهمیتی نمی دهم ، اما فاصله فریم را حداقل دقیقه فرض کردم. 3000 میکرومتر
مرحله 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 کافی است. در نتیجه ، یک تنظیم کننده فرستنده نسبتاً ساده می تواند انجام شود - شبیه به یک مدل RC معمولی. عملکردهای اصلی aileron ، آسانسور ، سکان و دریچه گاز هر کدام به ترتیب تنها به یک فرستنده سروو احتیاج دارند. من همچنین فلپ ، ترمز و چرخ دنده اضافه کردم و تا کنون 9 کانال را آزاد گذاشتم. لطفاً توجه داشته باشید که فلپ ها در مرحله پرواز قرار می گیرند و مستقیماً از طریق چوب ، لغزنده یا دکمه کنترل نمی شوند.
مرحله 4: اجرای جوی استیک
![اجرای جوی استیک اجرای جوی استیک](https://i.howwhatproduce.com/images/006/image-17429-10-j.webp)
![اجرای جوی استیک اجرای جوی استیک](https://i.howwhatproduce.com/images/006/image-17429-11-j.webp)
استفاده از کتابخانه Joystick بسیار آسان است و نمونه ها و آزمایش هایی را ارائه می دهد. ابتدا باید بررسی شود که آیا آردوینو به عنوان جوی استیک مناسب تشخیص داده شده است یا خیر ، دستورالعمل های موجود در بخش ورود و کتابخانه راهنمای خوبی ارائه می دهد.
در کنترل پنل Devices and Printers ، Arduino به عنوان "Sparkfun Pro Micro" نمایش داده می شد و پنجره تست جوی استیک 7 محور و تعداد زیادی دکمه پشتیبانی شده را نشان می داد. هنگام برنامه نویسی در آردوینو حتی می توان از سوئیچ کلاه استفاده کرد.
مرحله 5: کدنویسی آردوینو
![کدنویسی آردوینو کدنویسی آردوینو](https://i.howwhatproduce.com/images/006/image-17429-12-j.webp)
![کدنویسی آردوینو کدنویسی آردوینو](https://i.howwhatproduce.com/images/006/image-17429-13-j.webp)
آنچه هنوز وجود ندارد تجزیه واقعی سیگنال PPM و تخصیص به محورها و دکمه های Joystick است. برای نقشه برداری زیر تصمیم گرفتم:
کانال / عملکرد / تخصیص جوی استیک:
- دریچه گاز -> محور دریچه گاز
- Aileron -> X محور
- آسانسور -> محور Y
- فرمان -> محور چرخش X
- فلپ -> محور چرخش Y
- ترمز -> محور Z
- دنده -> دکمه 0
هنگامی که دنده پایین است ، اولین دکمه جوی استیک باید فشار داده شود و هنگام بالا بردن دنده آزاد می شود. با این حال ، این مورد نیاز به 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 اضافه کردم:
if (SERIAL_PRINT_INTERVAL> 0) {
scheduler.every (SERIAL_PRINT_INTERVAL، (void*) -> bool {SerialPrintChannels () ؛ true true؛})؛ }
هرگاه مقدار منطقی پین تغییر کند ، وقفه پین فراخوانی می شود ، بنابراین برای هر لبه در سیگنال PPM. طول نبض را فقط با زمان بندی ساده با استفاده از micros () ارزیابی کنید:
uint32_t curTime = micros ()؛
uint32_t pulseLength = curTime - edgeTime؛ uint8_t curState = digitalRead (PPM_PIN) ؛
با ارزیابی وضعیت پین فعلی و ترکیب آن با طول پالس و پالس های گذشته ، می توان پالس های جدید را طبقه بندی کرد. شرط زیر شکاف بین فریم را تشخیص می دهد:
if (lastState == 0 && pulseLength> 3000 && pulseLength <6000)
برای پالس های بعدی ، طول پالس با برش دادن و بایاس کردن طول پالس برای مطابقت با محدوده محور جوی استیک به حالت یک محور ترسیم می شود:
uint16_t rxLength = pulseLength؛
rxLength = (rxLength> 1600)؟ 1600: rxLength؛ rxLength = (rxLength <600)؟ 600: rxLength؛ rxChannels [curChannel] = rxLength - 600 ؛
آرایه rxChannels در نهایت شامل 16 مقدار از 0 تا 1000 است که موقعیت چوب / لغزنده و دکمه را نشان می دهد.
پس از دریافت 16 کانال ، نگاشت به Joystick انجام می شود:
/ * محورها */
Joystick.setThrottle (کانالها [0]) ؛ Joystick.setXAxis (کانالها [1]) ؛ Joystick.setYAxis (1000 - کانال [2]) ؛ Joystick.setRxAxis (کانالها [3]) ؛ Joystick.setRyAxis (کانالها [4]) ؛ Joystick.setZAxis (1000 - کانال [5]) ؛ / * buttons */ Joystick.setButton (0 ، (کانالها [6] <500؟ 1: 0)) ؛ / * به روز رسانی داده ها از طریق USB */ Joystick.sendState ()؛
من برخی از محورها را در کد معکوس کردم ، که کاملاً ضروری نیست ، زیرا محور را می توان با چرخاندن جهت سروو یا انتساب در FSX معکوس کرد. با این حال ، من تصمیم گرفتم که دستورالعمل های سروو و همچنین تخصیص اصلی FSX را حفظ کنم.
دکمه توسط کانال آستانه 7 روشن یا خاموش می شود.
و فراموش نکنید که زمانبند را علامت بزنید … در غیر این صورت ، هیچ گونه اشکال زدایی قابل مشاهده نخواهد بود.
حلقه خالی () {
scheduler.tick ()؛ }
در تصویری که پیوست کردم مشاهده می کنید ، کانال 1 از 1000 (گاز کامل) به 0 (بیکار) منتقل شد.
FSX آردوینو را مانند هر جوی استیک دیگر تشخیص می دهد ، بنابراین فقط دکمه و محورها را تعیین کنید و از بلند شدن لذت ببرید!
آنچه من واقعاً در مورد این روش دوست دارم این است که شما فقط می توانید از فرستنده خود به عنوان یک مدل واقعی استفاده کنید ، به عنوان مثال. استفاده از مراحل پرواز و غیره
توصیه شده:
سوئیچ IOT رله مبتنی بر صدا مبتنی بر آردوینو (پشتیبانی از Google Home & Alexa): 11 مرحله
![سوئیچ IOT رله مبتنی بر صدا مبتنی بر آردوینو (پشتیبانی از Google Home & Alexa): 11 مرحله سوئیچ IOT رله مبتنی بر صدا مبتنی بر آردوینو (پشتیبانی از Google Home & Alexa): 11 مرحله](https://i.howwhatproduce.com/images/001/image-2264-8-j.webp)
سوئیچ IOT رله مبتنی بر صدا مبتنی بر آردوینو (Google Home & Alexa Supported): این پروژه نحوه ایجاد یک سوئیچ رله مبتنی بر آردوینو ، کنترل صدا ، IOT را شرح می دهد. این یک رله است که می توانید از راه دور با استفاده از یک برنامه برای iOS و Android روشن و خاموش کنید ، همچنین آن را به IFTTT متصل کرده و با صدای خود با استفاده از Goog آن را کنترل کنید
دماسنج مادون قرمز غیر تماسی مبتنی بر آردوینو - دماسنج مبتنی بر IR با استفاده از آردوینو: 4 مرحله
![دماسنج مادون قرمز غیر تماسی مبتنی بر آردوینو - دماسنج مبتنی بر IR با استفاده از آردوینو: 4 مرحله دماسنج مادون قرمز غیر تماسی مبتنی بر آردوینو - دماسنج مبتنی بر IR با استفاده از آردوینو: 4 مرحله](https://i.howwhatproduce.com/images/001/image-764-35-j.webp)
دماسنج مادون قرمز بدون تماس مبتنی بر آردوینو | دماسنج مبتنی بر IR با استفاده از آردوینو: سلام بچه ها در این دستورالعمل ما با استفاده از آردوینو یک دماسنج غیر تماسی ایجاد می کنیم. از آنجا که گاهی اوقات دمای مایع/جامد بسیار زیاد یا بسیار پایین است و سپس تماس با آن و خواندن آن سخت است. دما در آن حالت
فلزیاب القایی مبتنی بر پالس مبتنی بر آردوینو: 5 مرحله
![فلزیاب القایی مبتنی بر پالس مبتنی بر آردوینو: 5 مرحله فلزیاب القایی مبتنی بر پالس مبتنی بر آردوینو: 5 مرحله](https://i.howwhatproduce.com/images/005/image-12119-5-j.webp)
فلزیاب القایی مبتنی بر پالس DIY Arduino: این فلزیاب نسبتاً ساده با عملکرد عالی است
بازخوانی مبدل مبدل مغناطیسی آردوینو: 3 مرحله
![بازخوانی مبدل مبدل مغناطیسی آردوینو: 3 مرحله بازخوانی مبدل مبدل مغناطیسی آردوینو: 3 مرحله](https://i.howwhatproduce.com/images/001/image-1517-109-j.webp)
بازخوانی مبدل مغناطیسی آردوینو معکوس: به عنوان بخشی از یک پروژه در حال انجام من در اینجا ، که مستند پیشرفت مداوم هجوم من به دنیای فیزیک ذرات فوق خلاء فوق العاده بالا است ، به بخشی از پروژه رسید که نیاز به برخی از وسایل الکترونیکی و کدگذاری داشت. من MKS مازاد خریدم
ارزان ترین آردوینو -- کوچکترین آردوینو -- آردوینو پرو مینی -- برنامه نویسی -- آردوینو ننو: 6 مرحله (همراه با تصاویر)
![ارزان ترین آردوینو -- کوچکترین آردوینو -- آردوینو پرو مینی -- برنامه نویسی -- آردوینو ننو: 6 مرحله (همراه با تصاویر) ارزان ترین آردوینو -- کوچکترین آردوینو -- آردوینو پرو مینی -- برنامه نویسی -- آردوینو ننو: 6 مرحله (همراه با تصاویر)](https://i.howwhatproduce.com/images/003/image-6862-42-j.webp)
ارزان ترین آردوینو || کوچکترین آردوینو || آردوینو پرو مینی || برنامه نویسی || آردوینو ننو: …………………………. لطفاً برای ویدیوهای بیشتر به کانال YouTube من مشترک شوید ……. .این پروژه در مورد نحوه ارتباط با کوچکترین و ارزانترین آردوینو است. کوچکترین و ارزان ترین آردوینو arduino pro mini است. شبیه آردوینو