Arduino制御のUSBトラックパッド
コンポーネントと消耗品
> ![]() |
| × | 1 |
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
新しいRaspberryPiが登場するたびに、スペックを見て「本当にそれでラップトップを作りたい」と思いますが、常に1つの問題が発生します。それは、スタンドアロンのUSBトラックパッドが見つからないことです。ラップトップ。そのため、このプロジェクトでは、壊れた古いラップトップからトラックパッドを回収し、Arduino ProMicroを使用してUSBデバイスに変換します。
ステップ1:パーツ <図>


このプロジェクトに必要な部品は本当にシンプルです。古いラップトップのトラックパッド、Arduino micro、そしていくつかのワイヤーが必要になります。残念ながら、使用できるArduinoのフレーバーはごくわずかです。これらは、HID(ヒューマンインターフェイスデバイス)として表示されるようにプログラムできるため、Arduino micro、pro micro、Leonardoであり、コンピューター上でマウスまたはキーボード。これはArduinoUnoではできないことです。 Arduino pro microはここで入手できます:Hereトラックパッドについては、購入したい場合はここで見つけることができます:Here
ステップ2:なぜこれが機能するのか <図>

したがって、トラックパッドをArduinoとインターフェースできる理由は、ほとんどの古いラップトップのトラックパッドがPS / 2インターフェースを介してコンピューターと通信しているためです。つまり、トラックパッド回路にはデータとクロックであるPS / 2出力があり、このデータはArduinoによって読み取られます。 USBインターフェースを介してコンピュータに送信できるデータに変換されます。ここで、すべてのラップトップトラックパッドが同じであるとは限らないことに注意する必要があります。ほとんどすべての古いラップトップはPS / 2インターフェイスを使用しますが、一部の新しいラップトップはPS / 2インターフェイスの代わりにUSBインターフェイスを使用します。 PS / 2の代わりにこれらのUSBトラックパッドの1つを見つけることができた場合は、トラックパッドの名前をグーグルで検索し、USBピン配置を見つけてUSBコンピューターに接続するだけで機能します。ただし、このプロジェクトでは、より一般的なPS / 2トラックパッドを使用し、Arduinoを使用してUSBマウスにします。
ステップ3:配線 <図>





このプロジェクトの配線は非常に簡単です。トラックパッドに4つのはんだパッドを見つけるだけです。これらはT10(データ)、T11(時計)、T20のラベルが付いており、アース接続は大きな露出した金属面であるため、簡単に見つけることができます。これらの各パッドにワイヤーを注意深くはんだ付けしてから、対応するArduinoピンに接続する必要があります。
- T10はArduinomicroのピン10に接続します
- T11はArduinomicroのピン9に接続します
- T20はArduinomicroの5vに接続します
- グランドプレーンはArduinomicroのアースに接続します
トラックパッドのパッドにワイヤーをはんだ付けした後は、これらのパッドに圧力をかけないことが重要です。パッドにわずかな圧力を加えても、パッドが完全に外れてトラックパッドが役に立たなくなる可能性があります。はんだ付けした後、ホットグルーで接続を覆うのが最善です。
ステップ4:いくつかのライブラリをインストールする
このプロジェクトでは、ArduinoIDEに2つのライブラリをインストールする必要があります。これらのライブラリは次のとおりです。
- マウスライブラリ:こちら
- PS / 2ライブラリ:こちら
それらをダウンロードし、Arduino IDEのライブラリファイルを開いてドロップします。PS/ 2ライブラリはトラックパッドからデータを取得するために使用され、マウスライブラリを使用すると、そのデータを取得して、コンピューターが読み取ることができるマウスコマンドに変換できます。 USBポート。
ステップ5:コード <図>

ライブラリがインストールされたので、コードをArduinoにアップロードできます。コードは以下にありますが、ツールで選択したボードがArduino microまたはLeonardoでない限り、コードはアップロードまたはコンパイルされないことに注意する必要があります。コードのコンパイル中にエラーが発生した場合は注意してください。コードがアップロードされると、ArduinoはHIDデバイスとして再起動し、コンピューター上にマウスとして表示されます。
thistouchpad.ino
ステップ6:終了とトラブルシューティング
タッチパッドに触れると、画面上で動きが見られるはずです。ArduinoはUSBデバイスとして機能しているため、任意のコンピューターに接続でき、オペレーティングシステムやコンピューターの種類に関係なく、すぐにUSBマウスとして起動します。 。 Arduinoのプログラミングと配線のプロセスを経たくない場合は、PS / 2からUSBへのコンバーターを購入することもできますが、これはからのデータを台無しにすることを読んだので、これはお勧めしませんトラックパッドを使用できなくすることができます。さらに、Arduinoを使用することで、マウスの速度やダブルタップやスクロールなどのアクションなど、マウスに関するすべてを好みに合わせて完全にカスタマイズできます。完全にカスタマイズする方法に関する情報を見つけることができます。 Arduinoのマウスページはこちら。
トラックパッドがデータを送り返さない場合は、簡単に修正できる可能性があります。トラックパッドの背面を見て、部品番号を見つけてください。この部品番号をピン配置という単語でグーグルすると、データの場所が表示されます。 、クロックピンと5ボルトピンがあります。
いつもお読みいただきありがとうございます。ご不明な点がございましたら、コメント欄にご記入ください。折り返しご連絡できるよう最善を尽くします。
コード
- コード
コード Arduino
arduinoideに貼り付け#include#include #define PS2_DATA 10#define PS2_CLK 9byte mstat1; byte mstat2; byte mxy; byte mx;バイトマイ;バイトmz; int msval [2]; int repeatCnt; PS2 moose(PS2_CLK、PS2_DATA); void setup(){Mouse.begin(); moose.write(0xff); moose.read(); moose.read(); moose.read(); moose.write(0xf0); moose.read(); delayMicroseconds(100); moose.write(0xe8); moose.read(); moose.write(0x03); moose.read(); moose.write(0xe8); moose.read(); moose.write(0x00); moose.read(); moose.write(0xe8); moose.read(); moose.write(0x01); moose.read(); moose.write(0xe8); moose.read(); moose.write(0x00); moose.read(); moose.write(0xf3); moose.read(); moose.write(0x14); moose.read(); Serial.begin(9600);} void ms_read(){moose.write(0xeb); moose.read(); mstat1 =moose.read(); mxy =moose.read(); mz =moose.read(); mstat2 =moose.read(); mx =moose.read(); my =moose.read(); msval [0] =(((mstat2&0x10)<<8)|((mxy&0x0F)<<8)| mx); msval [1] =(((mstat2&0x20)<<7)|((mxy&0xF0)<<4)| my); msval [2] =int(mz);} void loop(){ms_read(); if(msval [0]> 0およびmsval [2]> 10){repeatCnt ++; } else {repeatCnt =0; } if(repeatCnt> 2){msval [0] =map(msval [0]、580、5164、-1023、1023); msval [1] =map(msval [1]、1120、5967、1023、-1023); Mouse.move(msval [0] / 200、msval [1] / 200); }}
製造プロセス