マウストラック-仮想化がより現実的になります





記事2

記事No. 3



こんにちは。 今日、私はあなたと私の成果を共有したいと思います、私はこの言葉、達成を恐れていません。 珍しいマウスを作りました。 これは、5つのキーと加速度計を備えたグローブタイプのマニピュレーターです。 しかし、まず最初に。 まず、少しの背景。



Arduinoプロジェクト



それはすべて、 Arduinoプロジェクトについて学んだことから始まりました。 Arduinoはハードウェアコンピューティングプラットフォームであり、その主なコンポーネントは単純なI / Oボードとプロセッシング/配線開発環境です。 Arduinoは、スタンドアロンのインタラクティブオブジェクトの作成と、コンピューターで実行されているソフトウェア(Macromedia Flash、Processing、Max / MSP、Pure Data、SuperColliderなど)の両方に接続できます。 -ウィキペディアは教えてくれます。 少し説明します。 実際、ArduinoはAtmelマイクロコントローラーをベースにしたデバッグボードです。 もちろん、Arduinoスカーフの購入は、マイクロコントローラー(以下、MK)を購入してデバッグボードを自分で作成するよりもはるかに高価です。 しかし、このプロジェクトには、プログラミングの初心者向けの大きなプラスがあります(これにお金を払う価値があると思います)。これは、プログラムとファームウェアMKの作成プロセスを簡素化します。これは、周辺機器を操作するためのメインライブラリを含むArduino IDE開発環境ですMK。 Wiring開発言語は同じM ++で、MKを操作するためのライブラリと関数のみがあります(もちろん、標準の言語関数が利用可能です)。



だから、私にとっては面白くなり、Atmega 1280 MKをベースにしたデバッグボードを注文しました。その後、Atmega 328 MKをベースにした2つの小さなスカーフを注文しました。 小さな「プロジェクト」に手を出して、私は本当に面白いことをすることにしました。 しかし、マウス-グローブを作るのは面白かったです。



加速度計とグローブのアイデア



考え直すことなく、加速度計MMA7260QR2を注文しました 。 私は、加速度計の助けを借りてマウスの動きを実現しようと考えました。 しかし、彼と実験した後、私は彼の行動の原理ではマウスカーソルの動きができないことを理解しました。 したがって、私はそれを別の機能に適用することにしました-それはマウスローラーと他のいくつかのアクションを置き換えます。 しかし、もう一度、最初にまず最初に。



アイデアは次のとおりです。グローブには、5つのボタンと加速度計を備えたデバイスがあります。 データはMKによってcomportを介してコンピューターに転送されます(私のarduinoボードはmini-usbを介して接続されます、つまり、comportはFTDIコンバーターチップを使用してusbバスに実装されているため、コンピューターはarduinoをcomポートと見なします)それらに作用します。 ウェブカメラとグローブのLEDを使用してカーソルを移動することにしました。加速度計では動作しないためです。 フリーウェアプログラムFreeTrackでは、これを実装できます。 要するに、これはWebカメラからのビデオを処理し、空間内のLED(または複数のLED)の位置に関するデータを受信する自由に管理可能なプログラムです。 このプログラムは、-avia、-autoシミュレータ、シューティングゲームなどでの追跡を目的としています。 私が使用した「マウスをエミュレートする」機能があります。



地元のラジオ用品店を訪れて、マウスから5つのマイクロスイッチ (人々の間で「ミクリキ」)を購入し、ボード(後でグローブを装着するプラットフォーム)の開発を開始しました。

1)マイクロコントローラーボード;

2)5 "mikrikov";

3)赤外線LED;

4)加速度計。



加速度計はそれ自体のスカーフに「植える」必要がありました(その寸法は6x6 mmです)。 加速度計のマニュアルによれば、私はスプリントレイアウトプログラムでボードを描き、自宅でプリント基板を製造する技術を使用して(レーザープリンターとアイロンを使用)、父と私はこの小さなスカーフを自宅でエッチングしました。 次に、それをMKに接続し、実験しました。



Arduino nano:説明



マイクロコントローラー

ATmega328

動作電圧(論理レベル)

5 v

入力電圧(推奨)

7-12 v

入力電圧(制限)

6-20 V

アナログ入力

8行。 ADC 10ビット

デジタル入力/出力

14(うち6つはPWM出力として使用可能)

DC入力/出力

40 mA

フラッシュメモリ

ブートローダーに2 KBを使用した32 KB(ATmega328)

RAM

2 Kb

Eeprom

1 Kb

クロック速度

16 MHz

寸法

1.85 cm x 4.2 cm







ボード製造-プラットフォーム



加速度計の使用方法を考え出した後、私は明確に考案されたデバイスを作ることにしました。 グローブとしてスポーツ用自転車のグローブを選びました。 手頃な価格で見晴らしが良い。



そのため、デバイスを構築するために必要なものがすべて揃ったので、これらすべてをMKに接続するためのスキームの開発に取りかかりました。 正直なところ、複雑なことは何もありません。 しかし、ダイアグラムを複数回描画する必要がありました。 計画を終えた後、私は父に頼り、自宅でプリント基板を製造するのと同じ技術を使用してプリント基板を製造するのを手伝いました。 マザーボードを作った後、私は1つの間違いを見ました-回路基板を描くときにボタンの寸法を考慮しなかったという事実のために、加速度計の場所は計画された場所でうまくいきませんでした。 まあ、彼らは自分の間違いから学びます。



ボードはんだ付け-プラットフォーム



はんだ付けがうまくできないので、この段階は私にとって最も困難でした。 しかし、父がそれを正しく行う方法を示して助けてくれた後、はんだ付けが容易になりました。 この段階については詳しく説明しません。 結果のみを表示します-MKと部品がはんだ付けされたボードです。

これがボードの外観です。



MKファームウェア



ファームウェア(MKのメモリ内のプログラム)の動作原理のみを説明します。 したがって、5つのキー、加速度計、およびLEDがMKに接続されています。 必要なのは、ボタンの状態に関するデータ(押されているかどうか)と加速度計からのデータ(どの方向に傾けられているか、どれだけ傾けられているか)を取得することです。 これはすべて、無限のサイクルで行われます(これがMK操作の原理です-オンの状態でプログラムを周期的に実行します)。 データは、com-ポートからコンピューターに送信されます。



C ++言語とプログラミング原理の基本的な知識があれば、ファームウェアを書くことは難しくありません。 Arduino IDE開発環境もこれに貢献します。これにより、MKのデータシートを何時間も読む必要がなく、どのレジスタがMKの機能に責任があるかを知る必要がありません。 しかし、これはもちろん難しいことではありません。あなた自身でさえ、あなたが何を扱っているかを知るためにこれを知る必要があります。 しかし、arduinoを使用すると、私が使用しているMKプログラミングの複雑さを詳しく調べることなく、「クイックスタート」を行うことができます。



グローブからデータを受信するためのマウストラックプログラム



動作原理:無限ループ内の別のスレッドで、目的のポートに問い合わせます。 プログラムはグローブ(MKから)からデータを受け取り、適切なアクションを実行します。 たとえば、button1が押された場合、これはプログラムのcomポートを介して報告され、「button1が押されました」というアクションが実行されます。 button1がリリースされると、「button1がリリースされました」と報告されます。 Delphi 7でプログラムを作成しました。次を実装しました。各指に、5つのマウスアクション(LMB、SCM、RMB、ローラーアップ、ローラーイン)のいずれか、またはウィンドウで4つのアクション(閉じる、最小化、移動、最大化/復元) 状況は加速度計の場合と同じです。同じ機能を右、左、前方、後方への傾斜に割り当てることができます。 加速度計の不感帯も調整可能です。 加速度計の傾きを0%〜100%で測定します。 そのため、傾斜に対する加速度計コマンドの応答しきい値を調整できます。 たとえば、しきい値が50%に設定されている場合、つまり加速度計が半分だけ傾いている場合、コマンドが実行されます。 そして、各軸に対して。 車軸といえば。 私が使用した加速度計では、そのうち3つはx、y、zです。 しかし、私はxとyのみを関与させました。







「マウスエミュレーション」タブでは、LMB、SCM、RMBなどの機能を使用して、ムービーを上下にスクロールします。 「ウィンドウを使用したアクション」タブでは、次の機能を使用できます。ウィンドウの移動、ウィンドウの閉じ、ウィンドウの最小化、ウィンドウの最大化/復元。







「ホットキー」グローブを使用することもできます。 つまり、割り当てられたプログラムを呼び出すためのいくつかのキーの組み合わせ。







構造と外観



指でキーを押すと、次のように思いつきました-指が曲がり、はんだ付けされたワイヤを引っ張って(私の場合、シリコンに取り付けられている)ボタンを押すと、ボタンが押されます。 そのような簡単な方法。 これがすべての外観です。



1-Atmega328 MKに基づくArduinoナノボード。 2-ボタン。 3-赤外線LED; 4-加速度計MMA7260QR2; 5-ガイド(自転車ブレーキケーブルから); 6-ベルクロ







最後に、このデバイスの動作のビデオ。 ゲームを犠牲にして、システムカーソルを使用するゲームでのみ機能すると言います。





UPD

彼は外見を楽にし、手袋を拒否しました(生地が厚くて触っていないのでキーボードで入力するのは不便です)





記事2

記事No. 3



All Articles