Mündəricat:

USB Adapterə Arduino PS/2: 7 Adım (Şəkillərlə birlikdə)
USB Adapterə Arduino PS/2: 7 Adım (Şəkillərlə birlikdə)

Video: USB Adapterə Arduino PS/2: 7 Adım (Şəkillərlə birlikdə)

Video: USB Adapterə Arduino PS/2: 7 Adım (Şəkillərlə birlikdə)
Video: ESP32 Tutorial 41 - MP3 Player using Micro SD card | SunFounder's ESP32 IoT Learnig kit 2024, Noyabr
Anonim
Arduino PS/2 üçün USB adapteri
Arduino PS/2 üçün USB adapteri
Arduino PS/2 üçün USB adapteri
Arduino PS/2 üçün USB adapteri

Köhnə PS/2 Klaviaturanızı dizüstü kompüterinizlə və ya yeni masaüstü kompüterinizlə birlikdə istifadə etmək istədinizmi və artıq PS/2 portlarının olmadığını öyrəndinizmi? Və sonra adi bir adamın etdiyi kimi ucuz bir USB/Adaptor almaq üçün Arduino -nuzu PS/2 -dən USB Adapteri kimi istifadə etmək istədim. Sonra doğru yerə gəldiniz:)

İçəri girməzdən əvvəl ədalətli xəbərdarlıq. UNO/Mega cihazınızı USB-HID cihazı olaraq istifadə edərkən (klaviatura ilə məhdudlaşmır, hətta siçan, joystick və s. Ola bilər) Arduino kimi funksiyalarını müvəqqəti olaraq itirəcəksiniz. Demək istəyirəm ki, Serial ünsiyyətdən istifadə edə bilməzsiniz və USB vasitəsilə yenidən proqramlaşdıra bilməzsiniz. Bunun səbəbi, firmware proqramını USB interfeys çipinə çox yazacağımızdır (düzəlişdən asılı olaraq USB portu Atmega8U2 və 16U2 yaxınlığında olan kiçik adam). Ancaq UNO/Mega -nızı əslində kərpic edə bilməyəcəyinizdən narahat olmayın, bunu etməklə həmişə geri çevrilir.

Həm də təsadüfən USB-HID qabiliyyətinə malik bir Arduino varsa (Arduino Pro Micro və ya Leonardo, və s. Google axtarışında olun) indiyə qədər mövcud olan bu təlimatı unuda bilərsiniz ki, özünüzü problem dünyasından xilas edin. zarafat!

Təchizat

  • Avadanlıq

    • Arduino UNO və ya Mega
    • PS/2 klaviatura
    • İsteğe bağlı olaraq əlavə bir Arduino və ya hər hansı bir USB proqramçısı (USBasp və s.) Yararlı ola bilər.
  • Proqram təminatı

    • Atmel FLIP
    • Arduino IDE üçün PS2KeyAdvanced kitabxana

Addım 1: Kablolama və Quraşdırma

Kablolama və Quraşdırma
Kablolama və Quraşdırma
Kablolama və Quraşdırma
Kablolama və Quraşdırma
Kablolama və Quraşdırma
Kablolama və Quraşdırma
Kablolama və Quraşdırma
Kablolama və Quraşdırma

Vəziyyətdən asılı olaraq ya bir qırılma lövhəsi tapa bilərsiniz, ya da anakartdan köhnə bir limanı xilas edə bilərsiniz (2 -ci cəhdim) və ya xüsusilə əhvalınız pisdirsə, bənövşəyi yuvanı tamamilə kəsib 4 teli (ilk cəhdim) və onları UNO -ya bağlayın.

Klaviatura _Arduino

+5V (VCC) _+5V

ZAMAN _ GND

SAAT _ PIN 2 **

VERİ _ PIN3*

*DATA pinini istədiyinizə dəyişə bilərsiniz, ancaq eskizi yeniləməyi unutmayın.

** SAAT, bir UNO -da yalnız PIN 2 və ya 3 ola biləcək (eskizi yeniləməyi unutmayın) Arduino -da bir kəsmə pininə bağlanmalıdır. Daha çox məlumat və fərqli lövhə konfiqurasiyaları üçün PS2KeyAdvanced kitabxana nümunələrinin şərh hissəsini yoxlaya bilərsiniz.

Addım 2: Klaviaturanı yoxlayın

Göyərtəyə çıxmadan əvvəl hər şeyin klaviatura və kitabxana üzərində işlədiyinə əmin olun.

