فهرست مطالب:
تصویری: سقوط در Stm32: کنترل از راه دور برای مرکز رسانه خانگی: 4 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این یک نمونه کامل برای کنترل از راه دور مرکز رسانه خانگی است که بر اساس میکروکنترلر smt32 ، stm32f103c8t6 معروف به برد "bluepill" است. فرض کنید ، از رایانه شخصی برای مرکز رسانه خانگی استفاده می کنید. این یک راه حل بسیار انعطاف پذیر است که به شما امکان می دهد کتابخانه ویدئویی عظیمی را در هارد دیسک داخلی قرار دهید ، یا می توانید ویدیو را از شبکه پخش کنید ، به عنوان مثال یوتیوب یا موارد دیگر ، هیچ مشکلی در کدک ها یا پخش ویدئوها ندارید ، زیرا بسیار آسان برای به روز رسانی نرم افزار پخش در هر زمان. عیب اصلی این راه حل این است که شما باید از موس و صفحه کلید برای کنترل پخش خود استفاده کنید. کنترل از راه دور IR برای این کار بسیار مناسب است.
در این مقاله نحوه ایجاد کنترل از راه دور با استفاده از تخته bluepill تراشه را نشان خواهم داد.
مرحله 1: ایده
ایده اصلی بسیار ساده است: تخته bluepill دارای درگاه usb است و می تواند به عنوان صفحه کلید USB HID عمل کند. اگر گیرنده IR را به برد وصل کنیم ، می تواند فرمان را از کنترل از راه دور IR شما به "فشار کلید" صفحه کلید مجازی ترجمه کند. نیازی به درایور اضافی نیست!
پروتکل های IR زیادی در جهان اطراف ما وجود دارد. هر تلویزیون از فروشنده VCS دارای پروتکل IR خاص خود است. اما همه این پروتکل ها دارای یک ویژگی مشترک هستند: آنها از مدولاسیون پالس برای رمزگذاری سیگنال استفاده می کنند. معمولاً مقدمه ای وجود دارد: تکانه طولانی قبل از اولین بیت در بسته. سپس کنترل IR کل بسته را با 0 و 1 منتقل می کند و انتقال را با پالس طولانی نهایی نهایی می کند. برای رمزگشایی بیت باید پالس طول و طول قله را اندازه گیری کنیم. معمولاً طول پیک منطق 0 و منطق 1 یکسان است ، تفاوت در طول پالس کامل است.
میکرو کنترلرهای stm32 دارای ویژگی تعبیه شده برای ضبط سیگنال PWM هستند. هنگامی که متغیرهای کانال تایمر طول کل پالس و طول پیک آن را ذخیره می کنند ، تقریباً هر تایمر کنترل کننده میکرو را می توان در "ضبط سیگنال PWM" قرار داد. در اینجا باید جزئیات کمی را برجسته کنم: هنگامی که گیرنده مادون قرمز سیگنال را می گیرد ، ولتاژ روی پایه کاری آن 0 می شود و در حالت بیکاری ولتاژ در پین کار بسته به ولتاژ منبع گیرنده IR 5 یا 3.3 ولت است. یعنی گیرنده سیگنال را "وارونه" می کند.
با استفاده از حالت ضبط PWM ، میکروکنترلر stm32 را می توان به آسانی به یک مترجم IR از راه دور از راه دور IR به کدهای صفحه کلید تبدیل کرد. سپس می توانید نرم افزار تجسم مورد علاقه خود را شروع کنید ، به عنوان مثال Kodi of VLC تا فیلم مورد علاقه خود را در مرکز رسانه پخش کنید.
مرحله 2: ایجاد کنترلر
برای برنامه نویسی میکرو کنترلر stm32 ، من می خواهم نرم افزار رایگان STM را پیشنهاد کنم: workbench system (معروف به ac6) و ابزار پیکربندی برد cubeMX. برای بارگذاری نرم افزار در میکرو کنترلر ، می توان از کلون تراشه آداپتور ST-Link V2 استفاده کرد. فایلهای پروژه میز کار سیستم متصل به این مرحله ، فایل F1-IR_remote.zip.
ابزار پیکربندی برد روند پیکربندی سخت افزاری اولیه میکرو کنترلر ما را ساده می کند.
اگر از ابزار workbench سیستم استفاده می کنید ، فقط می توانید از پروژه بارگیری شده استفاده کنید. اما اگر می خواهید پروژه را با جزئیات بیشتری بررسی کنید ، می توانید پیکربندی برد را در cubeMX ایجاد کنید:
- پروژه جدیدی ایجاد کرده و برد stm32f103c8 را انتخاب کنید
- در منوی RCC ، "بلور/سرامیک رزوناتور" را برای "ساعت با سرعت بالا (HSE)" انتخاب کنید.
- "Serial Wire" را برای مورد "Debug" در منوی SYS انتخاب کنید.
-
تایمر شماره 2 (منوی TIM2) را در حالت ضبط PWM مطابق تصویر پیکربندی کنید:
- حالت برده -> حالت بازنشانی
- منبع ماشه -> TI1FP1
- منبع ساعت -> ساعت داخلی
- Channel1 -> حالت مستقیم ضبط ورودی
- کادر تأیید "Device (FS)" را در منوی USB تنظیم کنید
- عنصر منوی کشویی "کلاس رابط انسانی (HID)" را در مورد "Class of FS IP" در منوی USB_DEVICE انتخاب کنید
- در پنل پیکربندی ساعت ، مطمئن شوید که 72 مگاهرتز را به تایمر شماره 2 ارائه می دهید ، زیرا ما در هر 1 میلی متر به شمارش تایمر نیاز داریم.
- در پنل پیکربندی دستگاه USB را همانطور که در تصویر نشان داده شده پیکربندی کنید
-
در پنل پیکربندی ، تایمر شماره 2 را به صورت زیر پیکربندی کنید:
- Prescaller - 71 (از 0 تا 71) - 1 تیک میکرو ثانیه!
- حالت شمارنده - بالا
- دوره شمارنده - 39999 (ما باید بتوانیم نبض طولانی را اندازه گیری کنیم)
- کانال ضبط ورودی 1 - سقوط لبه (به یاد داشته باشید که سیگنال گیرنده IR معکوس است)
در حالت ضبط PWM ، تایمر شماره 2 به شرح زیر عمل می کند:
هنگامی که قسمت سقوط تشخیص داده شد ، شمارنده تایمر در ثبت کانال 1 ذخیره می شود و شمارنده تایمر با 0 تنظیم مجدد می شود. سپس تایمر شمارش جهت را ادامه می دهد. بنابراین ما می توانیم به راحتی طول نبض را در میکرو ثانیه اندازه گیری کنیم.
به طور پیش فرض کلاس STM32 USB HID ماوس USB را شبیه سازی می کند. در اینجا می توانید دستورالعمل تبدیل کنترل کننده به صفحه کلید را پیدا کنید.
مرحله 3: تنظیم کنترل کننده
این پروژه با کنترل از راه دور پاناسونیک و مرکز رسانه Kodi کار می کند. برای تنظیم پروژه برای کنترلر خود ، باید آرایه کد را برای کنترل از راه دور خود مانند من برای کنترل از راه دور پاناسونیک (panasonicCode) به هدر Inc/code.h اضافه کنید. همانطور که می بینید ، هر دستور دارای شناسه منحصر به فرد است (در IRcommmand enum). 24 فرمان (0-23) توسط پروژه شناسایی شده است. فرمان بر اساس ارتباط مرتب شده اند.
typedef enum {IR_play = 0، IR_stop، IR_pause، IR_forward، IR_rewind، IR_last_channel، IR_OSD، IR_prevous_menu، IR_left، IR_right، IR_up، IR_down، IR_enter، IR_chapter_next، IR_chapter_preject_ IR ،_ IR_ IR_ IR ، IR_power ، IR_unknown} IRcommand ؛
توایع uint16_t kbrd_kodi = {HID_KEY_P، HID_KEY_X، HID_KEY_SPACE، HID_KEY_F، HID_KEY_R، HID_KEY_0، HID_KEY_M، HID_KEY_BACKSPACE، HID_KEY_LEFT، HID_KEY_RIGHT، HID_KEY_UP، HID_KEY_DOWN، HID_KEY_ENTER، HID_KEY_DOT، HID_KEY_COMMA، HID_KEY_S، HID_KEY_I، HID_KEY_T، HID_KEY_L، (uint16_t (HID_LEFT_CTRL) << 8) | HID_KEY_T ، HID_KEY_V ، HID_KEY_Z ، HID_KEY_W ، HID_KEY_C} ؛
توایع uint32_t panasonicCode = {0xd00505d، 0xd00000d، 0xd00606d، 0xd00525f، 0xd00929f، 0x100eced، 0xd00101d، 0x1002b2a، 0x1007273، 0x100f2f3، 0x1005253، 0x100d2d3، 0x1009293، 0x1002c2d، 0x100acad، 0x1009c9d، 0x1008e8f، 0x1004e4f، 0x100cecf، 0x1000e0f، 0x180c041، 0x1801091 ، 0x180a021 ، 0xd00bcb1} ؛
سپس باید کنترل از راه دور خود را به روش init () در IR.cpp با تابع addRemote () اضافه کنید. آرگومان های تابع عبارتند از:
- تعداد بیت های موجود در بسته
- طول سربرگ بسته
- طول بیت صفر
- طول بیت "یک"
- اشاره گر به آرایه کد
- عناصر شماره آرایه
void IRcmd:: init (void) {addRemote (48، 5252، 902، 1755، panasonicCode، sizeof (panasonicCode)/sizeof (uint32_t))؛
}
همچنین فایل شامل جدول دیگری برای تبدیل دستورات به کدهای صفحه کلید است. آرایه kbdr_kodi شامل کدهای کلیدی مرکز رسانه Kodi است. می توانید یک آرایه دیگر برای برنامه مرکز رسانه خود اضافه کنید ، به عنوان مثال ، پخش کننده vlc. اگر یک جدول برنامه مرکز رسانه دیگر اضافه کنید ، یک شی دیگر KBD ایجاد می کنید و آن را در main.cpp راه اندازی می کنید.
مرحله 4: ابزارهای ساده سازی خیاطی
دو پروژه دیگر در مخزن وجود دارد
- IR investigate - امکان اندازه گیری پارامترهای زمان بندی سیگنال های ریموت شما.
- IR_capture - امکان ضبط کدهای HEX کنترل از راه دور شما.
فقط پروژه IR IR را بارگیری کرده و پورت USB برد بلوپیل را به رایانه خود وصل کنید. سپس هر برنامه ترمینال را در دستگاه پورت سریال مجازی ، مربوط به برد stm32 ، راه اندازی کنید. در حالی که دکمه های ریموت را فشار می دهید ، برنامه پالس های دریافتی را اندازه گیری می کند و زمان متوسط را برای پالس های مختلف چاپ می کند. برای تشخیص طول پالس برای سربرگ بسته ، صفر و یک بیت ، باید ساده شود.
در پروژه تحقیق IR ، تایمر شماره 2 در حالت ضبط PWM با دو کانال کار می کند: کانال اول کل طول پالس و کانال 2 طول پیک را ثبت می کند. هنگامی که لبه سیگنال در حال سقوط تشخیص داده شد ، مقدار زمان سنج در رجیستر کانال یک ذخیره شده و تایمر با 0 تنظیم مجدد می شود. هنگامی که لبه افزایش سیگنال تشخیص داده شد ، شمارنده تایمر در ثبت کانال 2 ذخیره می شود.
برای ضبط کدهای دکمه کنترل از راه دور خود می توانید از پروژه IR_capture استفاده کنید. در فایل main.c شما باید تعریف از راه دور مانند این را اضافه کنید:
IRcode panasonic = {.hdr = 5252 ،.bits = 48 ،.zero = 902 ،.one = 1755 ،.dev = 60} ؛
- .hdr - طول سرصفحه در mks
- .bits - تعداد بیت های موجود در بسته
- .zero - طول بیت صفر
- . one - طول یک بیت
- .dev - انحراف (تفاوت در زمان های قابل پذیرش). معمولاً 1/10 کوچکترین طول است.
سپس ریموت خود را به لیست ریموت های پشتیبانی شده اضافه کنید:
const IRcode* remote [2] = {& panasonic، & pioneer}؛
توصیه شده:
ESP8266 RGB LED STRIP WIFI کنترل - NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi - کنترل تلفن هوشمند RGB LED STRIP: 4 مرحله
ESP8266 RGB LED STRIP WIFI کنترل | NODEMCU به عنوان یک کنترل از راه دور IR برای نوار LED کنترل شده بر روی Wifi | RGB LED STRIP Smartphone Control: سلام بچه ها در این آموزش می آموزیم که چگونه از nodemcu یا esp8266 به عنوان ریموت IR برای کنترل نوار LED RGB استفاده کنید و Nodemcu توسط تلفن هوشمند از طریق وای فای کنترل می شود. بنابراین اساساً می توانید RGB LED STRIP را با تلفن هوشمند خود کنترل کنید
کنترل لوازم خانگی بیش از LoRa - LoRa در اتوماسیون خانگی - کنترل از راه دور LoRa: 8 مرحله
کنترل لوازم خانگی بیش از LoRa | LoRa در اتوماسیون خانگی | کنترل از راه دور LoRa: وسایل برقی خود را از راه دور (کیلومتر) بدون حضور اینترنت کنترل و خودکار کنید. این از طریق LoRa امکان پذیر است! سلام بچه ها چه خبر؟ Akarsh اینجا از CETech. این PCB همچنین دارای یک صفحه نمایش OLED و 3 رله است که یک
راه دور IR خود را به RF از راه دور تبدیل کنید: 9 مرحله (همراه با تصاویر)
راه دور IR خود را به RF Remote تبدیل کنید: در دستورالعمل امروز ، به شما نشان خواهم داد که چگونه می توانید از یک ماژول RF عمومی بدون میکروکنترلر استفاده کنید که در نهایت ما را به ساخت پروژه ای می رساند که در آن می توانید یک IR Remote از هر دستگاه را به RF تبدیل کنید. از راه دور. مزیت اصلی تبدیل یک
کنترل از راه دور سایه/کنترل از راه دور: 5 مرحله
Shadow/Remote Control Activated Leds: آیا تا به حال خواسته اید یک نور فعال شده در شب یا سایه ایجاد کنید؟ خوب .. در اینجا یک دستورالعمل وجود دارد ، اما یک مورد اضافی وجود دارد: می توانید آن را با کنترل RF از راه دور فعال کنید. این بسیار قدرتمند است ، من می توانم اتاق سوراخ خود را روشن کنم
انتشار کابل از راه دور Olympus Evolt E510 (نسخه 2 با فوکوس خودکار از راه دور): 6 مرحله (همراه با تصاویر)
انتشار کابل از راه دور Olympus Evolt E510 (نسخه 2 با فوکوس خودکار از راه دور): دیروز من یک دکمه ساده با یک دکمه برای Olympus E510 خود ساختم. اکثر دوربین ها دارای دکمه شاتر هستند (آن را برای گرفتن عکس فشار می دهید) که دارای دو حالت است. اگر دکمه به آرامی فشار داده شود ، دوربین فوکوس خودکار کرده و نور را اندازه گیری می کند