İçindekiler:

Programlanabilir Tuş Takımı: 5 Adım (Resimli)
Programlanabilir Tuş Takımı: 5 Adım (Resimli)

Video: Programlanabilir Tuş Takımı: 5 Adım (Resimli)

Video: Programlanabilir Tuş Takımı: 5 Adım (Resimli)
Video: BUNU YAŞAMAYAN YOKTUR 😂 #emirbeşli #shorts 2024, Kasım
Anonim
Programlanabilir Tuş Takımı
Programlanabilir Tuş Takımı
Programlanabilir Tuş Takımı
Programlanabilir Tuş Takımı

Bu projede, en çok kullandığınız klavye kısayollarını, uygulamalarını ve daha fazlasını eşleştirmek için nispeten basit ve ucuz programlanabilir tuş takımını nasıl yapacağınızı göstereceğim.

Bu tuş takımı, tüm ana işletim sistemlerinde klavye olarak algılanır, ek sürücü gerekmez.

Gereçler

  • Döner kodlayıcı.
  • Çok sayıda (ihtiyaçlarınıza bağlı olarak) butonlar.
  • Arduino Pro Micro, Arduino Leonardo veya Atmega32U4 MCU'lu başka bir geliştirme kartı.
  • Tel, lehim, havya vb.
  • (İsteğe bağlı) Tuş takımının kaymasını önlemek için biraz ağır taban, eski 3.5" HDD kullanıyorum

Adım 1: Elektrik Devresi

Elektrik devresi
Elektrik devresi

Arduino Pro Micro dev kartını Atmega32U4 MCU ile 18 adet kullanılabilir dijital pin ile kullanmayı tercih ettim.

Basmalı butonları ve döner kodlayıcıyı bağlamak için kullanılan pinler belirli bir sıra gözetilmeksizin seçilmiştir, ancak bazı noktalara dikkat edilmelidir:

  1. Tüm dijital okuma özellikli pinler, harici aşağı çekme dirençlerini azaltmaya izin veren dahili pull-up'lara sahiptir. Elbette kod buna göre güncellenmelidir, çünkü butonlara basıldığında pinin durumunun düşükten yükseğe gitmesini bekler.
  2. Encoder.h kitaplığı örneğinde, kodlayıcının en iyi performansına, her iki pin de MCU kesme özellikli pinlere bağlandığında ulaşıldığı not edilmiştir. Atmega32U4'ün analog pinlerinin çoğu kesme özelliğine sahip değildir.
  3. Tam aşağı çekme direnci değerleri çok önemli değil, 1 kΩ ile 100 kΩ arasındaki herhangi bir şey iyi çalışacaktır. Daha büyük direnç değerleri, daha küçük güç tüketimine izin verir, ancak voltaj değişikliklerine daha yavaş pin tepkisi verir. En çok sahip olduğunuz değer dirençlerini seçin.
  4. Mekanik kodlayıcılar, temas aşınması ve sıçraması nedeniyle en güvenilir şeyler değildir. Bu yüzden iyi bir geri tepme çözümüne ihtiyaç vardır. Seçtiğim kapasitör değerleri ve koddaki gecikme süreleri muhtemelen sizin için en iyi sonuçları vermeyecektir. Bu yüzden biraz denemeye ihtiyaç var. Veya optik kodlayıcı gibi bir şeye geçin, ancak fiyatı önemli ölçüde daha yüksek.

2. Adım: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

Tuş takımının olabildiğince temiz görünmesini istedim, bu yüzden tüm bileşenleri prototip kartının arkasına lehimledim. Küçük bir açıyla yükseltilmiş olarak kullanılırsa tuş takımının daha ergonomik olacağını düşündüm. Bu yüzden Arduino Pro Micro'yu ayrı bir kart üzerine lehimledim ve tüm dijital pinleri tel ile butonlara bağladım. USB kablosunu bu şekilde bağlamak daha uygundur.

Tuş takımı için bir taban olarak kullanmak için eski 3,5 HDD buldum, oldukça ağır ve çalışırken tahta formunun masa üzerinde kaymasını engelliyor (kaymayı önleyici pedler de yardımcı oluyor. Ayrıca pirinç ayırıcıları vidaladığım uygun 3 mm vida delikleri var ve tahtayı hafif bir açıyla sabitleyin.

Adım 3: Programlama

Arduino IDE ile kod yazılır. 2 kitaplık kurmanız gerekecek:

  • Paul Stoffregen tarafından kodlayıcı
  • Arduino tarafından klavye

Atmega32U4'ü derlemek için Arduino Pro Micro board dosyasını da yüklemeniz gerekiyor, Sparkfun'da bunun nasıl yapılacağı konusunda harika bir öğretici var.

Önceden dikkat edilmesi gereken bir şey, kodunuzda "tuşlara basılı" bırakmamaya dikkat etmektir. Bu benim başıma geldi ve MCU sürekli olarak bazı tuş kombinasyonlarını spam gönderiyordu. Bunu nasıl düzelteceğimi bilmemin tek yolu, önyükleyiciyi MCU'ya yeniden yazmaktır. Eğer benim gibi olacaksanız, boot-loader yakmak için bu kılavuzu takip edebilirsiniz, programcı olarak kullanmak için başka bir arduino kartına ihtiyacınız olacak.

Ana döngüde MCU önce her bir düğme durumunu okur, DÜŞÜK'ten YÜKSEK'e durum değişikliği algılanırsa, klavye_kısayol(i) işlevi yürütülür. Değişken i, basılan düğmenin kimliğidir, toplam basma düğmesi sayısı ALL_BUTTONS tarafından tanımlanır (benim durumumda 15). Çalıştırıldığında, keyboard_shortcut(i) CTRL+SHIFT'i ve ardından düğme kimliğine eşlenen bir harf gönderir: 1->A, 2->B, 3->C vb. CTRL+SHIFT+N gibi bazı kombinasyonlar atlanır çünkü Windows10'da varsayılan olarak zaten kullanılıyor (bu durumda yeni bir klasör oluşturmak için). İşte tüm varsayılan Windows kısayollarının listesi. Kısa bir gecikmeden sonra MCU, tüm tuşları serbest bırakmak için sinyal gönderir ve fonksiyon ana döngüye geri döner.

Tüm butonlar kontrol edildikten sonra MCU, döner enkoder pozisyonunun değişip değişmediğini kontrol eder ve eğer değişirse, klavye_shortcut(i) benzersiz id ile yürütülür.

Kodlayıcı düğmesine basmak, kodlayıcıButtonFlag boole değişkenini tersine çevirir. Encoder döndürüldüğünde, dönüş yönüne ve encoderButtonFlag değerine bağlı olarak PC'ye farklı kısayollar gönderilir.

debugFlag 1 olarak ayarlanırsa, UART üzerinden seri monitöre hata ayıklama mesajları gönderilir.

4. Adım: Kısayolları Yapılandırma

Kısayolları Yapılandırma
Kısayolları Yapılandırma
Kısayolları Yapılandırma
Kısayolları Yapılandırma

Her kısayolun yaptığı da size kalmış, hepimizin farklı tercihleri var. Kendim için yapılandırdığım kısayolları örnek olarak vereceğim. Linux Mint 19.3'ü xfce4 masaüstü yöneticisi ile kullanıyorum, bu yüzden örneklerim çoğunlukla bash betiklerini içeriyor, ancak Windows10 için de bazı temel örnekler göstereceğim.

İlk resimde hangi scriptleri hangi kısayollarla eşleştirdiğimi görebilirsiniz. Xfce ayarlar menüsünden yapılır, bunun için işlem basittir. Bu komut dosyalarını GitHub depomda bulabilirsiniz.

Alt kısımdaki daha küçük 6 basma düğmesi, web tarayıcısı veya dosya yöneticisi gibi uygulamaları başlatmak içindir, bu uygulamalardan bazıları, başlatılan tüm uygulama adlarını alan ve başlatmak istediğiniz uygulamayı arayan start_only_one_app.sh komut dosyasından çağrılır. Uygulama penceresi zaten varsa odaklanır, aksi takdirde uygulamanın yeni örneği başlatılır.

Diğer komut dosyaları:

  • 2nd_display_control.sh - ikinci monitörü açar/kapatır.
  • moon_lamp.sh - Ay Lambamı AÇAR/KAPATIR.
  • pc_load.sh - mevcut CPU ve GPU kullanımı ve sıcaklıkları ile bildirim balonu oluşturur.
  • kapatma.sh - PC kapatma işlemini 1 dakikalık gecikmeyle başlatır ve kalan sürenin görüntülendiği bir bildirim balonu oluşturur.
  • spec_vpn.sh - belirli bir OpenVPN sunucusuna bağlanır veya bağlantı zaten varsa, sunucuyla bağlantıyı keser.
  • kısayol_kontrol.sh - argüman olarak komutu (artı, eksi, sekme, kapat) alır, şimdi hangi pencerenin odaklandığını algılar ve belirli bir uygulama aktif bulunursa kontrol eylemini yürütür. Örneğin, yüce metin düzenleyicide yeni sekme açmak için varsayılan kısayol "CTRL+N" ve xfce terminalinde - "CTRL+T"'dir, bu nedenle bu komut dosyası, aynı düğme ile yüce ve terminalde yeni sekme açmaya izin verir.

Döner kodlayıcının ilk işlevi ses seviyesini kontrol etmektir, ikinci işlevi ise kısayol_kontrollü.sh aracılığıyla aktif pencere yakınlaştırmasını kontrol etmektir.

Windows işletim sistemi için, ikinci resimde gösterildiği gibi program özellikleri penceresi aracılığıyla uygulamalara kısayollar atayabilirsiniz. Başka bir şey için AutoHotkey'i kullanmak isteyeceksiniz. Windows için otomasyon komut dosyası dilidir.

AHK sözdiziminin bazı basit örnekleri:

;Ses kontrol

^+t::{Volume_Up} Gönder

dönüş

^+v:: Gönder {Volume_Down}

dönüş

;Etkin pencereyi kapat

^+h::WinGetTitle, Başlık, A

PostMessage, 0x112, 0xF060,,, %Title%

dönüş

;Bilgisayarı kapat

^+b::Kapatmayı çalıştır /s

Adım 5: İyileştirmeler

İyileştirmeler
İyileştirmeler

Bazı olası iyileştirmeler:

  • Daha kaliteli butonlar.
  • Prototip PCB, düğmelere basıldığında oldukça fazla esner.
  • Döner kodlayıcının hangi işleve ayarlandığına bağlı olarak rengi değiştirmek için RGB aydınlatma.
  • Daha fazla düğme (IO genişletici IC'yi kullanın).
  • Daha iyi döner kodlayıcı (veya daha iyi geri tepme çözümü).

Önerilen: