tshell_blog

ソフトウェアと車輪がついた乗り物のはなし

ESP32用のArdupilotを書き込む

tshell.hatenablog.com

前回は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がついているだけなので,上記のコマンドだけでビルドから書き込みまでやってくれます。