GPS付きArduinoドローン

Arduinoで制御され、安定化されたGPS対応の一人称視点(FPV)クアッドコプタードローンを、自宅への帰還、調整への移動、GPSホールド機能とともに構築することを目指しました。 既存のArduinoプログラムと、GPSなしのクワッドコプターの配線をGPS伝送システムの配線と組み合わせることは比較的簡単であり、より複雑なプログラミングタスクにすぐに進むことができると単純に仮定しました。 しかし、これら2つのプロジェクトをメッシュ化するために驚くべき量を変更する必要があったため、機能を追加せずにGPS対応のFPVクワッドコプターを作成することになりました。

より限定されたクワッドコプターに満足している場合に、製品を複製する方法についての説明が含まれています。

また、より自律的なクワッドコプターに至るまでのすべてのステップも含まれています。 Arduinoを深く掘り下げて快適に感じるか、すでにArduinoの経験が豊富で、自分の探索の出発点としてストップポイントを利用したい場合は、このInstructableも役立ちます。

これは、Arduinoの構築とコーディングに関する知識を身に付けられる素晴らしいプロジェクトです。 また、うまくいけば、無人機で立ち去るでしょう。

セットアップは次のとおりです。

材料リストでは、両方の目標にアスタリスクのない部品が必要です。

1つのアスタリスクが付いたパーツは、より自律的なクワッドコプターの未完成プロジェクトにのみ必要です。

2つのアスタリスクが付いたパーツは、より限定されたクワッドコプターにのみ必要です。

両方のプロジェクトに共通のステップには、タイトルの後にマーカーがありません

より限定的な非自律クワッドコプターにのみ必要な手順は、タイトルの後に「(Uno)」があります。

進行中の自律クワッドコプターにのみ必要な手順には、タイトルの後に「(Mega)」が付いています。

Unoベースのクワッドを構築するには、タイトルの後に「(Mega)」が付いているステップをスキップして、順番にステップを実行します。

メガベースのクワッドで作業するには、タイトルの後に「(Uno)」が付いているステップをスキップして、順番にステップに従います。

ステップ1:材料を集める

コンポーネント

1)クワッドコプターフレーム1つ(正確なフレームはおそらく重要ではない)(15ドル)

2)4つの2830、900kVブラシレスモーター(または同様のもの)、および4つの取り付けアクセサリパック(4x $ 6 + 4x $ 4 =合計$ 40)

3)4つの20A UBEC ESC(4x $ 10 =合計$ 40)

4)1つの配電盤(XT-60接続付き)($ 20)

5)XT-60接続の1つの3秒3000-5000mAh LiPoバッテリー(3000mAhは飛行時間の約20分に相当)(25ドル)

6)たくさんのプロペラ(これらはたくさん壊れます)($ 10)

7)Arduino Mega 2560 *(40ドル)

8)1つのArduino Uno R3($ 20)

9)2番目のArduino Uno R3 **(20ドル)

10)1つのArduino Ultimate GPSシールド(シールドは必要ありませんが、異なるGPSを使用するには異なる配線が必要です)(45ドル)

11)2つのHC-12ワイヤレストランシーバー(2x $ 5 = $ 10)

12)1つのMPU- 6050、6DOF(自由度)ジャイロ/加速度計($ 5)

13)Turnigy 9x 2.4GHz、9チャネルトランスミッター/レシーバーペア($ 70)

14)Arduinoメス(スタッカブル)ヘッダー($ 20)

15)LiPoバッテリーバランス充電器(および12V DCアダプター、別売、同梱)(20ドル)

17)USB A to Bオス-オスアダプタコード(5ドル)

17)ダクトテープ

18)収縮チューブ

装置:

1)はんだごて

2)はんだ付け

3)プラスチックエポキシ

4)ライター

5)ワイヤーストリッパー

6)アレンレンチセット

リアルタイムFPV(一人称視点)ビデオ伝送のオプションコンポーネント:

1)小型FPVカメラ(これは、私たちが使用したかなり安価で低品質のカメラにリンクしています。より良いカメラに置き換えることができます)($ 20)

2)5.6GHzビデオトランスミッター/レシーバーペア(832モデル使用)(30ドル)

3)500mAh、3s(11.1V)LiPoバッテリー($ 7)(バナナプラグを使用しましたが、TS832トランスミッターと互換性のあるコネクターを備えているため、リンクされたバッテリーを使用することをお勧めします。はんだ付けが必要です)。

4)2 1000mAh 2s(7.4V)LiPoバッテリー、または同様のもの($ 5)。 mAhの数は、1000mAh程度以上であれば重要ではありません。 上記と同じ説明が、2つのバッテリーのいずれかのプラグタイプに適用されます。 もう1つはモニターの電源に使用されるため、何をはんだ付けする必要があります。 おそらく、このためにXT-60プラグを使用することをお勧めします(私たちがやったことです)。 そのタイプのリンクはこちら:1000mAh 2s(7.4V)LiPo with XT-60 plug

5)LCDモニター(オプション)(15ドル)。 また、ラップトップで直接表示するために、AV-USBアダプターとDVDコピーソフトウェアを使用することもできます。 これにより、単にリアルタイムで表示するのではなく、ビデオと写真を記録するオプションも提供されます。

6)リンクされたものとは異なるプラグのバッテリーを購入した場合、適切なアダプターが必要になる場合があります。 とにかく、モニターに電力を供給するバッテリーのプラグに対応するアダプターを入手してください。 XT-60アダプターの入手先

* =より高度なプロジェクトのみ

** =より基本的なプロジェクトのみ

費用:

スクラッチから開始する場合(ただし、はんだごてなどを使用)、FPVシステムなし:〜$ 370

RCトランスミッター/レシーバー、LiPoバッテリー充電器、LiPoバッテリーを既にお持ちの場合:〜$ 260

FPVシステムのコスト:80ドル

ステップ2:フレームを組み立てる

この手順は、特に使用したのと同じ既製のフレームを使用している場合は特に簡単です。 付属のネジを使用し、フレームに適した六角レンチまたはドライバーを使用して、図のようにフレームを組み立てます。 ドローンの前面と背面が明確になるように、同じ色の腕が互いに隣接していることを確認してください(この写真のように)。 さらに、底板の長い部分が反対色の腕の間に突き出ていることを確認してください。 これは後で重要になります。

ステップ3:モーターをマウントしてEscを接続する

フレームが組み立てられたので、4つのモーターと4つの取り付けアクセサリを取り出します。 取り付けセットに含まれているネジ、またはクワッドコプターフレームから残ったネジを使用して、モーターとマウントを所定の位置にネジで留めることができます。 リンクしているマウントを購入すると、上記の2つの追加コンポーネントを受け取ります。 これらの部品なしで良好なモーター性能が得られたため、重量を減らすためにそれらを省きました。

モーターを所定の位置にねじ込んだら、クワッドコプターフレームの上部プレートの上部にある配電盤(PDB)をエポキシで固定します。 上の図のように、バッテリーコネクタが異なる色のアーム(底部プレートの長い部分の1つと平行)の間に向くように、必ず向きを合わせてください。

また、雌ネジ付きのプロペラコーンが4つ必要です。 とりあえずこれらは取っておきます。

ESCを取り出します。 片側には、赤と黒の2本のワイヤが出ています。 4つのESCのそれぞれについて、PDBのプラスコネクタに赤いワイヤを挿入し、マイナスに黒いワイヤを挿入します。 別のPDBを使用する場合、この手順でははんだ付けが必要になる場合があることに注意してください。 次に、各モーターから出ている3本のワイヤーをそれぞれ接続します。 この時点で、どのESCワイヤーをどのモーターワイヤーに接続してもかまいません(1つのESCのすべてのワイヤーを同じモーターに接続している限り!)、後から極性を修正します。 ワイヤーを逆にしても危険ではありません。 モーターが逆回転するだけです。

ステップ4:ArduinoとShieldを準備する

始める前の注意

まず、すべてのワイヤを直接はんだ付けすることを選択できます。 ただし、ピンヘッダーを使用すると、プロジェクトのトラブルシューティングと調整に非常に柔軟に対応できるため、非常に貴重です。 以下は、私たちがしたことの説明です(そして、他の人が行うことをお勧めします)。

Arduinoとシールドを準備する

Arduino Mega(または非自律クワッドを行う場合はUno)、GPSシールド、およびスタッカブルヘッダーを取り出します。 上の画像に示すように、GPSシールドの所定の位置に、事前にはんだ付けされたピンと平行なピンの列で、積み重ね可能なヘッダーのオス側をはんだ付けします。 また、3V、CD、... RXというラベルの付いたピン列の積み重ね可能なヘッダーにはんだ付けします。 ワイヤーカッターを使用して、底から突き出ているピンの余分な長さを切り取ります。 これらすべてのスタッカブルヘッダーに、上部が曲がったオスヘッダーを配置します。 これらは、残りのコンポーネントのためにワイヤをはんだ付けするものです。

GPSシールドを上部に取り付けて、ピンがArduinoのピン(MegaまたはUno)と一致することを確認します。 Megaを使用している場合、シールドを所定の位置に配置すると、Arduinoの多くがまだ露出していることに注意してください。

ArduinoがPDBに載っているときの短絡を防ぐために、露出したピンはんだのすべてを覆うように、電気テープをArduinoの底に置きます。

ステップ5:コンポーネントを配線してバッテリーを配置する(Uno)

上記の回路図は、Joop Brookingの設計に大きく基づいているため、Joop Brookingが作成したものとほとんど同じです。

*この回路図は適切に取り付けられたGPSシールドを想定しているため、GPSはこの回路図には表示されません。

上記の回路図は、Fritzingソフトウェアを使用して作成されたもので、特にArduinoを含む回路図に強く推奨されます。 私たちのパーツは一般にFritzingに含まれているパーツライブラリにはなかったため、ほとんどの場合、柔軟に編集できる汎用パーツを使用していました。

-GPSシールドのスイッチが「直接書き込み」に切り替えられていることを確認します。

-次に、上記の回路図に従ってすべてのコンポーネントを配線します(バッテリーを除く!) (以下のGPSデータ配線に関する重要な注意)。

-すでにESCをモーターとPDBに接続しているので、回路図のこの部分は完了です。

-さらに、GPSデータ(黄色のワイヤ)はArduinoのピン0と1から出力されることに注意してください(GPSの個別のTxとRxピンではありません)。 これは、「直接書き込み」に設定されているため(以下を参照)、GPSはuno(ピン0および1)のハードウェアシリアルポートに直接出力します。 これは、配線全体の上の2番目の図に最も明確に示されています。

-RCレシーバーを配線するときは、上の図を参照してください。 VinとGndがそれぞれ2番目と3番目の行(およびピンの2番目から最も遠い列)にある間に、データワイヤが一番上の行に入ることを確認します。

-HC-12トランシーバー、RCレシーバー、およびPDBからArduinoのVinへの5Voutの配線を行うために、スタック可能なヘッダーを使用しました。一方、ジャイロでは、ワイヤーをボードに直接はんだ付けし、周囲に熱収縮チューブを使用しました半田。 いずれかのコンポーネントを選択することもできますが、小さな部品の取り付けを容易にするスペースを節約するため、ジャイロに直接はんだ付けすることをお勧めします。 ヘッダーを使用すると、前もって少し手間がかかりますが、柔軟性が向上します。 ワイヤを直接はんだ付けすることは、長期的にはより安全な接続ですが、別のプロジェクトでそのコンポーネントを使用することがより困難であることを意味します。 GPSシールドでヘッダーを使用した場合は、何をするにしても、かなりの柔軟性があることに注意してください。 重要なことは、GPSのピン0および1のGPSデータワイヤを簡単に取り外して交換できるようにすることです。

プロジェクトの最後に、すべてのコンポーネントをフレームに取り付けるための優れた方法を設計できませんでした。 クラスの時間的制約により、当社のソリューションは一般に、両面フォームテープ、ダクトテープ、電気テープ、およびジップタイを中心に展開されました。 長期的なプロジェクトを計画している場合は、安定した取り付け構造の設計により多くの時間を費やすことを強くお勧めします。 以上のことから、簡単なプロトタイプを作成したいだけの場合は、プロセスに従ってください。 ただし、ジャイロがしっかりと取り付けられていることを確認してください。 これは、クアッドコプターが何をしているかをArduinoが認識する唯一の方法であるため、飛行中に移動すると問題が発生します。

すべてを適切に配線したら、LiPoバッテリーをフレームの上部プレートと下部プレートの間にスライドさせて入れます。 コネクタがPDBのコネクタと同じ方向を向いており、実際に接続できることを確認してください。 バッテリーを所定の位置に保持するためにダクトテープを使用しました(ベルクロテープも機能しますが、ダクトテープよりも厄介です)。 バッテリーを簡単に交換したり、充電のために取り外したりできるので、ダクトテープはうまく機能します。 ただし、飛行中にバッテリーが動き回る場合、ドローンのバランスが著しく乱れる可能性があるため、バッテリーをしっかりとテープで固定してください。 バッテリーをまだPDBに接続しないでください。

ステップ6:コンポーネントを配線してバッテリーを配置する(メガ)

上記の回路図は、Fritzingソフトウェアを使用して作成されたもので、特にarduinoを含む回路図に強く推奨されます。 通常、パーツはFritzingに含まれるパーツライブラリに含まれていなかったため、一般的なパーツを使用していました。

-この回路図は、適切に取り付けられたGPSシールドを想定しているため、GPSはこの回路図には表示されません。

-Mega 2560のスイッチを「ソフトシリアル」に切り替えます。

-上記の回路図に従ってすべてのコンポーネントを配線します(バッテリーを除く!)

-すでにESCをモーターとPDBに接続しているので、回路図のこの部分は完了です。

-ピン8からRxおよびピン7からTxへのジャンパーケーブルがあります(このシールドが作成されたUnoとは異なり)、メガにはピン7および8のユニバーサル非同期レシーバートランスミッター(UART)がないため、ハードウェアのシリアルピンを使用する必要があります。 後で説明するように、ハードウェアシリアルピンが必要な理由は他にもあります。

-RCレシーバーを配線するときは、上の図を参照してください。 VinとGndがそれぞれ2番目と3番目の行(およびピンの2番目から最も遠い列)にある間に、データワイヤが一番上の行に入ることを確認します。

-HC-12トランシーバー、RCレシーバー、およびPDBからArduinoのVinへの5Voutの配線を行うために、積み重ね可能なヘッダーを使用しましたが、ジャイロではワイヤーを直接はんだ付けし、はんだの周りに熱収縮チューブを使用しました。 コンポーネントのいずれかを選択できます。 ヘッダーを使用すると、前もって少し手間がかかりますが、柔軟性が向上します。 ワイヤを直接はんだ付けすることは、長期的にはより安全な接続ですが、別のプロジェクトでそのコンポーネントを使用することがより困難であることを意味します。 GPSシールドでヘッダーを使用した場合は、何をするにしても、かなりの柔軟性があることに注意してください。

プロジェクトの最後に、すべてのコンポーネントをフレームに取り付けるための優れた方法を設計できませんでした。 クラスの時間的制約により、当社のソリューションは一般に、両面フォームテープ、ダクトテープ、電気テープ、およびジップタイを中心に展開されました。 長期的なプロジェクトを計画している場合は、安定した取り付け構造の設計により多くの時間を費やすことを強くお勧めします。 とはいえ、簡単なプロトタイプを作成したいだけなら、私たちのプロセスで気軽にフォローしてください。 ただし、ジャイロがしっかりと取り付けられていることを確認してください。 これは、クアッドコプターが何をしているかをArduinoが認識する唯一の方法であるため、飛行中に移動すると問題が発生します。

すべてを適切に配線したら、LiPoバッテリーをフレームの上部プレートと下部プレートの間にスライドさせて入れます。 コネクタがPDBのコネクタと同じ方向を向いており、実際に接続できることを確認してください。 バッテリーを所定の位置に保持するためにダクトテープを使用しました(ベルクロテープも機能しますが、ダクトテープよりも厄介です)。 バッテリーを簡単に交換したり、充電のために取り外したりできるので、ダクトテープはうまく機能します。 ただし、飛行中にバッテリーが動き回る場合、ドローンのバランスが著しく乱れる可能性があるため、バッテリーをしっかりとテープで固定してください。 バッテリーをまだPDBに接続しないでください。

ステップ7:レシーバーのバインド

RCレシーバーを取り、それを一時的に5V電源に接続します(USBまたは9V電源で、または別の電源でArduinoに電源を投入します。LiPoをArduinoにまだ接続しないでください)。 RCレシーバーに付属のバインディングピンを取り、レシーバーのBINDピンに配置します。 または、上の写真に示すように、BIND列の上下のピンをショートします。 受信機の赤いライトが素早く点滅するはずです。 次に、コントローラーを取り出し、上の図に示すように、オフになっている間に背面のボタンを押します。 ボタンを押したまま、コントローラーの電源を入れます。 これで、レシーバーの点滅ライトが点灯します。 受信者はバインドされています。 バインドケーブルを取り外します。 別の電源を使用している場合は、レシーバーをArduinoの5Vに再接続します。

ステップ8:(オプション)FPVカメラシステムを配線して取り付けます。

まず、XT-60アダプターをモニターの電源および接地線とはんだ付けします。 これらはモニターごとに異なる場合がありますが、電源はほとんど常に赤、地面はほとんど常に黒になります。 さて、XT-60プラグを使用して、1000mAh LiPoにはんだ付けされたワイヤー付きアダプターを挿入します。 モニターは(通常)青い背景で点灯します。 それが最も難しいステップです!

受信機と送信機のアンテナをねじ込みます。

小さな500mAh Lipoをトランスミッターに接続します。 右端のピン(アンテナのすぐ下)はバッテリーの接地(V_)で、左隣のピンはV +です。 彼らはカメラに行く3本のワイヤーが来ます。 カメラには、トランスミッターに適合するスリーインワンプラグが付属しています。 黄色のデータワイヤが中央にあることを確認してください。 このためのプラグでリンクしたバッテリーを使用した場合、このステップでははんだ付けは必要ありません。

最後に、他の1000mAhバッテリーをレシーバーに付属のDC出力ワイヤーで配線し、それをレシーバーのDC入力ポートに差し込みます。 最後に、レシーバーに付属のAVinケーブルの黒い端をレシーバーのAVinポートに接続し、もう一方の端(黄色、メス)をモニターのAVinケーブルの黄色のオス端に接続します。

この時点で、モニターにカメラビューが表示されるはずです。 できない場合は、受信機と送信機の両方がオンになっていること(小さな画面に数字が表示されるはずです)と同じチャネルにあることを確認します(両方にチャネル11を使用し、成功しました)。 さらに、モニターのチャンネルを変更する必要がある場合があります。

コンポーネントをフレームに取り付けます。

セットアップが機能したら、飛行準備が整うまでバッテリーを取り外します。

ステップ9:GPSデータ受信を設定する

上記の回路図に示すように、2台目のArduinoを2台目のHC-12トランシーバーに接続します。セットアップは、コンピューターに接続した場合にのみ表示どおりに電力が供給されることに注意してください。 提供されたトランシーバーコードをダウンロードし、シリアルモニターを9600ボーで開きます。

より基本的なセットアップを使用する場合、GPSシールドに電力が供給され、他のHC-12トランシーバーに適切に配線されている場合(およびシールドのスイッチが「Direct Write」にある場合)、GPS文の受信を開始する必要があります。

Megaでは、スイッチが「ソフトシリアル」になっていることを確認します。

添付ファイル

  • Transceiver_Uno.inoダウンロード

ステップ10:セットアップコードの実行(Uno)

このコードは、Joop BrokkingがArduinoクワッドコプターチュートリアルで使用したものと同じであり、その執筆にはすべての功績があります。

バッテリーを取り外した状態で、USBコードを使用してコンピューターをArduinoに接続し、添付のセットアップコードをアップロードします。 RCトランスミッターをオンにします。 シリアルモニターを57600ボーで開き、プロンプトに従います。

一般的なエラー:

コードのアップロードに失敗した場合は、UNO / GPSシールドのピン0と1が抜かれていることを確認してください。 これは、デバイスがコンピューターとの通信に使用するものと同じハードウェアポートであるため、空いている必要があります。

コードが多数のステップを一度にスキップする場合、GPSスイッチが「Direct Write」になっていることを確認します。

受信機が検出されない場合は、送信機がオンになっているときに受信機に赤いライトが点灯していることを確認してください。 その場合、配線を確認してください。

ジャイロが検出されない場合、これはジャイロが破損しているため、またはコードが書き込むように設計されているものとは異なるタイプのジャイロがある場合に発生する可能性があります。

添付ファイル

  • YMFC-AL_setup.inoダウンロード

ステップ11:セットアップコードの実行(メガ)

このコードは、Joop BrokkingがArduinoクワッドコプターチュートリアルで使用したものと同じであり、その執筆にはすべての功績があります。 レシーバーの入力が正しいピン変更割り込みピンに対応するように、単にMegaの配線を調整しました。

バッテリーを取り外した状態で、USBコードを使用してコンピューターをArduinoに接続し、添付のセットアップコードをアップロードします。 シリアルモニターを57600ボーで開き、プロンプトに従います。

添付ファイル

  • YMFC-AL_setup.inoダウンロード

ステップ12:ESCの調整(Uno)

繰り返しますが、このコードはJoop Brokkingのコードと同じです。 すべての変更は、GPSとArduinoを統合するために行われたものであり、後ほど、より高度なクワッドコプターの構築の説明で見つけることができます。

添付のESCキャリブレーションコードをアップロードします。 シリアルモニターで、文字「r」を入力し、リターンキーを押します。 リアルタイムのRCコントローラーの値が一覧表示されるようになります。 スロットル、ロール、ピッチ、ヨーの極端な状態で1000から2000まで変化することを確認します。 次に、「a」を入力してReturnキーを押します。 ジャイロキャリブレーションを開始し、ジャイロがクワッドの動きを記録することを確認します。 arduinoをコンピューターから持ち上げ、コントローラーのスロットルを完全に押し上げ、バッテリーを接続します。 ESCはさまざまなビープ音を鳴らします(ただし、これはESCとそのファームウェアによって異なる場合があります)。 スロットルを完全に押し下げます。 ESCは低いビープ音を発し、その後静かになります。 バッテリーを取り外します。

オプションで、この時点で、モーター取り付けアクセサリパックに付属のコーンを使用して、プロペラをしっかりとねじ込むことができます。 次に、シリアルモニターに1〜4の数字を入力して、モーター1〜4をそれぞれ最低電力で起動します。 プログラムは、小道具の不均衡による揺れの量を登録します。 小道具の片側または反対側に少量のスコッチテープを追加することで、これを改善することができます。 このステップなしで素晴らしいフライトを得ることができましたが、おそらく小道具のバランスを調整した場合よりもわずかに効率が悪く、音量も大きくなりました。

添付ファイル

  • YMFC-AL_esc_calibrate.inoダウンロード

ステップ13:ESCの調整(メガ)

このコードは、Brokkingのコードと非常に似ていますが、Megaで動作するようにコード(および対応する配線)を調整しました。

添付のESCキャリブレーションコードをアップロードします。 シリアルモニターで、文字「r」を入力し、リターンキーを押します。 リアルタイムのRCコントローラーの値が一覧表示されるようになります。 スロットル、ロール、ピッチ、ヨーの極端な状態で1000から2000まで変化することを確認します。

次に、「a」を入力してReturnキーを押します。 ジャイロキャリブレーションを開始し、ジャイロがクワッドの動きを記録することを確認します。

arduinoをコンピューターから持ち上げ、コントローラーのスロットルを完全に押し上げ、バッテリーを接続します。 ESCは3回の低音とそれに続く高音のビープ音を鳴らします(ただし、これはESCとそのファームウェアによって異なる場合があります)。 スロットルを完全に押し下げます。 バッテリーを取り外します。

このコードに加えた変更は、ESCピンにPORTDを使用することからPORTAを使用するように切り替え、これらのポートに書き込まれるバイトを変更して、配線図に示すように適切なピンをアクティブにすることです。 この変更は、PORTDレジスタピンがUnoの場合と同じMegaの位置にないためです。 私たちの学校のショップにあった古いオフブランドのメガで作業していたため、このコードを完全にテストすることはできませんでした。 これは、何らかの理由で、PORTAレジスタピンのすべてがESCを適切にアクティブにできないことを意味していました。 また、テストコードの一部でor演算子(| =)を使用することにも問題がありました。 ESCピンの電圧を設定するためにバイトを書き込むときにこれが問題を引き起こしていた理由が不明であるため、Brookingのコードを可能な限り変更しませんでした。 このコードは機能に非常に近いと思いますが、走行距離は異なる場合があります。

添付ファイル

  • YMFC-AL_esc_calibrateMEGA.inoダウンロード

ステップ14:空borneをゲット!! (宇野)

繰り返しになりますが、この3番目の天才コードはJoop Brokkingの作品です。 これら3つのコードすべての変更は、ArduinoへのGPSデータの統合を試みた場合にのみ発生します。

プロペラをフレームにしっかりと取り付け、すべてのコンポーネントをストラップ、テープ、またはその他の方法で取り付け、フライトコントローラーコードをArduinoにロードし、コンピューターからArduinoを取り外します。

クワッドコプターを外に出し、バッテリーを差し込み、送信機の電源を入れます。 必要に応じて、GPS受信セットアップとビデオ受信セットアップおよびモニターに接続されたラップトップを持ち込みます。 トランシーバーコードを地上のArduinoにロードし、シリアルモニターを9600ボーで開き、GPSデータがロールインするのを確認します。

これで飛ぶ準備ができました。 スロットルを押し下げ、左にヨーしてクワッドコプターを作動させ、次にスロットルを静かに上げてホバリングします。 あなたが快適になるまで、地面に低く、草のような柔らかい表面上を飛行することから始めます。

ドローンとGPSを同時に動作させることができたときに初めてドローンを興奮させて飛行したビデオをご覧ください。

添付ファイル

  • YMFC-AL_Flight_controller.inoダウンロード

ステップ15:空borneき!! (メガ)

MegaのESCキャリブレーションコードとのハングアップにより、このボードのフライトコントローラーコードを作成できませんでした。 あなたがこの点に到達したなら、私はあなたが少なくともそれがメガで動作するようにするためにESCキャリブレーションコードをいじったことを想像します。 そのため、最後の手順で行ったのと同じように、フライトコントローラーコードに同様の変更を加える必要があります。 MegaのESCキャリブレーションコードが他の変更なしで魔法のように機能する場合、ストックコードをこのステップで機能させるために必要な作業はわずかです。 まず、PORTDのすべてのインスタンスを調べて、PORTAに置き換える必要があります。 また、DDRDをDDRAに変更することを忘れないでください。 次に、PORTAレジスタに書き込まれるすべてのバイトを変更して、適切なピンをアクティブにする必要があります。 これを行うには、バイトB11000011を使用してピンを高に設定し、B00111100を使用してピンを低に設定します。 幸運を祈ります。メガを使って飛ぶことができたら教えてください!

ステップ16:メガデザインの現在の位置にどのように到達したか

このプロジェクトは、Arduinoとエレクトロニクスの趣味の初心者として私たちにとって非常に大きな学習経験でした。 そのため、GPSでJoop Brokkingのコードを有効にしようとしたときに遭遇したすべてのサガを含めます。 Brokkingのコードは非常に綿密であり、私たちが書いているものよりもはるかに複雑なので、できる限り修正しないことにしました。 GPSシールドを取得してArduinoにデータを送信し、Arduinoからフライトコードや配線を一切変更せずに、HC12トランシーバーを介してその情報を送信するようにしました。 Arduino Unoの回路図と配線を確認して使用可能なピンを見つけた後、既存の設計を回避するために使用していたGPSトランシーバーコードを変更しました。 次に、すべてを機能させるためにテストしました。 この時点で、物事は有望に思えた。

次のステップは、変更したばかりのコードをBrokkingのフライトコントローラーで統合することでした。 これはそれほど難しくありませんでしたが、すぐにエラーに遭遇しました。 BrokkingのフライトコントローラーはArduino WireおよびEEPROMライブラリに依存しており、GPSコードはソフトウェアシリアルライブラリとArduino GPSライブラリの両方を使用していました。 Wire Libraryはソフトウェアシリアルライブラリを参照しているため、「_ vector 3_の複数の定義」が何であれ、コードがコンパイルされないというエラーが発生しました。 Googleを調べてライブラリを調べてみると、このライブラリの競合がこれらのコードを一緒に使用することを不可能にしていることに最終的に気付きました。 そこで、私たちは代替案を探しに行きました。

エラーが発生しなかったライブラリの組み合わせは、標準のGPSライブラリをneoGPSに切り替えてから、ソフトウェアシリアルの代わりにAltSoftSerialを使用することだけでした。 この組み合わせは機能しましたが、AltSoftSerialは特定のピンでしか動作できず、デザインでは使用できませんでした。 これが、メガを使用することになった理由です。 Arduino Megasには複数のハードウェアシリアルポートがあるため、ソフトウェアシリアルポートをまったく開く必要がないため、このライブラリの競合を回避できます。

しかし、Megaを使い始めたとき、ピンの構成が異なることにすぐに気付きました。 割り込みがあるUnoのピンは、Megaでは異なります。 同様に、SDAピンとSCLピンは異なる場所にありました。 Arduinoの各タイプのピンダイアグラムを調査し、コードで呼び出されるレジスタを変更した後、最小限の再配線のみでソフトウェアの変更なしでフライトセットアップコードを実行できました。

ESCキャリブレーションコードは、問題が発生し始めた場所です。 これについては簡単に触れましたが、基本的にコードはピンレジスタを使用してESCの制御に使用されるピンを調整します。 これにより、標準のpinMode()関数を使用するよりもコードが読みにくくなります。 ただし、コードの実行が速くなり、同時にピンがアクティブになります。 フライトコードは慎重にタイミングがとられたループで実行されるため、これは重要です。 Arduinos間のピンの違いのため、メガでポートレジスタAを使用することにしました。 ただし、テストでは、すべてのピンがハイに動作するように指示されたときに同じ出力電圧を与えたわけではありません。 一部のピンの出力は約4.90Vで、他のピンの出力は4.95Vに近かった。 どうやら私たちが持っているESCはやや細かいので、より高い電圧でピンを使用した場合にのみ適切に動作します。 これにより、レジスタAに書き込んだバイトを変更して、正しいピンと通信できるようにしました。 これに関する詳細は、ESCキャリブレーションセクションにあります。

これは、プロジェクトのこの部分で得られたものです。 この修正されたESCキャリブレーションコードのテストに行ったとき、何かがショートし、Arduinoとの通信が失われました。 配線を変更していないため、これには非常に困惑していました。 これにより、私たちは後退して、互換性のない部分を合わせようとして数週間後に飛行ドローンを得るのに数日しかなかったことに気付きました。 これが、私たちがUnoでよりシンプルなプロジェクトをバックトラックして作成した理由です。 しかし、私たちのアプローチはもう少し時間をかけてMegaで作業することに近いと考えています。

私たちの目標は、Brokkingのコードを修正する作業をしている場合、遭遇したハードルのこの説明が役立つことです。 また、GPSに基づく自律制御機能のコーディングを試みる機会もありませんでした。 これは、メガで実用的なドローンを作成した後に把握する必要があるものです。 ただし、いくつかの予備的なGoogleの調査から、カルマンフィルターを実装することが飛行中の位置を決定する最も安定した正確な方法である可能性があります。 このアルゴリズムが状態推定を最適化する方法について少し調査することをお勧めします。 それ以外に、幸運を祈ります。あなたが私たちができたよりもさらに進んだら教えてください!

関連記事