Burada PS2KeyAdvanced kitabxana nümunələrindən SimpleTest.ino'nun dəyişdirilmiş bir versiyasını güncəlləşdirilmiş saat və məlumat pinləri ilə, həmçinin "make" və "break" təqdimatı ilə əlavə etdim. İşdə çıxış üçün bəzi izahatlar.

  • Bu "etmək" və "sındırmaq" skand kodu sistemi və ya düyməni basmağın və ya açmanın sərbəst buraxılmasının təcrid olunmuş (c & 0xFF) skankodu olan "Kod" PS/2-dən USB-yə çevrilmədə mühüm rol oynayır və öyrənməyi məsləhət görürəm. Daha yaxşı başa düşmək üçün kitabxana ilə birlikdə gələn digər 2 nümunə, son eskizi təkmilləşdirmək və ya dəyişdirmək (düymələri fərqli sxemlərə dəyişdirmək) haqqında düşünürsünüzsə. Ayrıca '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \' dən 'PS2KeyAdvanced.h' və ya 'PS2KeyCode.h' fayllarını açaraq kitabxanadan PS/2 skankodlarının tam siyahısını əldə edə bilərsiniz.
  • "Status Bitləri" dəyişdirici düymələrə (Ctrl, Alt, Windows, Shift/Caps) aiddir və hər bir əlavə dəyişdirici düymədə bu dəyərin normal (dəyişdirilməyən) əsas "Kod" un dəyişmədiyini görəcəksiniz. Ancaq son eskizdə bu üsula məhəl qoymadım və bu dəyişdirici düymələri sadə düymə basmaları kimi tətbiq etdim (Bir çox düymənin basılıb-basdırılmamasından asılı olmayaraq bu dəyişdirici düymələrin normal düymələrdən asılı olmayaraq "etmək" və "qırmaq" skan koduna malik olduğunu görəcəksiniz.) çünki USB-HID protokolu ilə işləri asanlaşdırır.

Addım 3: PS/2 -dən USB Dönüşüm Önizləməsinə

Arduino-nuzu USB klaviatura olaraq təyin etmək üçün Atmega8U2 və ya 16U2 (UNO Rev3) yeniləmədən əvvəl, bütün çevrilmə materiallarının düzgün işlədiyinə və son son eskizin yükləndiyinə əmin olmalıyıq və ya əks halda yazmağı davam etdirmək böyük bir ağrı olacaq. Düzgün eskizi yükləmək üçün orijinal və USB klaviatura altıbucaqlı fayllar arasında təkrar-təkrar firmware. Bir USBasp və ya başqa bir Arduino kimi ISP olaraq istifadə etmək üçün heç bir xarici proqramçınız yoxdursa, bu xüsusilə doğrudur. Beləliklə, hər şeyi sınamaq üçün insan tərəfindən oxunan bir çıxışı olan (serial monitor vasitəsilə) son eskizin 'DEBUG' versiyasını yükləyəcəyik.

Gördüyünüz çıxış hər düymə buraxıldıqda belə formatlanacaq, 00 00 00 00 00 00 00 00

Burada gözlənilən çıxış üçün əsas bir izahat var.

Hər bir çox dəyişən düyməni basmaq üçün 'xx' üçün fərqli dəyərlərə malik yeni bir xətt almalısınız. Nəhayət, bütün dəyişdirici düymələri buraxdığınız zaman 'xx' 00 olmalıdır

xx 00 00 00 00 00 00 00 00

Hər yeni bir neçə normal düymə basması üçün (məsələn, 'xx', 'yy' və 'zz' dəyərləri ilə hər iki hipotetik a, b və c düymələrini basacağıq) davamlı (məcburi deyil) bu kimi yeni xətlər,

00 00 xx yy zz 00 00 00

yalnız b düyməsini buraxdığınız zaman çıxış dəyişməlidir,

00 00 xx 00 zz 00 00 00

a və ya b düyməsini buraxmadan 'nn' dəyəri olan yeni d düyməsini basarsanız, çıxışınız dəyişməlidir,

00 00 xx nn zz 00 00 00

və nəhayət, hər açar buraxıldıqda buna qayıdın,

00 00 00 00 00 00 00 00

və son olaraq Caps Lock, Num Lock və ya Scroll Lock düymələrinə basarsanız, eyni anda birdən çox sətirlə belə bir şey əldə etməlisiniz,

00 00 xx 00 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Burada hər şey olarsa, davam etmək üçün qızılsınız!

Addım 4: Texniki İzahat

Texniki Şərh
Texniki Şərh
Texniki Şərh
Texniki Şərh

İstəsəniz bu addımı atlaya bilərsiniz. Bu, əvvəlki çıxışların izahıdır. Gördüyünüz 8 bayt çıxışı yuxarıdakı şəklə uyğun olaraq formatlanır.1 Bu barədə daha çox məlumat əldə edə bilərsiniz və həmçinin dəyişdirici düymələr status baytının bu vikidən USB-HID haqqında necə yazıldığını öyrənə bilərsiniz. Əsasən mənim kodum hər dəfə yeni bir düyməyə basıldıqda (PS/2 protokolu bunu 'etmək' olaraq ifadə edir) normal düymələr üçün istifadə olunan serialın son 6 baytından keçir və birincisini doldurur. alınan 'PS/2 scancode' üçün müvafiq 'HID skancode' ilə tapdığınız boş bayt (Şəkil 2 -də göstərildiyi kimi əlavə PDF -dən tam bir siyahı tapa bilərsiniz). Və nəhayət, müvafiq açar sərbəst buraxıldıqda (PS/2 protokolu buna 'fasilə' kimi istinad edir) kod cari bayt silsiləsi boyunca dövr edəcək və yalnız müvafiq baytı siləcək.

Bura qədər izləsəniz və həmçinin wiki səhifəsini oxusanız, bu metodda kiçik bir problem olduğunu görürsünüz, normal olaraq açar buraxıldıqda, HID protokolunda qalan baytlar boş baytlardan qurtulmaq üçün yenidən düzülür. qalan boş olmayan baytlar arasında. Ancaq nədənsə neçə yolla çalışmağımdan asılı olmayaraq təsadüfən basılan düymələr üçün istənməyən baytları silmədən istədiyim kimi işləyə bilmədim. İşləmək üçün bunu təkmilləşdirə bilsəniz, şərh yazın. Günün sonunda bu problem klaviaturanın funksionallığına təsir göstərməsə də, Arduino basıldıqları sıradan asılı olmayaraq hər bir düyməni basıb saxladıqca (praktik istifadədə heç bir şeyə təsir etmir).

Addım 5: Son eskizin yüklənməsi

Arduino -nuzu USB klaviatura olaraq təyin etmək üçün Atmega8U2 və ya 16U2 (UNO Rev3) firmware proqramını nəhayət yeniləməzdən əvvəl Final Sketch -i yükləməliyik. Bunu yüklədikdən sonra, serial monitoruna keçsəniz, hər yeni düyməyə basıldığında zibil çap etdiyini görəcəksiniz, bu hər şeyin istədiyi kimi işlədiyinin yaxşı bir əlamətidir və son mərhələyə keçə bilərik. YAY !!!

Addım 6: Firmware -ni yeniləyin

Nəhayət, Arduino firmware proqramını USB klaviatura kimi qeyd etmək üçün onu yeniləyə bilərsiniz. Bunun üçün çox təfərrüatlara girməyəcəyəm, çünki bu, çox uzun müddət göstəriş verər.

  1. 'DFU istifadə edərək Uno və ya Mega2560-da Atmega8U2 və 16U2-nin yenilənməsi' haqqında arduino.cc-dən bu təlimatı izləyin, ancaq 'Arduino-usbserial-uno.hex' istifadə etmək əvəzinə bərkidilmiş 'Arduino-klaviatura-0.3.hex' istifadə edin.
  2. FLIP -də, Arduino -dan asılı olaraq hədəf cihazı Atmega8U2 və ya 16U2 olaraq seçməyi unutmayın və ünsiyyət mühitindən USB -ni seçin və nəhayət işləməyi seçməzdən əvvəl düzgün hex faylını yükləyin.
  3. Sürücü xətası ilə üzləşmisinizsə, Windows cihaz menecerinə gedin və FLIP '\ Program Files (x86) Atmel \' quraşdırma qovluğunda naməlum sürücünü axtarın.
  4. Firmware proqramını FLIP -dən bir neçə dəfə yeniləyərkən səhvlərlə üzləşmisinizsə, FLIP -i bağlayın və 'Başlat menyusu / FLIP \' bölməsindən 'Tercihləri Sıfırla' əmrini yerinə yetirin və FLIP -i yenidən başladın və yenidən sınamadan əvvəl konfiqurasiya addımlarını edin, bu ümumiyyətlə mənim üçün işləyir.
  5. Arduino -nu orijinal vəziyyətinə qaytarmaq istəyirsinizsə, bu hex faylını istifadə etmədən yuxarıdakı arduino.cc məktubuna dair təlimatı izləyin.

Addım 7: Zövq alın …

Zövq alın …
Zövq alın …

İndi yeni çevrilmiş PS/2 -ni USB klaviatura ilə zövq alın …. P. S. Bu Təlimat tamamilə Arduino vasitəsilə dizüstü kompüterimə qoşulmuş xarici PS/2 klaviaturasından yazılmışdır:)

Tövsiyə: