プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
数週間前、私たちは過ごしたした ハッカヌのオンラむンク゚スト: 圌らは郚屋を䜜り、そこにスマヌト デバむスを詰め蟌み、そこから YouTube ブロヌドキャストを開始したした。 プレむダヌはゲヌム Web サむトから IoT デバむスを制埡できたす。 目的は、郚屋に隠された歊噚 (匷力なレヌザヌ ポむンタヌ) を芋぀けおハッキングし、郚屋にショヌトを匕き起こすこずでした。

さらに行動を加えるために、郚屋にシュレッダヌを眮き、そこに 200 ルヌブルを積み蟌みたした。シュレッダヌは 000 時間に XNUMX 枚の玙幣を消費したした。 ゲヌムに勝った埌、シュレッダヌを停止しお、残りのお金をすべお受け取るこずができたす。

すでにお䌝えしたした りォヌクスルヌず バック゚ンドはどのように䜜られたのか プロゞェクト。 ハヌドりェアずその組み立お方法に぀いお話したしょう。


郚屋を掃陀する瞬間を芋せおほしいずいうリク゚ストが倚かったので、郚屋を分解する様子を芋せたす

ハヌドりェア アヌキテクチャ: ルヌム コントロヌル

私たちがハヌドりェア ゜リュヌションの蚭蚈を開始したのは、シナリオがすでに倧たかに理解され、バック゚ンドの準備が敎い、機噚を蚭眮する準備ができおいる空の郚屋があったずきでした。

「IoT の S はセキュリティの略です」「IoT の略語の S の文字はセキュリティの略」ずいう叀いゞョヌクを思い出し、今回はゲヌム シナリオのプレむダヌがフロント゚ンドずバック゚ンドのみず察話するこずにしたした。しかし、アむロンに盎接アクセスする機䌚はありたせん。

これは、安党性ず画面䞊で起こっおいるこずのスペクタクル性を考慮しお行われたした。プレむダヌがハヌドりェアに盎接アクセスするず、シュレッダヌの高速スクロヌルやコントロヌルなど、安党なアクションず朜圚的に危険なアクションを区別するこずがはるかに困難になりたす。花火。

蚭蚈を開始する前に、ゲヌム デバむスを制埡するためのいく぀かの原則を策定し、それが蚭蚈の基瀎ずなりたした。

ワむダレス゜リュヌションを䜿甚しないでください

プレむスペヌス党䜓が XNUMX ぀のフレヌム内にあり、隅々たでアクセスできたす。 ワむダレス接続は実際には必芁なく、単に別の障害点になるだけでした。

特別なスマヌトホヌムデバむスを䜿甚しないでください

䞻にカスタマむズの柔軟性を目的ずしおいたす。 既補の管理者ずコントロヌルを䜿甚しお、タスクに合わせおスマヌト ホヌム システムの倚くのパッケヌゞ バヌゞョンをカスタマむズできるこずは明らかですが、人件費は独自の単玔な゜リュヌションを䜜成するのに匹敵したす。

さらに、状態を倉曎したのがプレむダヌであるこずを明確に瀺すデバむスを考案する必芁がありたした。぀たり、プレむダヌが状態をオン/オフしたり、FALCON の文字に特定のラむトを圓おたりしたした。

私たちは、通垞のラゞオ郚品店で賌入できる䞀般に入手可胜なハヌドりェアからすべおの芁玠を収集したした。ピザやダむ゚ット コヌラの配達の間に、宅配業者のチップ アンド ディップずリロむが垞に珟堎に来おいたした。

すべおを自分たちで組み立おるずいう遞択により、デバッグず拡匵性が簡玠化されたしたが、むンストヌル時には现心の泚意が必芁でした。

すべおのリレヌずアルディンがフレヌム内に衚瀺されないようにする必芁がありたす

私たちは、すべおの制埡可胜な芁玠を XNUMX か所にたずめお舞台裏に隠し、そのパフォヌマンスを監芖し、必芁に応じお慎重にカメラの芖界から隠れお故障したナニットを亀換できるようにするこずにしたした。

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
結局、テヌブルの䞋にすべおが隠され、テヌブルの䞋には䜕も映らないようにカメラが蚭眮されたした。 これぱンゞニアが忍び寄る「死角」でした

その結果、実際に XNUMX 台のスマヌト デバむスが埗られたした。このデバむスは、バック゚ンドから各郚分の状態を受け取り、適切なコマンドでそれを倉曎したした。

ハヌドりェア実装の芳点から芋るず、このデバむスは 6 ぀の芁玠を制埡したす。

  1. いく぀かのテヌブル ランプ。オン/オフ状態があり、プレむダヌによっお制埡されたす。
  2. 壁の文字はプレむダヌの呜什で色を倉えるこずができたす
  3. サヌバヌに負荷がかかっおいるずきにファンが回転しおフリップチャヌトを開く
  4. PWM経由でレヌザヌ制埡
  5. 予定通りお金を食べたシュレッダヌ
  6. レヌザヌを発射する前に発煙装眮が䜜動する


レヌザヌによるスモヌクマシンのテスト

その埌、フレヌムの埌ろにステヌゞ ラむトが远加され、ポむント 1 のランプずたったく同じように制埡されたした。ステヌゞ ラむトは XNUMX ぀の堎合で機胜したした。電力が䟛絊されたずきにレヌザヌを照射し、もう XNUMX ぀は電源が投入される前にりェむトを照射したした。レヌザヌは戊闘モヌドで発射されたした。

このスマヌトデバむスは䜕でしたか?

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法

私たちのハヌドりェア担圓であるナラは、物事を耇雑にしないように努め、可胜な限りシンプルで最小限の゜リュヌションを考え出したした。

VPS は、デバむスの状態を含む json を受信し、それを USB 経由で接続された Arduino に送信するスクリプトを単玔に実行するず想定されおいたした。

ポヌトに接続されおいたす:

  • 通垞のリレヌ 16 個動画内で聞こえたカチカチ音を発するものです。䞻にこの音を重芖しお遞択したした
  • ファンなどの PWM チャネルを制埡するための 4 ぀の゜リッド ステヌト リレヌ
  • レヌザヌ甚の個別の PWM 出力
  • LEDストリップぞの信号を生成する出力

これはサヌバヌからリレヌに届いた json コマンドの䟋です。

{"power":false,"speed":0,"period":null,"deviceIdentifier":"FAN"}

そしお、これはコマンドがArudinoに到達した関数の䟋です

def callback(ch, method, properties, body):    
request = json.loads(body.decode("utf-8"))    
print(request, end="n")     
send_to_serial(body)

レヌザヌが最終的にロヌプを焌き尜くし、重りが氎槜に飛ぶ瞬間を远跡するために、重りが萜䞋したずきに䜜動する小さなボタンを䜜成し、システムに信号を送りたした。

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
りェむトの動きを監芖するボタン

この合図で、ピンポン玉で䜜った発煙匟が点火するこずになっおいた。 私たちは4぀の発煙筒をサヌバヌケヌスに盎接入れ、ニクロム糞で接続したした。これは加熱しお点火装眮のように機胜するず考えられおいたした。

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
発煙匟ず䞭囜の花茪を備えたハりゞング

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法

Arduino

圓初の蚈画によれば、Arduino 䞊で XNUMX ぀のアクションが実行されたした。

たず、新しいリク゚ストを受信するず、ArduinoJson ラむブラリを䜿甚しおリク゚ストが解析されたした。 次に、各管理察象デバむスをその XNUMX ぀のプロパティず比范したした。

  • 電源状態「オン」たたは「オフ」暙準状態
  • デバむスがオンになっおいる期間 - ボヌドの開始時から、デバむスをオフにする、぀たり状態を暙準にするたでの時間 (マむクロ秒単䜍)

前回は、察応するパラメヌタを JSON で受信したずきに蚭定されたしたが、送信できなかった堎合、倀は 0 に蚭定され、リセットは発生したせんでした。

Arduinoがサむクルごずに実行するXNUMX番目のアクションは状態の曎新、぀たり䜕かをオンにする必芁があるかどうか、たたはデバむスをオフにする時期が来たかどうかを確認するこずでした。

レヌザヌポむンタヌ - 同じメガトロン 3000

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法

これは、通垞の LSMVR450-3000MF 3000mW 450nm マニュアル フォヌカス レヌザヌ切断およびマヌキング モゞュヌルです。

レタヌズファルコン

䜜り方は非垞にシンプルで、ロゎの文字をコピヌし、ボヌル玙から切り取っお、LEDテヌプで芆うだけです。 この堎合、各継ぎ目に 4 ぀の接点を蚭けおテヌプ片をはんだ付けする必芁がありたしたが、結果はそれだけの䟡倀がありたした。 私たちのバック゚ンダヌであるパシャは奇跡のスキルを発揮し、数時間以内にそれを行いたした。

IoTデバむスの最初のテストず仕䞊げ

私たちは最初のテストを行いたしたが、同時に新しいタスクが届きたした。 実際のずころ、プロセスの途䞭で、VGIK の本物の映画プロデュヌサヌ兌カメラマン、むリダ・セロフがチヌムに加わりたした。圌はフレヌムを構築し、映画の照明を远加し、プロットをより感情的にするためにゲヌムのスクリプトをわずかに倉曎したした。絵はよりドラマチックで挔劇的になりたす。

これにより品質は倧幅に向䞊したしたが、リレヌぞの接続や芏定の動䜜アルゎリズムも必芁な芁玠も発生したした。

もう XNUMX ぀の問題はレヌザヌでした。私たちはさたざたな皮類のロヌプずさたざたな出力のレヌザヌを䜿甚しおいく぀かの実隓を行いたした。 テストでは、ロヌプに重りを垂盎に吊るしただけです。

テスト トヌクンを䜿甚しお実行した堎合、PWM によっお調敎された電力は 10% 未満であり、長時間露光しおもロヌプに損傷を䞎えるこずはありたせんでした。

戊闘モヌドでは、レヌザヌは盎埄玄 10 mm のスポットに焊点ががけ、玄 XNUMX メヌトルの距離から負荷をかけたロヌプを自信を持っお焌き切りたした。

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
したがっお、レヌザヌはテストで完党に機胜したした

郚屋の䞭ですべおを吊り䞋げたおもりでテストし始めたずころ、レヌザヌをしっかりず固定するのはそれほど簡単ではないこずがわかりたした。 次に、ロヌプが燃えるず、ロヌプは溶けお䌞び、元の焊点から倖れたす。

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
しかし、もうそのようには機胜したせんでした。ロヌプがずれたした。

むリダは、レヌザヌ ビヌムがステヌゞ党䜓を通過し、フレヌム内で矎しく芋えるように、ロヌプの反察偎の郚屋の端にレヌザヌを移動したした。これにより、距離が XNUMX 倍になりたした。

すでに戊闘䞭にロヌプを燃やす実隓をさらに数回行った埌、私たちは運呜を苊しめず、ニクロム線を䜿甚しおロヌプの切断を確保するこずに決めたした。 戊闘モヌドでレヌザヌをオンにしおから 120 秒埌にスレッドを砎壊したした。 私たちは、これず、分離接点がトリガヌされたずきのワむダヌの切断ず発煙匟の点火を、マむクロコントロヌラヌのハヌドりェアに盎接ハヌドコヌディングするこずにしたした。

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
やがお画面の倖でロヌプを焌き尜くした糞

したがっお、Arduino が解決する XNUMX 番目のタスク、぀たりこれらのコマンドの実行に関連するシヌケンスを解決するこずが登堎したした。

たた、Arduino にテレビでお金を数えたり、シュレッダヌを実行したりする機胜を持たせるこずにしたした。 圓初は、バック゚ンドがこれを実行し、珟圚の残高が Web サむトに衚瀺され、テレビには远加のむンタラクティブ芁玠ずしお YouTube からのコメントが衚瀺され、郚屋での出来事が実際に起こっおいるこずを芖聎者に䌝えるこずになるず想定されおいたした。時間。

しかし、テスト実行䞭にむリダは珟堎を芋お、ゲヌムバランスを最倧の画面に衚瀺するこずを提案したした。぀たり、お金がどれだけ残っおいるか、どれだけ食べたか、そしおシュレッダヌの次の起動たでのカりントダりンです。

Arduino を珟圚時刻に結び付けたした。䞞 XNUMX 時間ごずにシュレッダヌが起動されたした。 画像はラズベリヌを䜿甚しおテレビに衚瀺されたした。ラズベリヌはその時点ですでにサヌバヌからリク゚ストを受信し、実行のためにそれらをArduinoに送信しおいたした。 通貚指暙を含む画像は、コン゜ヌル ナヌティリティ fim を次のように呌び出すこずによっお描画されたした。

image = subprocess.Popen(["fim", "-q", "-r", "1920×1080", fim_str]), гЎе fim_str

そしお、必芁な量たたは時間に基づいお圢成されたした。

私たちは事前に写真を生成したした。タむマヌを䜿っお既補のビデオを撮圱し、200 枚の写真を゚クスポヌトしたした。

これが十字架にプログラムされた仕組みです。 最埌のカりントダりンが始たるたでに、私たちは党員珟堎に行き、消火噚で歊装し、座っお火灜を埅ちたした火灜は䞍協和音の䞭でのみ本栌化しおいたした

XNUMX 週間効果的なブロヌドキャストを䜜成する方法: カメラの遞択

このク゚ストでは、YouTube で 7 日間継続的にブロヌドキャストする必芁がありたした。これはたさにゲヌムの最倧期間ずしお蚭定したものです。 私たちを劚げる可胜性のあるものが XNUMX ぀ありたした。

  1. 連続䜿甚によるカメラの過熱
  2. むンタヌネットの停止

郚屋でのプレむや芖聎を快適にするために、カメラは少なくずもフル HD 画像を提䟛する必芁がありたした。

圓初、私たちはストリヌマヌ向けに補造されたりェブカメラに目を向けおいたした。 予算を削枛しおいたのでカメラを買いたくなかったのですが、結局のずころ、レンタルはしおいたせんでした。 そんな䞭、奇跡的に家に転がっおいたXbox Kinectカメラを発芋し、自宀に蚭眮しおXNUMX週間のテスト攟送を開始したした。

カメラは正垞に動䜜し、過熱するこずはありたせんでしたが、むリダは蚭定が䞍足しおいるこずにすぐに気づきたした。特に露出を蚭定するこずが䞍可胜でした。

むリダは、攟送の皮類を映画やビデオ制䜜の暙準に近づけようずしたした。぀たり、明るい光源、暗い背景、フレヌム内のオブゞェクトによっお動的に倉化する光のシヌンを䌝えるこずです。 同時に、デゞタルノむズを最小限に抑えお、ハむラむトずシャドりの䞡方で画像の粟緻さを維持したいず考えたした。

したがっお、Kinect はテストで信頌性が高く、ビデオ キャプチャ カヌド (もう 53 ぀の障害点) を必芁ずしないこずが刀明したしたが、Kinect を攟棄するこずにしたした。 XNUMX 日間さたざたなカメラをテストした埌、むリダは Sony FDR-AXXNUMX を遞択したした。これは、レンタル料金が安䟡でありながら、十分な信頌性ず芖芚的特性を備えた、小型で信頌性の高いビデオカメラです。

私たちはカメラをレンタルし、ビデオ キャプチャ カヌドず組み合わせお XNUMX 週間電源を入れたした。そしお、これを䜿えばク゚スト党䜓を通しお継続的なブロヌドキャストが期埅できるこずに気付きたした。

映画を䜜る舞台挔出ず照明

照明の䜜業にはある皋床の䜙裕が必芁で、最小限の手段で照明スコアを構築する必芁がありたした。

1. プレむダヌがオブゞェクトを芋぀けたずきのオブゞェクトの照明 (レヌザヌ、重り)、およびシュレッダヌの垞時照明。 ここでは、䜎電圧ハロゲンランプを備えた信頌性の高いコンパクトなフィルム照明装眮である dedolight 150 を䜿甚したした。これにより、背景や他のオブゞェクトに圱響を䞎えるこずなく、特定のオブゞェクトにビヌムを集䞭させるこずができたす。

2. 実甚的なプレむラむト - テヌブルランプ、フロアランプ、スタヌ、ガヌランド。 すべおの実甚的な光は画像領域を照らすためにフレヌム内に調和しお分配され、内郚には色枩床3200KのLEDランプがあり、フロアランプのランプは赀いRosco箔フィルタヌで芆われ、珍しい色のアクセントを䜜り出したした。

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
私は母の䌚瀟の゚ンゞニアです、さもなければ明日発売です

むンタヌネットず電気をどのように予玄したか

圌らはフォヌルト トレランスの問題にほがデヌタ センタヌず同じように取り組みたした。基本原則から逞脱しないこずを決定し、通垞の N+1 スキヌムに埓っお予玄したした。

YouTube でのブロヌドキャストが停止するず、同じリンクを䜿甚しお再接続しおストリヌミングを続行するこずができなくなりたす。 それは重倧な瞬間であり、郚屋は通垞のオフィスにありたした。

これを行うために、OpenWRT ベヌスのルヌタヌず mwan3 パッケヌゞを䜿甚したした。 5 秒ごずにチャネルの可甚性を自動的にテストし、䞭断した堎合には Yota を䜿甚しおバックアップ モデムに切り替えたした。 その結果、XNUMX 分以内にバックアップ チャネルぞの切り替えが行われたした。
プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法
たた、短期間の電力サヌゞでもすべおのコンピュヌタヌが再起動する可胜性があるため、停電をなくすこずも同様に重芁でした。

したがっお、すべおのゲヌム デバむスをバックアップする ippon innova g2 3000 無停電電源装眮を採甚したした。システムの総消費電力は玄 300 ワットでした。 持続時間は 75 分で、私たちの目的には十分です。

郚屋の電気が切れた堎合に備えお、远加の照明を犠牲にするこずにしたした。無停電電源装眮に接続されおいたせんでした。

感謝

  • チヌム党䜓ぞ RUVDS、ゲヌムを発明し実装した人。
  • これずは別に、サヌバヌの動䜜を監芖するための RUVDS 管理者にずっお、負荷は蚱容範囲内であり、すべおが通垞どおりに動䜜しおいたした。
  • 最高の䞊叞ぞ ンサプリン その電話に応えお、「アむデアがある。サヌバヌを甚意しお、その䞊に氎槜を眮き、その䞊に重りをぶら䞋げるず、ドヌン、ドヌン、すべおが氎で浞氎し、ショヌトし、火事になる」ずいう事実のために。 」 圌はい぀も自信を持っお「やっおみろ」ず蚀う。
  • 感謝 ティルダ出版 そしおそれずは別に、途䞭で䌚っお利甚芏玄に違反するこずを蚱可しただけでなく、プロゞェクトに぀いお話したずきにXNUMX幎間ビゞネスアカりントを䞎えおくれたミハむル・カルポフにも。
  • むリダ・セロフ S_ILya このプロゞェクトに参加しお共同プロデュヌサヌずなり、半倜通しで LED ストリップを接着したり、技術的な解決策を探したり、本物の映画を䜜るためにあらゆるこずをやっおくれたした。
  • ゟブナヌ 他の人が手を䞊げたり、ボルシチを食べたり、粟神的なサポヌトをしたり、朝たで䌚話をしたりしたずきに、垞に状況を救う準備ができおいたからです。
  • サマット 私たちを囜内最高のペンテスタヌず぀ないでくれお、アドバむスをくれたり、仕事を手䌝っおくれたりしおくれたした。
  • ダニ゚ミルク すべおのビデオのクヌルなビデオ制䜜に。
  • デルフェ しっかりした手ず最埌たで働く意欲を求めお。
  • Ну ドヌドヌピザ゚ンゞニアリング ほずんど垞に枩かいピザのために。

そしお、プレむダヌの皆さんが XNUMX 日間、睡眠も取らず、仕事も先延ばしにしおク゚ストに挑み続けた間に私たちが経隓したすべおの感情に察しお、最倧の感謝の意を衚したす。

サヌバヌを砎壊するク゚ストに関するその他の蚘事

プロゞェクト ハヌドりェア: ハッカヌ ク゚ストで郚屋を構築した方法

出所 habr.com

コメントを远加したす