
تبدیل کنترلهای از راهدور قدیمی به کلیکر ارائه با استفاده از برد RP2040 و فریمور TTVKTR
آیا تا به حال برای شما پیش آمده است که در حال ارائه یک پاورپوینت یا سخنرانی مهم باشید و نیاز به دستگاهی برای تعویض اسلایدها داشته باشید، اما کلیکر (Clicker) مخصوص ارائه در دسترستان نباشد؟ کلیکرهای ارائه معمولاً قیمت بالایی دارند و ممکن است همیشه به آنها دسترسی نداشته باشیم. اما خبر خوب این است که با کمی خلاقیت، میتوانید کنترلهای تلویزیون یا دستگاههای پخش قدیمی خود را که دیگر در خانه استفاده نمیشوند، به یک کلیکر حرفهای و یک کیبورد میانبر (Macropad) بیسیم تبدیل کنید.
در این آموزش جامع و مرحلهبهمرحله، قصد داریم به شما نشان دهیم که چگونه با استفاده از یک برد میکروکنترلر ارزانقیمت به نام RP2040 و یک فریمور متنباز و قدرتمند به نام TTVKTR (مخفف Tossed The TV — Kept The Remote)، کنترلهای مادون قرمز (IR) قدیمی خود را به یک ابزار کاربردی متصل به کامپیوتر تبدیل کنید.
چرا RP2040 و فریمور TTVKTR؟
برای این پروژه، ما از بردهای مبتنی بر تراشه محبوب Raspberry Pi RP2040 استفاده میکنیم. در حالی که اکثر بردهای دارای پورت USB که از این تراشه استفاده میکنند برای این کار مناسب هستند، پیشنهاد ما استفاده از برد RP2040-Zero است.
دلیل این انتخاب چیست؟
- اندازه بسیار کوچک: این برد به راحتی در هر محفظه کوچکی جای میگیرد.
- قیمت اقتصادی: با قیمتی در حدود ۴ الی ۵ دلار، یکی از مقرونبهصرفهترین گزینههای بازار است.
- LED داخلی RGB: این برد دارای یک ماژول LED مدل WS2812 است که در این پروژه برای نشان دادن تغییر لایههای دکمهها از طریق رنگهای مختلف بسیار کاربردی است.
در بخش نرمافزاری، ما از فریمور متنباز TTVKTR استفاده میکنیم. وظیفه اصلی این فریمور این است که کدهای مادون قرمز (IR) دریافتی از کنترل را دریافت کرده و آنها را بر اساس یک فایل پیکربندی (JSON) به دستورات قابل فهم برای کامپیوتر (USB HID) تبدیل کند. مزیت بزرگ این فریمور نسبت به پروژههای مشابه مانند Adafruit pIRkey یا CH32V003-USB-IR-Receiver این است که نیازی به کدنویسی دستی و پیچیده برای هر کنترل ندارد. همه چیز از طریق یک رابط کاربری تحت وب و به سادگی انجام میشود.

قطعات سختافزاری مورد نیاز
قبل از شروع، قطعات زیر را تهیه کنید:
- یک برد RP2040 با پورت USB
- گیرنده مادون قرمز (IR Receiver) استاندارد 38 کیلوهرتز: (مانند VS1838B یا مشابه آن)
- یک کنترل از راهدور (IR) قدیمی: (هر کنترلی که با باتری کار میکند و سالم است)
- هویه، سیم لحیم و چند تکه سیم کوچک برای اتصالات
- کابل USB-C برای اتصال برد به کامپیوتر
آموزش مرحله به مرحله ساخت کلیکر ارائه
مرحله اول: آمادهسازی سختافزار و لحیمکاری
در این مرحله، باید گیرنده مادون قرمز را به برد RP2040 متصل کنیم. گیرندههای مادون قرمز معمولاً دارای سه پایه هستند:
- VCC (تغذیه): برای تامین برق سنسور.
- GND (زمین): برای تکمیل مدار الکتریکی.
- OUT یا Signal (خروجی): برای ارسال کدهای دریافت شده به میکروکنترلر.

با استفاده از هویه، اتصالات زیر را برقرار کنید:
- پایه OUT گیرنده مادون قرمز را به پین GPIO 28 روی برد Waveshare RP2040-Zero لحیم کنید.
- پایه VCC گیرنده را به پین 5V یا 3.3V برد متصل کنید. (اکثر گیرندههای ۳۸ کیلوهرتز با ولتاژ ۳.۳ ولت به خوبی کار میکنند).
- پایه GND گیرنده را به یکی از پینهای GND برد متصل کنید.
نکته: نیازی به اتصال LED ندارید، زیرا LED مدل WS2812 به صورت پیشفرض روی برد قرار دارد و از قبل به پین GPIO 16 متصل شده است.
مرحله دوم: نصب فریمور روی برد RP2040
کدهای منبع این پروژه (نوشته شده در محیط Arduino/PlatformIO) در پلتفرم گیتهاب (GitHub) موجود است.
برای نصب فریمور روی برد:
- فایل کامپایلشده (با فرمت
.uf2) فریمور TTVKTR را از صفحه گیتهاب پروژه دانلود کنید. - دکمه BOOT روی برد RP2040-Zero را نگه دارید و همزمان کابل USB را به کامپیوتر متصل کنید.
- کامپیوتر برد شما را به عنوان یک فلش درایو (Storage Device) شناسایی میکند.
- فایل
.uf2دانلود شده را کپی کرده و داخل این درایو پیست (Paste) کنید. - برد به صورت خودکار ریاستارت شده و فریمور نصب میشود.
دانلود پروژه TTVKTR از گیت هاب
مرحله سوم: پیکربندی کنترلر با رابط کاربری تحت وب
یکی از درخشانترین ویژگیهای فریمور TTVKTR، عدم نیاز به ویرایش دستی فایلهای پیچیده است. شما میتوانید از طریق مرورگر وب خود، به صورت مستقیم با برد ارتباط برقرار کنید.
- مرورگر Google Chrome یا نسخههای جدید Firefox را باز کنید (مرورگر شما باید از قابلیت
Web Serialپشتیبانی کند). - به آدرس رابط کاربری تحت وب پروژه (TossedTheTVKeptTheRemote Web UI) مراجعه کنید.
- در صفحه باز شده، روی دکمه اتصال (Connect) کلیک کنید و از لیست دستگاههای سریال، برد RP2040 خود را انتخاب کنید.
- یادگیری دکمهها: کنترل خود را به سمت گیرنده مادون قرمز بگیرید و دکمهای (مثلاً دکمه جهت راست) را فشار دهید. رابط کاربری کد آن دکمه را شناسایی میکند.
- تخصیص عملکرد: حالا میتوانید تعیین کنید که این دکمه چه کاری انجام دهد. میتوانید آن را به عنوان دکمه
Right Arrowکیبورد (برای رفتن به اسلاید بعدی در پاورپوینت) تنظیم کنید. این کار را برای اسلاید قبلی، کم و زیاد کردن صدا و … تکرار کنید.
ویژگیهای پیشرفته رابط کاربری و فریمور
این سیستم امکانات فوقالعادهای دارد که آن را از یک گیرنده ساده متمایز میکند:
- رابط کاربری تخصیص کلید (Custom Keybindings): میتوانید دکمههای کنترل را به کلیدهای کیبورد، کنترلهای رسانه (Play/Pause/Volume) یا حتی اعمال سفارشی نگاشت (Map) کنید.
- پشتیبانی از لایههای مختلف (Layers): شما میتوانید چندین لایه مختلف برای یک کنترل تعریف کنید. مثلاً لایه اول برای ارائه پاورپوینت و لایه دوم برای کنترل پخش فیلم. LED روی برد با تغییر رنگ به شما نشان میدهد که در کدام لایه هستید.
- ورودیهای چندمرحلهای و ماکروها: این فریمور از ترکیب کلیدها پشتیبانی میکند. میتوانید تعریف کنید که با زدن یک دکمه روی کنترل، کامپیوتر دستور
Ctrl + Alt + Deleteیا هر ترکیب دیگری را اجرا کند. حتی میتوانید تایپ شدن یک متن کامل را به یک دکمه اختصاص دهید! - تشخیص چندین کنترل: میتوانید چیدمانهای مختلفی تنظیم کنید تا دستگاه بتواند کنترلهای مختلف را از هم تشخیص داده و برای هرکدام رفتار متفاوتی نشان دهد.

نگاهی به ساختار فایل تنظیمات (JSON)
اگرچه نیازی به کدنویسی ندارید، اما فریمور تمام تنظیمات شما را در یک فایل به نام settings.json در حافظه داخلی برد ذخیره میکند. در صورت تمایل به ویرایش دستی، میتوانید از JSON Editor موجود در رابط کاربری استفاده کنید. ساختار این فایل به شکل زیر است:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
{ "ir": { "modeChangeCode": "0xC40387EE", "modeCount": 2, "receivePin": 28, "handleRepeat": true, "repeatInitialDelayReports": 5 }, "led": { "pin": 16, "modeColors": ["0xFF0040", "0x0080FF"], "brightnessPercent": 10 }, "modes": [ { "name": "Layer 1", "slots": [ { "irCode": "0xC40387EE", "type": "consumer", "key": "0xCD" }, { "irCode": "0x...", "type": "keyboard", "key": "0x28" }, { "irCode": "0x...", "type": "keyboard", "key": "0x1D", "mods": "0x01" }, { "irCode": "0x...", "type": "mode_switch" }, { "irCode": "0x...", "type": "text", "value": "hello world" }, { "irCode": "0x...", "type": "combo", "steps": [ { "type": "keyboard", "key": "0x04", "mods": "0x01" }, { "type": "keyboard", "key": "0x4C" } ]} ] } ], "layouts": [ { "name": "Default Layout", "buttons": [ { "irCode": "0x...", "x": 0, "y": 0 }, { "irCode": "0x...", "x": 1, "y": 0 } ] } ] } |
همانطور که میبینید، در بخش ir پین دریافت کد، در بخش led رنگهای مربوط به لایهها و در بخش modes دستورات مربوط به هر دکمه به دقت ذخیره شدهاند. به عنوان مثال، در یکی از خطوط میبینیم که نوع text با مقدار hello world تنظیم شده است که یعنی فشردن آن دکمه خاص، این عبارت را در کامپیوتر تایپ خواهد کرد!
نتیجهگیری
ساخت یک کلیکر ارائه با استفاده از کنترلهای از راهدور و برد RP2040-Zero، پروژهای بسیار جذاب، کمهزینه و کاربردی است. با تشکر از جامعه متنباز و ابزارهایی مانند TTVKTR، نیازی به درگیری با کدهای پیچیده C++ برای خواندن پروتکلهای IR ندارید. همه چیز از طریق یک رابط تحت وب زیبا (مشابه ابزارهای VIA یا QMK در کیبوردهای مکانیکی) قابل شخصیسازی است.
این پروژه نه تنها شما را از خرید دستگاههای گرانقیمت بینیاز میکند، بلکه به شما اجازه میدهد تا کیبورد میانبر (Macropad) بیسیم و کاملاً سفارشی خود را برای کنترل کامپیوتر از راه دور طراحی کنید.






