Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47
Ovo je potpuni prototip za daljinsko upravljanje kućnim medijskim centrom zasnovano na mikrokontroleru smt32, stm32f103c8t6 poznatom kao 'bluepill' ploča. Pretpostavimo da koristite računalo 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 kojem trenutku. Glavni nedostatak ovog rješenja je to što biste za kontrolu reprodukcije trebali koristiti miš i tipkovnicu. IR daljinski upravljač je prikladan način za to.
U ovom članku pokazat ću kako stvoriti vlastiti daljinski upravljač pomoću čip bluepill ploče.
Korak 1: Ideja
Glavna ideja je vrlo jednostavna: plava ploča ima ugrađeni USB priključak i može djelovati kao USB HID tipkovnica. Ako priključimo IC prijemnik na ploču, on bi mogao prevesti naredbu s vašeg IC daljinskog upravljača u 'pritiskanje tipke' virtualne tipkovnice. Nisu potrebni dodatni upravljački programi!
U svijetu oko nas postoji mnogo IR protokola. Svaki televizor VCS dobavljača ima svoj IR protokol. No, svi ti 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 moramo mjeriti duljinu impulsa i duljinu 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 značajku za hvatanje PWM signala. Gotovo svaki mjerač vremena mikrokontrolera može se staviti u 'PWM signal capture more' kada kanalne varijable timera spremaju ukupnu duljinu impulsa i njegovu maksimalnu duljinu. 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. Tj. Prijemnik "invertira" signal.
S načinom snimanja PWM -om, mikrokontroler stm32 može se lako pretvoriti u IC daljinski prevoditelj s IC daljinskog upravljača na kodove tipkovnice. 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: Stvaranje kontrolera
Za programiranje mikrokontrolera stm32 želio bih preporučiti besplatni softver tvrtke STM: radnu površinu sustava (poznatu i kao ac6) i alat za konfiguraciju ploče cubeMX. Za postavljanje softvera u mikro kontroler može se koristiti čip klon ST-Link V2 adaptera. Datoteke projekta radne ploče sustava 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 alat za radnu površinu sustava, možete koristiti samo preuzeti projekt. No, ako želite detaljnije istražiti projekt, možete stvoriti konfiguraciju ploče u cubeMX -u:
- Izradite novi projekt i odaberite ploču stm32f103c8
- Odaberite "Kristalni/keramički rezonator" za stavku "Sat velike brzine (HSE)" u izborniku RCC.
- Odaberite "Serial Wire" za stavku "Debug" u izborniku SYS.
-
Konfigurirajte mjerač vremena 2 (izbornik TIM2) u PWM načinu snimanja kako je prikazano na slici:
- Slave Mode -> Reset Mode
- Izvor okidača -> TI1FP1
- Izvor sata -> Interni sat
- Channel1 -> Input Capture izravni način rada
- Postavite potvrdni okvir 'Uređaj (FS) u USB izborniku
- 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 sata pobrinite se da mjeraču 2 date 72 MHz jer nam je potreban brojač vremena 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:
- Predzvučnik - 71 (od 0 do 71) - 1 mikro sekunda oznaka!
- Način brojača - gore
- Brojač - 39999 (trebali bismo moći mjeriti dugi puls)
- Ulazni kanal za hvatanje 1 - 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ća fronta, brojač timera bi se spremio u registar kanala1, a brojač vremena bi se poništio s 0. Tada bi mjerač vremena nastavio odbrojavati smjer. Tako možemo jednostavno izmjeriti duljinu impulsa u mikro sekundama.
Standardno klasa STM32 USB HID simulira USB miš. Ovdje možete pronaći upute za pretvaranje kontrolera u tipkovnicu.
Korak 3: Prilagođavanje kontrolera
Projekt radi s daljinskim upravljačem Panasonic i medijskim centrom Kodi. Da biste projekt prilagodili vlastitom upravljaču, trebate dodati zaglavlje koda 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 razvrstane prema važnosti.
typedef enum {IR_play = 0, IR_stop, IR_pawn, IR_OSD, IR_prethodni_mod, IR_poglavlje, IR_pis_, IR_pis,, IR_pomoć, IR_nepoznato} 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
- Duljina zaglavlja paketa
- "Nulta" duljina bita
- 'Jedna' duljina bita
- Pokazivač na niz kodova
- Brojčani elementi niza
void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));
}
Datoteka također sadrži drugu tablicu za pretvaranje naredbi u kodove tipkovnice. 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, izradili biste drugi objekt KBD i inicijalizirali ga u datoteci main.cpp.
Korak 4: Alati za pojednostavljenje krojenja
U spremištu se nalaze još dva projekta
- IC istraga - omogućuje mjerenje vremenskih parametara signala vašeg daljinskog upravljača.
- IR_capture - omogućuje snimanje HEX kodova vašeg daljinskog upravljača.
Dovoljno je učitati IR istražiti projekt i spojiti USB priključak 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 gumbe 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 načinu snimanja PWM s dva kanala: prvi kanal snima cijelu duljinu impulsa, a kanal 2 snima vršnu duljinu. Kada se uoči pad signala, vrijednost timera spremljena je u registar kanala jedan, a mjerač vremena resetiran s 0. Kad je signal porasta detektiran, brojač timera je spremljen u registar kanala 2.
Za snimanje kodova gumba vlastitog 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 - duljina zaglavlja u mks
- .bits - broj bitova u paketu
- .zero - duljina nultog bita
- .jedan - duljina jedan zalogaj
- .dev - odstupanje (razlika u vremenima koja se mogu prihvatiti). Obično je to 1/10 najmanje duljine.
Zatim dodajte svoj daljinski upravljač na popis podržanih daljinskih upravljača:
const IRcode* remote [2] = {& panasonic, & pioneer};
Preporučeni:
TV daljinski upravljač postaje RF daljinski -- NRF24L01+ Vodič: 5 koraka (sa slikama)
TV daljinski upravljač postaje RF daljinski || Vodič za NRF24L01+: U ovom projektu ću vam pokazati kako sam koristio popularni nRF24L01+ RF IC za bežično podešavanje svjetline LED trake putem tri beskorisna gumba na daljinskom upravljaču televizora. Započnimo
Nadalje: Napredni medijski centar s Odroidom N2 i Kodijem (podrška za 4k i HEVC): 3 koraka
Folow-UP: Napredni medijski centar s Odroidom N2 i Kodijem (podrška za 4k i HEVC): Ovaj je članak nastavak mog prethodnog, prilično uspješnog članka o izgradnji svestranog medijskog centra, temeljenog isprva na vrlo popularnom Raspberry PI-u, ali kasnije, zbog nedostatka izlaza kompatibilnog s HEVC, H.265 i HDMI 2.2, došlo je do prekidača
IRduino: Arduino daljinski upravljač - oponašajte izgubljeni daljinski upravljač: 6 koraka
IRduino: Arduino daljinski upravljač - oponašajte izgubljeni daljinski upravljač: Ako ste ikada izgubili daljinski upravljač za televizor ili DVD uređaj, znate koliko je frustrirajuće morati hodati do, pronaći i koristiti gumbe na samom uređaju. Ponekad ti gumbi čak ne nude istu funkcionalnost kao daljinski. Primiti
Vile: Prijenosni arkadni i medijski centar: 5 koraka
Vile: Prijenosni arkadni i medijski centar: Cilj mi je bio izgraditi prijenosnu konzolu & medijski centar za moju kćer. Igranje mini dizajna poput PSP ili Nintendo klonova čini se predaleko od ideje starih arkadnih ormara. Htio sam se pridružiti nostalgiji za gumbima
Digitalni zidni kalendar i kućni informacijski centar: 24 koraka (sa slikama)
Digitalni zidni kalendar i kućni informacijski centar: U ovom uputstvu ću uključiti stari televizor s ravnim ekranom u digitalni zidni kalendar sa drvenim okvirima i kućni informacijski centar koji pokreće Raspberry Pi. Cilj je bio imati pristup na prvi pogled relevantne informacije za sve članove