トランジスタとリレー (KVM スイッチ) 上のコンピューター コンソールの単純なスイッチ。 フル コントロール - KVM over IP スイッチ

ノキア 31.07.2021
ノキア

それでは始めましょう。ファームウェアには、Flip というメーカーのユーティリティが必要です。 ダウンロード、インストール、実行すると、プログラム ウィンドウが表示されます。

最初は、ボタン (daws) がアクティブではありません。これは正常です。arduino をコンピューターに接続して閉じます。USB ポート側からの 2 つの極端な接点、RESET と GND を開きます。

奇妙なことに、ATmega16u2 という名前の新しいデバイスがシステムに表示されるはずです。ドライバーを (プログラムのあるフォルダーに) インストールし、フリップ プログラムの [設定] > [通信] > [USB] > [開く] タブを選択します。ボタンがアクティブになるはずです。 念のため、ファームウェアのバックアップを作成して、すべてを元の場所に戻すことができます。 「File」メニューで、「Load HEX File」をクリックします。プログラムはパスを要求します。ファームウェア ファイルを C: ドライブのルートに置き、ファームウェアで目的の hex ファイルを選択し、 「消去」、「プログラム」、「検証」のチェックボックスをオンにして、「実行」をクリックします。 切断します-arduinoと出来上がりを接続します...これで、組み込みのUSBを介してarduinoにファームウェアをアップロードできなくなりますが、ボタンのない優れたキーボードが得られました.

arduino ファームウェアについて心配する必要はありません。別の USB To TTL アダプターを介して Arduino IDE からファームウェアをダウンロードすることは可能ですが、これは今ではあまり便利ではないと言わざるを得ません。

USB To TTL アダプターを接続します。たとえば、次のようになります。

白、緑、黒の接点が必要です。これらはそれぞれ RX、TX、および GND であり、それらを arduino の同じ指定のピンに接続します。RX から TX、および TX から RX の逆のみです。 赤い接点は使用しないでください。

USB To TTL をコンピュータに接続し、ドライバをインストールすると、新しい COM ポートがデバイス マネージャに表示されます。 arduino IDE を開き、ボード - Arduino / Genuino Uno、ポート - 新しく作成されたシリアル ポートを設定します。

Arduino ファームウェア入門

必要なライブラリを arduino IDE に追加しましょう: リンク github.com/SFE-Chris/UNO-HIDKeyboard-Library をたどり、[Clone or download] > [Download ZIP] をクリックします。 次に arduino IDE で、[スケッチ] タブ > [ライブラリを含める] > [.ZIP ライブラリを追加] を選択し、ダウンロードした zip アーカイブを選択します。

準備は終わり、ファームウェアに直接進みます。 私の文章をコピーする:

Arduino-スケッチ

#含む HID キーボード; int コレクション。 void setup() ( keyboard.begin(); ) void loop() ( while (Serial.available()) (//データが利用可能になったらループを開始します sbor += Serial.read();//データを読み取り、追加しますif (sbor == 27)( // 制御シーケンスの文字の外観 for (int i=0; i<=4; i++){//сложение последовательности if (sbor == 165) {//для определения F1-F12 на разных терминалах могут быть разные значения sbor += sbor; } sbor += Serial.read(); delay(1); } } } if (sbor >0) ( //シーケンス スイッチ (sbor) の 10 進数の合計にジャンプします ( case 505: keyboard.pressSpecialKey(F1); break; case 506: keyboard.pressSpecialKey(F2); break; case 507: keyboard.pressSpecialKey(F3) ); break ;case 508: keyboard.pressSpecialKey(F4);break;case 509: keyboard.pressSpecialKey(F5);break;case 511: keyboard.pressSpecialKey(F6);break;case 512: keyboard.pressSpecialKey(F7); break; case 513: keyboard.pressSpecialKey(F8); break; ケース 340: keyboard.pressSpecialKey(F9); break; ケース 341: keyboard.pressSpecialKey(F10); break; ケース 343: keyboard.pressSpecialKey(F11); break; case 344: keyboard.pressSpecialKey(F12); break; case 13: keyboard.pressSpecialKey(ENTER); break; case 22: keyboard.pressSpecialKey(ESCAPE); break; case 127: keyboard.pressSpecialKey(BACKSPACE); break; case 9 : keyboard.pressSpecialKey(TAB); break; case 32: keyboard.pressSpecialKey(SPACEBAR); break; case 26: keyboard.pressSpecialKey(PAUSE); break; case 292: keyboard.pressSpecialKey(INSERT); 壊す; ケース 456: keyboard.pressSpecialKey(HOME); 壊す; ケース 295: keyboard.pressSpecialKey(PAGEUP); 壊す; ケース 294: keyboard.pressSpecialKey(END); 壊す; ケース 296: keyboard.pressSpecialKey(PAGEDOWN); 壊す; case 182: keyboard.pressSpecialKey(RIGHTARROW); 壊す; ケース 183: keyboard.pressSpecialKey(LEFTARROW); 壊す; ケース 181: keyboard.pressSpecialKey(DOWNARROW); 壊す; ケース 180: keyboard.pressSpecialKey(UPARROW); 壊す; ケース 293: keyboard.pressSpecialKey(DELETE); 壊す; ケース 320: keyboard.pressSpecialKey((CTRL | ALT), DELETE); 壊す; //alt + del を押して ctl+alt+del を呼び出す case 346: keyboard.pressSpecialKey(ALT, F4); 壊す; //alt+f4 を呼び出すには、shift + F4 を押します。デフォルト: keyboard.pressKey(sbor); 壊す; ) //Serial.println(sbor);//USB に接続せずにデバッグする場合のみ keyboard.releaseKey(); コレクション = NULL; ) )


それをarduino IDEに貼り付けて、チェックボタンを押します。 ここで最も重要な段階が始まります。ここで最も重要なことは、その瞬間を捉えることです。最初に成功する人はほとんどいません。 arduino IDEでダウンロードボタンを押します。最初にコンパイルログの白い行が実行され、次にオレンジ色の行が続きます。これはすでにシリアルポートへの接続を確立しています。これは、キャッチして時間を割く必要があるまさにその瞬間ですarduinoボードのRESETボタンを押します。 ファームウェアをロードする必要があります。すべてが成功すると、このような碑文が表示されます

Avrdude: オンチップ フラッシュ データの読み取り: 読み取り | #################################################### # | 100% 0.34s avrdude: 検証中 ... avrdude: 2934 バイトのフラッシュ検証済み avrdude が完了しました。 ありがとう。
何度か試行してもファームウェアがロードされない場合は、RX ピンと TX ピンを交換してみてください。また、GND ピンがしっかりと接続されているかどうかも確認してください。

ゴール

ラズベリーでコンソールを開き、次のように記述します。

sudo raspi-config
Raspberry セットアップ メニューが開きます。[Advanced Options] > [Serial] を選択し、[No] を選択します。

おそらく、これらの操作は必要ないので、再保険. このパラメーターは、ラズベリー OS がシリアル ポートと対話するかどうかを決定します。この対話は主にデバッグに必要です。そのため、自由にオフにしてください。干渉するだけです。 このポートを介してarduinoと通信すると、システムが空気を詰まらせます。

minicom プログラムをインストールします。

Minicom は、シリアル ポートを操作するための単純なプログラムです。

sudo apt-get install minicom -y
デバイス / dev / ttyAMA0 へのアクセス権を設定しました - これは同じシリアル ポートです。

sudo chown pi /dev/ttyAMA0 sudo chmod 744 /dev/ttyAMA0
ミニコムを起動します。

須藤 minicom -s
プログラム メニューが開き、「Serial port setup」項目を選択すると、別のメニューが開きます。A キーを押して「Serial Device」を選択し、/dev/ttyAMA0 を書き込み、Enter キーを押して、Bps/Par/Bits 項目を選択します。文字 E、別の文字が表示されます メニューを押して C と Q 行を押します Current: この "9600 8N1" のようになるはずです Enter キーを押します。 F - Hardware Flow Control: と G - Software Flow Control: の行が No であることを確認します。通常、すべてが下のスクリーンショットのようになっている必要があります。Enter キーを押します。

これらの設定をデフォルトの「Save setup as dfl」として保存し、「Exit from Minicom」を閉じます。

繋がり

さらに進んで、ほとんどすべての準備が整いました.arduinoをラズベリーのシリアルポートに接続するだけです。次のようになります。

ここで 1 つのポイントがあります。arduino とラズベリーは電圧レベルが異なり、理論的には調整する必要があります。記事を読むことをお勧めします。

すべてが調整なしで直接機能しましたが、悪い例を模倣してロジックレベルコンバーターを購入しないでください。最も単純なものは次のようになります。

または、少なくとも抵抗器に分圧器を組み立てます。

発売

すべての準備が整いました。開始できます。

すべての接続を確認し、raspberry pi をオンにして、raspberry コンソールに移動し、minicom を起動します。 早速予約します、sshでラズベリーに接続しました、クライアントはKiTTY(PuTTYの改造版)を使いました、これは重要です。 他の端末では、送信されたキーの値が異なる場合があるため、風を考慮に入れる必要があります-スイッチケーストランジションの数を変更します。

一般的には、「そのまま」と言うように、私はあなたに引き渡します。 まあ、私はおそらくこれで終わります。自家製の IP KVM の準備が整いました。

追記

最後に、乾燥残渣で何が起こったかを説明します。

長所:

- 価格
- デバイスは比較的安価であることが判明しました
- ラズベリーパイ: 約 2700 ルーブル。
- Arduino UNO: 約 400 ルーブル。
- VGA から AV へのコンバーター: 約 700 ルーブル。
- ビデオ キャプチャ カード: 500 摩擦。
- 合計: 4300 こする。

- 微調整
KEYBOARDPOWER と VOLUMEUP まで、ほぼすべての組み合わせをインターセプトしてそれらに割り当てることができます。ちなみに、HIDKeyboard.h ヘッダー ファイルで可能な値を確認したり、独自の値を追加したりできます。

マイナス:

- ビデオとクリックの送信の両方のブレーキ
- 2番目で最大のものは 画質、ここでは悲しい絵文字が必要です。ターゲットコンピューターの解像度を最小限に抑えたとしても、できることはBIOSを構成してブートローダーで項目を選択することだけです。 しかし、これには実際に KVM が必要なのではないでしょうか?

パソコンを長期間使用している場合は、ソフトウェアだけでなく、ハードウェア、つまりコンピューター自体も定期的に更新する必要があります。 そして、古いものをどうするか? 特にシステムユニットだけが残っている場合(モニターが新しいものに「移動」した場合)。 10年前に購入し、当時の最新技術の成果であった「486DX33」は、現在では販売不可能となっています。

はい、それは残念です-結局のところ、彼の長い(コンピューターの基準による)人生の間に、彼はなんとかマイクロコントローラーとPROMプログラマーを取得し、さまざまなアマチュア無線と無線工学プログラムがインストールされました(そしてうまく機能しました)。 ただ、インターネットでの作業には適していません(そのため、新しいものを購入しました)。

このすべての「アーキテクチャ」を新しいものにインストールするのは問題があります。COM ポートと LPT ポートが十分になく (古いものには COM が 3 つと LPT が 2 つありました)、古い周辺機器の何も新しい USB ポートで動作しません。 そのため、システム ユニット 2 台とマウス 2 台を保持することにしました。

そして、モニターとキーボードを切り替えます。 さらに、これらの目的のために、(結局のところ、うんざりするほど)ジョブスイッチが販売されています。

取得した職場「Maxtro」の機械的スイッチは、1か月以内に機能しました。 次に、「フリル」が始まりました-キーボードが正しく機能しないか、すべての色がモニターに表示されません。 すべてがうまく機能する瞬間を捉えるために、常にハンドルを押し続けなければなりません。

彼との長い苦痛の後、自家製の職場スイッチを作ることが決定されましたが、接点が単に剥がれた台湾の「galletnik」ではなく、2つのボタンで制御されるソビエトのRES-22リレーでした。

驚いたことに、「Maxtro」はキーボードとモニターのコネクタのすべての接点を切り替えたため、非常に多くの接点がありました。 実際、すべての「GND」を一緒に接続でき、キーボードの電源を2つのダイオードで切り替えることができるため、このような切り替えには7つの接点グループで十分です。 各 RES-22 には 4 つの接点グループがあるため、そのうちの 1 つでも残り、リレー自体を制御するために使用できます (リレーのトリガー効果)。

回路図

この回路は、オンになっているコンピュータ 2 を、そこからキーボードへの +5 V 供給電圧によって認識するように作られています。 コンピュータ2の電源を入れると、+ 5Vの電圧がコンデンサC2を通ってトランジスタVT1のベースに入り、リレーが開いてオンになります。

これは、フリー コンタクト グループ K1.4 によるセルフブロッキングであり、充電後も C2 はオンのままです。 この状態では、キーボードとモニターはコンピューター 2 に切り替えられます。非通電状態では、キーボードとモニターは古いコンピューター 1 に切り替えられます。

米。 1. コンソール スイッチの概略図。

「Maxtro」スイッチからすべてのパーツが鉄製ケースに組み込まれています。 「マウス」は、それぞれのコンピュータで別々に使用されます。 スイッチは、故障したプリンタの AC アダプタから電力を供給されています。

2 台のコンピューター間でプリンターを切り替える問題は、別の方法で解決されます。 プリンター (Samsung 1210) には、LPT と USB の 2 つのポートがあります。 LPT ポートは古いシステム ユニットに接続され、USB は新しいシステム ユニットに接続されます。

オフィスでのブロードバンド インターネットの出現により、本格的なリモート管理が可能になりました。 この技術のおかげで、サービス組織は顧客の要求に対する応答時間を大幅に短縮でき、システム管理者はオフィスから離れていてもサポートを提供できるようになりました。 ただし、リモート管理ツールは OS の起動後にのみ機能します。何らかの理由でこれが不可能な場合は、専門家の物理的な存在が必要です。 KVM over IP スイッチは、この問題を解決できます。

おそらくすべての管理者は、KVM スイッチが何であるかを知っています。このデバイスを使用すると、1 つのコンソール (モニター、キーボード、およびマウス) を使用して複数の PC を制御できます。 KVM スイッチは、個人用に設計されたシンプルなもののいずれかです。

したがって、ラック マウントの場合、カスケードをサポートし、多数のサーバー (最大数百台) を 1 か所から一度に管理できます。

この会社では KVM over IP スイッチが際立っており、TCP / IP プロトコルを使用してどこからでも PC コンソールにアクセスできます。 長い間、これらのデバイスは「高級品」と見なされていましたが、最近では非常に人道的な価格で提供されるようになり、小規模な組織にとって非常に手頃な価格になりました。

例を使用して、KVM over IP スイッチの可能性を検討してください ATEN アルトゥーセン KH1508i 727米ドル相当。 魅力的な価格に加えて、このデバイスは最大 256 台の PC を制御でき (スイッチのカスケード接続時)、PC、Mac、Sun プラットフォーム、PS / 2 および USB 経由の PC 接続をサポートします。

スイッチは1Uサイズでラックマウントが可能です。 フロント パネルには、出力切り替えボタン、アクティブ ポート インジケータ、ファームウェア アップデート コネクタ、電源インジケータ、およびリセット ボタンがあります。

また、UTP 5e ツイストペアを使用して管理対象 PC を接続することで、最大 40 m 離れた場所に配置することも可能になり、隣接ラック (または 1 階下) にあるサーバーを問題なく接続できるようになりました。 )と高価な専用ケーブルの敷設。 制御された PC、ネットワーク、スレーブ スイッチ、およびコンソール用のコネクタは、スイッチの背面にあります。

管理対象の PC を接続するには、必要な周辺機器をエミュレートするクライアント モジュールが使用されます。 エミュレーションは、制御デバイスの存在に関係なく、モジュールによって直接実行されます。 これは、スイッチをオンにするのを忘れた場合でも、管理対象 PC は起動時にキーボード、マウス、およびモニターを引き続き検出するため、アクセスするためにそれらを再起動する必要がないことを意味します。

製造元は、さまざまなプラットフォームのコンピューターを管理するための幅広いクライアント モジュールを提供しています。PC には 2 種類のクライアント モジュールが用意されています: KA9520 (PS / 2) と KA9570 (USB) の価格は 71 米ドルです。 各モジュールは、RJ-45 インターフェイスと、VGA および PS / 2 (USB) コネクタを備えた 1/2 メートル ケーブルを備えたコントローラーであり、独自のファームウェアを持ち、メーカーによって定期的に更新されます。モジュール ケースには、それを切り替えるスイッチがあります。ファームウェアアップデートモードに。 KA9520 モジュールを以下に示します。

垂直面に取り付けるために、モジュールには特別なバスケットが付属しています。

スイッチの設定は、OSD メニューまたは Web インターフェイスを介して (限定的に) 行われます。 ご家庭に Mac または Sun がない場合、すべての設定は Web 経由で利用できます (デフォルトでは、すべてのスイッチ ポートが PC プラットフォーム用に構成されています)。

デバイスへの接続は、安全な HTTPS プロトコルを使用して行われます。スイッチはポート 80 で接続を受け入れるにもかかわらず、安全な接続 (ポート 443) にリダイレクトします。 ポート 9000 は、スイッチとクライアント プログラム間のデータ転送に使用されます。これは、ポートを転送するときに考慮する必要があります (つまり、80 および/または 443 に加えて、9000 も転送する必要があります)。

スイッチのネットワーク機能に移りましょう。デフォルトでは、DHCP 経由で設定を受信するように構成されています。これは、事前設定された IP よりもはるかに優れていると考えられます。DHCP でデバイスに割り当てられたアドレスを見てください。サーバー設定を変更し、対応する MAC アドレス用に予約します (ケース デバイスに示されています)。

アクセスには、任意のブラウザー (理想的には IE) を使用できます。Web インターフェースは設定が豊富ではありません。Windows (IE 経由のみ) または Java クライアントを実行するか、ブラウザーで実行できない場合はそれらをダウンロードできます。道。

このパラメータには特に注意が必要です。 ネットワーク転送速度、デバイスで快適に作業するには、スイッチにアクセスするチャネルの最低保証速度を指定する必要があります。

管理対象 PC にアクセスするには、クライアントを実行する必要があります。 Windows 7 64 ビットでは Windows クライアントを実行できませんでした。この場合、Java 対応プラットフォームで実行されている Java クライアントが役に立ちます。 すでにクライアントで、デバイスを微調整できます。

管理対象デバイスに切り替えるには、タブを使用します 主要、スイッチ (またはスイッチのチェーン) に接続されているすべてのクライアント モジュールを表示します。

データ転送速度を正しく設定すると、リモート クライアントを介した作業は非常に快適になります。唯一の欠点は、リモート システムのマウス カーソルが、コントロール PC のカーソルから (場合によっては大幅に) 遅れることです。

ただし、PC 負荷レベルでの制御が必要な緊急事態では、ほとんどの場合、KVM Over IP を介して作業する必要があることを覚えておく必要があります。それ以外の場合は、RDP を介して作業する方がはるかに快適です。 USB モジュール (KA9570) を使用している場合は、不快な驚きを避けるために、BIOS で USB キーボードとマウスのサポートが有効になっていることを確認してください。

また、サーバーの BIOS を、キーボードからの信号またはネットワーク経由でオンになるように構成することをお勧めします。 これにより、サーバーの電源を突然オフにしたり、熱心な従業員の 1 人がサーバーをオフにしたりした場合に、リモートでサーバーの電源をオンにすることができます。

KVM over IP スイッチを使用すると、管理者はインターネット アクセスがあれば、世界中のどこからでも管理対象 PC をほぼ完全に制御できます。 そして、一見するとデバイスの価格が比較的高いように見えますが、提供される機会によって相殺される以上のものです。 いずれにしても、KVM IP スイッチや技術者の到着に必要な企業のダウンタイムなど、どちらがコストがかからないかを見積もる価値があります。

  • タグ:

JavaScriptを有効にしてご覧ください

この記事は別の人の印象に基づいて書かれました - 著者に感謝します! この記事では、ほぼ自作の IP KVM スイッチを作成することができました。これは素晴らしいことです。 しかし、私はその理由をほとんど説明します。 はい、著者が書いたようにすべてがそこで機能します... BIOSを再起動するまで、すべての魔法がそこに消え、どんなに頑張っても何も起こりません.

この残念な誤解を正し、できるだけ安くコンパクトにまとめることにしました。 Raspberry Pi と Arduino のステレオタイプから始めましょう。次の記事では別のハードウェアについて説明します。

必要なもの:

1. ビデオ キャプチャ カードは、このような UVC ドライバーをサポートする必要があります。
aliexpress と他の中国の店でいっぱい。

UVC は標準化されたオープン ソース ドライバーであり、ほとんどの Linux ディストリビューションにデフォルトで含まれています。他のドライバーでは問題が発生する可能性があります。

2. VGA から AV へのコンバーター:



ノート! まさに VGA から AV への変換が必要であり、その逆は必要ありません。

3. Arduino UNO、つまりUNOは、Atmega16u2チップを搭載しているため、まず第一に興味があります。 ここでは USB ポートの隣にあり、両方で動作する Atmega8u2 チップを搭載した arduins もあります。

4. そしてもちろん、Raspberry Pi はバージョン 2 b を持っていたので、この記事に書かれていることはすべて彼に関連していますが、一般的に、他のラズベリー モデルでは特に問題はないと思います。

ディストリビューションのアップロード

さて、入力データが与えられたので、始めましょう.私は 2015-05-05-raspbian-wheezy ディストリビューションを使用しました.これはおそらく重要ではありません.Debian ベースのディストリビューションには、さらなる操作が適しているはずです.

ビデオ キャプチャ ボードをラズベリーに接続します。特にボードに付属の USB 延長ケーブルを使用せずに USB に直接接続することをお勧めします。そうしないと、ビデオのブレーキングやラズベリーのフリーズなどが発生する可能性があります。

コンソールに移動し、パッケージを更新します。

sudo apt-get update && sudo apt-get upgrade -y

ビデオ伝送

ボードが決定されているかどうかを確認します。

Ls /dev/video*
/dev/video0 のような出力が必要です。

Motion をインストールし、キャプチャした画像をブロードキャストします。

sudo apt-get install motion -y
自動実行構成の編集:

須藤 nano /etc/default/motion
start_motion_daemon を「yes」に設定します。 変更を保存 Ctrl + x、y、Enter。

motion(a) 自体の構成の編集:

sudo nano /etc/motion/motion.conf
パラメータ値を次のように変更します。

このパラメーターは、アプリケーションの起動をサービスとして定義します。

デーモンオン
これらのパラメーターは、送信される画像の解像度を決定します。より高い解像度を設定しても意味がありません。 ビデオ キャプチャは PAL または SECAM 規格に制限されており、その解像度は 720x576 です。 ところで、これは残念な欠点ですが、それについては後で詳しく説明します。

幅800 高さ600
フレームレート:

フレームレート 25
スクリーンショットの保存を無効にします。

output_normal オフ
画像伝送品質:

ウェブカメラの品質 100
フレームレート:

webcam_maxrate 25
他IPからの接続制限の解除

Webcam_localhost オフ
変更を保存 Ctrl + x、y、Enter。

ラズベリーをリロードします。

sudo 再起動
すべてが正しく行われている場合は、ビデオ キャプチャ ボードの LED が点灯するまで数分かかります。

ブラウザをラズベリー ポート 8081 に接続すると、灰色または青色の四角形が表示され、下から時間が表示されます。

プロセスが開始されました。VGA ポートから信号をキャプチャする被害者を探しています。それをコンバータの「VGA IN」ポートに接続し、ビデオ キャプチャ カードを「VIDEO OUT」に接続します。 この写真のようなものが得られるはずです。怖がらないでください。ケーブルが悪いので、画像が「2倍」になります。別の画像で試してみました。改善されましたが、解像度を変更することはできません。 720x576 は、コンバーターとビデオ キャプチャ カードの制限であり、どんなに望んでも克服できません。

さて、彼らはイメージを転送することを学びました。残っているのは、コントロールを転送することだけです。

支配権の移転

このために、ご想像のとおり、arduino を使用します。 理由により、選択はArduino UNOに落ちました.Atmega16u2と呼ばれるチップがあり、私たちの目的に非常に必要です。そのおかげで、コンピューターのBIOSにarduinoをUSBキーボードとして検出させることができました。 デフォルトでは、Arduino ボードの一部として、このチップは、Arduino ボード上の大きな長方形のチップである Atmega328p マイクロコントローラーにファームウェアをアップロードするための USB からシリアルへのコンバーターとして機能します。 実際、Atmega16u2 は同じマイクロコントローラーですが、重要な違いは、USB バスで直接動作できることです。 適切なファームウェアを備えた Atmega16u2 は、ほぼすべての USB デバイスをエミュレートできます。 私が何を言っているのか分かりますか? 私たちはこの工学の奇跡を縫い、社会のために機能させます。

ファームウェア Atmega16u2

Atmega16u2 を、シリアル ポート経由で特定のタイプのコマンドを受け入れる USB キーボードに変えるファームウェアがインターネット上で見つかりました。

この記事の手順は Windows 用に書かれていますが、Linux ユーザーはこれを使用できます。

それでは始めましょう。ファームウェアには、Flip というメーカーのユーティリティが必要です。 ダウンロード、インストール、実行すると、プログラム ウィンドウが表示されます。

最初は、ボタン (daws) がアクティブではありません。これは正常です。arduino をコンピューターに接続して閉じます。USB ポート側からの 2 つの極端な接点、RESET と GND を開きます。

奇妙なことに、ATmega16u2 という名前のシステムに新しいデバイスが表示されるはずです。ドライバーを (プログラムのあるフォルダーに) インストールし、フリップ プログラムの [設定] → [通信] → [USB] → [開く] タブを選択します。ボタンがアクティブになるはずです。 念のため、ファームウェアのバックアップを作成して、すべてを元の場所に戻すことができます。 「File」メニューで、「Load HEX File」をクリックします。プログラムはパスを要求します。ファームウェア ファイルを C: ドライブのルートに置き、ファームウェアで目的の hex ファイルを選択し、 「消去」、「プログラム」、「検証」のチェックボックスをオンにして、「実行」をクリックします。 切断します-arduinoと出来上がりを接続します...これで、組み込みのUSBを介してarduinoにファームウェアをアップロードできなくなりますが、ボタンのない優れたキーボードが得られました.

arduino ファームウェアについて心配する必要はありません。別の USB To TTL アダプターを介して Arduino IDE からファームウェアをダウンロードすることは可能ですが、これは今ではあまり便利ではないと言わざるを得ません。

USB To TTL アダプターを接続します。たとえば、次のようになります。

白、緑、黒の接点が必要です。これらはそれぞれ RX、TX、および GND であり、それらを arduino の同じ指定のピンに接続します。RX から TX、および TX から RX の逆のみです。 赤い接点は使用しないでください。

USB To TTL をコンピュータに接続し、ドライバをインストールすると、新しい COM ポートがデバイス マネージャに表示されます。 arduino IDE を開き、ボード - Arduino / Genuino Uno、ポート - 新しく作成されたシリアル ポートを設定します。

Arduino ファームウェア入門

必要なライブラリを arduino IDE に追加しましょう: リンク github.com/SFE-Chris/UNO-HIDKeyboard-Library をたどり、[Clone or download] → [Download ZIP] をクリックします。 次に、arduino IDE で、[スケッチ] → [ライブラリを含める] → [.ZIP ライブラリを追加] タブを選択し、ダウンロードした zip アーカイブを選択します。

準備は終わり、ファームウェアに直接進みます。 私の文章をコピーする:

Arduino-スケッチ

#含む HID キーボード; int コレクション。 void setup() ( keyboard.begin(); ) void loop() ( while (Serial.available()) (//データが利用可能になったらループを開始します sbor += Serial.read();//データを読み取り、追加しますif (sbor == 27)( // 制御シーケンスの文字の外観 for (int i=0; i<=4; i++){//сложение последовательности if (sbor == 165) {//для определения F1-F12 на разных терминалах могут быть разные значения sbor += sbor; } sbor += Serial.read(); delay(1); } } } if (sbor >0) ( //シーケンス スイッチ (sbor) の 10 進数の合計にジャンプします ( case 505: keyboard.pressSpecialKey(F1); break; case 506: keyboard.pressSpecialKey(F2); break; case 507: keyboard.pressSpecialKey(F3) ); break ;case 508: keyboard.pressSpecialKey(F4);break;case 509: keyboard.pressSpecialKey(F5);break;case 511: keyboard.pressSpecialKey(F6);break;case 512: keyboard.pressSpecialKey(F7); break; case 513: keyboard.pressSpecialKey(F8); break; ケース 340: keyboard.pressSpecialKey(F9); break; ケース 341: keyboard.pressSpecialKey(F10); break; ケース 343: keyboard.pressSpecialKey(F11); break; case 344: keyboard.pressSpecialKey(F12); break; case 13: keyboard.pressSpecialKey(ENTER); break; case 22: keyboard.pressSpecialKey(ESCAPE); break; case 127: keyboard.pressSpecialKey(BACKSPACE); break; case 9 : keyboard.pressSpecialKey(TAB); break; case 32: keyboard.pressSpecialKey(SPACEBAR); break; case 26: keyboard.pressSpecialKey(PAUSE); break; case 292: keyboard.pressSpecialKey(INSERT); 壊す; ケース 456: keyboard.pressSpecialKey(HOME); 壊す; ケース 295: keyboard.pressSpecialKey(PAGEUP); 壊す; ケース 294: keyboard.pressSpecialKey(END); 壊す; ケース 296: keyboard.pressSpecialKey(PAGEDOWN); 壊す; case 182: keyboard.pressSpecialKey(RIGHTARROW); 壊す; ケース 183: keyboard.pressSpecialKey(LEFTARROW); 壊す; ケース 181: keyboard.pressSpecialKey(DOWNARROW); 壊す; ケース 180: keyboard.pressSpecialKey(UPARROW); 壊す; ケース 293: keyboard.pressSpecialKey(DELETE); 壊す; ケース 320: keyboard.pressSpecialKey((CTRL | ALT), DELETE); 壊す; //alt + del を押して ctl+alt+del を呼び出す case 346: keyboard.pressSpecialKey(ALT, F4); 壊す; //alt+f4 を呼び出すには、shift + F4 を押します。デフォルト: keyboard.pressKey(sbor); 壊す; ) //Serial.println(sbor);//USB に接続せずにデバッグする場合のみ keyboard.releaseKey(); コレクション = NULL; ) )


それをarduino IDEに貼り付けて、チェックボタンを押します。 ここで最も重要な段階が始まります。ここで最も重要なことは、その瞬間を捉えることです。最初に成功する人はほとんどいません。 arduino IDEでダウンロードボタンを押します。最初にコンパイルログの白い行が実行され、次にオレンジ色の行が続きます。これはすでにシリアルポートへの接続を確立しています。これは、キャッチして時間を割く必要があるまさにその瞬間ですarduinoボードのRESETボタンを押します。 ファームウェアをロードする必要があります。すべてが成功すると、このような碑文が表示されます

Avrdude: オンチップ フラッシュ データの読み取り: 読み取り | #################################################### # | 100% 0.34s avrdude: 検証中 ... avrdude: 2934 バイトのフラッシュ検証済み avrdude が完了しました。 ありがとう。
何度か試行してもファームウェアがロードされない場合は、RX ピンと TX ピンを交換してみてください。また、GND ピンがしっかりと接続されているかどうかも確認してください。

ゴール

ラズベリーでコンソールを開き、次のように記述します。

sudo raspi-config
ラズベリーの設定メニューが開くので、「詳細オプション」→「シリアル」を選択し、「いいえ」を選択します。

おそらく、これらの操作は必要ないので、再保険. このパラメーターは、ラズベリー OS がシリアル ポートと対話するかどうかを決定します。この対話は主にデバッグに必要です。そのため、自由にオフにしてください。干渉するだけです。 このポートを介してarduinoと通信すると、システムが空気を詰まらせます。

minicom プログラムをインストールします。

Minicom は、シリアル ポートを操作するための単純なプログラムです。

sudo apt-get install minicom -y
デバイス / dev / ttyAMA0 へのアクセス権を設定しました - これは同じシリアル ポートです。

sudo chown pi /dev/ttyAMA0 sudo chmod 744 /dev/ttyAMA0
ミニコムを起動します。

須藤 minicom -s
プログラム メニューが開き、「Serial port setup」項目を選択すると、別のメニューが開きます。A キーを押して「Serial Device」を選択し、/dev/ttyAMA0 を書き込み、Enter キーを押して、Bps/Par/Bits 項目を選択します。文字 E、別の文字が表示されます メニューを押して C と Q 行を押します Current: この "9600 8N1" のようになるはずです Enter キーを押します。 F - Hardware Flow Control: と G - Software Flow Control: の行が No であることを確認します。通常、すべてが下のスクリーンショットのようになっている必要があります。Enter キーを押します。

これらの設定をデフォルトの「Save setup as dfl」として保存し、「Exit from Minicom」を閉じます。

繋がり

さらに進んで、ほとんどすべての準備が整いました.arduinoをラズベリーのシリアルポートに接続するだけです。次のようになります。

ここで 1 つのポイントがあります。arduino とラズベリーは電圧レベルが異なり、理論的には調整する必要があります。記事を読むことをお勧めします。

すべてが調整なしで直接機能しましたが、悪い例を模倣してロジックレベルコンバーターを購入しないでください。最も単純なものは次のようになります。

または、少なくとも抵抗器に分圧器を組み立てます。

発売

すべての準備が整いました。開始できます。

すべての接続を確認し、raspberry pi をオンにして、raspberry コンソールに移動し、minicom を起動します。 早速予約します、sshでラズベリーに接続しました、クライアントはKiTTY(PuTTYの改造版)を使いました、これは重要です。 他の端末では、送信されたキーの値が異なる場合があるため、風を考慮に入れる必要があります-スイッチケーストランジションの数を変更します。

一般的には、「そのまま」と言うように、私はあなたに引き渡します。 まあ、私はおそらくこれで終わります。自家製の IP KVM の準備が整いました。

追記

最後に、乾燥残渣で何が起こったかを説明します。

長所:

- 価格
- デバイスは比較的安価であることが判明しました
- ラズベリーパイ: 約 2700 ルーブル。
- Arduino UNO: 約 400 ルーブル。
- VGA から AV へのコンバーター: 約 700 ルーブル。
- ビデオ キャプチャ カード: 500 摩擦。
- 合計: 4300 こする。

- 微調整
KEYBOARDPOWER と VOLUMEUP まで、ほぼすべての組み合わせをインターセプトしてそれらに割り当てることができます。ちなみに、HIDKeyboard.h ヘッダー ファイルで可能な値を確認したり、独自の値を追加したりできます。

マイナス:

- ビデオとクリックの送信の両方のブレーキ
- 2番目で最大のものは 画質、ここでは悲しい絵文字が必要です。ターゲットコンピューターの解像度を最小限に抑えたとしても、できることはBIOSを構成してブートローダーで項目を選択することだけです。 しかし、これには実際に KVM が必要なのではないでしょうか?

タグ: タグを追加

自宅に複数のコンピューターが登場した直後、私は、キーボードとマウスを常に別のシステム ユニットに切り替える必要がないようにしたいと考えました。 したがって、前回の記事で書いた素晴らしいデバイス、KVMスイッチまたはKVMスイッチを購入することにしました。

477 ルーブルという手頃な料金で、中国人の友人がこの素晴らしいものを郵送しました。 写真を何枚か撮ってお見せし、スイッチを適切な場所に送りました。この場所では、厚いほこりの層で覆われるか、すぐに壊れるまで、長期間使用できます。

パッケージの内容はすべて、2 ポート KVM とコンピュータに接続するための 2 本の特殊なワイヤです。 中国人は包装フィルムを惜しまなかったので、すべてが無事に到着しました。

下の写真は、スイッチに 3 つの VGA コネクタ (モニター用に 1 つ、システム ユニット用に 2 つ) と 3 つの USB ポートがあることを示しています。 それらのおかげで、キーボードとマウスに加えて、たとえばプリンターを接続することもできます。プリンターは、他の周辺機器とともにコンピューターからコンピューターへと切り替わります。

デバイスの上部カバーには、暗い場所でも見つけやすい大きなスイッチ ボタンがあります。 しかし、多くのコンピュータ サイエンティストは夜に仕事をするのが好きで、ちなみに、非常に無駄です (誰が理由を気にするか - 私の記事を読んでください)。 ケースには、現在どのポートが使用されているかを示す 2 つの LED インジケーターもあります。 KVM スイッチの裏側には、デバイスが最大 1920x1440 の解像度で動作できることを示すステッカーがありました。

デバイスは、次のスキームに従って接続されます。

手が届きやすいように、KVM をテーブルの上に置きました。 その結果、スイッチ周辺のワークスペースは次のようになります。

最初の起動後、ぼやけた薄暗い画像の形で小さな驚きがありました。 数日で視力を植え付けたい場合にのみ、このような画像のモニターを使用できます。

まずはSwitch自体のことを考えてみたのですが、インターネットで情報を検索したところ、キットに付属していた低品質のケーブルが原因であることがわかりました。 でも、それが今回のオーダーを決めた決め手! 再び、中国人は恋に落ちた!

私自身、次の解決策を見つけました。モニターに2つの入力(dviとvga)があるため、システムユニットからモニターにケーブルを直接接続し、モニター自体のボタンを押すことでそれらを切り替えます. したがって、別のコンピューターの制御に切り替えるには、kvm の 1 つのボタンの代わりに、モニターのボタンを押して「画像」を切り替える必要もあります。

適切なモニター出力を持っていない人のために、別の簡単な解決策があります。 キットに付属のワイヤーの代わりに、通常のVGAケーブルとワイヤーを一緒に使用するだけで十分です USB A から USB B(これは、ほとんどの最新のプリンターが接続されている方法です)。 必要なUSBケーブルが2本手に入ったらすぐにこの方法を使おうと思います。 この方法では、デバイスの機能を完全に保持します。

一般的に、完全なワイヤの無用さからの残留物がありましたが、kvm は本当に便利なので、kvm を使用して肯定的な印象を受けました。 自分で同じものを注文することにした場合は、リスクを冒したり、ワイヤーに過大な支払いをしたりしないように、kvm スイッチを 1 つだけ使用することをお勧めします。

ご不明な点がございましたら、コメントでお問い合わせください。喜んでお答えいたします。



読むことをお勧めします