İçindekiler:
- Adım 1: Fikir
- Adım 2: Denetleyiciyi Oluşturma
- Adım 3: Denetleyiciyi Uyarlama
- Adım 4: Terziliği Basitleştirecek Araçlar
Video: Stm32'ye Düşmek: Ev Medya Merkezi için Uzaktan Kumanda: 4 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Bu, 'bluepill' kartı olarak bilinen stm32f103c8t6 smt32 mikro denetleyiciye dayalı ev medya merkezi uzaktan kumandası için eksiksiz bir prototiptir. Ev medya merkezi için bir PC kullandığınızı varsayalım. Bu çok esnek bir çözümdür, dahili sabit diske büyük video kitaplığı yerleştirmenize veya ağdan video oynatmanıza, örneğin youtube veya benzerine izin verir, kodeklerle veya video oynatmayla hiç sorun yaşamazsınız, çünkü çok yazılım oynatıcıyı istediğiniz zaman güncellemek kolaydır. Bu çözümün ana dezavantajı, oynatmanızı kontrol etmek için fare ve klavye kullanmanız gerektiğidir. IR uzaktan kumanda bunun için çok uygun bir moddur.
Bu yazıda chip bluepill board kullanarak kendi uzaktan kumandanızı nasıl oluşturacağınızı göstereceğim.
Adım 1: Fikir
Ana fikir çok basit: bluepill kartında gömülü usb bağlantı noktası bulunur ve USB HID klavye olarak işlev görebilir. IR alıcısını panoya bağlarsak, IR uzaktan kumandanızdan gelen komutu sanal klavyenin 'tuşa basmasına' çevirebilir. Ek sürücü gerekmez!
Çevremizdeki dünyada birçok IR protokolü var. VCS satıcısının her TV'sinin kendi IR protokolü vardır. Ancak tüm bu protokollerin ortak bir özelliği vardır: sinyali kodlamak için darbe modülasyonu kullanırlar. Genellikle bir önsöz vardır: paketteki ilk bitten önceki uzun itme. Daha sonra IR kontrolü 0 ve 1 ile tüm paketi iletir ve bitiş uzun darbesi ile iletimi sonlandırır. Bitin kodunu çözmek için darbenin uzunluğunu ve tepe noktasının uzunluğunu ölçmemiz gerekir. Genellikle, mantık 0 ve mantık 1'in tepe uzunluğu aynıdır, fark tam darbe uzunluğundadır.
Stm32 mikro denetleyicileri, PWM sinyalini yakalamak için gömülü özelliğe sahiptir. Zamanlayıcının kanal değişkenleri darbenin toplam uzunluğunu ve tepe uzunluğunu kaydettiğinde, mikro denetleyicinin her zamanlayıcısının yanına 'PWM sinyal yakalama daha fazla' konabilir. Burada küçük bir ayrıntıyı vurgulamam gerekiyor: IR alıcı sinyali yakaladığında, çalışma pimindeki voltaj 0 olur ve boş durumda çalışma pimindeki voltaj, IR alıcı besleme voltajına bağlı olarak 5 veya 3,3 volt olur. Yani, alıcı sinyali 'ters çevirir'.
PWM yakalama modu ile stm32 mikro denetleyici, IR uzaktan kumandadan klavye kodlarına kolayca bir IR uzaktan çeviricisine dönüştürülebilir. Ardından en sevdiğiniz görselleştirme yazılımını başlatabilirsiniz, örneğin en sevdiğiniz filmi medya merkezinde oynatmak için Kodi of VLC.
Adım 2: Denetleyiciyi Oluşturma
stm32 mikro denetleyiciyi programlamak için STM'nin ücretsiz yazılımını tavsiye etmek istiyorum: system workbench (aka ac6) ve board configuration tool cubeMX. Yazılımı mikro denetleyiciye yüklemek için ST-Link V2 adaptörünün çip klonu kullanılabilir. Bu adıma eklenen sistem çalışma tezgahı proje dosyaları, F1-IR_remote.zip dosyası.
Kart yapılandırma aracı, mikro denetleyicimizin ilk donanım yapılandırma sürecini basitleştirir.
Sistem tezgahı aracını kullanıyorsanız, indirilen projeyi kullanabilirsiniz. Ancak projeyi daha detaylı incelemek isterseniz, cubeMX'te pano konfigürasyonunu oluşturabilirsiniz:
- Yeni proje oluşturun ve stm32f103c8 panosunu seçin
- RCC menüsünde 'Yüksek Hızlı Saat (HSE)' öğesi için 'Kristal/Seramik Rezonatör'ü seçin.
- SYS menüsündeki 'Debug' öğesi için 'Serial Wire'ı seçin.
-
PWM çekim modunda zamanlayıcı #2'yi (TIM2 menüsü) resimde gösterildiği gibi yapılandırın:
- Köle Modu -> Sıfırlama Modu
- Tetik Kaynağı -> TI1FP1
- Saat Kaynağı -> Dahili Saat
- Kanal1 -> Giriş Yakalama doğrudan modu
- USB menüsünde 'Aygıt (FS)' onay kutusunu ayarlayın
- USB_DEVICE menüsündeki 'FS IP Sınıfı' öğesinde 'İnsan Arabirim Aygıtı Sınıfı (HID)' açılır menü öğesini seçin
- Saat konfigürasyon panelinde, zamanlayıcı #2'ye 72 MHz sağladığınızdan emin olun çünkü her 1 mk'de zamanlayıcı sayımına ihtiyacımız var.
- Yapılandırma panelinde USB cihazını resimde gösterildiği gibi yapılandırın
-
Yapılandırma panelinde zamanlayıcı#2'yi aşağıdaki gibi yapılandırın:
- Ön Çağırıcı - 71 (0'dan 71'e) - 1 mikro saniye tik!
- Sayaç Modu - Yukarı
- Sayaç Periyodu - 39999 (uzun nabzı ölçebilmeliyiz)
- Giriş yakalama kanalı1 - Düşen Kenar (IR alıcısından gelen sinyalin ters çevrildiğini unutmayın)
PWM yakalama modunda zamanlayıcı#2 aşağıdaki gibi çalışır:
Düşen cephe algılandığında zamanlayıcı sayacı kanal1 kaydına kaydedilecek ve zamanlayıcı sayacı 0 ile sıfırlanacaktır. Ardından zamanlayıcı yukarı yönde saymaya devam edecektir. Böylece darbe uzunluğunu mikro saniye cinsinden kolayca ölçebiliriz.
Varsayılan olarak STM32 USB HID sınıfı, USB fareyi simüle eder. Denetleyiciyi klavyeye çevirme talimatını burada bulabilirsiniz.
Adım 3: Denetleyiciyi Uyarlama
Proje, Panasonic uzaktan kumanda ve Kodi medya merkezi ile çalışıyor. Projeyi kendi kumandanız için uyarlamak için, benim panasonic uzaktan kumanda (panasonicCode) için yaptığım gibi uzaktan kumandanız için kod dizisini Inc/code.h başlığına eklemelisiniz. Gördüğünüz gibi, her komutun benzersiz bir kimliği vardır (IRcommmand numaralandırmasında). Proje tarafından tanınan 24 komut (0-23) vardır. Komut, alaka düzeyine göre sıralanır.
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_info, IR_subtitle, IR_nxt_subtitle, IR_pos_subtitle, IR_teletext, IR_zoom, IR_mark_watched, IR_playlist, 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 };
0x100eced panasonicCode = {0xd00505d, 0xd00000d, 0xd00606d, 0xd00525f, 0xd00929f, 0xd00101d, 0x1002b2a, 0x1007273, 0x100f2f3, 0x1005253, 0x100d2d3, 0x1009293, 0x1002c2d, 0x100acad, 0x1009c9d, 0x1008e8f, 0x1004e4f, 0x100cecf, 0x1000e0f, 0x180c041, 0x1801091 uint32_t const, 0x180a021, 0xd00bcb1 };
Ardından, addRemote() işleviyle IR.cpp'deki init() yöntemine kendi uzaktan kumandanızı eklemelisiniz. İşlev argümanları şunlardır:
- Paketteki bit sayısı
- paket Başlık uzunluğu
- 'Sıfır' bit uzunluğu
- 'Bir' bit uzunluğu
- Kod dizisine işaretçi
- Dizinin sayı elemanları
void IRcmd::init(void) { addRemote(48, 5252, 902, 1755, panasonicCode, sizeof(panasonicCode)/sizeof(uint32_t));
}
Ayrıca dosya, komutları klavye kodlarına dönüştürmek için başka bir tablo içerir. kbdr_kodi dizisi, Kodi medya merkezi için anahtar kodları içerir. Kendi medya merkezi programınız için başka bir dizi ekleyebilirsiniz, örneğin vlc player. Başka bir medya merkezi uygulama tablosu eklerseniz, başka bir KBD nesnesi yaratır ve bunu main.cpp'de başlatırsınız.
Adım 4: Terziliği Basitleştirecek Araçlar
Depoda iki proje daha var
- IR araştırması - uzaktan kumandanızın sinyallerinin zamanlama parametrelerinin ölçülmesine izin verir.
- IR_capture - uzaktan kumandanızın HEX kodlarını yakalamanıza izin verir.
Sadece IR araştırma projesini yükleyin ve bluepill kartının USB portunu bilgisayarınıza bağlayın. Ardından, sanal seri bağlantı noktası aygıtında stm32 kartına karşılık gelen herhangi bir terminal programını başlatın. Uzaktan kumandanızdaki tuşlara bastığınızda, program alınan darbeleri ölçer ve farklı darbeler için ortalama süreleri yazdırır. Paket başlığı, sıfır ve bir bit için darbe uzunluğunu algılamayı basitleştirmelidir.
IR araştırma projesinde zamanlayıcı #2 iki kanallı PWM yakalama modunda çalışıyor: birinci kanal tüm darbe uzunluğunu ve kanal2 tepe uzunluğunu yakalar. Düşen sinyal kenarı algılandığında, zamanlayıcı değeri kanal 1 kaydına kaydedilir ve zamanlayıcı 0 ile sıfırlanır. Sinyalin yükselen kenarı algılandığında, zamanlayıcı sayacı kanal 2 kaydına kaydedilir.
Kendi uzaktan kumandanızın düğme kodlarını yakalamak için IR_capture projesi kullanılabilir. main.c dosyasına aşağıdaki gibi uzak tanımı eklemelisiniz:
IRcode panasonic = {.hdr = 5252,.bits = 48,.sıfır = 902,.one = 1755,.dev = 60 };
- .hdr - mks cinsinden başlık uzunluğu
- .bits - paketteki bit sayısı
- .zero - sıfır bitinin uzunluğu
- .one - uzunluk bir bit
- .dev - sapma (kabul edilebilecek süre farkı). Genellikle en küçük uzunluğun 1/10'u kadardır.
Ardından uzaktan kumandanızı desteklenen uzaktan kumandalar listesine ekleyin:
const IRcode* uzak[2] = {&panasonic, &pioneer};
Önerilen:
Takip: Odroid N2 ve Kodi (4k ve HEVC Desteği) ile Gelişmiş Medya Merkezi: 3 Adım
Takip: Odroid N2 ve Kodi ile Gelişmiş Medya Merkezi (4k ve HEVC Desteği): Bu makale, ilk başta çok popüler Raspberry PI'ye dayanan çok yönlü bir medya merkezi oluşturma konusundaki önceki, oldukça başarılı makalemin bir devamı niteliğindedir. Daha sonra, HEVC, H.265 ve HDMI 2.2 uyumlu çıkış olmaması nedeniyle, anahtar oldu
Periler: Taşınabilir Oyun Salonu ve Medya Merkezi: 5 Adım
Periler: Taşınabilir Oyun Salonu ve Medya Merkezi: Amacım taşınabilir bir konsol & kızım için medya merkezi. PSP veya Nintendo klonları gibi mini tasarımlardaki oyun, eski arcade dolapları fikrinden çok uzak görünüyor. Düğmelerin nostaljisine katılmak istedim
Raspberry PI Medya Merkezi, OSMC DAC/AMP: 3 Adım
Raspberry PI Medya Merkezi, OSMC DAC/AMP: Bir Raspberry pi alın, bir DAC ve Amplifikatör ekleyin ve kendinize çok az parayla çok güzel bir medya merkezine sahip olun. Öncelikle bir "BÜYÜK" demeliyim; GearBest'teki insanlara bu ürünü denemem için gönderdikleri için teşekkürler. Ve bir tane almak istersen
1981 Taşınabilir VCR Raspberry PI Medya Merkezi: 12 Adım (Resimlerle)
1981 Taşınabilir VCR Raspberry PI Medya Merkezi: Bu, dönüştürdüğüm 80'lerin başlarından kalma bir Sharp VC-2300H taşınabilir VCR'dir - şimdi kalbinde, mükemmel Raspbmc medya merkezi yazılımını çalıştıran bir Raspberry Pi var. Diğer yükseltmeler arasında şık bir arduino tabanlı saat ve bir EL tel "bant" bulunur
Eşinizin ve Çocukların Bile Kullanacağı Bir Medya Merkezi Çözümü: 9 Adım
Karısı ve Çocukların Bile Kullanacağı Bir Medya Merkezi Çözümü: Bu Eğitilebilir Tablo, çok çeşitli medya merkezi uygulamalarını, işletim sistemlerini, Donanım ve dosya biçimlerini deneme deneyimimin bir özetidir. Bu bir PVR değil ve canlı TV kaydetmenize veya duraklatmanıza izin vermiyor, ancak iyi bir alternatif önereceğim