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などがありたす。

続行するには...

Source: https://habr.com/ru/post/J325918/


All Articles