Sisukord:
- Samm: idee
- 2. samm: kontrolleri loomine
- 3. samm: kontrolleri kohandamine
- Samm: tööriistad rätsepatöö lihtsustamiseks
Video: Stm32 langemine: Home Media Centeri kaugjuhtimispult: 4 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
See on koduse meediakeskuse kaugjuhtimispuldi täielik prototüüp, mis põhineb smt32 mikrokontrolleril stm32f103c8t6, mida tuntakse "bluepill" tahvlina. Oletame, et kasutate koduse meediakeskuse jaoks arvutit. See on väga paindlik lahendus, mis võimaldab teil paigutada tohutu videoteegi sisemisele kõvakettale või saate mängida võrgust videot, näiteks YouTube'i või nii, teil pole kodekite või video esitamisega probleeme, sest see on väga tarkvaramängijat on igal ajal lihtne värskendada. Selle lahenduse peamine puudus on see, et taasesituse juhtimiseks peaksite kasutama hiirt ja klaviatuuri. Infrapuna kaugjuhtimispult on selleks väga mugav.
Selles artiklis näitan, kuidas luua oma kaugjuhtimispult kiip bluepilli plaadi abil.
Samm: idee
Põhiidee on väga lihtne: bluepilli plaadil on sisseehitatud USB -port ja see võib toimida USB HID -klaviatuurina. Kui kinnitame tahvlile IR -vastuvõtja, võib see teie IR -kaugjuhtimispuldi käsu tõlkida virtuaalse klaviatuuri klahvivajutuseks. Täiendavaid draivereid pole vaja!
Meie ümber on palju IR -protokolle. Igal VCS -i müüja teleril on oma IR -protokoll. Kuid kõigil neil protokollidel on ühine joon: nad kasutavad signaali kodeerimiseks impulssmodulatsiooni. Tavaliselt on mõni eessõna: pikk impulss enne paketi esimest bitti. Seejärel edastab IR -juhtimine kogu paketi 0 ja 1 -ga ning lõpetab edastamise pika impulsiga. Biti dekodeerimiseks peame mõõtma impulsi pikkuse ja tipu pikkuse. Tavaliselt on loogika 0 ja loogika 1 tippude pikkus sama, erinevus on impulsi täielikus pikkuses.
Stm32 mikrokontrolleritel on sisseehitatud funktsioon PWM -signaali püüdmiseks. Peaaegu iga mikrokontrolleri taimerit saab rakendada „PWM -signaali rohkem püüdma”, kui taimerite kanali muutujad salvestavad impulsi kogupikkuse ja selle tipppikkuse. Siinkohal pean esile tooma väikese detaili: kui IR -vastuvõtja saab signaali kinni, muutub selle tööpinge pinge 0 -ks ja jõudeolekus on pinti tööpinti puhul 5 või 3,3 volti sõltuvalt IR -vastuvõtja toitepingest. St vastuvõtja „pöörab” signaali ümber.
PWM -salvestusrežiimi abil saab stm32 mikrokontrolleri hõlpsasti muuta IR -kaugtõlkijaks IR -kaugjuhtimispuldilt klaviatuuri koodidele. Seejärel saate käivitada oma lemmik visualiseerimistarkvara, näiteks Vodi Kodi, et mängida oma lemmikfilmi meediakeskuses.
2. samm: kontrolleri loomine
Stm32 mikrokontrolleri programmeerimiseks sooviksin soovitada STM -i tasuta tarkvara: süsteemi töölaud (aka ac6) ja plaadi konfigureerimistööriist cubeMX. Tarkvara mikrokontrollerisse üleslaadimiseks võib kasutada ST-Link V2 adapteri kiipklooni. Selle sammu juurde on lisatud süsteemi töölaua projektifailid, fail F1-IR_remote.zip.
Tahvli konfigureerimistööriist lihtsustab meie mikrokontrolleri riistvara esialgse konfigureerimise protsessi.
Kui kasutate süsteemi töölaua tööriista, saate lihtsalt allalaaditud projekti kasutada. Kuid kui soovite projekti üksikasjalikumalt uurida, saate tahvli konfiguratsiooni luua cubeMX -is:
- Looge uus projekt ja valige plaat stm32f103c8
- Valige RCC menüü üksuse 'High Speed Clock (HSE)' jaoks 'Crystal/Ceramic Resonator'.
- Valige SYS -menüü üksuse „Silumine” jaoks jadavool.
-
Seadistage taimer nr 2 (menüü TIM2) PWM -pildistusrežiimis, nagu pildil näidatud.
- Slave Mode -> Reset Mode
- Päästiku allikas -> TI1FP1
- Kella allikas -> sisemine kell
- Kanal1 -> sisendipildistamise otserežiim
- Määrake USB -menüüs ruut „Seade (FS)”
- Valige menüü USB_DEVICE üksusest „FS IP klass” rippmenüüelement „Human Interface Device Class (HID)”
- Kella konfiguratsioonipaneelil andke taimerile #2 kindlasti 72 MHz, sest me vajame taimerite loendamist iga 1 mk korral.
- Konfigureerimispaneelil konfigureerige USB -seade, nagu pildil näidatud
-
Konfigureerimispaneelil konfigureerige taimer#2 järgmiselt.
- Eelvalija - 71 (0 kuni 71) - 1 mikrosekund!
- Loendurirežiim - üles
- Loenduriperiood - 39999 (peaksime suutma mõõta pikka pulssi)
- Sisendi püüdmise kanal1 - langev serv (pidage meeles, et IR -vastuvõtja signaal on ümberpööratud)
PWM -i võtterežiimis töötab taimer nr 2 järgmiselt.
Kui langev front avastatakse, salvestatakse taimeriloendur kanali 1 registrisse ja taimeriloendur lähtestatakse väärtusega 0. Seejärel jätkab taimer suuna üles loendamist. Nii saame impulsi pikkust hõlpsalt mõõta mikrosekundites.
Vaikimisi simuleerib klass STM32 USB HID USB -hiirt. Siit leiate juhised kontrolleri klaviatuuriks muutmiseks.
3. samm: kontrolleri kohandamine
Projekt töötab koos Panasonicu kaugjuhtimispuldi ja Kodi meediakeskusega. Projekti kohandamiseks oma kontrolleri jaoks peaksite päisesse Inc/code.h lisama oma kaugjuhtimispuldi koodimassiivi, nagu ma tegin panasonicu kaugjuhtimispuldi (panasonicCode) puhul. Nagu näete, on igal käsul unikaalne ID (IRcommmand enum). Projekti poolt on tunnustatud 24 käsku (0–23). Käsk on sorteeritud asjakohasuse järgi.
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_inp_title, IR, 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};
Seejärel peaksite lisama oma kaugjuhtimispuldi meetodisse init () IR.cpp funktsioonis addRemote (). Funktsiooni argumendid on järgmised:
- Bittide arv pakendis
- Paketi päise pikkus
- "Null" bitipikkus
- "Üks" bitipikkus
- Osutage koodimassiivile
- Massiivi numbrielemendid
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Fail sisaldab ka teist tabelit käskude teisendamiseks klaviatuurikoodideks. Massiiv kbdr_kodi sisaldab Kodi meediakeskuse võtmekoode. Saate oma meediumikeskuse programmile lisada teise massiivi, näiteks vlc -mängija. Kui lisate teise meediumikeskuse rakenduste tabeli, loote teise objekti KBD ja lähtestate selle kaustas main.cpp.
Samm: tööriistad rätsepatöö lihtsustamiseks
Hoidlas on veel kaks projekti
- IR -uurimine - võimaldab mõõta kaugjuhtimispuldi signaalide ajastamise parameetreid.
- IR_capture - võimaldab salvestada kaugjuhtimispuldi HEX -koode.
Laadige lihtsalt IR -i uurimisprojekt ja ühendage bluepilli plaadi USB -port arvutisse. Seejärel käivitage mis tahes terminaliprogramm virtuaalses jadapordiseadmes, mis vastab plaadile stm32. Kui vajutate kaugjuhtimispuldi nuppe, mõõdab programm vastuvõetud impulsse ja prindib erinevate impulsside keskmised ajad. See peaks lihtsustama paketi päise, nulli ja ühe biti impulsi pikkuse tuvastamist.
IR -uurimisprojektis töötab taimer nr 2 PWM -i jäädvustusrežiimis, kus on kaks kanalit: esimene kanal salvestab kogu impulsi pikkuse ja kanal 2 tipu pikkuse. Kui tuvastatakse langeva signaali serv, salvestatakse taimeriväärtus esimese kanali registrisse ja taimer lähtestatakse väärtusega 0. Kui signaali tõusev serv on tuvastatud, salvestatakse taimeriloendur kanali 2 registrisse.
Oma kaugjuhtimispuldi nupukoodide jäädvustamiseks saab kasutada projekti IR_capture. Failis main.c peaksite lisama järgmise kaugmääratluse:
IR -kood panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr - päise pikkus mks
- .bits - bittide arv paketis
- .zero - nullbiti pikkus
- .one - pikkus üks bitti
- .dev - kõrvalekalle (vastuvõetavate aegade erinevus). Tavaliselt on see 1/10 väikseimast pikkusest.
Seejärel lisage kaugjuhtimispult toetatud kaugjuhtimispultide loendisse.
const IRcode* remote [2] = {& panasonic, & pioneer};
Soovitan:
Pedaalkatiku kaugjuhtimispult + päästik: 6 sammu (piltidega)
Pedaalkatiku kaugjuhtimispult + päästik: see pedaalipult sobib suurepäraselt animaatorite, fotoarhivaaride, ajaveebide ja proffide peatamiseks, kes ei pääse kogu aeg kaamera päästikule või peavad kiiresti töötama lauaplaadiga, millel on kaamera kõrge üldkulud. Detsembri 2020 värskendus: E
Arduino brauseripõhine kaugjuhtimispult (linux): 9 sammu (piltidega)
Arduino brauseripõhine kaugjuhtimispult (linux): meil on lapsi. Ma armastan neid tükkideks, kuid nad peidavad lastekanalite sisselülitamisel pidevalt satelliidi ja teleri kaugjuhtimispulti. Pärast seda juhtus see iga päev mitu aastat ja pärast seda, kui mu kallis naine lubas mul
Apple TV Siri kaugjuhtimispult ja Bluetooth -plaatide leidja: 7 sammu (piltidega)
Apple TV Siri kaugjuhtimispult ja Bluetooth -plaatide leidja: lugesin kord iPhone'i kirjeldust kui "õlikastmega leotatud ja WD40 -ga piserdatud või pulka!" Ma arvan, et see oli siis, kui mudel 6 tuli välja ja kõik lasid oma kallid uued telefonid maha ja purustasid klaasi
Maagiline nupp 4k: 20USD BMPCC 4k (või 6k) juhtmevaba kaugjuhtimispult: 4 sammu (piltidega)
Maagiline nupp 4k: 20USD BMPCC 4k (või 6k) traadita kaugjuhtimispult: Paljud inimesed on palunud mul jagada mõningaid üksikasju BMPCC4k traadita kontrolleri kohta. Enamik küsimusi oli bluetooth -juhtimise kohta, nii et mainin selle kohta mõned üksikasjad. Eeldan, et olete tuttav ESP32 Arduino keskkonnaga
GH5 jalgpedaali katiku kaugjuhtimispult: 5 sammu (piltidega)
GH5 jalgpedaali katiku kaugjuhtimispult: teen palju lauaplatsil mõlemat kätt pildistavaid fotosid ning jalapedaali katiku kaugjuhtimispult on hädavajalik! Kuigi müügilolevat GH -seeria kaugjuhtimispulti on võimalik pedaali lisamiseks muuta, tahtsin luua