ドローン制御 第1回テスト環境構築
2022.06.10
YouTube でも紹介しています。画像をクリックすると再生できます。
ドローン制御第1回では、テスト環境の構築を行います。
■ドローンのシステム構成
一般的なドローンのシステム構成は次のようになっています。

Ref.Advanced Pixhawk Quadcopter Wiring Chart
◇フライトコントローラ
フライトコントローラーには何社かあります。
DJIならNaza。3DロボティクスならPixhawkです。
Nazaは安定飛行がしやすく操縦も容易で、人気のフライトコントローラーです。
PixhawkはArduPilot系開発者と3Dロボティクス社が生産・販売など、海外でも人気のあるフライトコントローラーです。
Pixhawk系のハードウェアに対応したファームウェアは大きく分けて、PX4とArduPilotの2種類があります。
ArduPilotはライセンス形式がGPLv3のため、ソースコードの公開義務が発生しますが、PX4のライセンス形式はBSDのため、公開義務が発生せず、商用向けのオートパイロット分野でよく利用されています。
また、Betaflightは主に FPV ドローン向けに開発されているものです。FPV(First Person View)とは、ドローンに取り付けられた操縦用カメラからの映像をリアルタイムに確認しながら飛行させるスタイルのことです。Betaflightはベータフライトコンフィグレーターにより設定します。少し紛らわしいのですが、フライトコントローラーにインストールされ、フライトコントローラー自体を動かすのがBetaflightです。そのBetaflightを設定するためにパソコンへインストールするのがベータフライトコンフィグレーターです(以降、ベータフライトコンフィグレーターをコンフィグレーターと記載させていただきます)。
◇ESC(Electronic Speed Controller)およびモーター

ESCにPWM制御でパルス波を入力して、モーターの回転数を制御します。
モーターとESCを繋ぐコードが3本のものがブラシレスモーター用、2本の場合はブラシモーター用です。
FPV用のESCなどは、FCを介して、コンフィグレーターから設定するのが一般的で、ハードウエア依存性も高く購入には注意が必要です。
◇PDB(Power Distribution Board)

電源分配用の基盤で、バッテリーからの給電をESCとFCに分岐します。
PDBに変圧機能が備わっていない場合に、BEC(Battery Eliminator Circuitry)を中継させることでFCへの適正電圧に変換することができます。
また、BEC機能付ESCの場合は、バッテリーを直接ESCにつなぎ、ESCからFCに給電します。
◇各種センサー
GPS、3軸加速度センサ、ジャイロセンサなどです。
ジャイロセンサは角速度センサとも呼ばれ、物体の回転や向きの変化を検知します。
加速度センサは、物体の移動速度の変化を監視し、動き・重力・振動・衝撃を検知します。
◇送信機・受信機
操縦者の命令をドローンに送信し、受信機により、FCに伝えます。送信機は「コントローラー」とも呼ばれますが、ラジコンやドローンの世界では「プロポ」と呼ばれることが一般的です。
◇フライトテレメトリー
飛行中のドローンの状態を、操縦者が手元で確認するためのシステムです。
プロポが操縦者からドローンへの一方向送信に対して、テレメトリーは双方向通信により、
機首の方向、水平距離、高度、バッテリー残量など機体の情報を確認することができます。
なお、プロポによっては、テレメトリー機能を持ったものもあります。
■ドローン・プログラミング環境状況
ドローン・プログラミンでは、ドローンが受信した命令を、搭載されている各種センサーから機体の状態を計算したうえで、
適切に動作するように制御することが目的です。
フライトコントローラーのファームウェアであるArduPilotはオープンソースなので、これを解析するという方法もあるのですが、気が遠くなりそうです。
そこで、独自にプログラミングできるドローンを探してみました。
◇DJI Tello EDU
プログラミング教育に特化したトイドローンには、DJIから発売されている「Tello EDU」があります。
しかし、Telloは、ファームウェアを書き換えることはできません。慣性センサーによる姿勢制御は内部で処理されます。
ユーザーは、Telloから画像やセンサ情報を受け取って処理し、その結果に応じて簡単なコマンドを送信するだけで、Telloを動かすことができます。
◇STEVAL-DRONE01
STMicroelectronicsのSTEVAL-DRONE01は、プログラム制御が可能な室内用ドローンです。
STEVAL-FCU001V1
フライト・コントローラ・ユニット
| MCU | STM32F401 |
| 加速度/角速度センサ | LSM6DSL |
| 磁気センサ | LIS2MDL |
| 気圧センサ | LPS22HD |
| Bluetooth 4.1 | SPBTLE-RF |
| モータードライバ | STL6N3LLH6 |
| バッテリ充電制御 | STC4054 800mA |
この製品を注文したのですが、ウクライナ情勢が絡み、米国の輸出規制によりキャンセルされてしまいました。
■ドローン制御・テスト環境構築
そこで、まずはフライトコントローラーとして使えそうなマイコンを探してみました。
◇Arduino Nano 33 IoT
Nano 33 IoTは、WiFi通信が可能で、11個のPWM端子、3軸加速度およびジャイロセンサを実装しています。

| MICROCONTROLLER | SAMD21 Cortex®-M0+ 32bit low power ARM |
| Wi-Fi & Bluetooth | u-blox NINA-W102 |
| OPERATING VOLTAGE | 3.3V |
| INPUT VOLTAGE (LIMIT) | 21V |
| DC CURRENT PER I/O PIN | 7mA |
| CLOCK SPEED | 48MHz |
| CPU FLASH MEMORY | 256KB |
| SRAM | 32KB |
| EEPROM | none |
| DIGITAL INPUT / OUTPUT PINS | 14 |
| PWM PINS | 11 (2, 3, 5, 6, 9, 10, 11, 12, 16 / A2, 17 / A3, 19 / A5) |
| UART | 1 |
| SPI | 1 |
| I2C | 1 |
| ANALOG INPUT PINS | 8 (ADC 8/10/12 bit) |
| ANALOG OUTPUT PINS | 1 (DAC 10 bit) |
| EXTERNAL INTERRUPTS | All digital pins (all analog pins can also be used as interrput pins, but will have duplicated interrupt numbers) |
| LED_BUILTIN | 13 |
| USB | Native in the SAMD21 Processor |
| IMU | LSM6DS3(3軸加速度/ジャイロセンサ) |
| LENGTH | 45 mm |
| WIDTH | 18 mm |
| WEIGHT | 5 gr (with headers) |
Ref.Nano 33 IoT
↑クリックで拡大、再クリックで元に戻ります。
Ref.A LOOK AT THE ARDUINO NANO 33 IOT
【補足】
VUSB PIN
VUSBピンは、元のNanoと同じように出力ですが、設計上接続されていません。
これは、VUSBピンがMicroUSBコネクタからの5ボルト出力であり、その5ボルトが入力ピンと接触した場合に、損傷または破壊する可能性があるためです。
I2C Pullup Resistors
オリジナルのNanoを含む他の多くのArduinoと同様に、Arduino Nano33IoTはそのI2C接続を2つのアナログ入力ピンA4とA5と共有します。ただし、他のArduinoモデルとは異なり、Arduino Nano33IoTにはこれらのピンに接続された内部プルアップ抵抗があります。
IMUはI2Cデバイスであるため、これらのプルアップが必要であり、バスは内部で使用されます。
プルアップを無効にすることはできないため、A4ピンとA5ピンをアナログ入力として使用することはできません。
Ref.DroneBot Workshop
◇JOZEN GYROMASTER G4 AH
ドローンに使う筐体は、水没させてしまって動かなくなってしまったというジャンク品をメルカリで送料込み300円で購入しました。

●気圧センサー搭載でオートホバーリングができる!
●2.4GHZ,4ch,6軸ジャイロセンサー搭載で安定歩行、カンタン操作。
●固定式ローターガードで壊れにくい。
●カンタン宙返り操作
●スピード2段切り替え機能(low high)
●12台同時飛行可能
●2色のLEDライト点灯

この大きさだと当然ですが、フライトコントローラー一体型の基板に、3.7V 130mAhのリチウムポリマー電池が取り付けられていました。
テスト環境では内蔵のフライトコントローラーは使用せずに、ドローンの筐体とプロペラのみを再利用します。

リチウムポリマー電池の電圧を測ってみるとなんと0V、水没する瞬間をみてみたかったです。
DFRobot CORELESS MICRO MOTOR (6*12MM)
ドローン付属のモーターは、回転が安定しなかったので、新品のモーターを使います。
●モータタイプ:ブラシ付き(コアレス)DCモータ
●電圧(定格):3.7VDC
●RPM:50000 RPM
●サイズ/寸法:円形 - 0.240インチ径(6.10mm)
●直径(シャフト):0.031インチ(0.80mm)

モーターのリードはすごく細いのでちぎれないように基板に固定しています。基板上に回路はありません。

筐体の中に配線を納めて、電源スイッチのあった穴からケーブルを外にだしています。
◇DFROBOT 2x1.2A DC Motor Driver (TB6612FNG)
スピードコントローラーには、DFROBOT (DRI0044) TB6612FNG モータコントローラを使います。

●VCC Operating Voltage: 2.7V~5.5V
●VM Input Power: 2.5V~12V
●Output Current: 1.2A (single-channel continuous drive current)
●Start / Peak Current: 2A (continuous pulse) / 3.2A (single pulse)
●Dimension: 0.79 x 0.77(in) / 20 x 19.50(mm)
配線例

このモータードライバーを2個使って、4個のモーターを制御します。
◇Battery
cheero Canvas 3200mAh IoT 機器対応

ワンボードコンピューターは非常に微弱な電流で動作する状態があるため一般的なモバイルバッテリーでは保護機能が働き、電力供給を止めてしまいます。
この商品は電源オンすれば電力供給し続けることができます。
このモバイルバッテリーをリチウムポリマー電池1セルと同じ3.7Vまで降圧して使用します。
DC-DC Step-Down Buck Converter Power Supply Module

モバイルバッテリーは5V出力なので、降圧コンバータを使い、3.7Vに変換しています。
このDC-DCステップダウンコンバータは出力3.7V固定のモジュールです。実際に出力電圧を測ってみると、3.8Vちょっとありました。
Breadboard Power plate USB kit

PIMORONIから発売されている、micro-B USBコネクタからブレッドボード上の電源レールに5Vを供給するための部品です。
モバイルバッテリーの出力をUSBコネクタに繋げ、降圧コンバータとの間を仲介します。
◇Adafruit QT Py ESP32-S2 WiFi Dev Board with STEMMA QT
今回プロポ(操縦用送信機)は使いません。テレメトリー用の通信を利用して、ドローンを制御します。
フライトコントローラーであるNano 33 LoT とWiFi通信を行うのが、QT-Py ESP32-S2 です。
QT Py ESP32 -S2にはシングルコアの240MHzチップが搭載されているため、デュアルコアのESP32ほど高速ではありませんが、
4MBのフラッシュと2MBのPSRAMを実装しているため、データ解析などに必要なメモリー空間を確保することができます。
●Same size, form-factor, and pin-out as Seeed Xiao
●ESP32-S2 240MHz Tensilica processor
●4 MB Flash & 2 MB PSRAM
●Built-in RGB NeoPixel LED
●2.4 GHz Wi-Fi System-on-Chip (SoC)
●13 GPIO pins:
●11 on breakout pads, 2 more on QT connector
●10 x 12-bit analog inputs (SPI high speed pads do not have analog inputs)
●8-bit analog output DAC
●PWM outputs on any pin
●Two I2C ports, one on the breakout pads, and another with STEMMA QT plug-n-play connector
●Hardware UART
●Hardware SPI on the high speed SPI peripheral puns
●Hardware I2S on any pins
●5 x Capacitive Touch with no additional components required
●3.3V regulator with 600mA peak output
●Reset switch for starting your project code over, boot 0 button for entering bootloader mode
Ref.Adafruit QT Py ESP32-S2
これらを組み立てると下記のようになります。

写真にあるラズベリーパイ(Raspberry Pi 3 model B)は、コードのビルドの際に使用します。
ビルドには、PlatformIOを用います。
■テスト環境・配線確認
簡単なコードを書いて、ドローンを動かしてみます。
$ mkdir ~/nano33IoT
$ cd ~/nnano33IoT
$ pio init -b nano_33_iot
$ vi src/check.ino
#define PWM_LF 2
#define PWM_RR 3
#define PWM_RF 5
#define PWM_LR 6
#define EN_PIN 4
void setup() {
pinMode(EN_PIN, OUTPUT);
digitalWrite(EN_PIN,LOW);
analogWrite(PWM_LF, 10);
analogWrite(PWM_RR, 10);
analogWrite(PWM_RF, 10);
analogWrite(PWM_LR, 15);
delay(5000);
analogWrite(PWM_LF, 0);
analogWrite(PWM_RR, 0);
analogWrite(PWM_RF, 0);
analogWrite(PWM_LR, 0);
}
void loop() {}
前方右側と後方左側のモーターは極性を反転させてつないでいます。
モーターは常に一定方向への回転なので、すべてのDIR1、DIR2を1つにまとめて、EN_PINとしています。
$ pio run -e nano33 -t upload

前方左側と後方右側のプロペラは時計回り、前方右側と後方左側のプロペラは反時計回りに回転しています。
後方左側のモーターの回転が弱かったので、PWM値を増やしています。
すべてのプロペラを同じ回転数で回すと、ホバリングの状態になります。
analogWrite(PWM_LF, 10);
analogWrite(PWM_RR, 10);
analogWrite(PWM_RF, 10);
analogWrite(PWM_LR, 15);
このように、モーターの個体差や配線上の問題が、モーターの回転数に影響を与えます。
実際の運用では、加速度センサーやジャイロセンサーの測定値をもとに姿勢制御をする必要があります。
|
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
たいていのことは100日あれば、うまくいく。長田英知著
「時間がなくて、なかなか自分のやりたいことができない」
「一念発起して何かを始めても、いつも三日坊主で終わってしまう」
「色んなことを先延ばしにしたまま、時間だけが過ぎていく」
そこで本書では、そんな著者が独自に開発した、
まったく新しい目標達成メソッド「100日デザイン」について、
その知識と技術を、余すところなくご紹介します。
まんがで納得ナポレオン・ヒル 思考は現実化する
OLとして雑務をこなす日々に飽き足らず、科学者だった父が残した薬品を商品化すべく、起業を決意した内山麻由(27)。彼女はセミナーで知り合った謎の女性からサポートを得ながら、彼女と二人三脚でナポレオン・ヒルの成功哲学を実践し、さまざまな問題を乗り越えていく。
ヒル博士の<ゴールデンルール>に従い、仕事に、恋に全力疾走する彼女の、成功への物語。
今日は人生最悪で最高の日 1秒で世界を変えるたったひとつの方法 ひすいこたろう著
偉人の伝記を読むと、最悪な日は、不幸な日ではなく、新しい自分が始まる日であることがわかります。最悪な出来事は、自分の人生が、想像を超えて面白くなる兆しなのです。偉人伝を読むことで、このときの不幸があったおかげで、未来にこういう幸せがくるのかと、人生を俯瞰する視線が立ち上がるのです。
ご飯は私を裏切らない heisoku著
辛い現実から目を背けて食べるご飯は、いつも美味しく幸せを届けてくれる。
29歳、中卒、恋人いない歴イコール年齢。バイト以外の職歴もなく、短期バイトを転々とする日々。ぐるぐると思索に耽るけど、ご飯を食べると幸せになれる。奇才の新鋭・heisokuが贈るリアル労働グルメ物語!
【最新版Gemini 3に対応!】できるGemini (できるシリーズ)
Geminiを「最強の知的生産パートナー」として使いこなすための、実践的なノウハウを凝縮した一冊です。
基本的な操作方法から、具体的なビジネスシーンでの活用、日々の業務を自動化するGoogle Workspaceとの連携、さらには自分だけのオリジナルAIを作成する方法まで余すところなく解説します。
Rustプログラミング完全ガイド 他言語との比較で違いが分かる!
Rustの各手法や考え方を幅広く解説!
500以上のサンプルを掲載。実行結果も確認。
全24章の包括的なチュートリアル。
ポチらせる文章術
販売サイト・ネット広告・メルマガ・ブログ・ホームページ・SNS…
全WEB媒体で効果バツグン!
カリスマコピーライターが教える「見てもらう」「買ってもらう」「共感してもらう」すべてに効くネット文章術
小型で便利な Type-C アダプター USB C オス - USB3.1 オスアダプター
Type-C端子のマイコンボードをこのアダプタを介して直接Raspberry Piに挿すことができます。ケーブルなしで便利なツールです。
Divoom Ditoo Pro ワイヤレススピーカー
15W高音質重低音/青軸キーボード/Bluetooth5.3/ピクセルアート 専用アプリ/USB接続/microSDカード
電源供給USBケーブル スリム 【5本セット】
USB電源ケーブル 5V DC電源供給ケーブル スリム 【5本セット】 電源供給 バッテリー 修理 自作 DIY 電子工作 (100cm)
|