İçindekiler:

Bilgisayar IR Uzaktan Kumanda: 4 Adım
Bilgisayar IR Uzaktan Kumanda: 4 Adım

Video: Bilgisayar IR Uzaktan Kumanda: 4 Adım

Video: Bilgisayar IR Uzaktan Kumanda: 4 Adım
Video: Uzaktan Kumanda nasıl çalışır I Rf ve infrared nedir I Devre Şeması #16 2024, Haziran
Anonim
Bilgisayar IR Uzaktan Kumanda
Bilgisayar IR Uzaktan Kumanda

Diğer birçok amacın yanı sıra bilgisayarımı multimedya merkezi olarak kullanıyorum. Kanepede dinlendiğim, müzik dinleyerek, film ya da televizyon izlediğim ve aptal reklamlar her göründüğünde ya da her seferinde ses seviyesini ayarlamak ya da TV kanalını değiştirmek istemediğim zamanlar oluyor ya da uyuya kalıyorum. sessizlik. Bu yüzden, bilgisayarımı standart bir IR uzaktan kumanda ile kontrol etmeye karar verdim, böylece öfkeyle fareyi veya klavyedeki sessiz tuşunu almak yerine anında düğmeye basabildim.

Proje birkaç bölümden oluşmaktadır:

  1. Uzaktan kumanda
  2. bilgisayar yazılımı
  3. IR alıcı modülü

Adım 1: Uzaktan Kumanda

Uzaktan kontrol
Uzaktan kontrol

İlk öğe - uzaktan kumanda - yapılması önemsizdir. İstediğiniz herhangi bir IR kontrolünü kullanın. IR alıcısı ile birlikte set olarak satılık olanı kullandım - resme bakın. Bu türe karar vermemin tek nedeni, zaten evde olmasıydı.

2. Adım: Yazılım

Bir terminalde çalışan GNU/Linux OS için programı oluşturdum. Kaynak kodu indirmek/kullanmak/paylaşmak/değiştirmek ücretsizdir. Kodu derlemek için terminalde gcc -o remotePC remotePC.c gibi bir komut vermeniz yeterlidir. Program türünü çalıştırmak için./remotePC.

Bu adımda aşağıdaki bilgiler, işlerin nasıl yürüdüğüyle ilgilenenlere yöneliktir.

program açıklaması

Program önce /dev/ttyACM0 veya ttyACM1 dosyasının var olup olmadığını kontrol eder. Bu durumda, dosyanın grup kimliğinin sıfırdan farklı olup olmadığı kontrol edilir. Bu, seri bağlantı noktasının ortak kullanıcı tarafından okunabileceği ve yazılabileceği anlamına gelir. 0xAA 0x55 değerlerine sahip iki bayt daha sonra programın verileri almaya hazır olduğunu belirtmek için bağlantı noktasına yazılır. Gelen veriler saklanan değerlerle karşılaştırılır. Eşleşme bulunursa, önceden tanımlanmış eylem yürütülür.

ses kontrolü

Program sistem seviyesinde sesi açıp kapatabilir, ses seviyesini arttırabilir/azaltabilir. Bu, pactl programı kullanılarak elde edilir. Komutlar daha sonra şöyle görünür:

pactl set-sink-sessiz 0 geçişi

pactl set-sink-volume 0 +%10

pactl set-sink-volume 0 -10%

Gerekirse istenen paketleri kurun.

VLC Medya Oynatıcı kontrolü

Program ayrıca sesi/videoyu başlatabilir/duraklatabilir ve parçayı VLC Media Player'ın çalma listesinde önceki/sonraki olarak değiştirebilir. Bu durumda Desktop Bus kullanılır. Komutlar:

dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. PlayPause

dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Sonraki

dbus-send --type=method_call --dest=org.mpris. MediaPlayer2.vlc

/org/mpris/MediaPlayer2 org.mpris. MediaPlayer2. Player. Önceki

Adım 3: IR Alıcı Modülü

IR Alıcı Modülü
IR Alıcı Modülü
IR Alıcı Modülü
IR Alıcı Modülü
IR Alıcı Modülü
IR Alıcı Modülü

Projenin üçüncü kısmı en karmaşık ama yine de oldukça basit. Buradaki fikir, IR alıcısının, sinyali benzersiz sayıya dönüştürecek olan MCU'ya çıkış vermesidir. Bu numara daha sonra USB üzerinden PC'ye iletilecektir.

Modül, PC kasasının içine monte edilmek ve kablo ile anakart üzerindeki USB yuvasına bağlanmak için tasarlanmıştır. USB'ye harici bağlantıyı tercih etmeniz durumunda, küçük ayarlamalar yapmanız gerekecektir.

MCU

Modülü PIC16F1829 mikrodenetleyici üzerine kurdum. MCU seçimi kritik değildir, kaynak kodunu ayarlayabiliyorsanız başka herhangi bir MCU kullanabilirsiniz. Bu PIC'i iki nedenden dolayı seçtim. İlk önce elimde bulundurdum ve ikincisi, farklı test projelerinde yoğun kullanım nedeniyle pimleri kısmen hasar gördü. Bu yüzden tamamen kullanılamaz hale gelmeden kalıcı projede kullanmak istedim.:-)

kızılötesi alıcı

Modülün dayandığı ikinci kısım, 1. adımda bahsedilen IR alıcısı VS1838B'dir.

UART/USB dönüştürücü

Üçüncü kısım, UART/I2C/USB dönüştürücüsü olan MCP2221'dir.

Görev, IR uzaktan kumandadan sinyalleri alabilecek ve PC'ye teslim edebilecek modülü oluşturmak için bu 3 parçayı birleştirmektir.

kablolama

İlk resimde breadboard üzerinde test devresi bulunmaktadır. İkincisinde kablolama şeması var.

Parça listesi

1 adet PIC16F1829 (veya başka bir MCU)

1 adet VS1838B (veya başka bir IR alıcısı)

1 adet MCP2221 (veya başka bir UART/USB dönüştürücü)

2 adet 4-pin başlık

1 adet 6 pinli başlık

1 adet direnç 100R

2 adet direnç 10K

2 adet direnç 330R

1 adet kapasitör 470 nF

2 adet elektrolitik kondansatör 4.7 uF

1 adet anahtar (isteğe bağlı)

PCB Montajı

Modülü şematik kullanarak bir araya getirin. Evrensel kartı kullanabilir veya özel PCB'yi oluşturabilirsiniz. Eğer durum buysa, aşağıdaki arşivde KiCad dosyalarını sağladım.

bellenim

MPLAB X IDE ve XC8 derleyicisi kullanılarak yazılan PIC için kaynak kodu aşağıdan indirilebilir.

Kaynak kodu notları

Programın tam olarak ne yaptığını bilmek isteyenler için aşağıdaki satırlar.

Tüm ayarlar yapıldıktan sonra kırmızı LED yanar ve MCU 0x55AA verilerini beklemektedir. Bundan sonra LED yeşile döner ve MCU, kesintileri kullanarak IR alıcısından gelen sinyali algılamaya başlar. Sinyalin Yüksek ve Düşük seviyelerde olduğu zaman aralıklarını ölçer ve kaydeder. Bu zamanlar daha sonra PC'ye gönderilen 32 bitlik sayıya dönüştürülür.

Zamanlar ve son sayı arasındaki ilişki NEC protokolü tarafından verilir.

Adım 4: Cihaz Nasıl Kullanılır

Cihaz Nasıl Kullanılır
Cihaz Nasıl Kullanılır
Cihaz Nasıl Kullanılır
Cihaz Nasıl Kullanılır
Cihaz Nasıl Kullanılır
Cihaz Nasıl Kullanılır

bellenim

Firmware'i PIC'e yükleyin. PICkit 3 programlayıcı kullanıyorum.

Donanım

IR alıcı modülünü resimlerde görüldüğü gibi kurun:

  1. USB başlığını uygun 4 telli kablo ile PC kasasının içindeki ana kart üzerindeki dahili USB yuvasına veya standart USB kablosuyla harici olarak USB yuvasına bağlayın. İkinci durumda, kendinize bir şekilde yardım etmelisiniz, örn. bir ilham için 3. resimde görüldüğü gibi.
  2. Bilgisayar kasasının içindeki güç kaynağından gelen 5 V güç kablosunu 4 pimli başlığa takın. Veya harici kullanım durumunda modüle başka bir şekilde güç verin.

Anakartın USB soket pimleri açıklamasına bakın. Kablolamanın bir tür standarda uyup uymadığından emin değilim, bu yüzden emin olmak daha iyi. Benim durumumda, üst sırada 5 pimli ve alt sırada 4 pimli iki pim sırası var. Soldan sağa pinler + 5 V, D-, D+, Gnd'dir. İlk sıradaki 5. pin bağlı değil. İkinci resimde görüldüğü gibi kabloyu taktım.

Yazılım

Programı terminalde çalıştırın. Her şey yolunda giderse, programın son mesajı "veri bekleniyor…" olur. Artık uzaktan kumandadaki düğmeye bastığınızda, alınan kod terminalde görünecektir. Bu şekilde hangi düğmenin hangi kodu verdiğini bileceksiniz.

Şimdi bazı programlama işleri sizi bekliyor ama merak etmeyin. Programın uzaktan kumandanıza yanıt vermesi için programın kaynak kodunda yalnızca birkaç şeyin değiştirilmesi gerekir. RemotePC.c dosyasını metin düzenleyicide veya isterseniz bazı IDE'de açın ve kodlarımı sizinkilerle değiştirin. Her eylem için kullanmayı düşündüğünüz düğmelere tek tek basmanız yeterlidir. Sadece terminalde görünen kodları kopyalayın ve kaynak koduna karşılık gelen eylemin olduğu yere yapıştırın.

Bitirdiğinizde programı sonlandırın ve kodu gcc -o remotePC remotePC.c komutuyla yeniden derleyin. Programı tekrar çalıştırın, bundan sonra uzaktan kumandanıza cevap verecektir.

Örneğin, kullanıcı dostu grafik ortamında kodlar/eylemler eklemek/değiştirmek mümkün olduğunda, projenin daha da geliştirilmesi ile zamanımı boşa harcamayı anlamsız bulduğum için programdaki sabit kodlanmış eylemlerle bu yolu kullanıyorum. Ama bunu ya da daha fazlasını yapmak isterseniz yapabilirsiniz.

Önerilen: