DIY KVM IP

この記事はの印象を受けて書かれました-著者に感謝します! この記事では、ほとんど自分のIP KVMスイッチを作成することができました。 しかし、私はほとんど理由を説明します。 はい、すべては作者が書いたとおりに動作します... BIOSを再起動するまで、すべての魔法がそこに散らばっています。どんなに頑張っても、何も起こりません。



この迷惑な誤解をできるだけ安く、コンパクトに修正することが決定されました。 Raspberry PiとArduinoのステレオタイプから始めましょう。次の記事は別のハードウェアで続けられます。



必要なもの:



1.ビデオキャプチャカードは、このようなUVCドライバーをサポートするために必須です。

アリエクスプレスや他の中国の店舗でいっぱい。







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



2. VGA to 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のようなものが生成されるはずです。



モーションを設定し、キャプチャした画像をそれを通して送信します。



 sudo apt-get install motion -y
      
      





自動実行構成を編集します。



 sudo nano /etc/default/motion
      
      





start_motion_daemon



「yes」を設定します。 変更を保存しますCtrl + x、y、Enter。



モーション自体の構成を編集します(a):



 sudo nano /etc/motion/motion.conf
      
      





パラメーター値を次のように変更します。



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



 daemon on
      
      





これらのパラメーターは、送信される画像の解像度を決定します。より高い解像度を設定しても意味がありません。 ビデオキャプチャはPALまたはSECAM標準に制限され、その解像度は720x576です。 これは偶然に迷惑な欠陥ですが、それについては後で詳しく説明します。



 width 800 height 600
      
      





フレームレート:



 framerate 25
      
      





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



 output_normal off
      
      





画像伝送品質:



 webcam_quality 100
      
      





フレームレート:



 webcam_maxrate 25
      
      





他のIPからの接続に関する制限の削除



 webcam_localhost off
      
      





変更を保存しますCtrl + x、y、Enter。



クラックを再起動します。



 sudo reboot
      
      





すべてが正しく行われ、ビデオキャプチャボードのLEDが点灯する場合、数分間待機しています。



ブラウザをポート8081 raspberryに接続すると、下から実行されている灰色または青色の長方形が表示されます。







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







画像を送信することを十分に学んだ、それは小さな場合の場合-制御を転送するために残っています。



コントロール転送



このために、あなたはそれを推測した、私たちはarduinoを使用します。 理由はArduino UNOにあり、Atmega16u2と呼ばれる私たちの目的のために非常に必要なチップがあります。それのおかげで、コンピュータのBIOSを取得してarduinoをUSBキーボードとして識別できました。 デフォルトでは、arduinoボードの一部として、このチップは、arduinoボード上の大きな長方形のチップであるAtmega328pマイクロコントローラーにファームウェアをアップロードするためのUSBシリアルコンバーターとして機能します。 実際、Atmega16u2は同じマイクロコントローラーですが、重要な違いはありますが、USBバスで直接動作することができます。 必要なファームウェアを備えたAtmega16u2は、ほぼすべてのUSBデバイスをエミュレートできます。 私が何をしているのか理解できますか? この工学の奇跡を縫い、社会のために働くことを強制します。



Atmega16u2ファームウェア



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



この記事の手順はWindows向けに書かれています。Linuxsoidはこれを利用できます。



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







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







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



arduinoファームウェアについて心配する必要はありません。ファームウェアは別のUSB-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をたどり、 「クローンまたはダウンロード」→「ZIPをダウンロード」をクリックします。 次に、arduino IDEで[スケッチ]タブ→[ライブラリを接続]→[.ZIPライブラリを追加]を選択し、ダウンロードしたばかりのzipアーカイブを選択します。



準備が完了したら、ファームウェアに直接アクセスしてください。 落書きをコピー:



Arduino-スケッチ
 #include <HIDKeyboard.h> HIDKeyboard keyboard; int sbor; 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) { //     switch (sbor){ 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; case 340: keyboard.pressSpecialKey(F9); break; case 341: keyboard.pressSpecialKey(F10); break; case 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); break; case 456: keyboard.pressSpecialKey(HOME); break; case 295: keyboard.pressSpecialKey(PAGEUP); break; case 294: keyboard.pressSpecialKey(END); break; case 296: keyboard.pressSpecialKey(PAGEDOWN); break; case 182: keyboard.pressSpecialKey(RIGHTARROW); break; case 183: keyboard.pressSpecialKey(LEFTARROW); break; case 181: keyboard.pressSpecialKey(DOWNARROW); break; case 180: keyboard.pressSpecialKey(UPARROW); break; case 293: keyboard.pressSpecialKey(DELETE); break; case 320: keyboard.pressSpecialKey((CTRL | ALT), DELETE); break; //  ctl+alt+del  alt + del case 346: keyboard.pressSpecialKey(ALT, F4); break; //  alt+f4  shift + F4 default: keyboard.pressKey(sbor); break; } //Serial.println(sbor);//      usb keyboard.releaseKey(); sbor = NULL; } }
      
      







arduino IDEに挿入し、チェックボタンを押します。 今、最も重要な段階が始まります。ここで最も重要なことは、瞬間をつかむことです。 arduino IDEのダウンロードボタンを押します。最初にコンパイルログの白い線が実行され、オレンジが続きます。これはシリアルポートへの接続です。これは、arduinoボードのRESETボタンをキャッチして管理する必要がある瞬間です。 ファームウェアのダウンロードが行われるはずです。すべてが成功すると、このような碑文が表示されます。



 avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.34s avrdude: verifying ... avrdude: 2934 bytes of flash verified avrdude done. Thank you.
      
      





数回試行してもファームウェアのダウンロードが行われない場合は、RXとTXの接点を交換し、GNDピンがしっかりと接続されているかどうかを確認してください。



フィニッシュライン



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



 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を開始します。



 sudo minicom -s
      
      





プログラムメニューが開き、「シリアルポート設定」項目を選択し、別のメニューを開き、Aキーを押して「シリアルデバイス」を選択し、/ dev / ttyAMA0を書き込み、Enterを押し、Eの下のBps / Par / Bits項目を選択すると、次の項目が表示されますメニューバーのCとQを押します。現在:「9600 8N1」のようになります。Enterを押します。 行F-ハードウェアフロー制御:およびG-ソフトウェアフロー制御:が[いいえ]であることを確認します。一般的に、すべてが下のスクリーンショットのようになっているはずで、Enterを押します。







これらの設定をデフォルト設定「dflとして設定を保存」として保存し、「Minicomから終了」を閉じます。



接続



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







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



すべてが調整なしで私のために直接働いたが、私は悪い例を模倣してロジックレベルコンバーターを購入するべきではありません。最も単純なものは次のようになります。







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







打ち上げ



すべての準備が整ったら、始めましょう。



すべての接続を確認し、raspberry piをオンにし、raspberryコンソールに移動して、minicomを実行します。 すぐに予約し、sshでラズベリーに接続し、クライアントとしてKiTTY(PuTTYの修正版)を使用しました。これは重要です。 他の端末では、送信されたキーの値が異なる場合があるため、風の補正を行う必要があります-スイッチケースのスイッチ番号を変更します。



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



PS



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



長所:



-価格

-デバイスは比較的安価であることが判明しました

-Raspberry Pi:約2700rub。

-Arduino UNO:約400ルーブル。

-VGA-AVコンバーター:約700rub。

-ビデオキャプチャ料金:500ルーブル。

-合計:4300rub。



-微調整

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



短所:



-ビデオプレスとトランスミッションプレスの両方にブレーキをかける

-2番目に大きいのは画質です 。悲しい顔文字が必要なだけです。ターゲットコンピュータの解像度を最小に下げてもひどいです。できることは、BIOSを構成してブートローダーの項目を選択することです。 しかし、これにはKVMは本当に必要ではありませんか?..そして、他のすべてのためにradminなどがあります。



続行するには...



All Articles