ESP32用のArdupilotを書き込む
前回はESP32用のArdupilotをビルドしてみました。ビルドしたら実際にESP32へ書き込んでみましょう。
ESP32への書き込みはArdupilotだからといって特別な方法が必要なわけではなく,ArduinoIDEから書き込むときと同様にFTDIのUSBシリアル変換器のTX, RXとESP32のTX, RX(GPIO3とGPIO1)を接続して,ESP32のGPIO0をGNDに落としたまま起動すると書き込みモードに入るというおなじみの方法です。
前回と同様にDocker環境で作業します。
sdkconfigの修正
基本的にコマンド1つで書き込み可能ですが,ファームウェアの作成時にエラーが出るのでlibraries/AP_HAL_ESP32/targets/esp-idf/sdkconfig
を以下のように修正します。
CONFIG_PARTITION_TABLE_OFFSET=0x10000
コンテナの起動と書き込み
ビルドするときに作成したardupilot:esp32イメージを起動しますが,/dev/ttyUSB0などのシリアルデバイスが使えるように特権モードを与えて,/devもマウントします。
$ docker run --rm -it --privileged --name='ardupilot' -v `pwd`:/ardupilot -v /dev:/dev ardupilot:esp32 bash
コンテナを起動したら以下のコマンドを実行してESP32へ書き込みます。ESPPORT
の指定は環境に合わせて変更してください。
$ . ./modules/esp_idf/export.sh $ python -m pip install empy pexpect $ ESPBAUD=921600 ESPPORT=/dev/ttyUSB0 ./waf copter --upload
簡単ですね。
ビルドのときのオプションに--upload
がついているだけなので,上記のコマンドだけでビルドから書き込みまでやってくれます。