Daftar Isi:

Arduino PS/2 ke USB Adapter: 7 Langkah (dengan Gambar)
Arduino PS/2 ke USB Adapter: 7 Langkah (dengan Gambar)

Video: Arduino PS/2 ke USB Adapter: 7 Langkah (dengan Gambar)

Video: Arduino PS/2 ke USB Adapter: 7 Langkah (dengan Gambar)
Video: Tutorial for Arduino ▶7 PS2 Keyboard read display system 2024, Juli
Anonim
Arduino PS/2 ke Adaptor USB
Arduino PS/2 ke Adaptor USB
Arduino PS/2 ke Adaptor USB
Arduino PS/2 ke Adaptor USB

Pernahkah Anda ingin menggunakan Keyboard PS/2 lama Anda dengan laptop atau PC desktop baru dan mengetahui bahwa mereka tidak memiliki port PS/2 lagi? Dan kemudian daripada membeli Adaptor PS/2 ke USB murah seperti yang dilakukan orang normal, ingin menggunakan Arduino Anda sebagai Adaptor PS/2 ke USB. Maka Anda telah datang ke tempat yang tepat:)

Peringatan yang adil sebelum kita masuk ke dalamnya. Saat Anda menggunakan UNO/Mega sebagai perangkat USB-HID (Tidak terbatas pada keyboard, bahkan dapat berupa mouse, joystick, dll.) Anda akan kehilangan fungsinya sebagai Arduino untuk sementara. Maksud saya, Anda tidak dapat menggunakan komunikasi Serial dan Anda tidak dapat memprogram ulang melalui USB. Ini karena kami akan menimpa firmware pada chip antarmuka USB-nya (orang kecil di dekat port USB Atmega8U2 dan 16U2 tergantung pada revisi). Tapi jangan khawatir Anda tidak bisa benar-benar merusak UNO/Mega Anda dengan melakukan ini, itu selalu dapat dibalik.

Juga kebetulan jika Anda memiliki Arduino yang sudah memiliki kemampuan USB-HID (Arduino Pro Micro atau Leonardo, dll melakukan pencarian google) Anda bisa melupakan instruksi ini pernah ada pergi langsung ke sini untuk menyelamatkan diri dari dunia masalah, hanya bercanda!

Perlengkapan

  • Perangkat keras

    • Arduino UNO atau Mega
    • Papan Ketik PS/2
    • Opsional Arduino tambahan atau segala jenis programmer USB (USBasp, dll) mungkin berguna.
  • Perangkat lunak

    • Atmel FLIP
    • PS2KeyPerpustakaan lanjutan untuk Arduino IDE

Langkah 1: Pengkabelan dan Pengaturan

Pengkabelan dan Pengaturan
Pengkabelan dan Pengaturan
Pengkabelan dan Pengaturan
Pengkabelan dan Pengaturan
Pengkabelan dan Pengaturan
Pengkabelan dan Pengaturan
Pengkabelan dan Pengaturan
Pengkabelan dan Pengaturan

Bergantung pada situasinya, Anda dapat menemukan papan breakout atau menyelamatkan port lama dari motherboard (percobaan kedua saya) atau jika Anda merasa sangat murung, Anda bahkan dapat memotong jack ungu sama sekali dan mengekspos 4 kabel (percobaan pertama saya) dan menghubungkan mereka ke UNO.

Keyboard_Arduino

+5V(VCC)_+5V

TANAH_GND

JAM_PIN 2**

DATA_PIN3*

*Anda dapat mengubah pin DATA menjadi apa pun yang Anda inginkan, tetapi ingat untuk memperbarui sketsa.

**JAM harus terhubung ke pin interupsi pada Arduino yang hanya dapat berupa PIN 2 atau 3 (ingat untuk memperbarui sketsa) pada UNO. Untuk informasi lebih lanjut dan konfigurasi papan yang berbeda, Anda dapat memeriksa bagian komentar dari contoh perpustakaan PS2KeyAdvanced.

Langkah 2: Menguji Keyboard

Sebelum Anda pergi semua tangan di dek pertama pastikan semuanya bekerja pada keyboard dan perpustakaan.

Di sini saya telah melampirkan versi modifikasi SimpleTest.ino dari contoh perpustakaan PS2KeyAdvanced dengan jam dan pin data yang diperbarui dan juga representasi "make" dan "break". Berikut adalah beberapa penjelasan untuk output.

  • Sistem scancode "make" dan "break" ini dan "Code" yang merupakan scancode terisolasi (c & 0xFF) dari penekanan tombol atau pelepasan kunci memainkan peran penting dalam konversi PS/2 ke USB dan saya sarankan Anda mempelajarinya 2 contoh lain yang disertakan dengan perpustakaan untuk mendapatkan pemahaman yang lebih baik jika Anda berencana untuk meningkatkan atau mengubah (memetakan ulang kunci ke tata letak yang berbeda) sketsa akhir. Anda juga bisa mendapatkan daftar lengkap kode pindaian PS/2 dari perpustakaan dengan membuka file 'PS2KeyAdvanced.h' atau 'PS2KeyCode.h' dari '\Documents\Arduino\libraries\PS2KeyAdvanced\src\'
  • "Status Bits" mengacu pada kunci pengubah (Ctrl, Alt, Windows, Shift/Caps) dan Anda akan melihat bahwa dengan setiap kunci pengubah tambahan, nilai ini berubah sementara "Kode" utama dari kunci normal (non-pengubah) tidak berubah. Tetapi dalam sketsa terakhir saya telah mengabaikan metode ini dan menerapkan tombol pengubah ini sebagai penekanan tombol sederhana (Anda akan melihat bahwa tombol pengubah ini juga memiliki kode pindaian "make" dan "break" independen dari tombol normal apakah beberapa tombol ditekan atau tidak.) karena itu membuat segalanya lebih mudah dengan protokol USB-HID.

Langkah 3: Pratinjau Konversi PS/2 ke USB

Sebelum memperbarui Atmega8U2 atau 16U2 (UNO Rev3) untuk mengidentifikasi Arduino kami sebagai keyboard USB, kami harus memastikan semua hal konversi berfungsi dengan benar dan sketsa akhir terakhir diunggah atau jika tidak, akan sangat merepotkan untuk terus menulis ulang firmware lagi dan lagi antara file hex Asli dan keyboard USB hanya agar Anda dapat mengunggah sketsa yang benar. Ini menjadi benar terutama jika Anda tidak memiliki programmer eksternal seperti USBasp atau Arduino lain untuk digunakan sebagai ISP. Jadi di sini kita akan mengunggah versi 'DEBUG' dari sketsa akhir dengan output yang dapat dibaca manusia (melalui monitor serial) untuk menguji semuanya.

Output yang Anda lihat akan diformat seperti ini ketika setiap kunci dilepaskan, 00 00 00 00 00 00 00 00

Berikut penjelasan dasar untuk output yang diharapkan,

Untuk setiap penekanan tombol pengubah ganda baru, Anda harus mendapatkan baris baru dengan nilai berbeda untuk 'xx'. Akhirnya ketika Anda melepaskan semua kunci pengubah 'xx' harus menjadi 00

xx 00 00 00 00 00 00 00

Untuk setiap penekanan tombol normal ganda baru (sebagai contoh kami akan menekan kedua kunci hipotetis a, kunci b dan kunci c dengan nilai 'xx', 'yy' dan 'zz' dalam urutan itu) Anda harus terus menerus (tidak wajib) baris baru seperti ini,

00 00 xx yy zz 00 00 00

ketika Anda hanya melepaskan kunci b output harus berubah menjadi,

00 00 xx 00 zz 00 00 00

dan jika Anda menekan tombol baru d dengan nilai 'nn' tanpa melepaskan kunci a atau tombol b output Anda akan berubah menjadi,

00 00 xx nn zz 00 00 00

dan akhirnya kembali ke ini ketika setiap kunci dilepaskan,

00 00 00 00 00 00 00 00

dan terakhir jika Anda menekan Caps Lock, Num Lock atau Scroll Lock Anda akan mendapatkan sesuatu seperti ini dengan beberapa baris secara bersamaan,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Jika semuanya di sini terjadi, Anda adalah emas untuk melanjutkan!

Langkah 4: Penjelasan Teknis

Penjelasan Teknis
Penjelasan Teknis
Penjelasan Teknis
Penjelasan Teknis

