無線ではなく、赤外線信号で制御されます。 ヘリコプター自体には通常のリモコン受信機があります。つまり、キャリア周波数は36〜40 kHzであり、リモコンが送信する信号の構造を理解することは難しくありません。
私はこのアイデア全体が最初は意味をなさないことをすぐに言わなければなりません、これはITの人々がどのように楽しんでいるかについての記事です:)
リモートコントロールレシーバーを使用して信号を分析した後、Sonyは次のような変更されたリモートコントロールプロトコルを使用していることが明らかになりました。
Sonyプロトコルでは、2.4 msの持続時間を持つ開始信号が最初に送信され、次に信号間の休止の長さでエンコードされたデータが送信されます。論理ゼロは600マイクロ秒、論理ユニットは1200マイクロ秒です。
ヘリコプタープロトコルでは、時間間隔の長さのみが異なります。 開始ビットは約2ms、ゼロは300マイクロ秒、1は600マイクロ秒です。 悲しいかな、タイミングチャートのスクリーンショットを撮るのを忘れていました。 したがって、4バイトが送信されます。 調べるだけでした-彼らは何に責任があるのですか?
これは実験によって愚かにされました。 データは最上位ビットで送信され、バイトは次のとおりです。
- 1つ目は、左右に回転することです(メインプロペラの回転速度の差)
- 2つ目は、前後の動きです(テールプロペラ制御)
- 第三-推力アップ(プロペラ速度)
- 4番目-回転キャリブレーションノブの位置、なぜ送信されるのかは明確ではない
最初の3バイトでは、最下位ビットは常にゼロです。 値は常に偶数です。 これはチャネルを区別するために行われたようですが、ヘリコプターはこのオプションでのみ機能しました。 チェックサムはありません。
値128、128、254、128(0x80、0x80、0xFE、0x80)を渡すと、ヘリコプターは最大速度で垂直上方に離陸します。 3番目のバイトをスムーズに変更することにより、同じ高さで宙に浮かせることができます。 最初のバイトを減らす-ヘリコプターは左に回転し、増やす-右に回転します。 2番目のバイトを増やす-前方に飛ぶ、減らす-後方に移動します。 すべてが非常にシンプルで、ヘリコプターが実際のリモコンで制御されていると信じるように、これらの信号を再現することが残っています。
テレビとレシーバーを制御するためのリモートコントロールをシミュレートする自家製のデバイスが既にありました。ヘリコプターに信号を送信するようにファームウェアを変更することは難しくありませんでした。 そして乾杯、うまくいきました!
それから、例えば、いくつかの珍しいデバイスを使用してそれを制御するために、なんとかそれを使用することは面白かったです。 特に加速度計があるので、選択は任天堂WiiのWiimoteとNunchakで決まりました。 誰かが知らない場合、Wiiリモコンは通常のBluetooth経由でWiiに接続するため、問題なくコンピューターに接続できます。 確かに、それはゲームコントローラではなく、未知のHIDデバイスとしてのみ見られますが、Windowsにはそれで動作するユーティリティ-GlovePIEが既にあります。
急いで、GlovePIE用のスクリプトが作成され、Wiimoteを使用してマウスカーソルを制御できるようになりました。 私のプログラムは、マウスの現在の座標を読み取ってデータをルーターに送信し、ルーターからリモートコントロールが既に接続されているスマートホームのネットワークに送信しました( 別の記事で書きました)。 奇妙なことに、このシステム全体が迅速かつ安定して機能しました。
このようにして、ヘリコプターを操作するのがはるかに便利になったと言わなければなりません。 ネイティブコンソールでは、スラストノブが跳ね返り、元の位置に戻る傾向があります。
この狂気のビデオ: