İçindekiler:

Arduino PS/2 - USB Adaptörü: 7 Adım (Resimlerle)
Arduino PS/2 - USB Adaptörü: 7 Adım (Resimlerle)

Video: Arduino PS/2 - USB Adaptörü: 7 Adım (Resimlerle)

Video: Arduino PS/2 - USB Adaptörü: 7 Adım (Resimlerle)
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, Kasım
Anonim
Arduino PS/2 - USB Adaptörü
Arduino PS/2 - USB Adaptörü
Arduino PS/2 - USB Adaptörü
Arduino PS/2 - USB Adaptörü

Eski PS/2 Klavyenizi dizüstü bilgisayarınızla veya yeni masaüstü bilgisayarınızla kullanmak istediniz ve artık bunların PS/2 bağlantı noktalarına sahip olmadığını öğrendiniz mi? Ve sonra normal bir insanın yapacağı gibi ucuz bir PS/2 - USB Adaptörü satın almak yerine, Arduino'nuzu PS/2 - USB Adaptörü olarak kullanmak istedim. O zaman doğru yere geldiniz:)

İçeri girmeden önce adil uyarı. UNO/Mega'nızı bir USB-HID cihazı olarak kullandığınızda (klavye ile sınırlı değildir, hatta bir fare, joystick vb. olabilir) Arduino olarak işlevlerini geçici olarak kaybedersiniz. Bununla Seri iletişimi kullanamazsınız ve USB üzerinden yeniden programlayamazsınız. Bunun nedeni, bellenimi USB arabirim çipine (revizyona bağlı olarak USB bağlantı noktası Atmega8U2 ve 16U2'nin yanındaki küçük adam) üzerine yazmamızdır. Ama endişelenmeyin, bunu yaparak UNO/Mega'nızı gerçekten tuğlalayamazsınız, o her zaman tersine çevrilebilir.

Ayrıca, herhangi bir şansla, zaten bir USB-HID özelliğine sahip bir Arduino'nuz varsa (Arduino Pro Micro veya Leonardo, vb. Bir google araması yapın) şimdiye kadar var olan bu talimatı unutabilirsiniz, kendinizi bir sorun dünyasından kurtarmak için doğrudan buraya gidin şaka yapmak!

Gereçler

  • Donanım

    • Arduino UNO veya Mega
    • PS/2 Klavye
    • İsteğe bağlı olarak ekstra bir Arduino veya herhangi bir USB programlayıcı (USBasp, vb.) kullanışlı olabilir.
  • Yazılım

    • Atmel ÇEVİRME
    • Arduino IDE için PS2KeyAdvanced kütüphanesi

Adım 1: Kablolama ve Kurulum

Kablolama ve Kurulum
Kablolama ve Kurulum
Kablolama ve Kurulum
Kablolama ve Kurulum
Kablolama ve Kurulum
Kablolama ve Kurulum
Kablolama ve Kurulum
Kablolama ve Kurulum

Duruma bağlı olarak, bir devre kartı bulabilir veya bir anakarttan eski bir bağlantı noktasını kurtarabilirsiniz (2. denemem) veya özellikle karamsar hissediyorsanız, mor jakı tamamen kesebilir ve 4 kabloyu açığa çıkarabilirsiniz (1. denemem) ve onları UNO'ya bağlayın.

Klavye_Arduino

+5V(VCC)_+5V

ZEMİN_GND

SAAT_PIN 2**

VERİ_PIN3*

*DATA pinini istediğiniz şekilde değiştirebilirsiniz ancak taslağı güncellemeyi unutmayın.

**CLOCK, Arduino'daki bir UNO'da yalnızca PIN 2 veya 3 olabilen (çizi güncellemeyi unutmayın) bir kesme pimine bağlanmalıdır. Daha fazla bilgi ve farklı kart yapılandırmaları için PS2KeyAdvanced kitaplık örneklerinin yorum bölümünü inceleyebilirsiniz.

2. Adım: Klavyeyi Test Etme

Tüm eller güverteye çıkmadan önce, klavye ve kitaplıkta her şeyin çalıştığından emin olun.

