Мазмұны:
- 1 -қадам: Идея
- 2 -қадам: Контроллерді құру
- 3 -қадам: Контроллерді бейімдеу
- 4 -қадам: Тігінді жеңілдетуге арналған құралдар
Бейне: Stm32 -ге құлау: үй медиа орталығының қашықтан басқару құралы: 4 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Бұл smt32 микроконтроллеріне негізделген stm32f103c8t6 үй медиа орталығының қашықтан басқару пультінің толық прототипі. Сіз үй медиа орталығына арналған компьютерді қолдандыңыз делік. Бұл үлкен бейне кітапхананы ішкі қатты дискіге орналастыруға мүмкіндік беретін өте икемді шешім, немесе сіз желіден бейнені ойната аласыз, мысалы, youtube немесе сізде кодектер немесе бейне ойнату кезінде ешқандай қиындық жоқ, себебі бұл өте кез келген уақытта бағдарламалық жасақтаманы жаңарту оңай. Бұл шешімнің басты кемшілігі - ойнатуды басқару үшін тышқан мен пернетақтаны пайдалану керек. IR қашықтан басқару пульті бұл үшін өте ыңғайлы режим.
Бұл мақалада мен микросхема тақтасының көмегімен қашықтан басқару құралын қалай құруға болатынын көрсетемін.
1 -қадам: Идея
Негізгі идея өте қарапайым: жоспарлау тақтасы USB портына енген және USB HID пернетақтасы ретінде әрекет ете алады. Егер біз ИҚ қабылдағышты тақтаға қосатын болсақ, ол сіздің IR қашықтан басқару пультінің пәрменін виртуалды пернетақтаның «пернесін басуға» аударуы мүмкін. Қосымша драйверлер қажет емес!
Бізді қоршаған әлемде көптеген IR протоколдары бар. VCS жеткізушісінің әрбір теледидарында жеке инфрақызыл протоколы бар. Бірақ бұл хаттамалардың бәріне ортақ бір нәрсе бар: олар сигналды кодтау үшін импульстік модуляцияны қолданады. Әдетте, кіріспе болады: пакеттегі бірінші битке дейін ұзақ импульс. Содан кейін инфрақызыл бақылау бүкіл пакетті 0 және 1 -ге жібереді және ұзын импульсті беруді аяқтайды. Битті декодтау үшін біз импульс пен шыңның ұзындығын өлшеуіміз керек. Әдетте 0 логика мен 1 логиканың шың ұзындығы бірдей, айырмашылық импульстің толық ұзындығында.
Stm32 микроконтроллерлерінде PWM сигналын түсіру мүмкіндігі бар. Микроконтроллердің әр таймерінің жанында «PWM сигналын көбірек түсіру» режиміне қоюға болады, егер таймердің арналық айнымалылары импульстің жалпы ұзындығын және оның шың ұзындығын сақтайды. Бұл жерде мен кішкене ұсақ -түйекті бөліп көрсетуім керек: ИҚ қабылдағышы сигналды қабылдағанда, оның жұмыс істікшесіндегі кернеу 0 -ге тең болады және жұмыс істемейтін күйдегі кернеу ИҚ қабылдағышының кернеуіне байланысты 5 немесе 3,3 вольтты құрайды. Яғни, қабылдағыш сигналды «аударады».
PWM түсіру режимінде stm32 микроконтроллерін IR қашықтан басқару пультінен пернетақта кодтарына дейін ИҚ қашықтағы аудармашысына оңай айналдыруға болады. Содан кейін сіз өзіңіздің сүйікті визуалды бағдарламалық жасақтамаңызды, мысалы, медиа орталықта сүйікті фильмді ойнату үшін VLC Kodi бағдарламасын бастай аласыз.
2 -қадам: Контроллерді құру
Stm32 микроконтроллерін бағдарламалау үшін мен STM тегін бағдарламалық жасақтамасын ұсынғым келеді: жүйелік жұмыс тақтасы (a6 aka) және cubeMX тақтасының конфигурация құралы. Бағдарламалық жасақтаманы микроконтроллерге жүктеу үшін ST-Link V2 адаптерінің чип клонын қолдануға болады. Бұл қадамға бекітілген жүйелік жұмыс үстелінің жобалық файлдары, F1-IR_remote.zip файлы.
Тақтаны конфигурациялау құралы біздің микроконтроллердің бастапқы аппараттық конфигурациясын жеңілдетеді.
Егер сіз жүйелік жұмыс үстелінің құралын қолдансаңыз, сіз тек жүктелген жобаны пайдалана аласыз. Бірақ егер сіз жобаны толығырақ зерттегіңіз келсе, cubeMX тақтасының конфигурациясын жасай аласыз:
- Жаңа жоба жасаңыз және stm32f103c8 тақтасын таңдаңыз
- RCC мәзіріндегі 'Жоғары жылдамдықтағы сағат (HSE)' элементі үшін 'Crystal/Ceramic Resonator' таңдаңыз.
- SYS мәзіріндегі 'Отладка' элементі үшін 'Сериялық сымды' таңдаңыз.
-
PWM түсіру режимінде №2 таймерді (TIM2 мәзірі) суретте көрсетілгендей конфигурациялаңыз:
- Құлдық режимі -> Қалпына келтіру режимі
- Іске қосу көзі -> TI1FP1
- Сағат көзі -> Ішкі сағат
- Channel1 -> Input Capture тікелей режимі
- USB мәзірінде «Device (FS)» құсбелгісін қойыңыз
- USB_DEVICE мәзіріндегі 'FS IP класы' тармағындағы 'Human Interface Device Class (HID)' ашылмалы мәзір элементін таңдаңыз.
- Сағаттың конфигурация тақтасында №2 таймерге 72 МГц беріңіз, себебі бізге әр 1 мкм -де таймердің саны қажет.
- Конфигурация тақтасында USB құрылғысын суретте көрсетілгендей конфигурациялаңыз
-
Конфигурация тақтасында №2 таймерді келесідей конфигурациялаңыз:
- Алдын ала орнатушы - 71 (0 -ден 71 -ге дейін) - 1 микро секундтық белгі!
- Есептегіш режимі - жоғары
- Санау кезеңі - 39999 (біз ұзақ импульсті өлшеуіміз керек)
- Кіріс түсіру арнасы1 - Falling Edge (есте сақтаңыз, IR қабылдағыштан алынған сигнал төңкерілген)
PWM түсіру режимінде №2 таймер келесідей жұмыс істейді:
Құлаған фронт анықталған кезде таймер санағышы channel1 регистрінде сақталады және таймер санағышы 0 қалпына келтіріледі. Содан кейін таймер бағытты санауды жалғастырады. Сондықтан біз импульстің ұзақтығын микро секундтарда оңай өлшей аламыз.
Әдепкі бойынша STM32 USB HID класы USB тінтуірін модельдейді. Мұнда сіз контроллерді пернетақтаға айналдыру туралы нұсқаулықты таба аласыз.
3 -қадам: Контроллерді бейімдеу
Жоба Panasonic пультімен және 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_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};
Const 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};
Содан кейін addRemote () функциясымен IR.cpp ішіндегі init () әдісінде өзіңіздің жеке қашықтан басқару құралын қосу керек. Функция аргументтері:
- Пакеттегі бит саны
- Пакет тақырыбының ұзындығы
- 'Нөлдік' бит ұзындығы
- «Бір» бит ұзындығы
- Код массивіне көрсеткіш
- Массивтің сандық элементтері
жарамсыз IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Сондай -ақ, файлда командаларды пернетақта кодтарына түрлендіру үшін басқа кесте бар. Kbdr_kodi массивінде Kodi медиа орталығының негізгі кодтары бар. Сіз өзіңіздің медиа орталық бағдарламасына басқа массив қосуға болады, мысалы, vlc ойнатқышы. Егер сіз басқа медиа орталықтың қосымшалар кестесін қоссаңыз, сіз басқа KBD нысанын құрып, оны main.cpp ішінде баптайсыз.
4 -қадам: Тігінді жеңілдетуге арналған құралдар
Репозиторийде тағы екі жоба бар
- IR тергеу - қашықтан басқару пультінің сигналдарының уақыт параметрлерін өлшеуге мүмкіндік береді.
- IR_capture - қашықтан басқару пультінің HEX кодтарын түсіруге мүмкіндік береді.
Тек 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* пульт [2] = {& panasonic, & pioneer};
Ұсынылған:
Arduino шолғышқа негізделген қашықтан басқару құралы (linux): 9 қадам (суреттермен)
Arduino шолғышқа негізделген қашықтан басқару құралы (Linux): Бізде балалар бар. Мен оларды жақсы көремін, бірақ олар балалар арналарын қосқан кезде спутник пен теледидардың қашықтан басқару пультін жасырады. Бұл бірнеше жыл бойы күнделікті түрде болғаннан кейін және менің сүйікті әйелім маған рұқсат берді
GH5 аяқ педальдық ысырма қашықтан басқару құралы: 5 қадам (суреттермен)
GH5 аяқ педальдық ысырмасының қашықтан басқару пульті: Мен екі қолыммен үстіңгі үстіңгі суретке түсіруді жиі жасаймын, ал табан жапқышының пульті міндетті түрде болуы керек! Жаяу педальды қосу үшін коммерциялық GH сериялы қашықтан басқару пультін өзгертуге болатынына қарамастан, мен
IRduino: Arduino қашықтан басқару пульті - Жоғалған қашықтан басқару құралына еліктеу: 6 қадам
IRduino: Arduino қашықтан басқару пульті - Жоғалған қашықтан басқару пультіне еліктеу: Егер сіз теледидар немесе DVD ойнатқыш үшін қашықтан басқару пультін жоғалтқан болсаңыз, құрылғының өзіндегі түймелерге жүгіру, табу және пайдалану қаншалықты ауыр болатынын білесіз. Кейде бұл түймелер қашықтан басқару пультімен бірдей функцияны ұсынбайды. Алу
ESP8266 RGB LED STRIP WIFI басқару - NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде - RGB LED STRIP смартфонды басқару: 4 қадам
ESP8266 RGB LED STRIP WIFI басқару | NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде | Смартфонды RGB LED STRIP басқару: Сәлеметсіздер ме, балалар, бұл оқулықта біз nodemcu немесе esp8266 -ды RGB жарықдиодты жолағын басқару үшін инфрақызыл қашықтан басқару құралы ретінде қолдануды үйренеміз, ал Nodemcu смартфон Wi -Fi арқылы басқарылады. Негізінде сіз RGB LED STRIP -ті смартфонмен басқара аласыз
IR қашықтан басқару пультін RF қашықтан басқару пультіне түрлендіру: 9 қадам (суреттермен)
IR қашықтан басқару пультін RF қашықтан басқару пультіне түрлендіріңіз: бүгінгі нұсқаулықта мен сізге микроконтроллерсіз жалпы радиожиілік модульді қалай қолдануға болатынын көрсетемін, бұл бізді кез келген құрылғының IR қашықтан басқару пультін ЖЖ -ге түрлендіре алатын жобаны құруға әкеледі. Қашықтан басқару. Түрлендірудің басты артықшылығы