ロゴ ロゴ

arduino cli が利用できるようになるまで

はじめに

 今回はarduino cli をインストールして実際にライブラリの導入やマイコンへの書き込みが可能になるまでを紹介します.
 使用する環境は
 windows10
 wsl-Ubuntu 20.04
 ESP32-DevKitC-32E

arduino cli をインストールする前に

 初めてIoTに取り組む場合、arduino cli の構築の前にこちらからドライバをインストールする必要があります.これがないとマイコンをパソコンから利用することが出来ません.
https://jp.silabs.com/developers/usb-to-uart-bridge-vcp-drivers
このサイトのダウンロードよりOSに応じたものをダウンロード・インストールしてください.

arduino cli のインストール

 arduino cli は以下を入力するだけで簡単にインストールが可能

export PATH=$PATH:HOME/bin/
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDER=~/.local/bin sh

(HOMEの前には$が付きます.なぜか二個使用するとダラーが消えちゃうんですよね.Markdown ってむずかしいですね)

設定方法

arduino-cli config init

これ実行することで ~/.arduino15/ に arduino-cli.yaml という設定ファイルが追加されます.
下が編集する部分です.

board_manager:
        additional_urls: []

[]内にURLを記述することで設定することが出来ます.また[]内で”,”を用いて区切ることで複数のURLを設定することが出来ます.

board_manager:
        additional_urls: [https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json]

これでesp32とesp8266を利用するためのURLの設定が完了しました.

arduino-cli core update-index
arduino-cli core install esp32:esp32

これでURLを追加したボードのコアプラットフォームをインストールすることができます.
ライブラリのインストールに関しては

arduino-cli lib search "キーワード"

これで検索ができます.結構余計なのがいっぱい出てきてしまいます.
例えば”DHT”と検索をかけると上のほうに目的の”DHT sensor library” を発見しました.実際にこれをインストールするには

arduino-cli lib install "DHT sensor library"

と打つだけでいいです.

これで一通りの設定は完了です.

マイコンへのアップロードまでの流れ

arduino-cli sketch new "ファイル名"

これでカレントディレクトリにスケッチを作成することが出来ます.

以下ではコマンドの実行はそのスケッチのディレクトリ内で行います.

arduino-cli compile --fqbn esp32:esp32:esp32 .

もしここで
Error during build: exec: “python”: executable file not found in $PATH
と出たら

sudo apt install python-is-python3

を実行してインストールを行ってください.

arduino-cli upload -p /dev/ttyS3 --fqbn esp32:esp32:esp32 .

ここで /dev/ttyS3 はCOM3のことです.おそらくBluetoothを利用するとCOM4を使用することになると思いますが,その時は ttyS4 にかえることで利用できます.

シリアルモニタは無いの?

arduino cli にはシリアルモニタがないためそれっぽいものを利用するしかありません.とはいえ簡単に出力内容をファイルに保存することが出来るなど Arduino IDE のシリアルモニタよりも使いこなせば便利かもしれません.

stty -F /dev/ttyS3 115200 | cat /dev/ttyS3

これでマイコンからの出力を表示できます.

awk '{print strftime("%Y-%m-%d %H:%M:%S"), "\t" $0; fflush();}'

これを付け加えることによってタイムスタンプを追加できます.
2021-08-20 19:54:33 Hello World!
2021-08-20 19:54:34 Hello World!
2021-08-20 19:54:35 Hello World!
また,

tee "ファイル名"

これを付け加えることによってファイルに保存することが出来ます.
終了したい場合はCtrl+cで終了することが出来ます.

エイリアスを活用しよう

~/.bashrc に記述しておくことでいちいちすべてを入力せずとも実行することが出来る.

alias arduino-cli-esp32='arduino-cli compile --fqbn esp32:esp32:esp32 . | arduino-cli upload -p /dev/ttyS3 --fqbn esp32:esp32:esp32 .'
alias cat_ttyS3='stty -F /dev/ttyS3 115200 | cat /dev/ttyS3'
alias cat_ttyS4='stty -F /dev/ttyS4 115200 | cat /dev/ttyS4'

このように二つ以上のコマンドを一つにまとめることで操作が簡単になる.打つのが面倒だなと感じたらぜひ活用しよう.

最後に

自分がコマンドラインでの環境を求めた理由は単にvimが使いたかっただけだったのですが,使ってみるとシリアルポートの切り替えにいちいちマウスでポチポチする必要がなかったり,ペインを分けるだけで複数の情報を一気に表示できるなど,一見簡単に環境構築が出来るIDEのほうが便利に見えるが案外そうでもないのかもしれないと考えさせられました.まぁサンプルスケッチの使い方わからないんだけどね.

コメント入力

関連サイト