Sadržaj:

Pada u Stm32: Daljinski upravljač za kućni medijski centar: 4 koraka (sa slikama)
Pada u Stm32: Daljinski upravljač za kućni medijski centar: 4 koraka (sa slikama)

Video: Pada u Stm32: Daljinski upravljač za kućni medijski centar: 4 koraka (sa slikama)

Video: Pada u Stm32: Daljinski upravljač za kućni medijski centar: 4 koraka (sa slikama)
Video: LoRa sx1276! передатчик и приемник который трудно или практически невозможно заглушить! 2024, Novembar
Anonim
Upadam u Stm32: daljinski upravljač za kućni medijski centar
Upadam u Stm32: daljinski upravljač za kućni medijski centar

Ovo je potpuni prototip za daljinsko upravljanje kućnim medijskim centrom zasnovano na smt32 mikro kontroleru, stm32f103c8t6 poznatom kao 'bluepill' ploča. Pretpostavimo da koristite računar za kućni medijski centar. To je vrlo fleksibilno rješenje koje vam omogućuje da postavite ogromnu videoteku na unutarnji tvrdi disk ili možete reproducirati videozapise s mreže, na primjer youtube ili tako, nemate problema s kodecima ili reprodukcijom videa, jer je vrlo jednostavno ažuriranje softverskog playera u bilo koje vrijeme. Glavni nedostatak ovog rješenja je to što biste za kontrolu reprodukcije trebali koristiti miš i tastaturu. IC daljinski upravljač je prikladan način za to.

U ovom članku pokazat ću kako stvoriti vlastiti daljinski upravljač pomoću ploče sa čipovima.

Korak 1: Ideja

Ideja
Ideja
Ideja
Ideja

Glavna ideja je vrlo jednostavna: plava ploča sadrži ugrađeni USB port i može djelovati kao USB HID tastatura. Ako priključimo IC prijemnik na ploču, on bi mogao prevesti naredbu sa vašeg IC daljinskog upravljača u „pritisak na tipku“virtualne tastature. Nisu potrebni dodatni upravljački programi!

U svijetu oko nas postoji mnogo IC protokola. Svaki televizor VCS dobavljača ima svoj IR protokol. Ali svi ovi protokoli imaju nešto zajedničko: oni koriste impulsnu modulaciju za kodiranje signala. Obično postoji neka preambula: dugi impuls prije prvog bita u paketu. Zatim IC kontrola prenosi cijeli paket s 0 i 1 i završava prijenos završnim dugim impulsom. Za dekodiranje bita potrebno je izmjeriti dužinu impulsa i dužinu vrha. Obično su vršne duljine logike 0 i logike 1 iste, razlika je u potpunoj duljini impulsa.

Mikro kontroleri stm32 imaju ugrađenu funkciju za hvatanje PWM signala. Gotovo svaki tajmer mikrokontrolera može se staviti u 'PWM signal capture more' kada kanalske varijable tajmera spremaju ukupnu dužinu impulsa i njegovu maksimalnu dužinu. Ovdje moram istaknuti mali detalj: kada IC prijemnik uhvati signal, napon na njegovom radnom pinu postaje 0, a u stanju mirovanja napon na radnom pinu je 5 ili 3,3 volta ovisno o naponu napajanja IC prijemnika. Odnosno, prijemnik "invertira" signal.

Sa načinom snimanja PWM -om, mikrokontroler stm32 može se lako pretvoriti u IC daljinski prevodilac sa daljinskog upravljača na kodove tastature. Tada možete pokrenuti svoj omiljeni softver za vizualizaciju, na primjer Kodi iz VLC -a za reprodukciju vašeg omiljenog filma u medijskom centru.

Korak 2: Kreiranje kontrolera

Kreiranje kontrolera
Kreiranje kontrolera
Kreiranje kontrolera
Kreiranje kontrolera
Kreiranje kontrolera
Kreiranje kontrolera
Kreiranje kontrolera
Kreiranje kontrolera

Za programiranje mikrokontrolera stm32 želio bih preporučiti besplatni softver kompanije STM: sistemski radni sto (poznat i kao ac6) i alat za konfiguraciju ploče cubeMX. Za postavljanje softvera u mikrokontroler može se koristiti čip klon ST-Link V2 adaptera. Datoteke projekta sistemske radne ploče priložene ovom koraku, datoteka F1-IR_remote.zip.

Alat za konfiguraciju ploče pojednostavljuje proces početne hardverske konfiguracije našeg mikro kontrolera.

