Sisällysluettelo:

Putoaminen Stm32: Home Media Centerin kaukosäädin: 4 vaihetta (kuvien kanssa)
Putoaminen Stm32: Home Media Centerin kaukosäädin: 4 vaihetta (kuvien kanssa)

Video: Putoaminen Stm32: Home Media Centerin kaukosäädin: 4 vaihetta (kuvien kanssa)

Video: Putoaminen Stm32: Home Media Centerin kaukosäädin: 4 vaihetta (kuvien kanssa)
Video: DIY haptic input knob: BLDC motor + round LCD 2024, Marraskuu
Anonim
Putoaminen Stm32: Home Media Centerin kaukosäädin
Putoaminen Stm32: Home Media Centerin kaukosäädin

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

Ajatus
Ajatus
Ajatus
Ajatus

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

Ohjaimen luominen
Ohjaimen luominen
Ohjaimen luominen
Ohjaimen luominen
Ohjaimen luominen
Ohjaimen luominen
Ohjaimen luominen
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

Työkaluja räätälöinnin yksinkertaistamiseksi
Työkaluja räätälöinnin yksinkertaistamiseksi
Työkaluja räätälöinnin yksinkertaistamiseksi
Työkaluja räätälöinnin yksinkertaistamiseksi

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: