コンピューター ウィンドウズ インターネット

PCキーボードのps2コネクタ図。 ファームウェアのソースコード

2014年2月4日火曜日11:33+引用符で

そのため、PS / 2マウスは故障しました。 欠陥は異なる場合があります。たとえば、マウスは1回のキー押下で2回のクリックを生成し始めます。 なぜこの欠陥を例として挙げたのですか? この場合、ボタンの誤動作のせいにするのは難しいからです。 また、マウスの修理には新しいマウスの購入の少なくとも2倍の費用がかかるため、このようなマウスをワークショップに持ち込むことはできません。 では、何をマウスを捨てることができますか? 修理のスキル(たとえば、やさしくはんだ付けする能力)がある場合、またはこれらのスキルを持っていて10分でもかまわない友人がいる場合は必要ありません。

PS / 2マウスコネクタの配線

P / pいいえ。

信号

1 データ
2 関与しない
3 接地
4 + 5V
5 時計
6 関与しない

コンピュータマウスの修理PS / 2

マウスで発生するすべての欠陥の主な理由は、ワイヤの伝導の劣化です。 欠陥は、抵抗計を使用して非常に簡単に計算されます。 ワイヤの動作中の導体では、抵抗計は1〜10オームを示し、導体に150オーム以上の障害がある場合は表示されます。

今修理する方法。 PS / 2コネクタ自体は折りたたみ可能ではありませんが、結局のところ、必要ありません。 結局のところ、誤動作は、マウスの内部コネクタからマウスからのワイヤの出口までのワイヤのセクションにあります。 (何らかの理由で、すべてのメーカーは最近、この場所で内部配線から外部への移行が必要であると決定しました 大きなプレッシャーワイヤー上)。 一般に、ワイヤーのこのセクションを噛みます(マウスの側面からワイヤーの端を噛んでマウスに戻すか、セクションを噛んでワイヤーをはんだ付けするだけの2つの方法があります(私は2番目のオプションを好みます(ジョイントはまだマウスの内側にあります)))静脈ケーブルをきれいにして錫メッキし、ワイヤーの完全性を回復します。 (ちなみに、噛んだ直後は芯線の完全性をチェックしています)

コンピュータ機器は静止しておらず、絶えず改善されており、頻繁に交換されています 静止したコンピューターノートパソコンが登場します。 ラップトップにもマウスが必要ですが、丸いコネクタが付いた古いマウスをどうするか? そして、それがうまく機能し、人間工学であなたの手に非常によく合うなら、さらにそうです...それを捨てますか?

いいえ、理由はあります。USBコネクタ用に作り直す必要があります。

2つのオプションがあります:単にアダプターを作るか、マウスの古いケーブルを取り外して新しいケーブルを接続することができます-USBプラグで。 ご覧のとおり、配線図は非常に単純です。配線は4本だけです。 USBプラグ付きの古いケーブルをカメラから、または 携帯電話たとえば、フリーマーケットでそのようなケーブルを購入し、マウスと交換することができます。

そして、色と数字によって導かれるUSBコネクタのワイヤの目的は次のとおりです。

1.赤-電源、5ボルト、
2.白(灰色)(D-)-コンピューターからマウスにデータを転送します。
3.緑-データをマウスからコンピューターに転送します(D +)、
4.黒-地面(本体)。

ワイヤーの色に基づいて、ケーブルをすばやくはんだ付けし直すことができますが、古いケーブルをはんだ付け解除する前に、テスターに​​電話して、ワイヤーの色がコネクタの番号と一致することをもう一度確認することをお勧めします。 実践が示すように、人的要因はまだ存在しており、間違いもあります。

この配線図を使用して、USBコネクタ用の丸いPS / 2コネクタを備えたキーボードを作り直すこともできます。 それでも、必要なワイヤーをに接続します 適切な連絡先...この記事は、古くなった(適応した)古いPCの非常に優れた、実行可能な部品を便利に廃棄(適応)するのに役立つと思います。

時間が経つにつれて、問題が発生します、どのように マイクロコントローラにデータを入力します? 最も私たちに来る古典的な解決策は ボタンを使用する...ボードをエッチングする 追跡接触パッドにとって ボタン、そして彼らの 半田、方法を決定する トラックプレスボタン-によって 中断またはを通して サイクルごとのボタンの状態のポーリング..。 ボタンの場合 多くの、 彼ら 占有しますかなりの量 ピンマイクロコントローラー。 道はとげです。

手元にあるものを使用することをお勧めします-シンプルです PS / 2コンピューターキーボード..。 プロから:

  • もの 高くない;
  • で販売 どれかコンピュータストア
  • 私たちが利用できる 101キー
  • 合計でキーボードを取ります 2ピンクロックとデータ用のマイクロコントローラ。



マイクロコントローラとして、私は使用します ATmega328Pまた Arduino UNO.

少し理論

キーボードケーブルの外装を開けると、 4本目のワイヤー:

  • ワイヤー 栄養(5V)
  • ワイヤー 土地
  • ワイヤー 同期信号 (CLK)
  • ワイヤー データ (データ)

キーボードに 私の 8ビットコードと呼ばれる スキャンコード 16進形式(HEX)で記述されています。以下を参照してください。


クリックすると 、 オン SLK送信 矩形パルスそしてによって データ 11ビットコード:


データビットは、移行時にコンピューターによって読み取られます CLK上級 オン 短い。

最初のビット常に等しい 0 - これは スタートビットに続く 8日少し スキャンコード、 それから パリティビットそして最後に ストップビットこれは常にです 1 .

PS / 2キーボードをマイクロコントローラーに接続するにはどうすればよいですか?

実は港 PS / 2 キーボードこれは 一種のMini-DINコネクタ、彼女 6ピン オプション。
キーボードには min-din 6ピンプラグ(オス)、私たちは皆、キーボードケーブルの端にそれを見てきました。

ネスト min-din 6ピン(メス)にあります マザーボード、マイクロコントローラーに接続するには、古いキーボードからはんだ付けする必要があり、不便です。

通常のソケットを入手することをお勧めします min-din6ピンケーブル用、例えば ebay.ru彼は立っています〜 1$ ..。 これは次のようになります。


(左組み立て、右分解)

例として、接続します キーボードArduino UNO(コントローラ ATmega328P)、以下のピン配列に従って配線を接続する必要があります。

はんだごての助けは必要ありません、ワイヤーはペンチで金属クランプに圧着されます、その結果、私は次のアダプターを手に入れました。


あなたの場合、あなたができるワイヤーの端 半田ボードに マイクロコントローラー、使用します ピン Arduino UNO.

  • GNDに接続します GND Arduino UNO
  • Vccに接続します 5V Arduino UNO
  • データ接続 2ピンArduinoUNO
  • CLKに接続します 3ピンArduinoUNO


ファームウェアのソースコード

一緒に働くインターネット上 PS / 2ケースの半分以上でキーボード付きのライブラリを使用する ps2keyboard、ここで、ループを介して、キーボードとの「変数-クリップボード」交換の状態がチェックされます。 私はループを通して何かをチェックすることのサポーターではありません、ファームウェアはキーボードでの作業で忙しいだけです。 計算を行ったり、遅い機器で作業したりする必要がある場合はどうなりますか? 何か苦しむこと、または私たちの計算やキーボードへの反応の速度があります。

割り込みを使用することをお勧めします...

コントローラーPINの受信 CLK(同期パルス)必要なキーボードから 外部割り込みとして設定から移動するとき 高い状態から低い状態ハンドラーでデータビットを データ。割り込みハンドラアルゴリズムは 少しずつ 蓄積する b送信 キーボードからコードをスキャンする.

Arduinoコード、接続 データ2位キック、 CLKに接続します 3位キック。

const int DataPin = 2; //キーボードのDATAチャネルconstint IRQpin = 3; //キーボードのCLKチャネルintcount = 1; //キーボードからの11ビットコードの現在のビットのカウンターintm = 0; //スキャンコードの現在のビットのカウンターuint8_tscan_code = 0; //押されたキーのスキャンコードvoidps2interrupt(void)(/ * CLKキーボードからの割り込みハンドラー* / / *キーボードからスキャンコードを少しずつscan_code変数に読み込みます* / if((count> 1)and (カウント<11)) { /* вырезаем из 11-и битного кадра, 8-и битные скан код */ scan_code |=(digitalRead(2)<11)(Serial.print(scan_code、HEX); / * PRINT * / Serial.println(); m = 0; count = 1; scan_code = 0;))void setup()(delay(1000); Serial.begin (9600); pinMode(DataPin、INPUT); pinMode(IRQpin、INPUT); attachInterrupt(1、ps2interrupt、FALLING); //ピン3(CLKキーボードチャネル)からの割り込みに設定ps2interruptハンドラSerial.begin(9600);)ボイドループ()(遅延(1000);)

const int DataPin = 2; //キーボードのDATAチャンネル

const int IRQpin = 3; //キーボードのCLKチャンネル

int count = 1; //キーボードからの11ビットコードの現在のビットのカウンター

int m = 0; //スキャンコードの現在のビットのカウンター

uint8_t = 0; //押されたキーのコードをスキャンします

void ps2interrupt(void)( / * CLKキーボード割り込みハンドラー* /

/ *キーボードからスキャンコードを少しずつscan_code変数に読み込みます* /

if((count> 1)and(count< 11 ) ) { / * 11ビットフレーム、8ビットスキャンコードから切り出し* /

| =(digitalRead(2)<< m ) ;