Dapatkah saya membuat keyboard USB penuh dengan Makey Makey + Raspberry Pi

15

Saya baru-baru ini membeli Makey Makey (berdasarkan Arduino Leonardo / ATMega32u4), berharap dapat membangun keyboard gaya steampunk USB penuh dari beberapa bagian logam. Sebelum tiba, saya membaca kembali detailnya dan menyadari bahwa hanya ada 18 kemungkinan input, jadi 85+ kunci tidak akan berfungsi. Apakah ada yang punya ide bagaimana saya bisa membuat binatang seperti itu, mungkin dengan Raspberry Pi? (yang menghubungkan dengan cukup mudah, dari posting sebelumnya )

sventechie
sumber
Itu mengagumkan.
Jivings
1
Alih-alih input untuk setiap tombol Anda dapat menggunakan matriks dan menggunakan 18 input untuk menangani 81 kunci (matriks 9x9) sejauh yang saya tahu RPi memiliki input lebih sedikit daripada arduino jadi saya tidak berpikir itu akan membantu.
Craig
@Craig jadi maksud Anda menggabungkan input seperti ini: arduino.cc/playground/Main/KeypadTutorial
sventechie
@sventech ya. Saya tidak terbiasa dengan makey makey jadi saya tidak tahu bagaimana resistansi switching yang tinggi akan berinteraksi dengan matriks.
Craig

Jawaban:

6

Jika Anda hanya ingin membuat keyboard, tanpa menggunakan Makey Makey Anda, Anda dapat melakukannya menggunakan fungsionalitas GPIO dari Raspberry Pi. Tetapi seperti dikomentari sebelumnya, Raspberry Pi tidak memiliki pin yang cukup tersedia untuk membuat keyboard yang sebenarnya berguna.

Namun, jika Anda ingin menambahkan 2 IC, Anda dapat membuat sendiri keyboard dengan begitu banyak tombol sehingga Anda akan memiliki masalah untuk menghasilkan fungsi untuk setiap tombol!

Saran saya adalah menghubungkan 2 IC I2C ke bus I2C pada Raspberry Pi, dan gunakan itu untuk membuat matriks pemindaian Anda sendiri.

Jika Anda menggunakan satu PCF8574 Anda memiliki 8 pin I / O, jika Anda mendapatkan PCF8575 Anda bahkan memiliki 16 pin I / O. Dengan menggabungkan maka Anda bisa mendapatkan matriks pemindaian:

  • 64 kunci: (2x PCF8574)
  • 128 kunci: (1x PCF8574 & 1x PCF8575)
  • 256 kunci: (2x PCF8575)

Anda harus selalu menggunakan salah satu dari mereka sebagai output, dan satu sebagai input. Pada output Anda membiarkan sedikit 'berjalan' dari bit 0 ke bit n (7 atau 15), ini adalah kolom dari matriks. Di sisi lain Anda terus membaca nilai input dan ini adalah baris dari matriks. Kombinasi bit keluaran apa yang aktif dan bit input apa '1' adalah tombol yang ditekan.

prinsip pemindaian matriks

Sebenarnya membuat matriks adalah yang paling berhasil, dan saat Anda melakukannya, jangan lupa untuk menambahkan dioda setelah setiap saklar yang Anda masukkan ke dalam matriks, dioda ini (1N4148 yang normal akan baik-baik saja) perlu ditempatkan dengan anoda ke sakelar dan katoda ke baris baris. Penurunan tegangan 0,6V dioda ini seharusnya tidak menjadi masalah, sisanya (3,3V-0,6V) 2,7V harus tetap logis '1'.

matriks pemindaian praktis

Alasan truk ini banyak dioda adalah bahwa hal itu akan mencegah hal-hal seperti ghosting dan masking kunci. Ghosting adalah efek bahwa jika Anda menekan lebih dari tiga tombol secara bersamaan, ada kemungkinan bahwa hal itu ditafsirkan sebagai kunci yang sama sekali berbeda karena lebih banyak baris akan memiliki '1' yang logis. Masking adalah efek yang, jika Anda memiliki beberapa tombol ditekan dan lepaskan tombol ini akan (dalam beberapa situasi) tidak terdeteksi karena baris untuk tombol itu masih logis '1'.

contoh ghosting

Gambar menunjukkan contoh ghosting, tombol A, B, D ditekan dan selain Baris 1 (untuk tombol A) juga Baris 2 (untuk tombol C) tinggi, pada saat Kolom 1 aktif, yang tidak benar.

Setelah petualangan seluruh perangkat keras, Anda perlu menulis atau mengadaptasi driver kernel untuk benar-benar menggunakan keyboard di linux. Titik awal yang bagus mungkin tautan ini: Driver untuk tombol pada TCA6416 I2C IO expander , ini adalah ide yang sama, tetapi hanya menggunakan tombol 16 tombol.

Semoga ini bisa membantu Anda sedikit.

ikku
sumber
3

Jika Anda ingin membuat keyboard lengkap untuk benar-benar mengetik, Anda mungkin sebaiknya menggunakan IC dari keyboard USB. Entah mempertahankan PCB itu sendiri terkubur dalam-dalam di sistem Anda di mana itu tidak dapat dilihat dan menjalankan kabel ke switch Anda, atau membuat sesuatu yang kustom dengan matriks yang sama.

Jika Anda benar-benar perlu mengubah matriks listrik maka Anda mungkin perlu membuat desain sendiri dari awal, tetapi sebaliknya itu tidak benar-benar diperlukan.

Bahkan dengan papan kustom, Anda masih dapat berakhir dengan sesuatu yang menyebutkan dan berfungsi sebagai keyboard USB, menghilangkan kebutuhan untuk driver kustom.

Chris Stratton
sumber