Arduinoは通常GUIベースのIDEを使って開発を行うが、コマンドラインベースのarduino-cliがリリースされたのでまだプレビューながら内蔵LEDでLチカさせるまでの手順を示す。
Arduinoは一般的なArduino Uno R3を使用する。arduino-cliを動かす母艦のOSはLinux(Ubuntu 18.04 – 64bit)とする。
- 関連資料・記事
[Arduino] Arduino Uno初期設定(内蔵LEDでLチカ)
[Arduino] Node.jsのJohnny-Fiveフレームワークを使ってArduino UnoでLチカ
[Arduino] RubyでArduinoをコントロールする方法(arduino_firmataでLチカ)
arduino-cliインストール
まず母艦のOSに合わせたarduino-cliのバイナリを以下からダウンロードする。ここではLinux(64bit)版をダウンロードする。
https://github.com/arduino/arduino-cli
次にこれを展開して任意の場所にインストールする。
% 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"}}
- 関連資料・記事
電子パーツデータシートまとめ
Arduino好きのためのコミュニティ「Arduinoファン」始めました
参考サイト
Arduino (Wikipedia)
Arduino技術情報 (Qiita)
Arduino関連情報 (Device Plus)
Arduino記事一覧 (Think IT)
エレクトロニクス豆知識 (ROHM)