Buraya, güncellenmiş saat ve veri pinleri ve ayrıca bir "make" ve "break" gösterimi ile PS2KeyAdvanced kütüphane örneklerinden SimpleTest.ino'nun değiştirilmiş bir versiyonunu ekledim. İşte çıktı için bazı açıklamalar.

  • Bu "yap" ve "kır" tarama kodu sistemi ve tuşa basma veya tuş bırakmanın yalıtılmış (c & 0xFF) tarama kodu olan "Kod", PS/2'den USB'ye dönüştürmede önemli bir rol oynar ve çalışmanızı tavsiye ederim. son çizimi iyileştirmeyi veya değiştirmeyi (anahtarları farklı düzenlere yeniden eşlemeyi) planlıyorsanız, daha iyi bir anlayış elde etmek için kütüphaneyle birlikte gelen diğer 2 örnek. Ayrıca, '\Documents\Arduino\libraries\PS2KeyAdvanced\src\' konumundan 'PS2KeyAdvanced.h' veya 'PS2KeyCode.h' dosyalarını açarak kitaplıktan PS/2 tarama kodlarının tam listesini alabilirsiniz.
  • "Durum Bitleri" değiştirici tuşlara (Ctrl, Alt, Windows, Shift/Caps) atıfta bulunur ve her ek değiştirici tuşla, normal (değiştirici olmayan) tuşun ana "Kodu" değişmeden bu değerin değiştiğini göreceksiniz. Ama son çizimde bu yöntemi göz ardı ettim ve bu değiştirici tuşları basit tuş basışları olarak uyguladım (Bu değiştirici tuşların ayrıca, birden fazla tuşa basılsın veya basılmasın normal tuşlardan bağımsız olarak "make" ve "break" tarama koduna sahip olduğunu göreceksiniz.) çünkü USB-HID protokolü ile işleri kolaylaştırır.

3. Adım: PS/2'den USB'ye Dönüştürme Önizlemesi

Arduino'muzu bir USB klavye olarak tanımlamak için Atmega8U2 veya 16U2'yi (UNO Rev3) güncellemeden önce, tüm dönüştürme öğelerinin doğru çalıştığından ve son son çizimin yüklendiğinden emin olmalıyız, aksi takdirde üzerine yazmaya devam etmek büyük bir acı olacaktır. Firmware'i Orijinal ve USB klavye hex dosyaları arasında tekrar tekrar yükleyin, böylece doğru taslağı yükleyebilirsiniz. Bu, özellikle bir ISS olarak kullanmak için bir USBasp veya başka bir Arduino gibi herhangi bir harici programlayıcınız yoksa geçerlidir. Bu yüzden burada, işleri test etmek için insan tarafından okunabilir bir çıktıyla (seri monitör aracılığıyla) son taslağın bir 'DEBUG' versiyonunu yükleyeceğiz.

Gördüğünüz çıktı, her tuş serbest bırakıldığında bu şekilde biçimlendirilecektir, 00 00 00 00 00 00 00 00

İşte beklenen çıktı için temel bir açıklama,

Her yeni çoklu değiştirici tuşa basıldığında, 'xx' için farklı değerlere sahip yeni bir satır almalısınız. Son olarak, tüm değiştirici tuşları bıraktığınızda 'xx' 00 olmalıdır

xx 00 00 00 00 00 00 00

Her yeni çoklu normal tuş basımı için (örneğin, varsayımsal a anahtarına, b anahtarına ve c anahtarına bu sırayla 'xx', 'yy' ve 'zz' değerleriyle basacağız) sürekli hale getirmelisiniz (zorunlu değil) bunun gibi yeni satırlar,

00 00 xx yy zz 00 00 00

sadece b tuşunu bıraktığınızda çıktı şöyle değişmelidir,

00 00 xx 00 zz 00 00 00

ve a veya b tuşunu bırakmadan 'nn' değeriyle yeni d tuşuna basarsanız, çıktınız şu şekilde değişmelidir,

00 00 xx nn zz 00 00 00

ve nihayet her tuş bırakıldığında buna geri dönün,

00 00 00 00 00 00 00 00

ve son olarak Caps Lock, Num Lock veya Scroll Lock'a basarsanız, aynı anda birden fazla satır içeren böyle bir şey elde etmelisiniz,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Buradaki her şey olursa, devam etmek için altınsınız!

4. Adım: Teknik Açıklama

Teknik Açıklama
Teknik Açıklama
Teknik Açıklama
Teknik Açıklama

Dilerseniz bu adımı atlayabilirsiniz. Bu sadece önceki çıktılar için bir açıklamadır. Gördüğünüz çıktı 8 bayt dizisi yukarıdaki şekle göre biçimlendirilmiştir.1 Bu konuda daha fazla bilgi edinebilirsiniz ve ayrıca USB-HID hakkında bu wiki'den değiştirici tuşların durum baytının nasıl yazıldığını öğrenebilirsiniz. Temel olarak kodumun yaptığı şey, yeni bir tuşa her basıldığında (PS/2 protokolü buna 'make' olarak atıfta bulunur) normal tuş basışları için kullanılan dizinin son 6 baytı arasında geçiş yapar ve ilkini doldurur. ilgili 'HID tarama kodu' ile bulduğu boş bayt (şekil 2'de gösterildiği gibi) alınan 'PS/2 tarama kodu' için tam bir listeyi ekteki PDF'den de bulabilirsiniz. Ve son olarak ilgili anahtar serbest bırakıldığında (PS/2 protokolü buna 'break' olarak atıfta bulunur) kod, geçerli bayt dizisinde dolaşacak ve yalnızca ilgili baytı temizleyecektir.

Buraya kadar takip ettiyseniz ve wiki sayfasını da okursanız bu yöntemde ufak bir sorun olduğunu göreceksiniz, normalde key bırakıldığında, HID protokolünde kalan baytlar boş baytlardan kurtulmak için yeniden düzenlenir. kalan boş olmayan baytlar arasında. Ancak nedense, kaç yolu denediğime bakılmaksızın, basılan tuşlar için istenmeyen baytları yanlışlıkla temizlemeden amaçlandığı gibi çalışmasını sağlayamadım. Çalışması için bunu iyileştirebilirseniz, lütfen bir yorum bırakın. Her ne kadar günün sonunda bu sorun, Arduino, basılan sıraya bakılmaksızın basılan her tuşa kayıt yaptığı sürece klavyenin işlevselliğini etkilemez (bu, pratik kullanımda hiçbir şeyi etkilemez).

Adım 5: Son Çizimi Yükleme

Bu nedenle, Arduino'muzu bir USB klavye olarak tanımlamak için Atmega8U2 veya 16U2'nin (UNO Rev3) donanım yazılımını nihayet güncellemeden önce, Final Sketch'i yüklemeliyiz. Bunu yükledikten sonra, seri monitöre giderseniz, her yeni tuşa basıldığında çöp yazdırdığını göreceksiniz, bu her şeyin istendiği gibi çalıştığına dair iyi bir alâmettir ve son adıma geçebiliriz. YAY!!!

Adım 6: Bellenimi Güncelleme

Son olarak, Arduino'nuzun donanım yazılımını USB klavye olarak kaydetmek için güncelleyebilirsiniz. Bunun için çok fazla ayrıntıya girmeyeceğim, çünkü bunu çok uzun öğretilebilir hale getirecek.

  1. 'Arduino-usbserial-uno.hex'i kullanmak yerine 'Arduino-keyboard-0.3.hex'i kullanmak yerine 'Uno veya Mega2560 üzerinde Atmega8U2 ve 16U2'yi DFU kullanarak güncelleme' hakkında arduino.cc'den bu kılavuzu izleyin.
  2. FLIP'te, Arduino'nuza bağlı olarak hedef cihazı Atmega8U2 veya 16U2 olarak seçmeyi ve iletişim ortamını seçin, USB'yi seçin ve son olarak çalıştırmayı seçmeden önce doğru hex dosyasını yükleyin.
  3. Bir sürücü hatasıyla karşılaştıysanız, Windows aygıt yöneticisine gidin ve bilinmeyen sürücüyü FLIP '\Program Files (x86)\Atmel\' kurulum dizininde aramayı seçin.
  4. Bellenimi FLIP'den birçok kez güncellerken hatalarla karşılaşırsanız, FLIP'i kapatın ve 'Başlat menüsü\FLIP\' içinden 'Tercihleri Sıfırla'yı çalıştırın ve ardından FLIP'i yeniden başlatın ve yeniden denemeden önce yapılandırma adımlarını yapın, bu genellikle benim için işe yarar.
  5. Arduino'nuzu orijinal durumuna geri yüklemek istiyorsanız, bu hex dosyasını kullanmadan yukarıdaki arduino.cc kılavuzunu takip edin.

Adım 7: Keyfini çıkarın……

Eğlence……
Eğlence……

Şimdi yeni dönüştürülmüş PS/2'nizi USB klavyenizin keyfini çıkarın…. not Bu Eğitilebilir Tablo, dizüstü bilgisayarıma Arduino aracılığıyla bağlı harici bir PS / 2 klavyeden tamamen yazılmıştır:)

Önerilen: