সুচিপত্র:

Stm32 এ পতন: হোম মিডিয়া সেন্টারের জন্য রিমোট কন্ট্রোল: 4 টি ধাপ (ছবি সহ)
Stm32 এ পতন: হোম মিডিয়া সেন্টারের জন্য রিমোট কন্ট্রোল: 4 টি ধাপ (ছবি সহ)

ভিডিও: Stm32 এ পতন: হোম মিডিয়া সেন্টারের জন্য রিমোট কন্ট্রোল: 4 টি ধাপ (ছবি সহ)

ভিডিও: Stm32 এ পতন: হোম মিডিয়া সেন্টারের জন্য রিমোট কন্ট্রোল: 4 টি ধাপ (ছবি সহ)
ভিডিও: LDmicro 11: Serial LCD Temperature Controller (Microcontroller PLC Ladder Programming with LDmicro) 2024, নভেম্বর
Anonim
Stm32 এ পড়া: হোম মিডিয়া সেন্টারের জন্য রিমোট কন্ট্রোল
Stm32 এ পড়া: হোম মিডিয়া সেন্টারের জন্য রিমোট কন্ট্রোল

এটি SMT32 মাইক্রো কন্ট্রোলারের উপর ভিত্তি করে হোম মিডিয়া সেন্টারের রিমোট কন্ট্রোলের জন্য একটি সম্পূর্ণ প্রোটোটাইপ, stm32f103c8t6 যা 'ব্লুপিল' বোর্ড নামে পরিচিত। ধরুন, আপনি হোম মিডিয়া সেন্টারের জন্য একটি পিসি ব্যবহার করছেন। এটি খুব নমনীয় সমাধান, যা আপনাকে অভ্যন্তরীণ হার্ড ড্রাইভে বিশাল ভিডিও লাইব্রেরি স্থাপন করতে দেয়, অথবা আপনি নেটওয়ার্ক থেকে ভিডিও চালাতে পারেন, উদাহরণস্বরূপ ইউটিউব বা তাই, আপনার কোডেক বা ভিডিও চালাতে কোন সমস্যা নেই, কারণ এটি খুবই সফটওয়্যার প্লেয়ার যে কোন সময় আপডেট করা সহজ। এই সমাধানটির প্রধান অসুবিধা হল যে আপনার প্লেব্যাক নিয়ন্ত্রণ করতে আপনার মাউস এবং কীবোর্ড ব্যবহার করা উচিত। আইআর রিমোট কন্ট্রোল এর জন্য অনেক মোড সুবিধাজনক।

এই প্রবন্ধে আমি দেখাব কিভাবে চিপ ব্লুপিল বোর্ড ব্যবহার করে নিজের রিমোট কন্ট্রোল তৈরি করা যায়।

ধাপ 1: আইডিয়া

বুদ্ধিটা
বুদ্ধিটা
বুদ্ধিটা
বুদ্ধিটা

মূল ধারণাটি খুব সহজ: ব্লুপিল বোর্ড ইউএসবি পোর্ট এম্বেড করেছে এবং ইউএসবি এইচআইডি কীবোর্ড হিসাবে কাজ করতে পারে। যদি আমরা বোর্ডে আইআর রিসিভার সংযুক্ত করি, তাহলে এটি আপনার আইআর রিমোট কন্ট্রোল থেকে কমান্ডটিকে ভার্চুয়াল কীবোর্ডের 'কী প্রেস' এ অনুবাদ করতে পারে। কোন অতিরিক্ত ড্রাইভার প্রয়োজন!

আমাদের চারপাশে পৃথিবীতে অনেক IR প্রোটোকল আছে। ভিসিএস বিক্রেতার প্রতিটি টিভির নিজস্ব আইআর প্রোটোকল রয়েছে। কিন্তু এই সমস্ত প্রোটোকলের কিছু সাধারণ বিষয় রয়েছে: তারা সিগন্যাল এনকোড করার জন্য পালস-মডুলেশন ব্যবহার করে। সাধারণত, কিছু প্রস্তাবনা থাকে: প্যাকেটে প্রথম বিটের আগে দীর্ঘ আবেগ। তারপর আইআর কন্ট্রোল 0 এবং 1 দিয়ে পুরো প্যাকেট প্রেরণ করে এবং লম্বা পালস শেষ করে ট্রান্সমিশন চূড়ান্ত করে। বিট ডিকোড করার জন্য আমাদের শিখরের দৈর্ঘ্য পালস এবং দৈর্ঘ্য পরিমাপ করতে হবে। সাধারণত, লজিক 0 এবং লজিক 1 এর শিখর দৈর্ঘ্য একই, পার্থক্য সম্পূর্ণ পালস দৈর্ঘ্যে।

STW32 মাইক্রো কন্ট্রোলার PWM সিগন্যাল ক্যাপচার করার জন্য বৈশিষ্ট্যটি এম্বেড করেছে। মাইক্রো কন্ট্রোলারের প্রায় প্রতিটি টাইমারকে 'পিডব্লিউএম সিগন্যাল ক্যাপচার মোর' এ রাখা যেতে পারে যখন টাইমারের চ্যানেল ভেরিয়েবল পালসের মোট দৈর্ঘ্য এবং এর সর্বোচ্চ দৈর্ঘ্য সংরক্ষণ করে। এখানে আমাকে একটু বিস্তারিত তুলে ধরতে হবে: যখন আইআর রিসিভার সিগন্যাল ধরবে, তার কাজের পিনের ভোল্টেজ 0 হয়ে যাবে এবং নিষ্ক্রিয় অবস্থায় আইআর রিসিভার সাপ্লাই ভোল্টেজের উপর নির্ভর করে ওয়ার্কিং পিনের ভোল্টেজ 5 বা 3.3 ভোল্ট হবে। অর্থাৎ, রিসিভার সংকেত 'উল্টে দেয়'।

PWM ক্যাপচার মোডের সাহায্যে stm32 মাইক্রো কন্ট্রোলারকে সহজেই IR দূরবর্তী অনুবাদক থেকে IR দূরবর্তী থেকে কীবোর্ড কোডে পরিণত করা যায়। তারপরে আপনি আপনার পছন্দের ভিজুয়ালাইজিং সফটওয়্যারটি শুরু করতে পারেন, উদাহরণস্বরূপ ভিএলসির কোডি মিডিয়া সেন্টারে আপনার প্রিয় সিনেমাটি চালানোর জন্য।

ধাপ 2: নিয়ামক তৈরি করা

কন্ট্রোলার তৈরি করা
কন্ট্রোলার তৈরি করা
কন্ট্রোলার তৈরি করা
কন্ট্রোলার তৈরি করা
কন্ট্রোলার তৈরি করা
কন্ট্রোলার তৈরি করা
কন্ট্রোলার তৈরি করা
কন্ট্রোলার তৈরি করা

STM32 মাইক্রো কন্ট্রোলার প্রোগ্রাম করার জন্য আমি STM থেকে বিনামূল্যে সফটওয়্যার সুপারিশ করতে চাই: সিস্টেম ওয়ার্কবেঞ্চ (ওরফে AC6) এবং বোর্ড কনফিগারেশন টুল কিউবএমএক্স। মাইক্রো কন্ট্রোলারে সফটওয়্যারটি আপলোড করার জন্য ST-Link V2 অ্যাডাপ্টারের চিপ ক্লোন ব্যবহার করা যেতে পারে। এই পদক্ষেপের সাথে সংযুক্ত সিস্টেম ওয়ার্কবেঞ্চ প্রকল্প ফাইল, F1-IR_remote.zip ফাইল।

বোর্ড কনফিগারেশন টুল আমাদের মাইক্রো কন্ট্রোলারের প্রাথমিক হার্ডওয়্যার কনফিগারেশনের প্রক্রিয়াটিকে সহজ করে।

আপনি যদি সিস্টেম ওয়ার্কবেঞ্চ টুল ব্যবহার করেন তবে আপনি কেবল ডাউনলোড করা প্রকল্পটি ব্যবহার করতে পারেন। কিন্তু আপনি যদি আরো বিস্তারিতভাবে প্রকল্পটি তদন্ত করতে চান, তাহলে আপনি কিউবএমএক্সে বোর্ড কনফিগারেশন তৈরি করতে পারেন:

  • নতুন প্রকল্প তৈরি করুন এবং বোর্ড stm32f103c8 নির্বাচন করুন
  • RCC মেনুতে 'হাই স্পিড ক্লক (HSE)' আইটেমের জন্য 'ক্রিস্টাল/সিরামিক রেজোনেটর' নির্বাচন করুন।
  • SYS মেনুতে 'ডিবাগ' আইটেমের জন্য 'সিরিয়াল ওয়্যার' নির্বাচন করুন।
  • ছবিতে দেখানো হিসাবে PWM ক্যাপচার মোডে টাইমার #2 (TIM2 মেনু) কনফিগার করুন:

    • স্লেভ মোড -> রিসেট মোড
    • ট্রিগার উৎস -> TI1FP1
    • ঘড়ির উৎস -> অভ্যন্তরীণ ঘড়ি
    • চ্যানেল 1 -> ইনপুট ক্যাপচার সরাসরি মোড
  • ইউএসবি মেনুতে চেকবক্স 'ডিভাইস (এফএস) সেট করুন
  • USB_DEVICE মেনুতে 'ক্লাস এফএস আইপি' আইটেমের 'হিউম্যান ইন্টারফেস ডিভাইস ক্লাস (HID)' পুল-ডাউন মেনু উপাদান নির্বাচন করুন
  • ঘড়ি কনফিগারেশন প্যানেলে, টাইমার #2 কে 72 মেগাহার্টজ প্রদান করতে ভুলবেন না কারণ আমাদের প্রতি 1 এমকেএসে টাইমার গণনা প্রয়োজন।
  • কনফিগারেশন প্যানেলে ছবিতে দেখানো হিসাবে ইউএসবি ডিভাইস কনফিগার করুন
  • কনফিগারেশন প্যানেলে টাইমার#2 নিম্নলিখিত হিসাবে কনফিগার করুন:

    • Prescaller - 71 (0 থেকে 71) - 1 মাইক্রো সেকেন্ড টিক!
    • কাউন্টার মোড - উপরে
    • কাউন্টার পিরিয়ড - 39999 (আমরা লম্বা পালস পরিমাপ করতে সক্ষম হওয়া উচিত)
    • ইনপুট ক্যাপচার চ্যানেল 1 - ফালিং এজ (মনে রাখবেন যে আইআর রিসিভারের সিগন্যাল উল্টানো)

PWM ক্যাপচার মোডে টাইমার#2 নিম্নলিখিত কাজ করবে:

যখন পতনশীল সামনে সনাক্ত করা হয়, টাইমার কাউন্টারটি চ্যানেল 1 রেজিস্টারে সংরক্ষণ করা হবে এবং টাইমার কাউন্টারটি 0 দিয়ে পুনরায় সেট করা হবে। তাই আমরা সহজেই মাইক্রো সেকেন্ডে নাড়ির দৈর্ঘ্য পরিমাপ করতে পারি।

ডিফল্টরূপে STM32 USB HID ক্লাস ইউএসবি মাউসকে সিমুলেট করে। এখানে আপনি কন্ট্রোলারকে কীবোর্ডে পরিণত করার নির্দেশনা পেতে পারেন।

ধাপ 3: কন্ট্রোলার টেইলারিং

প্রকল্পটি প্যানাসনিক রিমোট কন্ট্রোল এবং কোডি মিডিয়া সেন্টারের সাথে কাজ করে। আপনার নিজের কন্ট্রোলারের জন্য প্রকল্পটি তৈরি করতে আপনার রিমোট কন্ট্রোলের জন্য কোড অ্যারে যোগ করা উচিত যেমন আমি প্যানাসনিক রিমোট কন্ট্রোল (প্যানাসনিক কোড) ইনক/কোড.এই হেডারে করেছি। আপনি দেখতে পাচ্ছেন, প্রতিটি কমান্ডের অনন্য আইডি রয়েছে (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_previous, IR_info, IR_subtitle, IR_nxt_subtitle, IR_pos_subtitle, IR_teletext, IR_zoom, IR_mark_watched, IR_playlist, IR_power, IR_unknown} IRcommand;

const 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};

panasonicCode = {0xd00505d, 0xd00000d, 0xd00606d, 0xd00525f, 0xd00929f, 0x100eced, 0xd00101d, 0x1002b2a, 0x1007273, 0x100f2f3, 0x1005253, 0x100d2d3, 0x1009293, 0x1002c2d, 0x100acad, 0x1009c9d, 0x1008e8f, 0x1004e4f, 0x100cecf, 0x1000e0f, 0x180c041, 0x1801091 uint32_t const, 0x180a021, 0xd00bcb1};

তারপর আপনি addRemote () ফাংশন সহ IR.cpp এ init () পদ্ধতিতে আপনার নিজের রিমোট কন্ট্রোল যোগ করুন। ফাংশন আর্গুমেন্ট হল:

  • প্যাকেটে বিটের সংখ্যা
  • প্যাকেটের হেডারের দৈর্ঘ্য
  • 'জিরো' বিট দৈর্ঘ্য
  • 'এক' বিট দৈর্ঘ্য
  • কোড অ্যারে পয়েন্টার
  • অ্যারের সংখ্যা উপাদান

void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));

}

এছাড়াও কমান্ডগুলিকে কীবোর্ড কোডে রূপান্তর করার জন্য ফাইলটিতে আরেকটি টেবিল রয়েছে। Kbdr_kodi অ্যারেতে কোডি মিডিয়া সেন্টারের মূল কোড রয়েছে। আপনি আপনার নিজের মিডিয়া সেন্টার প্রোগ্রামের জন্য অন্য অ্যারে যোগ করতে পারেন, উদাহরণস্বরূপ, ভিএলসি প্লেয়ার। আপনি যদি অন্য একটি মিডিয়া সেন্টার অ্যাপ্লিকেশন টেবিল যোগ করেন, তাহলে আপনি আরেকটি বস্তু KBD তৈরি করবেন এবং main.cpp এ এটি আরম্ভ করবেন।

ধাপ 4: টেইলারিং সহজ করার টুলস

টেইলারিং সহজ করার টুলস
টেইলারিং সহজ করার টুলস
টেইলারিং সহজ করার টুলস
টেইলারিং সহজ করার টুলস

ভাণ্ডারে আরও দুটি প্রকল্প রয়েছে

  • আইআর তদন্ত - আপনার রিমোটের সিগন্যালের টাইমিং প্যারামিটার পরিমাপ করার অনুমতি দেয়।
  • IR_capture - আপনার রিমোট কন্ট্রোলের HEX কোড ক্যাপচার করার অনুমতি দেয়।

শুধু IR তদন্ত প্রকল্প লোড করুন এবং আপনার কম্পিউটারে ব্লুপিল বোর্ডের USB পোর্ট সংযুক্ত করুন। তারপরে stm32 বোর্ডের সাথে সম্পর্কিত ভার্চুয়াল সিরিয়াল পোর্ট ডিভাইসে যে কোনও টার্মিনাল প্রোগ্রাম চালু করুন। যখন আপনি আপনার রিমোটের বোতাম টিপবেন, প্রোগ্রামটি প্রাপ্ত ডালগুলি পরিমাপ করবে এবং বিভিন্ন পালসের জন্য গড় বার প্রিন্ট করবে। প্যাকেট হেডার, শূন্য এবং এক বিটের জন্য পালস দৈর্ঘ্য সনাক্ত করা সহজ করা উচিত।

আইআর তদন্ত প্রকল্পে টাইমার #2 দুটি চ্যানেলের সাথে PWM ক্যাপচার মোডে কাজ করছে: চ্যানেল এক পুরো পালস দৈর্ঘ্য এবং চ্যানেল 2 সর্বোচ্চ দৈর্ঘ্য ধারণ করে। যখন পতনশীল সংকেত প্রান্ত সনাক্ত করা হয়, টাইমার মানটি চ্যানেলে সংরক্ষিত হয় একটি রেজিস্টার এবং টাইমারটি 0 দিয়ে পুনরায় সেট করা হয়।

আপনার নিজের রিমোট কন্ট্রোলের বোতাম কোডগুলি ক্যাপচার করতে, IR_capture প্রকল্প ব্যবহার করা যেতে পারে। Main.c ফাইলে আপনার এই মত দূরবর্তী সংজ্ঞা যোগ করা উচিত:

আইআরকোড প্যানাসনিক = {.hdr = 5252,.bit = 48,.zero = 902,.one = 1755,.dev = 60};

  • .hdr - mks এ হেডারের দৈর্ঘ্য
  • .bit - প্যাকেটের বিটের সংখ্যা
  • .জিরো - শূন্য বিটের দৈর্ঘ্য
  • .one - দৈর্ঘ্য এক এক বিট
  • .dev - বিচ্যুতি (সময়ের পার্থক্য যা গ্রহণ করা যায়)। সাধারণত এটি ক্ষুদ্রতম দৈর্ঘ্যের 1/10।

তারপরে সমর্থিত রিমোটের তালিকায় আপনার রিমোট যুক্ত করুন:

const IRcode* remote [2] = {& panasonic, & pioneer};

প্রস্তাবিত: