Sisällysluettelo:
- Vaihe 1: Idea
- Vaihe 2: Ohjaimen luominen
- Vaihe 3: Säätimen räätälöinti
- Vaihe 4: Työkalut räätälöinnin yksinkertaistamiseen
Video: Putoaminen Stm32: Home Media Centerin kaukosäädin: 4 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tämä on täydellinen prototyyppi kodin mediakeskuksen kaukosäätimelle, joka perustuu smt32 -mikro -ohjaimeen, stm32f103c8t6, joka tunnetaan nimellä "bluepill" -kortti. Oletetaan, että käytät tietokonetta kodin mediakeskukseen. Se on erittäin joustava ratkaisu, jonka avulla voit sijoittaa valtavan videokirjaston sisäiselle kiintolevylle tai voit toistaa videota verkosta, esimerkiksi YouTubesta tai niin, sinulla ei ole ongelmia koodekkien tai videon toistamisen kanssa, koska se on erittäin helppo päivittää ohjelmistosoitin milloin tahansa. Tämän ratkaisun suurin haitta on, että sinun tulee käyttää hiirtä ja näppäimistöä toiston ohjaamiseen. IR -kaukosäädin on tähän tarkoitukseen kätevä.
Tässä artikkelissa näytän kuinka luoda oma kauko -ohjain sirun bluepill -levyn avulla.
Vaihe 1: Idea
Pääidea on hyvin yksinkertainen: bluepill -kortissa on upotettu usb -portti ja se voi toimia USB HID -näppäimistönä. Jos liitämme infrapunavastaanottimen piirilevyyn, se voi kääntää IR -kaukosäätimen komennon virtuaalisen näppäimistön näppäimen painallukseksi. Lisäohjaimia ei tarvita!
Ympäröivässä maailmassa on monia IR -protokollia. Jokaisella VCS -toimittajan televisiolla on oma IR -protokolla. Mutta kaikilla näillä protokollilla on jotain yhteistä: ne käyttävät pulssimodulaatiota signaalin koodaamiseen. Yleensä on johdanto -osa: pitkä impulssi ennen paketin ensimmäistä bittiä. Sitten IR -ohjaus lähettää koko paketin 0 ja 1 ja viimeistelee lähetyksen viimeisellä pitkällä pulssilla. Bitin dekoodaamiseksi meidän on mitattava piikin pulssi ja pituus. Yleensä logiikan 0 ja logiikan 1 huippupituus ovat samat, ero on koko pulssin pituudessa.
Stm32 -mikro -ohjaimissa on upotettu ominaisuus PWM -signaalin sieppaamiseen. Lähes jokainen mikro -ohjaimen ajastin voidaan asettaa PWM -signaalin kaappaukseen enemmän -tilaan, kun ajastimen kanavamuuttujat säästävät pulssin kokonaispituuden ja sen huippupituuden. Tässä on korostettava pieniä yksityiskohtia: kun IR -vastaanotin ottaa signaalin vastaan, sen työtapin jännite muuttuu 0: ksi ja lepotilassa jännite työtapissa on 5 tai 3,3 volttia IR -vastaanottimen syöttöjännitteestä riippuen. Eli vastaanotin "kääntää" signaalin.
PWM -kaappaustilassa stm32 -mikro -ohjain voidaan helposti muuttaa IR -kauko -kääntäjäksi IR -kaukosäätimestä näppäimistökoodeihin. Sitten voit käynnistää suosikki visualisointiohjelmistosi, esimerkiksi VLC: n Kodi, toistaa suosikkielokuvasi mediakeskuksessa.
Vaihe 2: Ohjaimen luominen
Jos haluat ohjelmoida stm32 -mikro -ohjaimen, haluaisin suositella STM: n ilmaista ohjelmistoa: järjestelmän työpöytä (aka ac6) ja levyn konfigurointityökalu cubeMX. Ohjelmiston lataamiseksi mikro-ohjaimeen voidaan käyttää ST-Link V2 -sovittimen sirukloonia. Tähän vaiheeseen liitetyt järjestelmän työpöydän projektitiedostot, F1-IR_remote.zip-tiedosto.
Kortin määritystyökalu yksinkertaistaa mikro -ohjaimen laitteiston alkuasetusten määrittämistä.
Jos käytät järjestelmän työpöytätyökalua, voit käyttää vain ladattua projektia. Mutta jos haluat tutkia projektia tarkemmin, voit luoda piirikokoonpanon cubeMX: ssä:
- Luo uusi projekti ja valitse levy stm32f103c8
- Valitse RCC -valikon 'High Speed Clock (HSE)' -kohdasta 'Crystal/Ceramic Resonator'.
- Valitse SYS -valikon Debug -kohdasta Serial Wire.
-
Määritä ajastin #2 (TIM2 -valikko) PWM -kaappaustilassa kuvan osoittamalla tavalla:
- Orjatila -> Palautustila
- Liipaisulähde -> TI1FP1
- Kellon lähde -> Sisäinen kello
- Kanava1 -> Input Capture direct -tila
- Aseta USB -valikon Laite (FS) -valintaruutu
- Valitse USB_DEVICE-valikon FS IP -luokan kohdasta avattava valikkokohde 'Human Interface Device Class (HID)'
- Varmista, että kellon määrityspaneelissa on 72 MHz ajastimelle #2, koska tarvitsemme ajastimen laskentaa jokaisella 1 mks: llä.
- Määritä kokoonpanopaneelissa USB -laite kuvan mukaisesti
-
Määritä asetuspaneelissa ajastin#2 seuraavasti:
- Prescaller - 71 (0-71) - 1 mikrosekunti!
- Laskuri -tila - ylös
- Laskurijakso - 39999 (meidän pitäisi pystyä mittaamaan pitkä pulssi)
- Tulon sieppauskanava 1 - Falling Edge (muista, että infrapunavastaanottimen signaali on käänteinen)
PWM -sieppaustilassa ajastin#2 toimi seuraavasti:
Kun laskeva etu havaitaan, ajastinlaskuri tallennetaan kanava 1 -rekisteriin ja ajastin nollataan nollasta. Sen jälkeen ajastin jatkaa suunnan laskemista. Joten voimme mitata pulssin pituuden helposti mikrosekunneissa.
Oletuksena STM32 USB HID -luokka simuloi USB -hiirtä. Täältä löydät ohjeet ohjaimen kääntämiseksi näppäimistöksi.
Vaihe 3: Säätimen räätälöinti
Projekti toimii Panasonicin kaukosäätimen ja Kodi -mediakeskuksen kanssa. Jos haluat räätälöidä projektin omalle ohjaimellesi, lisää Inc/code.h -ylätunnisteeseen kauko -ohjaimen kooditaulukko, kuten tein panasonic -kaukosäätimelle (panasonicCode). Kuten näette, jokaisella komennolla on yksilöllinen tunnus (IRcommmand -luettelossa). Projektissa on 24 komentoa (0-23). Komento lajitellaan osuvuuden mukaan.
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_tiedosto, IR_tiedosto, IR_tiedote, IR_tiedote, IR_power, IR_unknown} IR -komento;
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};
Lisää sitten oma kauko -ohjaimesi IR (c) -toiminnon init () -menetelmään addRemote () -toiminnolla. Funktion argumentit ovat:
- Bittien määrä paketissa
- Paketin otsikon pituus
- "Nolla" bitin pituus
- "Yksi" bittinen pituus
- Osoita kooditaulukkoa
- Taulukon numeroelementit
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Tiedosto sisältää myös toisen taulukon komentojen muuntamiseksi näppäimistökoodeiksi. KBdr_kodi -taulukko sisältää Kodi Media Centerin avainkoodit. Voit lisätä toisen joukon omaan mediakeskusohjelmaan, esimerkiksi vlc -soittimen. Jos lisäät toisen mediakeskuksen sovellustaulukon, luot toisen objektin KBD ja alustat sen main.cpp -tiedostossa.
Vaihe 4: Työkalut räätälöinnin yksinkertaistamiseen
Loppusijoitustilassa on kaksi muuta hanketta
- IR -tutkimus - mahdollistaa kauko -ohjaimen signaalien ajoitusparametrien mittaamisen.
- IR_capture - mahdollistaa kauko -ohjaimen HEX -koodien tallentamisen.
Lataa vain IR -tutkimusprojekti ja liitä bluepill -kortin USB -portti tietokoneeseesi. Käynnistä sitten mikä tahansa pääteohjelma virtuaalisessa sarjaporttilaitteessa, joka vastaa stm32 -korttia. Kun painat kaukosäätimen painikkeita, ohjelma mittaa vastaanotetut pulssit ja tulostaa eri pulssien keskimääräiset ajat. Sen pitäisi yksinkertaistaa pulssin pituuden tunnistamista paketin otsikolle, nolla ja yksi bitti.
IR -tutkimusprojektissa ajastin #2 toimii PWM -sieppaustilassa kahdella kanavalla: kanava yksi kerää koko pulssin pituuden ja kanava 2 huipun pituuden. Kun laskeva signaalin reuna havaitaan, ajastimen arvo tallennetaan ensimmäisen kanavan rekisteriin ja ajastin nollautuu 0. Kun signaalin nouseva reuna havaitaan, ajastinlaskuri tallennetaan kanava 2 -rekisteriin.
IR_capture -projektia voidaan käyttää oman kauko -ohjaimen painikekoodien kaappaamiseen. Main.c -tiedostoon kannattaa lisätä etämäärittely, kuten tämä:
IR -koodi panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};
- .hdr - otsikon pituus mks
- .bits - bittien määrä paketissa
- .zero - nollabitin pituus
- .one - pituus yksi bitti
- .dev - poikkeama (hyväksyttyjen aikojen ero). Yleensä se on 1/10 pienimmästä pituudesta.
Lisää sitten kaukosäädin tuettujen kaukosäätimien luetteloon:
const IRcode* remote [2] = {& panasonic, & pioneer};
Suositeltava:
Magic Button 4k: 20USD BMPCC 4k (tai 6k) langaton kaukosäädin: 4 vaihetta (kuvien kanssa)
Magic Button 4k: 20USD BMPCC 4k (tai 6k) langaton kauko -ohjain: Monet ihmiset ovat pyytäneet minua kertomaan joitain tietoja BMPCC4k: n langattomasta ohjaimestani. Useimmat kysymykset koskivat bluetooth -ohjausta, joten mainitsen muutamia yksityiskohtia siitä. Oletan, että olet perehtynyt ESP32 Arduino -ympäristöihin
RF -kaukosäädin auto: 6 vaihetta (kuvien kanssa)
RF -kaukosäätimen auto: Luonut: Kevin ShuOverview RC -auto on loistava projekti kaikenikäisille, eikä se vaadi ohjelmointia. Se käyttää yksinkertaisia integroituja piirejä (IC) ja sitä ohjataan langattomasti kauko -ohjaimella. Kaukosäädin lähettää
Vaikea ASD -kaukosäädin: 7 vaihetta (kuvien kanssa)
Vakava ASD-kaukosäädin: Sähkömekaanisen tekniikan ensimmäisen maisterin aikana opiskelijoita haastetaan luomaan robotti professori Bram Vanderborghtin mekatroniikan kurssin projektille. Kolmen tytön tiiminä päätimme käyttää tilaisuutta työskennellä
Arduino -pohjainen GSM/SMS -kaukosäädin: 16 vaihetta (kuvien kanssa)
Arduino -pohjainen GSM/SMS -kaukosäädin:! ! ! ILMOITUS ! ! Koska paikallista matkapuhelintornia päivitetään alueellani, en voi enää käyttää tätä GSM -moduulia. Uudempi torni ei enää tue 2G -laitteita. Siksi en voi enää antaa tukea tälle projektille
Dolly -kaukosäädin: 5 vaihetta (kuvien kanssa)
Kaukosäätimen kamera Dolly: Jotain erittäin kätevää, jos otat videota, on kameran nukke. Se on jopa viileämpää, jos se saa virtaa, ja sen kauko -ohjaaminen on kakun kakkua. Täällä rakennamme kauko -ohjauskameran, joka on alle 50 dollaria (tämän kirjoituksen aikaan)