Ako koristite alatku sistemske radne ploče, možete koristiti samo preuzeti projekt. Ali ako želite detaljnije istražiti projekt, možete stvoriti konfiguraciju ploče u cubeMX -u:

  • Kreirajte novi projekt i odaberite ploču stm32f103c8
  • Odaberite "Kristalni/keramički rezonator" za stavku "Sat velike brzine (HSE)" u meniju RCC.
  • Odaberite 'Serial Wire' za stavku 'Debug' u izborniku SYS.
  • Konfigurirajte tajmer #2 (meni TIM2) u načinu snimanja PWM -om kako je prikazano na slici:

    • Slave Mode -> Reset Mode
    • Izvor okidača -> TI1FP1
    • Izvor sata -> Interni sat
    • Channel1 -> Direktni način snimanja ulaza
  • Postavite polje za potvrdu „Uređaj (FS) u USB meniju
  • Odaberite element padajućeg izbornika 'Klasa uređaja s ljudskim sučeljem (HID)' u stavci 'Klasa FS IP' u izborniku USB_DEVICE
  • Na ploči za konfiguraciju takta osigurajte tajmer #2 72 MHz jer nam je potreban broj tajmera na svakih 1 mks.
  • Na konfiguracijskoj ploči konfigurirajte USB uređaj kao što je prikazano na slici
  • Na konfiguracijskoj ploči konfigurirajte mjerač vremena 2 na sljedeći način:

    • Prescaller - 71 (od 0 do 71) - 1 mikro sekunda oznaka!
    • Način brojača - gore
    • Brojač - 39999 (trebali bismo moći mjeriti dugi puls)
    • Kanal za snimanje ulaza1 - padajući rub (zapamtite da je signal iz IC prijemnika invertiran)

U načinu snimanja PWM -om tajmer#2 bi radio na sljedeći način:

Kad se otkrije padajući front, brojač timera bi se spremio u registar kanala1, a brojač timera bi se poništio s 0. Tada bi mjerač vremena nastavio odbrojavati smjer. Tako možemo lako mjeriti duljinu impulsa u mikro sekundama.

Standardno STM32 USB HID klasa simulira USB miš. Ovdje možete pronaći upute za pretvaranje kontrolera u tipkovnicu.

Korak 3: Prilagođavanje kontrolera

Projekt radi s Panasonic daljinskim upravljačem i Kodi media centrom. Da biste projekat prilagodili svom vlastitom kontroleru, trebali biste dodati niz kodova za vaš daljinski upravljač, kao što sam to učinio za daljinski upravljač Panasonic (panasonicCode) u zaglavlje Inc/code.h. Kao što vidite, svaka naredba ima jedinstveni ID (u popisu IRcommmand). Projekt prepoznaje 24 naredbe (0-23). Naredbe su sortirane prema relevantnosti.

unesitedefra {IR_play = 0, IR_stop, IR_zaustav, IR_OSD, IR_prekidač, IR_zapis, IR_srt,, IR_power, IR_unknown} IR naredba;

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};

Zatim trebate dodati vlastiti daljinski upravljač u metodu init () u IR.cpp s funkcijom addRemote (). Argumenti funkcije su:

  • Broj bitova u paketu
  • Dužina zaglavlja paketa
  • Dužina bita 'nula'
  • 'Jedna' bitna dužina
  • Pokazivač na niz kodova
  • Brojčani elementi niza

void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));

}

Takođe datoteka sadrži još jednu tablicu za pretvaranje naredbi u kodove tastature. Niz kbdr_kodi sadrži kodove ključeva za Kodi media centar. Možete dodati još jedan niz za svoj program medija centra, na primjer, vlc player. Ako biste dodali drugu tablicu aplikacija medijskog centra, stvorili biste još jedan objekt KBD i pokrenuli ga u main.cpp.

Korak 4: Alati za pojednostavljenje krojenja

Alati za pojednostavljenje krojenja
Alati za pojednostavljenje krojenja
Alati za pojednostavljenje krojenja
Alati za pojednostavljenje krojenja

U spremištu postoje još dva projekta

  • IC istraga - omogućava mjerenje vremenskih parametara signala vašeg daljinskog upravljača.
  • IR_capture - omogućava snimanje HEX kodova vašeg daljinskog upravljača.

Samo učitajte IR istražite projekat i spojite USB port bluepill ploče na računalo. Zatim pokrenite bilo koji terminalni program na uređaju s virtualnim serijskim portom, koji odgovara ploči stm32. Dok pritisnete tipke na daljinskom upravljaču, program će mjeriti primljene impulse i ispisati prosječno vrijeme za različite impulse. Trebalo bi pojednostaviti otkrivanje duljine impulsa zaglavlja paketa, nula i jedan bit.

U IR istraživačkom projektu tajmer #2 radi u modu snimanja PWM -a sa dva kanala: prvi kanal snima cijelu dužinu impulsa, a kanal 2 snima dužinu vrha. Kada se uoči padajuća ivica signala, vrijednost tajmera se sprema u registar prvog kanala i mjerač vremena se resetira s 0. Kada se uoči rastuća ivica signala, brojač tajmera je spremljen u registar kanala 2.

Za snimanje kodova dugmadi vašeg daljinskog upravljača, može se koristiti projekt IR_capture. U datoteku main.c trebali biste dodati udaljenu definiciju poput ove:

IRcode panasonic = {.hdr = 5252,.bits = 48,.zero = 902,.one = 1755,.dev = 60};

  • .hdr - dužina zaglavlja u mks
  • .bits - broj bitova u paketu
  • .zero - dužina nultog bita
  • .one - dužina jedan po jedan bit
  • .dev - odstupanje (razlika u vremenima koja se mogu prihvatiti). Obično je to 1/10 najmanje dužine.

Zatim dodajte svoj daljinski upravljač na listu podržanih daljinskih upravljača:

const IRcode* remote [2] = {& panasonic, & pioneer};

Preporučuje se: