Arduino 資料一覧

arduino-cli初期設定(内蔵LEDでLチカ)

2018/08/28更新

対応バージョン: 0.2.0-alpha.preview

Arduinoは通常GUIベースのIDEを使って開発を行うが、コマンドラインベースのarduino-cliがリリースされたのでまだプレビューながら内蔵LEDでLチカさせるまでの手順を示す。

Arduinoは一般的なArduino Uno R3を使用する。arduino-cliを動かす母艦のOSはLinux(Ubuntu 18.04 - 64bit)とする。

関連資料・記事

arduino-cliインストール

まず母艦のOSに合わせたarduino-cliのバイナリを以下からダウンロードする。ここではLinux(64bit)版をダウンロードする。

次にこれを展開して任意の場所にインストールする。

% tar xvf arduino-cli-0.2.0-alpha.preview-linux64.tar.bz2

% sudo install -m 755 arduino-cli-0.2.0-alpha.preview-linux64 /usr/local/bin/arduino-cli

% arduino-cli version
arduino-cli version 0.2.0-alpha.preview

arduino-cliには以下のサブコマンドが用意されているが、Lチカに必要な最低限のサブコマンドについて説明する。

% arduino-cli
Arduino Command Line Interface (arduino-cli).

Usage:
  arduino-cli [command]

Examples:
arduino <command> [flags...]

Available Commands:
  board         Arduino board commands.
  compile       Compiles Arduino sketches.
  config        Arduino Configuration Commands.
  core          Arduino Core operations.
  help          Help about any command
  lib           Arduino commands about libraries.
  sketch        Arduino CLI Sketch Commands.
  upload        Upload Arduino sketches.
  version       Shows version number of arduino CLI.

Flags:
      --config-file string   The custom config file (if not specified ./.cli-config.yml will be used).
      --debug                Enables debug output (super verbose, used to debug the CLI).
      --format string        The output format, can be [text|json]. (default "text")
  -h, --help                 help for arduino-cli

arduino-cli初期設定

arduino-cliを初めて使う場合、プラットフォーム一覧を更新する必要があるので以下のコマンドを実行する。

% arduino-cli core update-index
Updating index: package_index.json downloaded

このpackage_index.jsonは~/.arduino15に格納される。

ここでArduinoを母艦に接続する。接続したら以下のコマンドを実行するとボードの認識状態が確認できる。

% arduino-cli board list
FQBN            Port            ID              Board Name
arduino:avr:uno /dev/ttyACM0    2A03:0043       Arduino/Genuino Uno

スケッチはこのPortに接続されたFQBN(Fully Qualified Board Name)に対してアップロードする。

尚、スケッチとarduino-cliの各種設定はデフォルトでは以下のディレクトリに配置されるが、configサブコマンドで場所を変えることもできる。

スケッチ

$HOME/Arduino

各種設定

$HOME/.arduino15

configサブコマンドはdumpを使って現状の設定をYAMLで出力できるので、これを編集して上記パスを任意のパスに変更して使用できる。

% arduino-cli config dump > .cli-config.yml

% vi .cli-config.yml
proxy_type: auto
sketchbook_path: /home/neo/Arduino <--- スケッチの配置パス
arduino_data: /home/neo/.arduino15 <--- 各種設定の配置パス
board_manager: null

この設定を使用する場合は--config-fileオプションを付けてarduino-cliコマンドを実行する。

% arduino-cli --config-file .cli-config.yml <サブコマンド>

スケッチ動作確認(内蔵LEDでLチカ)

arduino-cliの初期設定ができたらArduino IDEに同梱されているサンプルスケッチ(基板上のLEDを点滅させる)と同じコードを実行させてみる。

手順としてはまずsketchサブコマンドのnewを使ってスケッチの格納ディレクトリと空のスケッチを作成する。

% arduino-cli sketch new test
Sketch created in: /home/neo/Arduino/test

% cat ~/Arduino/test/test.ino
void setup() {
}

void loop() {
}

この空のスケッチを以下のように編集し、サンプルスケッチと同じ内容にする。

% vi ~/Arduino/test/test.ino
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

スケッチが用意できたらコンパイルしてArduinoにアップロードする。

まずコンパイルは以下のようにする。アップロードするボードに合わせたバイナリを作る必要があるのでボード名を指定する。

% arduino-cli compile -b arduino:avr:uno Arduino/test
Sketch uses 928 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

コンパイルが成功すると~/Arduino/testにelfとhexが作成される。

% ls -l ~/Arduino/test
合計 24
-rwxr-xr-x 1 neo docker 13240  8月 28 00:36 test.arduino.avr.uno.elf*
-rw-r--r-- 1 neo docker  2623  8月 28 00:36 test.arduino.avr.uno.hex
-rw-r--r-- 1 neo docker   163  8月 27 23:04 test.ino

ここまできたらuploadサブコマンドでバイナリをArduinoにアップロードすればスケッチが動作して内蔵LEDが点滅する。

% arduino-cli upload -p /dev/ttyACM0 -b arduino:avr:uno Arduino/test

尚、コンパイルやアップロードの際にボードの指定(-b)をするのが面倒な場合はboardサブコマンドのattachでスケッチとボードを紐付けておくことによってボード指定(-b)を省略することができる。(ポートの指定(-p)は省略できない)

% arduino-cli board attach serial:///dev/ttyACM0 Arduino/test

この設定は~/Arduino/test/sketch.jsonに保存されるので設定を取り消したい場合は単にsketch.jsonを削除すればよい。

% cat ~/Arduino/test/sketch.json
{"cpu":{"fqbn":"arduino:avr:uno","name":"Arduino/Genuino Uno","network":false,"type":"serial"}}

関連資料・記事

参考サイト