Jika Anda suka, Anda dapat melewati langkah ini. Ini hanya penjelasan untuk output sebelumnya. Output array 8 byte yang Anda lihat diformat sesuai dengan gambar di atas.1 Anda dapat mempelajari lebih lanjut tentang ini dan juga bagaimana byte status kunci pengubah ditulis dari wiki ini tentang USB-HID. Pada dasarnya apa yang dilakukan kode saya adalah setiap kali tombol baru ditekan (protokol PS/2 menyebutnya sebagai 'make') ia menggilir 6 byte terakhir dari array yang digunakan untuk penekanan tombol normal, dan mengisi yang pertama byte kosong yang ditemukan dengan 'kode pindaian HID' yang relevan (ditunjukkan seperti pada gbr.2 Anda juga dapat menemukan daftar lengkap dari PDF terlampir) untuk 'kode pindaian PS/2' yang diterima. Dan akhirnya ketika kunci yang relevan dilepaskan (protokol PS/2 menyebutnya sebagai 'break') kode akan menggilir array byte saat ini dan menghapus hanya byte yang relevan.

Jika Anda mengikuti sampai di sini dan juga jika Anda membaca halaman wiki Anda akan melihat bahwa ada sedikit masalah dalam metode ini, biasanya ketika kunci dilepaskan, dalam protokol HID byte yang tersisa diatur ulang untuk menghilangkan byte kosong antara sisa byte yang tidak kosong. Tetapi untuk beberapa alasan terlepas dari berapa banyak cara yang saya coba, saya tidak dapat membuatnya berfungsi sebagaimana dimaksud tanpa secara tidak sengaja menghapus byte yang tidak diinginkan untuk tombol yang ditekan juga. Jika Anda dapat meningkatkan ini untuk membuatnya berfungsi, silakan tinggalkan komentar. Meskipun pada akhirnya masalah ini tidak memengaruhi fungsionalitas keyboard selama Arduino masih mencatat setiap tombol yang ditekan terlepas dari urutan yang ditekan (Yang tidak memengaruhi apa pun dalam penggunaan praktis).

Langkah 5: Mengunggah Sketsa Akhir

Jadi sebelum Anda akhirnya memperbarui firmware Atmega8U2 atau 16U2 (UNO Rev3) untuk mengidentifikasi Arduino kami sebagai keyboard USB, kami harus mengunggah Sketsa Akhir. Setelah Anda mengunggah ini, jika Anda pergi ke monitor serial, Anda akan melihatnya mencetak sampah dengan setiap tombol baru ditekan, ini adalah pertanda baik bahwa semuanya berfungsi sebagaimana dimaksud dan kami dapat melanjutkan ke langkah terakhir. YA!!!

Langkah 6: Memperbarui Firmware

Akhirnya Anda dapat memperbarui firmware Arduino Anda untuk mendaftarkannya sebagai keyboard USB. Untuk ini saya tidak akan membahas banyak detail karena akan membuat instruksi ini terlalu panjang.

  1. Ikuti panduan ini dari arduino.cc tentang 'Memperbarui Atmega8U2 dan 16U2 pada Uno atau Mega2560 menggunakan DFU' tetapi daripada menggunakan 'Arduino-usbserial-uno.hex' gunakan terlampir 'Arduino-keyboard-0.3.hex'
  2. Dalam FLIP ingatlah untuk memilih perangkat target sebagai Atmega8U2 atau 16U2 tergantung pada Arduino Anda dan, dari pilih media komunikasi pilih USB dan akhirnya Muat file hex yang benar sebelum memilih run.
  3. Jika Anda mengalami kesalahan driver, buka windows device manager dan pilih untuk mencari driver yang tidak dikenal di dalam direktori instalasi FLIP '\Program Files (x86)\Atmel\'
  4. Jika Anda mengalami kesalahan saat memperbarui firmware dari FLIP beberapa kali, tutup FLIP dan jalankan 'Reset Preferences' dari 'Start menu\FLIP\' lalu restart FLIP dan lakukan langkah-langkah konfigurasi sebelum mencoba lagi ini biasanya berhasil untuk saya.
  5. Jika Anda ingin mengembalikan Arduino Anda ke keadaan semula, cukup ikuti panduan arduino.cc di atas ke huruf tanpa menggunakan file hex ini.

Langkah 7: Nikmati ……

Menikmati……
Menikmati……

Sekarang nikmati keyboard PS/2 Anda yang baru dikonversi ke USB…. P. S. Instruksi ini sepenuhnya ditulis dari keyboard PS/2 eksternal yang terhubung ke laptop saya melalui Arduino:)

Direkomendasikan: