目次
- Ardupilot のテレメトリー
- 国内で利用できるテレメトリー構成例
- ESP8266 wifi telemetryの構築例
- ファームウェアのフラッシュ
- Wi-FiのSSIDとパスワードの変更
- ESP-WROOM-02開発ボードの配線
- シリアルポートの設定
- 今回のまとめ
Section 1
Ardupilot のテレメトリー
今回は、ArduPilotでテレメトリー通信を設定する方法について紹介します。
テレメトリーとは簡単に言えば、機体と地上局(GCS)間の双方向通信のことです。
これにより、機体の状態をMission PlannerなどのGCSでリアルタイムに確認したり、GCS側から指示を送ることも可能になります。
Ardupilotのテレメトリーに関するランディングページは下記になります。
Telemetry (landing page)
https://ardupilot.org/copter/docs/common-telemetry-landingpage.html
ArduPilotでは、このGCSとの連携が大きな魅力のひとつです。
しかし問題は、海外製の安価なテレメトリーモジュールの多くが日本国内では使用できないという点です。
日本では電波法の規制により、上記のドキュメントに掲載されている多くのモジュールは国内でそのまま使うことができません。
一方で、国内メーカー製のテレメトリー機器はしっかりした仕様の反面、高価で大型な製品が多く、軽量・低コスト構成が難しい状況が長く続いていました。
しかし、最近ではより多様な選択肢が登場しており、用途や予算に応じたテレメトリー構成が可能になっています。
今回製作しているArdupilot Roverの話に移る前に、日本国内で使用できる代表的な3タイプの構成をご紹介します。
Section 2
国内で利用できるテレメトリー構成例
(1) 日本メーカー製の専用テレメトリー機器
これは最も分かりやすく、技適取得済みの製品であれば当然そのまま国内で使うことができます。
ただし、価格はやや高めで、サイズや重量も大きめなものが多いため、小型機体への搭載が難しかったり、低予算のプロジェクトで導入するのは難しい場合があります
(2) SIYI MK15E などの多機能プロポ+テレメトリー内蔵型
次に、SIYI MK15Eのような、テレメトリー・映像伝送・RC信号通信を1台でこなすプロポシステムです。
MK15EのプロポにはAndroidタブレットが内蔵されており、以下のような使い方ができます。
- プロポ上でMission Planner互換アプリを起動
- 映像のリアルタイムプレビュー
- 各種設定の変更やモニタリング
SIYI からは技適取得済みのモデルが数種類リリースされています。価格は高いですが、利用できる機能から考えると納得感があり、本格的な運用を想定するユーザーには非常に魅力的な構成です。
ただし、AIR UNITは大きくそれなりの重量があるため、やはりこの構成も小型機や低予算プロジェクトには向いていません。
(3) ESP32/ESP8266など開発用マイコンを使った自作構成(低コスト・軽量)
最後に、開発用マイコン(ESP32やESP8266)を使った構成です。
これらはWiFi機能を持ち、技適付きのモデルも多いため、国内でも使用可能です。
さらに、軽量・低価格・省電力で、小型機体や低予算プロジェクトにぴったりの構成になります。
ESP32やESP8266マイコンを使ったテレメトリー構成は、しっかりとドキュメントが整備されていますので、マイコンを使った事がないと言う方でもチャレンジしやすい選択肢としておすすめです。
Section 3
ESP8266 wifi telemetryの構築例
今回のローバーでは、(3) の「ESP8266 WiFi telemetry」を使用してテレメトリー通信を構成しました。
現在ではより高機能で安定性も高い「ESP32+DroneBridge」の方がおすすめですが、今回は以前使用していたESP8266を再利用しています。
ESP32+DroneBridgeの設定方法などは下記のDroneBridge Docsに詳しくまとめられています。
DroneBridge Docs
https://dronebridge.gitbook.io/docs
今回はESP8266 wifi telemetryの作成方法を紹介していくのですが、その詳細は下記のArdupilotドキュメントに記載されています。
ESP8266 wifi telemetry
https://ardupilot.org/copter/docs/common-esp8266-telemetry.html
上記画像が今回使用しているESP8266 wifi telemetryです。
今回使用したのは、 秋葉原の秋月電子様などで入手可能な「ESP-WROOM-02 開発ボード」という製品です。
USB端子やリセットボタンがあらかじめ搭載されており、セットアップが非常に簡単です。
ESP8266自体はチップ単体でも販売されていますが、初心者の方は開発ボードとして組まれた製品の方が断然おすすめです。
Section 4
ファームウェアのフラッシュ
DroneBridgeを利用する場合も同じ事が言えますが、当然開発ボードを購入してきた段階では何もプログラムが書き込まれておらず、動作しません。
逆に、様々な使い方ができるものとして販売されている為、多くのユーザーをターゲットに出来ますし、技適付きの製品も沢山登場する事ができるという訳ですね。
自分もそうだったのですが、あまり開発ボードを使い慣れていない方がardupilotの公式ドキュメントの情報だけで作成するのは、なかなかハードルが高いのも事実ですので、今回はESP8266 wifi telemetry作成手順を少し詳しく紹介したいと思います。
まずはプログラムを書き込むためのNodeMCU flasherを入手しましょう。
残念ながらMac用のもの紹介されておらず、WINのみとなってしまいます。
NodeMCU flasherは下記のURLからダウンロードできます。
64bit
https://github.com/nodemcu/nodemcu-flasher/blob/master/Win64/Release/ESP8266Flasher.exe
32bit
https://github.com/nodemcu/nodemcu-flasher/blob/master/Win32/Release/ESP8266Flasher.exe
少し分かりづらいですが、右上のアイコンをクリックしてダウンロードすると、ESP8266Flasher.exeが手に入ります。
次に実際に書き込むプログラムを入手します。
ESP-WROOM-02開発ボードを使用している場合、ArdupilotのESP8266 wifi telemetryのドキュメント内にあるfirmware-esp01_1m.binをダウンロードします。
次にESP-WROOM-02開発ボードを書き込み可能状態でPCにUSBmicroBケーブルで接続します。
プログラムを書き込むためには接続する際に、ボタン操作を行う必要があります。
ESP-WROOM-02開発ボードには上記画像の通り2つのスイッチがありますが、まずRSTスイッチとPGMスイッチを同時に押し、PST→PGMの順で離すことで書き込み可能状態となるようです。
ESP-WROOM-02開発ボードの場合、この手順は秋月電子様が公開しているマニュアルにも記載があります。
他の開発ボードやチップ単体で利用する場合はこの辺りの手順は異なるものと思います。
ここからはArdupilotのESP8266 wifi telemetryのドキュメントにある記載に沿ってプログラムを書き込みます。
ESP-WROOM-02開発ボードのマニュアルに記載されている数値と違いますが、Ardupilot側のドキュメントに従って、Advancedタブ内のFlash sizeが4MByteであることを確認します。
次にConfigタブないの歯車マークをクリックし、先程ダウンロードしたfirmware-esp01_1m.binを選択します。
最後にOperationタブのFlashボタンを押すと、フラッシュが始まります。
上記はフラッシュ中の画面ですが、青色のバーが完全に右に到達すると完了となります。
Section 5
Wi-FiのSSIDとパスワードの変更
ここからはESP-WROOM-02開発ボードにUSB経由でアクセスするのではなく、Wifi経由でアクセスする形になります。
初期アクセスポイントIDは「ArduPilot」、パスワードは「ardupilot」になっていますが、変更も可能です。
もしIDやパスワードなど設定を変更したい場合は、まずPCをWifiでESP-WROOM-02開発ボードと接続します。
Cにセキュリティソフトなどが入っているなど、設定によってうまく接続できない可能性もあります。
ここでうまく行かない場合は、この先の設定を進めても機体とPCを接続できる状態にはなりません。
ESP-WROOM-02開発ボードに問題がないか確認すると共に、PCの設定などを確認しましょう。
自分の場合は何台かWINを所有していますが、ESP-WROOM-02開発ボードに接続できないものもあります。
屋外用にしているタブレットPCでは接続できているので、原因をしっかり調べていないのですが、恐らくインターネットの設定によるものと考えています。
一方、利用しているDroneBridgeは全てのPCで接続できていますので、この辺りはDroneBridgeの方が安定して接続でき、使いやすいなと感じています。
PCをWifiでESP-WROOM-02開発ボードと接続できたらブラウザで192.168.4.1にアクセスすると、ESP8266上記画面となります。
このページ内にSetupというボタンがありますので、このSetupから設定の変更が可能です。
8〜16文字で「AP SSID」と「AP Password」を設定し、 「Save」ボタンを押してデバイスを再起動すればSSIDとパスワードを変更する事ができます。
Section 6
ESP-WROOM-02開発ボードの配線
今回フライトコントローラーとしてはMateksys F405-STDを使用していますので、上記の画像のように配線しています。
給電のところは空いている5Vパッドと接続すればどこでも問題ありません。
しかし、信号線の接続はあらかじめ決められた数字のTX、RXに接続しましょう。
この「あらかじめ決められた数字」については使用しているフライトコントローラーのドキュメントを調べることで確認できます。
今回の場合Mateksys F405-STDを使用していますので、下記のドキュメントを調べます。
Mateksys F405-STD and variants
https://ardupilot.org/copter/docs/common-matekf405.html
上記にはSERIAL1 = Telemetry1 = USART3と記載されていますし、Wiring DiagramでもテレメトリーはTX3/RX3に接続されていますので、テレメトリーとしてはまずTX3/RX3に接続するのが良さそうです。
Section 7
シリアルポートの設定
最後にFC側のシリアルポートの設定を行います。
SERIAL1に接続している場合は、フルパラメーターリストから下記の設定を行います。
- SERIAL1_PROTOCOL = 2
- SERIAL1_BAUD = 921
検索ボックスでSERIAL1と検索するとどちらも表示されますので、設定を行います。
※今回は先程紹介したような配線にしていますが、Mateksys F405-STDはTelemetry1と2、あらかじめ2つのテレメトリーが設定されているフライトコントローラーになります。
複数テレメトリーを接続できるフライトコントローラーも多く、例えばMateksys F405-STDの場合SERIAL2 = Telemetry2 = UART4を利用する事も可能です。
ただし、その場合は配線が変わってくる他、シリアルポートで変更すべきパラメーターも変わってきます。
ご自身のフライトコントローラー、ご自身の接続先をよく調べて「SERIALx」を読み替えて設定していただけたらと思います。
これでテレメトリーに関して一通りの設定が完了しました。
ここまで設定が完了していれば、機体を起動し、ESP-WROOM-02開発ボードとPCをWifiで接続した上でMission Plannerを起動すると自動的にテレメトリー経由で機体とMission Plannerを接続する事ができるかと思います。
Section 8
今回のまとめ
今回は、ESP8266 WiFi telemetryを使ったテレメトリーデバイスの作成から、実際にフライトコントローラー(FC)と接続して使用する方法までを紹介しました。
現在では、より高機能で安定性の高いDroneBridge(ESP32ベース)の方が使いやすいと感じていますが、基本的な構成や接続の流れはESP8266と非常に似ています。
そのため、今回の内容を理解すれば、DroneBridgeにもスムーズに応用が可能だと思います。
今回で、ArduPilot Roverの基本的な設定作業は一通り整いました。
次回からは、いよいよ実際に走行テストを行いながら、オートミッションに向けた調整を進めていく予定です。
いつもご覧いただきありがとうございます。
活動の継続や質の向上のため、皆さまからのご支援をお願いしております。
金額はご自由に設定いただけますので、無理のない範囲でご検討いただけますと幸いです。
下記のボタンより、PayPalを通じてご支援いただけます。
ご支援はこちら