Isi kandungan:

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

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

Video: Penyesuai Arduino PS / 2 ke USB: 7 Langkah (dengan Gambar)
Video: Orang kesetrum 2024, Julai
Anonim
Penyesuai Arduino PS / 2 ke USB
Penyesuai Arduino PS / 2 ke USB
Penyesuai Arduino PS / 2 ke USB
Penyesuai Arduino PS / 2 ke USB

Adakah anda pernah mahu menggunakan Papan Kekunci PS / 2 lama anda dengan komputer riba atau komputer desktop baru anda dan mengetahui bahawa mereka tidak lagi mempunyai port PS / 2? Dan kemudian daripada pergi membeli PS / 2 ke USB Adapter yang murah seperti yang biasa dilakukan orang biasa, ingin menggunakan Arduino anda sebagai PS / 2 ke USB Adapter. Kemudian anda telah sampai ke tempat yang betul:)

Amaran yang adil sebelum kita masuk ke dalamnya. Apabila anda menggunakan UNO / Mega anda sebagai peranti USB-HID (Tidak terhad pada papan kekunci, ia juga boleh menjadi tetikus, kayu bedik, dll.) Anda akan kehilangan fungsinya sebagai Arduino buat sementara waktu. Maksud saya, anda tidak boleh menggunakan komunikasi Serial dan anda tidak dapat memprogramkannya semula melalui USB. Ini kerana kita akan menulis firmware secara berlebihan pada cip antara muka USBnya (lelaki kecil dekat port USB Atmega8U2 dan 16U2 bergantung pada semakannya). Tetapi jangan bimbang anda tidak boleh benar-benar membuat UNO / Mega anda dengan melakukan ini, ia selalu boleh dibalikkan.

Sekiranya anda mempunyai Arduino yang sudah mempunyai kemampuan USB-HID (Arduino Pro Micro atau Leonardo, dan lain-lain melakukan carian google) anda boleh lupa arahan yang pernah ada ini pergi terus ke sini untuk menyelamatkan diri anda dari dunia kesulitan, bergurau!

Bekalan

  • Perkakasan

    • Arduino UNO atau Mega
    • Papan Kekunci PS / 2
    • Sebagai pilihan Arduino tambahan atau Apa-apa jenis programmer USB (USBasp, dll) mungkin berguna.
  • Perisian

    • Atmel FLIP
    • Perpustakaan PS2KeyAdvanced untuk Arduino IDE

Langkah 1: Pendawaian dan Pemasangan

Pendawaian dan Pemasangan
Pendawaian dan Pemasangan
Pendawaian dan Pemasangan
Pendawaian dan Pemasangan
Pendawaian dan Pemasangan
Pendawaian dan Pemasangan
Pendawaian dan Pemasangan
Pendawaian dan Pemasangan

Bergantung pada keadaan anda boleh menemui papan pemecah atau menyelamatkan port lama dari papan induk (percubaan ke-2 saya) atau jika anda merasa sangat murung, anda bahkan boleh memotong bicu ungu sepenuhnya dan memaparkan 4 wayar (percubaan pertama saya) dan sambungkan mereka ke UNO.

Papan Kekunci_Arduino

+ 5V (VCC) _ + 5V

GROUND_GND

CLOCK_PIN 2 **

DATA _ PIN3 *

* Anda boleh menukar pin DATA menjadi yang anda mahukan tetapi ingat untuk mengemas kini lakaran.

** CLOCK mesti disambungkan ke pin interrupt di Arduino yang hanya boleh menjadi PIN 2 atau 3 (ingat untuk mengemas kini lakaran) di UNO. Untuk maklumat lebih lanjut dan konfigurasi papan yang berbeza, anda boleh menyemak bahagian komen contoh perpustakaan PS2KeyAdvanced.

Langkah 2: Papan Kekunci Menguji

Sebelum menggunakan semua dek, pastikan semuanya berfungsi pada papan kekunci dan perpustakaan.

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

  • Sistem scancode "make" dan "break" dan "Code" ini yang merupakan scancode terpencil (c & 0xFF) sama ada tekan-kunci atau pelepas kunci memainkan peranan penting dalam penukaran PS / 2 ke USB dan saya cadangkan anda belajar 2 contoh lain yang disertakan dengan perpustakaan untuk mendapatkan pemahaman yang lebih baik jika anda ingin memperbaiki atau mengubah (memetakan semula kunci ke susun atur yang berbeza) lakaran akhir. Anda juga boleh mendapatkan senarai lengkap kod PS / 2 dari perpustakaan dengan membuka fail 'PS2KeyAdvanced.h' atau 'PS2KeyCode.h' dari '\ Documents / Arduino / perpustakaan / PS2KeyAdvanced / src \'
  • "Status Bits" merujuk kepada kunci pengubah (Ctrl, Alt, Windows, Shift / Caps) dan anda akan melihat bahawa dengan setiap kunci pengubah tambahan, nilai ini berubah sementara "Kod" utama kunci (bukan pengubah) tidak berubah. Tetapi dalam lakaran akhir, saya telah mengabaikan kaedah ini dan menerapkan kekunci pengubah ini sebagai penekanan kekunci sederhana (Anda akan melihat bahawa kekunci pengubah ini juga mempunyai skkod "buat" dan "putus" yang bebas daripada kekunci biasa sama ada beberapa kekunci ditekan atau tidak.) kerana ia menjadikan perkara lebih mudah dengan protokol USB-HID.

Langkah 3: Pratonton Penukaran PS / 2 ke USB

Sebelum mengemas kini Atmega8U2 atau 16U2 (UNO Rev3) untuk mengenal pasti Arduino kami sebagai papan kekunci USB, kami harus memastikan semua perkara penukaran berfungsi dengan betul dan lakaran akhir terakhir dimuat naik atau jika tidak, akan menjadi masalah besar untuk terus menulis firmware berulang-ulang antara fail hex Original dan keyboard USB supaya anda boleh memuat naik lakaran yang betul. Ini menjadi benar terutamanya jika anda tidak mempunyai programmer luaran seperti USBasp atau Arduino lain untuk digunakan sebagai ISP. Jadi di sini kita akan memuat naik versi 'DEBUG' lakaran akhir dengan output yang dapat dibaca oleh manusia (melalui monitor bersiri) untuk menguji sesuatu.

Output yang anda lihat akan diformat seperti ini apabila setiap kekunci dilepaskan, 00 00 00 00 00 00 00 00

Inilah penjelasan asas untuk output yang diharapkan,

Untuk setiap tekan kekunci pelbagai pengubah baru, anda harus mendapatkan garis baru dengan nilai yang berbeza untuk 'xx'. Akhirnya apabila anda melepaskan semua kunci pengubah 'xx' akan menjadi 00

xx 00 00 00 00 00 00 00

Untuk setiap penekanan kekunci normal yang baru (sebagai contoh, kami akan menekan kedua-dua kekunci hipotesis a, kunci b dan kekunci c dengan nilai 'xx', 'yy' dan 'zz' mengikut urutan itu) anda harus terus menerus (tidak wajib) barisan baru seperti ini,

00 00 xx yy zz 00 00 00

apabila anda hanya melepaskan kunci b output akan berubah menjadi,

00 00 xx 00 zz 00 00 00

dan jika anda menekan kekunci baru d dengan nilai 'nn' tanpa melepaskan kekunci a atau kekunci b output anda harus berubah menjadi,

00 00 xx nn zz 00 00 00

dan akhirnya kembali kepada ini apabila setiap kunci dilepaskan,

00 00 00 00 00 00 00 00

dan terakhir jika anda menekan Caps Lock, Num Lock atau Scroll Lock, anda seharusnya mendapat sesuatu seperti ini dengan berbilang baris pada masa yang sama,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Sekiranya semuanya berlaku di sini, anda harus meneruskannya!

Langkah 4: Penjelasan Teknikal

Penjelasan Teknikal
Penjelasan Teknikal
Penjelasan Teknikal
Penjelasan Teknikal

Sekiranya anda mahu, anda boleh melangkau langkah ini. Ini hanya penjelasan untuk output sebelumnya. Susunan output 8 bait yang anda lihat diformat mengikut rajah 1 di atas. Anda boleh mengetahui lebih lanjut mengenai ini dan juga bagaimana bait status kunci pengubah ditulis dari wiki ini mengenai USB-HID. Pada dasarnya apa yang dilakukan oleh kod saya adalah setiap kali kekunci baru ditekan (protokol PS / 2 merujuk ini sebagai 'make') ia mengitar 6 bait terakhir dari array yang digunakan untuk menekan kekunci biasa, dan mengisi yang pertama byte kosong yang dijumpainya dengan 'HID scancode' yang berkaitan (Ditunjukkan seperti pada rajah.2 Anda juga boleh mendapatkan senarai lengkap dari PDF yang dilampirkan) untuk 'PS / 2 scancode' yang diterima. Dan akhirnya apabila kunci yang relevan dilepaskan (protokol PS / 2 merujuk ini sebagai 'break') kod akan berpusing melalui array bait semasa dan hanya membersihkan bait yang berkaitan.

Sekiranya anda mengikuti sampai di sini dan juga jika anda membaca halaman wiki, anda akan melihat bahawa ada sedikit masalah dalam kaedah ini, biasanya ketika kunci dilepaskan, dalam protokol HID bait yang tersisa disusun semula untuk menyingkirkan bait kosong antara bait yang tidak kosong. Tetapi atas sebab tertentu tanpa mengira berapa banyak cara yang saya cuba, saya tidak dapat membuatnya berfungsi seperti yang diharapkan tanpa membersihkan bait yang tidak diingini untuk kekunci yang ditekan juga. Sekiranya anda dapat memperbaikinya agar berfungsi, tinggalkan komen. Walaupun pada penghujung hari masalah ini tidak mempengaruhi fungsi papan kekunci selagi Arduino masih mendaftarkan setiap penekanan kekunci tanpa mengira urutan ditekannya (Yang tidak mempengaruhi apa-apa dalam penggunaan praktikal).

Langkah 5: Memuat naik Sketsa Akhir

Jadi sebelum anda akhirnya mengemas kini firmware Atmega8U2 atau 16U2 (UNO Rev3) untuk mengenal pasti Arduino kami sebagai papan kekunci USB, kita mesti memuat naik Sketsa Akhir. Selepas anda memuat naik ini, jika anda pergi ke monitor bersiri, anda akan melihatnya mencetak sampah dengan setiap kekunci baru ditekan, ini adalah pertanda baik bahawa semuanya berfungsi seperti yang diharapkan dan kami dapat meneruskan ke langkah terakhir. YAY !!!

Langkah 6: Mengemas kini Firmware

Akhirnya anda boleh mengemas kini firmware Arduino anda untuk mendaftarkannya sebagai papan kekunci USB. Untuk ini saya tidak akan membincangkan lebih banyak maklumat kerana ini akan menjadikan arahan ini terlalu lama.

  1. Ikuti panduan ini dari arduino.cc mengenai 'Mengemas kini Atmega8U2 dan 16U2 pada Uno atau Mega2560 menggunakan DFU' tetapi daripada menggunakan 'Arduino-usbserial-uno.hex' gunakan 'Arduino-keyboard-0.3.hex' yang dilampirkan
  2. Di FLIP ingatlah untuk memilih peranti sasaran sebagai Atmega8U2 atau 16U2 bergantung pada Anda Arduino dan, dari pilih media komunikasi pilih USB dan akhirnya Muatkan fail hex yang betul sebelum memilih jalankan.
  3. Sekiranya anda mengalami kesalahan pemacu, pergi ke pengurus peranti windows dan pilih untuk mencari pemacu yang tidak diketahui di dalam direktori pemasangan FLIP '\ Program Files (x86) Atmel \'
  4. Sekiranya anda mengalami kesilapan semasa mengemas kini firmware dari FLIP beberapa kali, tutup FLIP dan jalankan 'Reset Preferences' dari 'Start menu / FLIP \' dan kemudian mulakan semula FLIP dan lakukan langkah konfigurasi sebelum mencuba lagi ini biasanya berfungsi untuk saya.
  5. Sekiranya anda ingin mengembalikan Arduino ke keadaan asalnya, ikuti panduan arduino.cc di atas untuk huruf tersebut tanpa menggunakan fail hex ini.

Langkah 7: Nikmati ……

Selamat menikmati ……
Selamat menikmati ……

Sekarang nikmati papan kekunci PS / 2 ke USB yang baru ditukar…. P. S. Instructable ini ditulis sepenuhnya dari papan kekunci PS / 2 luaran yang disambungkan ke komputer riba saya melalui Arduino:)

Disyorkan: