Makey Makey + Raspberry Pi ile tam bir USB klavye yapabilir miyim


15

Kısa süre önce , bazı metal parçalardan tam bir USB steampunk tarzı klavye inşa etmeyi umarak Makey Makey'yi (Arduino Leonardo / ATMega32u4 tabanlı) satın aldım . Gelmeden önce ayrıntıları tekrar okudum ve sadece 18 olası girişi olduğunu fark ettim, bu yüzden 85+ tuş çalışmaz. Muhtemelen bir Ahududu Pi ile böyle bir canavarı nasıl yaratabileceğim hakkında bir fikri olan var mı? ( önceki yayınlardan oldukça kolay bağlanır )


Bu mükemmel.
Jivings

1
Her tuş için bir giriş yerine bir matris kullanabilir ve RPi'nin arduino'dan daha az girişe sahip olduğunu bildiğim kadarıyla 81 tuşunu (9x9 matris) işlemek için 18 girişi kullanabilirsiniz, bu yüzden yardımcı olacağını düşünmüyorum.
Craig

@Craig yani şöyle girdileri birleştirmek istersiniz: arduino.cc/playground/Main/KeypadTutorial
sventechie

@sventech evet. Makey makey'e aşina değilim, bu yüzden yüksek direnç anahtarlamasının matrisle nasıl etkileşime gireceğini bilmiyorum.
Craig

Yanıtlar:


6

Makey Makey'nizi kullanmadan sadece bir klavye yapmak istiyorsanız, bunu Raspberry Pi'nin GPIO işlevini kullanarak yapabilirsiniz. Ancak daha önce yorumlandığı gibi, Raspberry Pi'nin gerçekten kullanışlı bir klavye yapmak için yeterli pimi yok.

Ancak, 2 IC eklemek istiyorsanız, kendinize o kadar çok tuşa sahip bir klavye yapabilirsiniz ki, her tuş için bir işlev bulmak için bir sorun yaşayacaksınız!

Benim önerim, 2 I2C IC'yi Raspberry Pi'deki I2C veriyoluna bağlamak ve bunları kendi tarama matrisinizi oluşturmak için kullanmaktır.

Bir PCF8574 kullanıyorsanız 8 I / O piminiz var, PCF8575 alırsanız bile 16 I / O piminiz var. Bir araya getirerek şu tarama matrisini alabilirsiniz:

  • 64 tuş: (2x PCF8574)
  • 128 tuş: (1x PCF8574 ve 1x PCF8575)
  • 256 tuş: (2x PCF8575)

Her zaman bunlardan birini çıktı, diğerini girdi olarak kullanmalısınız. Çıktıda, bit 0'dan bit n'ye (7 veya 15) biraz 'yürümeye' izin verirsiniz, bunlar matrisin sütunlarıdır. Diğer yandan sürekli olarak girişin değerini okursunuz ve bunlar matrisin satırlarıdır. Hangi çıkış bitinin aktif ve hangi giriş bitinin '1' olduğu kombinasyonu basılan tuştur.

tarama matrisi prensibi

Aslında matrisi oluşturmak en fazla iştir ve siz işteyken, matrise koyduğunuz her anahtardan sonra bir diyot eklemeyi unutmayın, bu diyotun (normal 1N4148 iyi sonuç verir) anotla yerleştirilmesi gerekir anahtar ve katot satır satırına. Bu diyot üzerindeki 0.6V'luk voltaj düşüşü sorun olmamalı, kalan (3.3V-0.6V) 2.7V hala mantıklı bir '1' olmalıdır.

pratik tarama matrisi

Bu kamyon yükü diyotlarının nedeni, gölgelenme ve anahtarların maskelemesi gibi şeyleri önleyecek olmasıdır. Gölgelenme, aynı anda üçten fazla tuşa basarsanız, tamamen farklı bir anahtar olarak yorumlanması mümkündür, çünkü daha fazla satır mantıklı bir '1'e sahip olacaktır. Maskeleme, birden fazla tuşa basıp bir tuşu serbest bırakırsanız, (bazı durumlarda) bu tuşun satırı hala mantıklı bir '1' olduğu için algılanmayacaktır.

gölgelenme örneği

Resimde gölgelenme örneği gösterilmektedir, A, B, D düğmelerine basılır ve Satır 1'in (A düğmesi için) yanında Satır 2 (C düğmesi için) de yüksektir, şu anda Sütun 1 aktiftir, bu doğru değildir.

Tüm donanım macerasından sonra, klavyeyi linux altında kullanmak için bir çekirdek sürücüsü yazmanız veya uyarlamanız gerekir. Güzel bir başlangıç ​​noktası bu bağlantı olabilir: TCA6416 I2C IO genişletici üzerindeki tuşlar için sürücü , bu benzer bir fikirdir, ancak sadece 16 tuşlu tuş takımı kullanır.

Umarım bu sana biraz yardımcı olur.


3

Gerçekten yazmak için tam bir klavye yapmak istiyorsanız, muhtemelen bir USB klavyeden IC ile en iyi durumda olacaksınız. PCB'yi sisteminizin derinliklerinde gömülü olarak göremediğiniz bir yerde saklayın ve kabloları anahtarlarınıza kadar çalıştırın veya aynı matrisle özel bir şey yapın.

Elektrik matrisini gerçekten değiştirmeniz gerekiyorsa, kendi tasarımınızı sıfırdan yapmanız gerekebilir, ancak aksi takdirde gerçekten gerekli değildir.

Özel bir kartla bile, yine de USB klavye olarak numaralandıran ve işlev gören bir şeyle sonuçlanabilir, böylece özel sürücü ihtiyacını ortadan kaldırabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.