Cuprins:
- Pasul 1: Ideea
- Pasul 2: Crearea controlerului
- Pasul 3: Adaptarea controlerului
- Pasul 4: Instrumente pentru simplificarea croitoriei
Video: Falling in Stm32: Telecomandă pentru Home Media Center: 4 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Acesta este un prototip complet pentru telecomanda home media center bazată pe microcontroler smt32, stm32f103c8t6 cunoscut sub numele de placa „bluepill”. Să presupunem că utilizați un PC pentru centrul media acasă. Este o soluție foarte flexibilă, care vă permite să plasați o bibliotecă video uriașă pe hard diskul intern sau puteți reda videoclipuri din rețea, de exemplu YouTube sau cam asa ceva, nu aveți deloc probleme cu codecurile sau redarea video, deoarece este foarte ușor de actualizat playerul software oricând. Principalul dezavantaj al acestei soluții este că ar trebui să utilizați mouse-ul și tastatura pentru a controla redarea. Telecomanda IR este mult mai convenabilă în acest sens.
În acest articol voi arăta cum să creez propria telecomandă folosind placa bluepill cu chip.
Pasul 1: Ideea
Ideea principală este foarte simplă: placa bluepill are port USB încorporat și poate acționa ca tastatură USB HID. Dacă atașăm receptorul IR la bord, acesta ar putea traduce comanda de la telecomanda IR la „apăsarea tastei” a tastaturii virtuale. Nu sunt necesare drivere suplimentare!
Există multe protocoale IR în lumea din jurul nostru. Fiecare televizor al furnizorului VCS are propriul protocol IR. Dar toate aceste protocoale au ceva comun: folosesc modularea pulsului pentru a codifica semnalul. De obicei, există unele preambuluri: impuls lung înainte de primul bit din pachet. Apoi controlul IR transmite întregul pachet cu 0 și 1 și finalizează transmisia cu un impuls lung. Pentru a decoda bitul, trebuie să măsurăm lungimea impulsului și lungimea vârfului. De obicei, lungimea de vârf a logicii 0 și logica 1 sunt aceleași, diferența este în lungimea completă a impulsului.
Microcontrolerele stm32 au funcție încorporată pentru a captura semnalul PWM. Aproape fiecare cronometru al microcontrolerului poate fi pus în „captarea semnalului PWM mai mult” atunci când variabilele de canal ale cronometrului salvează lungimea totală a impulsului și lungimea sa de vârf. Aici trebuie să evidențiez micul detaliu: când receptorul IR prinde semnalul, tensiunea pinului său de lucru devine 0 și în starea de mers în gol tensiunea pinului de lucru este de 5 sau 3,3 volți, în funcție de tensiunea de alimentare a receptorului IR. Adică, receptorul „inversează” semnalul.
Cu modul de captare PWM, microcontrolerul stm32 poate fi transformat cu ușurință într-un translator la distanță IR de la telecomandă IR la codurile tastaturii. Apoi, puteți începe software-ul dvs. preferat de vizualizare, de exemplu Kodi din VLC pentru a reda filmul preferat pe media center.
Pasul 2: Crearea controlerului
Pentru a programa stm32 micro controller aș dori să recomand software-ul gratuit de la STM: system workbench (aka ac6) și instrumentul de configurare a plăcii cubeMX. Pentru a încărca software-ul în microcontroler poate fi utilizată clona cu cip a adaptorului ST-Link V2. Fișierele de proiect ale sistemului de lucru atașate la acest pas, fișierul F1-IR_remote.zip.
Instrumentul de configurare a plăcii simplifică procesul de configurare hardware inițială a microcontrolerului nostru.
Dacă utilizați instrumentul bancului de lucru al sistemului, puteți utiliza doar proiectul descărcat. Dar dacă doriți să investigați proiectul în mai multe detalii, puteți crea configurația plăcii în cubeMX:
- Creați un proiect nou și selectați placa stm32f103c8
- Selectați „Rezonator de cristal / ceramică” pentru elementul „Ceas de mare viteză (HSE)” din meniul RCC.
- Selectați „Serial Wire” pentru elementul „Debug” din meniul SYS.
-
Configurați temporizatorul # 2 (meniul TIM2) în modul de captare PWM așa cum se arată în imagine:
- Mod Slave -> Mod Reset
- Trigger Source -> TI1FP1
- Sursa ceasului -> Ceas intern
- Canal1 -> Mod direct de intrare Captură
- Setați caseta de selectare „Dispozitiv (FS) în meniul USB
- Selectați elementul de meniu derulant „Clasa dispozitivului de interfață umană (HID)” în elementul „Clasa FS IP” din meniul USB_DEVICE
- În panoul de configurare a ceasului, asigurați-vă că furnizați 72 MHz temporizatorului # 2, deoarece avem nevoie de numărarea temporizatorului la fiecare 1 mks.
- În panoul de configurare configurați dispozitivul USB așa cum se arată în imagine
-
În panoul de configurare configurați temporizatorul nr. 2 după cum urmează:
- Prescaller - 71 (de la 0 la 71) - 1 bifă micro-secundă!
- Modul Contor - Sus
- Perioada contra - 39999 (ar trebui să putem măsura pulsul lung)
- Canal de captare intrare1 - Falling Edge (amintiți-vă că semnalul de la receptorul IR este inversat)
În modul de captare PWM, temporizatorul # 2 funcționează după cum urmează:
Când frontul de cădere a fost detectat, contorul temporizatorului ar fi salvat în registrul canal1 și contorul temporizatorului va fi resetat cu 0. Apoi temporizatorul va continua să numere direcția în sus. Deci, putem măsura cu ușurință lungimea impulsului în micro secunde.
În mod implicit, clasa STM32 USB HID simulează mouse-ul USB. Aici puteți găsi instrucțiunile pentru a transforma controlerul în tastatură.
Pasul 3: Adaptarea controlerului
Proiectul funcționează cu telecomanda Panasonic și centrul media Kodi. Pentru a adapta proiectul pentru propriul controler, ar trebui să adăugați matricea de coduri pentru telecomanda dvs., așa cum am făcut pentru telecomanda panasonic (panasonicCode) la antetul Inc / code.h. După cum puteți vedea, fiecare comandă are un ID unic (în enumărul IRcommmand). Există 24 de comenzi (0-23) recunoscute de proiect. Comanda este sortată după relevanță.
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};
Apoi ar trebui să adăugați propria telecomandă în metoda init () în IR.cpp cu funcția addRemote (). Argumentele funcției sunt:
- Numărul de biți din pachet
- Lungimea antetului pachetului
- Lungimea bitului „zero”
- Lungimea unui „bit”
- Pointer către matricea de coduri
- Numărul de elemente ale matricei
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode) / sizeof (uint32_t));
}
De asemenea, fișierul conține un alt tabel pentru a converti comenzile în coduri de tastatură. Matricea kbdr_kodi conține codurile cheie pentru centrul media Kodi. Puteți adăuga o altă matrice pentru propriul program media center, de exemplu, vlc player. Dacă ați adăuga un alt tabel de aplicații media center, ați crea un alt obiect KBD și îl inițializați în main.cpp.
Pasul 4: Instrumente pentru simplificarea croitoriei
Există încă două proiecte în depozit
- Investigare IR - care permite măsurarea parametrilor de sincronizare a semnalelor telecomenzii.
- IR_capture - care permite capturarea codurilor HEX ale telecomenzii.
Încărcați proiectul de investigare IR și conectați portul USB al plăcii bluepill la computer. Apoi lansați orice program terminal de pe dispozitivul de port serial virtual, corespunzător plăcii stm32. În timp ce apăsați butoanele de pe telecomandă, programul va măsura impulsurile primite și va imprima timpii medii pentru impulsuri diferite. Ar trebui să simplifice detectarea lungimii impulsului pentru antetul pachetului, zero și unu biți.
În proiectul de investigare IR, cronometrul # 2 funcționează în modul de captare PWM cu două canale: canalul unu capturează întreaga lungime a impulsului și canalul 2 captează lungimea de vârf. Când marginea semnalului de cădere a fost detectată, valoarea temporizatorului a fost salvată în registrul canalului 1 și temporizatorul a fost resetat cu 0. Când a fost detectată marginea ascendentă a semnalului, contorul temporizatorului a fost salvat în registrul canalului 2.
Pentru a captura codurile butoanelor propriei telecomenzi, se poate utiliza proiectul IR_capture. În fișierul main.c ar trebui să adăugați definiția de la distanță ca aceasta:
IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr - lungimea antetului în mks
- .bits - numărul de biți din pachet
- .zero - lungimea bitului zero
- .one - lungimea one the bit
- .dev - abaterea (diferența de timp care poate fi acceptată). De obicei este 1/10 din cea mai mică lungime.
Apoi adăugați telecomanda la lista de telecomenzi acceptate:
const IRcode * remote [2] = {& panasonic, & pioneer};
Recomandat:
Telecomanda TV devine o telecomandă RF -- NRF24L01 + Tutorial: 5 pași (cu imagini)
Telecomanda TV devine o telecomandă RF || Tutorial NRF24L01 +: În acest proiect vă voi arăta cum am folosit popularul IC nRF24L01 + RF pentru a regla luminozitatea unei benzi LED fără fir prin trei butoane inutile ale unei telecomenzi TV. Să începem
IRduino: telecomandă Arduino - Imitați o telecomandă pierdută: 6 pași
IRduino: Telecomandă Arduino - Imitați o telecomandă pierdută: Dacă ați pierdut vreodată telecomanda pentru televizor sau DVD player, știți cât de frustrant este să mergeți, să găsiți și să folosiți butoanele de pe dispozitivul însuși. Uneori, aceste butoane nici măcar nu oferă aceeași funcționalitate ca telecomanda. Primiți
Audio sincron Raspberry Pi Whole Home cu telecomandă pentru aplicații telefonice: 10 pași (cu imagini)
Raspberry Pi Whole Home Synchronous Audio With Phone App Remotes: Scopul este sincronizarea audio și / sau surse individuale în orice cameră, ușor de controlat cu un telefon sau tabletă prin iTunes Remote (apple) sau Retune (android). De asemenea, vreau ca zonele audio să se activeze / oprească automat, așa că am apelat la Raspberry Pi și
Convertiți telecomanda IR la telecomandă RF: 9 pași (cu imagini)
Convertiți telecomanda IR la telecomandă RF: În Instructable de astăzi, vă voi arăta cum puteți utiliza un modul RF generic fără microcontroler, ceea ce ne va conduce în cele din urmă la construirea unui proiect în care puteți converti o telecomandă IR a oricărui dispozitiv la un RF La distanta. Principalul avantaj al conversiei unui
Telecomandă pentru copii mici pentru video player pentru PC: 6 pași
Telecomandă video pentru copii mici pentru player video PC: Construiesc o telecomandă care se conectează la un computer cu USB. Telecomanda mare permite copilului meu să aleagă și să redea videoclipuri pe un computer vechi. Acesta este un proiect relativ simplu. Componenta de bază este fie o tastatură USB, fie o tastatură USB fără fir. Apoi