Мазмуну:
- 1 -кадам: Идея
- 2 -кадам: Контроллерди түзүү
- 3 -кадам: Контроллерди тигүү
- 4 -кадам: Тигүүчүлүктү жөнөкөйлөтүүчү куралдар
Video: Stm32ге түшүү: Үй медиа борбору үчүн алыстан башкаруу: 4 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул smt32 микро контроллерине негизделген үй медиа борборунун алыстан башкаруу үчүн толук прототиби, stm32f103c8t6 "планы" тактасы катары белгилүү. Мисалы, сиз үй медиа борбору үчүн ЖК колдонуп жатасыз дейли. Бул абдан ийкемдүү чечим, бул сизге чоң видео китепкананы ички катуу дискте жайгаштырууга мүмкүндүк берет, же сиз видеону тармактан ойното аласыз, мисалы youtube же башка, сизде кодектер же видео ойнотуу менен эч кандай көйгөй жок, анткени бул абдан каалаган убакта программалык камсыздоону жаңыртуу оңой. Бул чечимдин негизги кемчилиги - ойнотууну көзөмөлдөө үчүн чычканды жана клавиатураны колдонуу керек. IR алыстан башкаруу бул үчүн абдан ыңгайлуу режими болуп саналат.
Бул макалада мен чип планы тактасын колдонуп, алыстан башкарууну кантип түзүүнү көрсөтөм.
1 -кадам: Идея
Негизги идея абдан жөнөкөй: пландын үстөлүндө USB порт орнотулган жана USB HID клавиатурасы катары иштей алат. Эгерде биз IR алуучуну тактага тиркеп койсок, ал сиздин IR пультуңуздагы буйрукту виртуалдык клавиатуранын "басуу баскычына" которушу мүмкүн. Эч кандай кошумча айдоочулар талап кылынбайт!
Бизди курчап турган дүйнөдө көптөгөн IR протоколдору бар. VCS сатуучусунун ар бир телекөрсөтүүсүнүн өзүнүн IR протоколу бар. Бирок бул протоколдордун жалпы бир нерсеси бар: алар сигналды коддоо үчүн импульстук модуляцияны колдонушат. Адатта, кээ бир преамбула бар: пакетте биринчи битке чейин узак импульс. Андан кийин IR контролу бүт пакетти 0 жана 1 менен өткөрүп, узун импульс менен бүтүрүүнү аяктайт. Битти коддон чыгаруу үчүн биз импульстун узундугун жана чокунун узундугун өлчөшүбүз керек. Адатта, логиканын 0 жана логиканын эң жогорку узундугу бирдей, айырмасы импульстун толук узундугунда.
Stm32 микро контроллери PWM сигналын алуу үчүн камтылган функцияга ээ. Микроконтроллердин ар бир таймеринин жанына 'PWM сигналын көбүрөөк тартууга' коюуга болот, качан таймердин каналдын өзгөрмөлөрү импульстун жалпы узундугун жана анын эң жогорку узундугун сактап калат. Бул жерде мен кичинекей деталды белгилеп кетишим керек: IR кабылдагычы сигналды кармаганда, анын иштөөчү пининдеги чыңалуу 0 болуп калат жана бош абалда жумушчу пиндеги чыңалуу IR кабылдагычынын чыңалуусуна жараша 5 же 3,3 вольтту түзөт. Башкача айтканда, алуучу сигналды "тескери бурат".
PWM тартуу режими менен stm32 микро контроллерин IR пультунан IR пультунун клавиатура коддоруна оңой эле IR алыскы котормочусуна айландырса болот. Андан кийин сиз сүйүктүү визуалдаштыруу программаңызды баштай аласыз, мисалы VLCдин Kodi медиа борборунда сүйүктүү тасмаңызды ойнотуу үчүн.
2 -кадам: Контроллерди түзүү
Stm32 микро контроллерин программалоо үчүн мен STMден акысыз программаны сунуш кылгым келет: system workbench (aka ac6) жана cubeMX тактасынын конфигурация инструменти. Программаны микро контроллерге жүктөө үчүн ST-Link V2 адаптеринин чип клонун колдонсо болот. Бул кадамга тиркелген тутумдун иштөө долбоорунун файлдары, F1-IR_remote.zip файлы.
Такта конфигурация куралы микро контроллерибиздин алгачкы аппараттык конфигурация процессин жөнөкөйлөтөт.
Эгерде сиз системанын жумушчу тактасын колдонуп жатсаңыз, анда жөн эле жүктөлүп алынган долбоорду колдоно аласыз. Бирок эгер сиз долбоорду кененирээк иликтөөнү кааласаңыз, cubeMXте тактанын конфигурациясын түзө аласыз:
- Жаңы долбоорду түзүп, stm32f103c8 тактасын тандаңыз
- RCC менюсунда 'Жогорку ылдамдыктагы саат (HSE)' пункту үчүн 'Crystal/Ceramic Resonator' тандаңыз.
- SYS менюсунда 'Мүчүлүштүктөрдү оңдоо' пункту үчүн 'Сериялык зымды' тандаңыз.
-
Сүрөттө көрсөтүлгөндөй PWM тартуу режиминде #2 таймерин (TIM2 менюсун) конфигурациялаңыз:
- Кул режими -> Кайра коюу режими
- Триггер булагы -> TI1FP1
- Сааттын булагы -> Ички саат
- Channel1 -> Input Capture түз режими
- USB менюсунда "Түзмөк" (FS) белгилөө кутучасын коюңуз
- USB_DEVICE менюсундагы 'FS IP классы' пунктундагы 'Human Interface Device Class (HID)' ачылуучу меню элементин тандаңыз.
- Сааттын конфигурациясынын панелинде #2 таймерине 72 МГц берүүнү тактаңыз, анткени бизге ар бир 1 мкмде таймердин саны керек.
- Конфигурация панелинде USB түзмөгүн сүрөттө көрсөтүлгөндөй конфигурациялаңыз
-
Конфигурация панелинде таймерди#2 төмөнкүдөй конфигурациялаңыз:
- Prescaller - 71 (0дон 71ге чейин) - 1 микро экинчи кене!
- Эсептегич режими - Өйдө
- Counter Period - 39999 (биз узак импульсту өлчөй алышыбыз керек)
- Киргизүү каналы1 - Falling Edge (IR алуучунун сигналы тескери экенин унутпаңыз)
PWM тартуу режиминде таймер#2 төмөнкүдөй иштейт:
Жыгылып жаткан фронт аныкталганда, таймер эсептегич channel1 реестрине сакталмак жана таймер эсептегич 0 менен баштапкы абалга келтирилмек. Андан кийин таймер багытты саноону улантмак. Ошентип, биз импульстун узундугун микро секундада оңой өлчөй алабыз.
Демейки боюнча STM32 USB HID классы USB чычканды окшоштурат. Бул жерде сиз контроллерди клавиатурага айлантуу боюнча көрсөтмөнү таба аласыз.
3 -кадам: Контроллерди тигүү
Долбоор Panasonic пульту жана Kodi медиа борбору менен иштейт. Долбоорду өз контролеруңузга ылайыкташтыруу үчүн, мен пансионикалык алыстан башкаруу (panasonicCode) Inc/code.h аталышына окшоп, алыстан башкаруу үчүн код массивин кошушуңуз керек. Көрүнүп тургандай, ар бир буйрук уникалдуу IDге ээ (IRcommmand enumда). Долбоор тарабынан таанылган 24 буйрук (0-23) бар. Буйрук актуалдуулугу боюнча иргелет.
typedef санап чыгуу аркылуу {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 () усулуна өзүңүздүн алыстан башкарууну кошушуңуз керек. Функциянын аргументтери:
- Пакеттеги биттердин саны
- Пакеттин башынын узундугу
- 'Zero' бит узундугу
- "Бир" бит узундугу
- Код массивине көрсөткүч
- Массивдин сан элементтери
жараксыз IRcmd:: init (жараксыз) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Файлда буйруктарды клавиатура коддоруна айландыруу үчүн дагы бир таблица бар. Kbdr_kodi массивинде Kodi медиа борборунун ачкыч коддору камтылган. Сиз медиа борборуңуздун программасына башка массивди кошо аласыз, мисалы, vlc player. Эгерде сиз башка медиа борбордун колдонмо таблицасын кошо турган болсоңуз, анда сиз башка KBD объектисин түзүп, аны main.cppте баштайсыз.
4 -кадам: Тигүүчүлүктү жөнөкөйлөтүүчү куралдар
Репозиторийде дагы эки долбоор бар
- IR иликтөө - сиздин пульттун сигналдарынын убакыт параметрлерин өлчөөгө мүмкүндүк берет.
- IR_capture - алыстан башкарууңуздун HEX коддорун тартууга мүмкүндүк берет.
Жөн эле IR изилдөө долбоорун жүктөп, плюстун USB портун компьютериңизге туташтырыңыз. Андан кийин, stm32 тактасына туура келген виртуалдык сериялык порт түзмөгүндө каалаган терминалдык программаны ишке киргизиңиз. Сиз алыстан баскычтарды басканыңызда, программа алынган импульстарды өлчөп, ар кандай импульстун орточо убактысын басып чыгарат. Бул пакеттин аталышы, нөл жана бир бит үчүн импульстун узундугун аныктоону жөнөкөйлөштүрүшү керек.
IR изилдөө долбоорунда таймер #2 PWM тартуу режиминде эки канал менен иштейт: биринчи канал бүт импульстун узундугун, ал эми channel2 эң узундукту кармайт. Түшүп жаткан сигналдын чеги аныкталганда, таймердин мааниси каналга бир реестрге сакталат жана таймер 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};
Сунушталууда:
Folow-UP: Odroid N2 жана Kodi менен өнүккөн медиа борбору (4k жана HEVC колдоосу): 3 кадам
Folow-UP: Өркүндөтүлгөн медиа борбору Odroid N2 жана Kodi менен (4k жана HEVC колдоосу): Бул макала мурун популярдуу Raspberry PIге негизделген, ар тараптуу медиа борборду куруу жөнүндө мурунку ийгиликтүү макаламдын уландысы. кийинчерээк, HEVC, H.265 жана HDMI 2.2ге шайкеш чыгуунун жоктугунан, ал которулду
Ардуино менен 2.4Ghz NRF24L01 модулун колдонуу менен зымсыз алыстан башкаруу - Nrf24l01 4 каналы / 6 каналды берүүчү Quadcopter үчүн алуучу - Rc Helicopter - Rc учагы Arduino колдонуу: 5 кадам (сүрөттөр менен)
Ардуино менен 2.4Ghz NRF24L01 модулун колдонуу менен зымсыз алыстан башкаруу | Nrf24l01 4 каналы / 6 каналды берүүчү Quadcopter үчүн алуучу | Rc Helicopter | Arduino менен Rc учагы: Rc машинасын иштетүү | Quadcopter | Дрон | RC учагы | RC кайыгы, бизге дайыма рецептор жана өткөргүч керек, RC QUADCOPTER үчүн бизге 6 каналдуу өткөргүч жана кабыл алгыч керек деп ойлойбуз жана TX менен RXтин бул түрү өтө кымбат, ошондуктан биз аны өзүбүздө жасайбыз
1981 Portable VCR Raspberry PI медиа борбору: 12 кадам (Сүрөттөр менен)
1981 Portable VCR Raspberry PI медиа борбору: Бул 80 -жылдардын башындагы Sharp VC -2300H портативдүү видеомагнитофону - мен азыр Raspbmc медиа борборунун эң сонун программасын иштетип, жүрөгүндө Raspberry Pi бар. Башка жаңыртууларга ардуиного негизделген саат жана EL зымынын "тасмасы" кирет
Eskate же Hydrofoil үчүн Arduino негизделген алыстан башкаруу: 5 кадам (сүрөттөр менен)
Eskate же Hydrofoil үчүн Arduino негизделген алыстан башкаруу: Бул көрсөтмө сизге керектүү бардык коддорду жана жабдууларды камтыган эскейт же электр гидрофоль менен колдонуу үчүн физикалык алыстан кантип курууну көрсөтөт. Көп ширетүү иштери бар, бирок аны жасоо да кызыктуу. Алыстан башкаруучу эмне кыла алат? Ко
PC Youtube жана Netflix үчүн алыстан башкаруу: 9 кадам (сүрөттөр менен)
PC Youtube жана Netflix үчүн алыстан башкаруу: Менин компьютеримдин эсептегичтери менин төшөгүмдөн алыс, ошондуктан табигый түрдө мен youtube менен кинолорду керебетимден көрүүнү жакшы көрөм. Мен жатканымда, мен үндү тууралоону, кандайдыр бир себептерден улам видеону тындырууну же видеону толугу менен өткөрүп жиберүүнү талап кылып жатам