Arduinoしたい(arduino-cli

$ arduino-cli board list
$ arduino-cli sketch new スケッチ名
$ arduino-cli compile スケッチ名
$ arduino-cli upload スケッチ名

arduino-cliで、ターミナルでArduino IDEのような操作ができます。

注釈

VS CodeのArduino IDEプラグインがdeprecatedになってしまったので、こちらのコマンドも覚えることにしました。

インストールしたい(arduino-cli

$ brew install arduino-cli

$ arduino-cli version
arduino-cli  Version: 1.0.4 Commit: Homebrew Date: 2024-08-12T13:32:50Z

ボードを確認したい(board

// 接続されたボードを確認
$ arduino-cli board list
Port                            Protocol Type        Board Name FQBN Core
/dev/cu.Bluetooth-Incoming-Port serial   Serial Port Unknown

// すべてのボード名とFQBNを確認
$ arduino-cli board listall

boardコマンドとそのサブコマンドで、ボード情報を確認できます。 listコマンドで、いまのパソコンに接続されているボード名を確認できます。 デバイスを接続したはずなのに通信できない場合は、まずこのコマンドを使って、認識されているか確認できます。

FQBN(Full Qualified Board Name)は、Arduinoボードに一意に割り当てられる識別子です。 <パッケージ名>:<アーキテクチャ名>:<ボード名>という形式で書かれています。

モジュール名

FQBN

ESP32 Dev Module

esp32:esp32:esp32

ESP32C3 Dev Module

esp32:esp32:esp32c3

ESP32S2 Dev Module

esp32:esp32:esp32s2

ESP32-WROOM-DA Module

esp32:esp32:esp32da

ESP32系のモジュールもいろいろな種類があり、それぞれに異なるFQBNが割り当てられています。

パッケージ/ライブラリ更新したい(update / outdated / upgrade

// インデックスを更新
$ arduino-cli update
Downloading index: library_index.tar.bz2 downloaded
Downloading index: package_index.tar.bz2 downloaded

$ arduino-cli outdated
ID          Name  Installed  Latest Location Description
esp32:esp32 esp32 2.0.11     3.0.5

$ arduino-cli upgrade

updateコマンドで、コアパッケージとライブラリのインデックスを更新できます。 core update-indexlib update-indexをそれぞれ実行しているのだと思います。

コアパッケージしたい(core

// インストール済みのコアパッケージを確認
$ arduino-cli core list
ID          Installed Latest Name
arduino:avr 1.8.6     1.8.6  Arduino AVR Boards
esp32:esp32 2.0.11    3.0.5  esp32

// インデックスを更新
$ arduino-cli core update-index
Downloading index: package_index.tar.bz2 downloaded

// コアパッケージを更新
$ arduino-cli core upgrade
Tool arduino:dfu-util@0.11.0-arduino5 already installed
Tool esp32:mklittlefs@3.0.0-gnu12-dc7f933 already installed
Tool esp32:mkspiffs@0.2.3 already installed
Downloading packages...
esp32:esp-rv32@2302 downloaded
esp32:esp-x32@2302 downloaded
esp32:esp-xs2@2302 downloaded
esp32:esp-xs3@2302 downloaded
esp32:esp32-arduino-libs@idf-release_v5.1-33fbade6 downloaded
esp32:esptool_py@4.6 downloaded
esp32:openocd-esp32@v0.12.0-esp32-20240821 downloaded
esp32:riscv32-esp-elf-gdb@12.1_20231023 downloaded
esp32:xtensa-esp-elf-gdb@12.1_20231023 downloaded
esp32:esp32@3.0.5 downloaded
Installing esp32:esp-rv32@2302...
Configuring tool....
esp32:esp-rv32@2302 installed
Installing esp32:esp-x32@2302...
Configuring tool....
esp32:esp-x32@2302 installed
Installing esp32:esp-xs2@2302...
Configuring tool....
esp32:esp-xs2@2302 installed
Installing esp32:esp-xs3@2302...
Configuring tool....
esp32:esp-xs3@2302 installed
Installing esp32:esp32-arduino-libs@idf-release_v5.1-33fbade6...
Configuring tool....
esp32:esp32-arduino-libs@idf-release_v5.1-33fbade6 installed
Installing esp32:esptool_py@4.6...
Configuring tool....
esp32:esptool_py@4.6 installed
Installing esp32:openocd-esp32@v0.12.0-esp32-20240821...
Configuring tool....
esp32:openocd-esp32@v0.12.0-esp32-20240821 installed
Installing esp32:riscv32-esp-elf-gdb@12.1_20231023...
Configuring tool....
esp32:riscv32-esp-elf-gdb@12.1_20231023 installed
Installing esp32:xtensa-esp-elf-gdb@12.1_20231023...
Configuring tool....
esp32:xtensa-esp-elf-gdb@12.1_20231023 installed
Replacing platform esp32:esp32@2.0.11 with esp32:esp32@3.0.5...
Uninstalling esp32:esp32@2.0.11...
Running pre_uninstall script....
Platform esp32:esp32@2.0.11 uninstalled
Uninstalling esp32:xtensa-esp32-elf-gcc@esp-2021r2-patch5-8.4.0, tool is no more required...
Running pre_uninstall script....
Tool esp32:xtensa-esp32-elf-gcc@esp-2021r2-patch5-8.4.0 uninstalled
Uninstalling esp32:xtensa-esp32s2-elf-gcc@esp-2021r2-patch5-8.4.0, tool is no more required...
Running pre_uninstall script....
Tool esp32:xtensa-esp32s2-elf-gcc@esp-2021r2-patch5-8.4.0 uninstalled
Uninstalling esp32:xtensa-esp32s3-elf-gcc@esp-2021r2-patch5-8.4.0, tool is no more required...
Running pre_uninstall script....
Tool esp32:xtensa-esp32s3-elf-gcc@esp-2021r2-patch5-8.4.0 uninstalled
Uninstalling esp32:xtensa-esp-elf-gdb@11.2_20220823, tool is no more required...
Running pre_uninstall script....
Tool esp32:xtensa-esp-elf-gdb@11.2_20220823 uninstalled
Uninstalling esp32:riscv32-esp-elf-gcc@esp-2021r2-patch5-8.4.0, tool is no more required...
Running pre_uninstall script....
Tool esp32:riscv32-esp-elf-gcc@esp-2021r2-patch5-8.4.0 uninstalled
Uninstalling esp32:riscv32-esp-elf-gdb@11.2_20220823, tool is no more required...
Running pre_uninstall script....
Tool esp32:riscv32-esp-elf-gdb@11.2_20220823 uninstalled
Uninstalling esp32:openocd-esp32@v0.11.0-esp32-20221026, tool is no more required...
Running pre_uninstall script....
Tool esp32:openocd-esp32@v0.11.0-esp32-20221026 uninstalled
Uninstalling esp32:esptool_py@4.5.1, tool is no more required...
Running pre_uninstall script....
Tool esp32:esptool_py@4.5.1 uninstalled
Uninstalling esp32:mkspiffs@0.2.3, tool is no more required...
Uninstalling esp32:mklittlefs@3.0.0-gnu12-dc7f933, tool is no more required...
Uninstalling arduino:dfu-util@0.11.0-arduino5, tool is no more required...
Configuring platform....
Platform esp32:esp32@3.0.5 installed

// パッケージ名の検索とインストール/アンインストール
$ arduino-cli core search パッケージ名
$ arduino-cli core install パッケージID
$ arduino-cli core uninstall パッケージID

coreコマンドとそのサブコマンドでコアパッケージ操作ができます。

ライブラリしたい(lib

// インストール済みのライブラリを確認
$ arduino-cli lib list
Name                    Installed Available     Location Description
Adafruit BME280 Library 2.2.4     -             user     -
Adafruit BusIO          1.16.0    1.16.1        user     This is a library for abstracting awa...
Adafruit Unified Sensor 1.1.14    -             user     -

// ライブラリのインデックスを更新
$ arduino-cli lib update-index
Downloading index: library_index.tar.bz2 downloaded

// インストール済みのライブラリを一括で更新
$ arduino-cli lib upgrade
Downloading Adafruit BusIO@1.16.1...
Adafruit BusIO@1.16.1 downloaded
Installing Adafruit BusIO@1.16.1...
Replacing Adafruit BusIO@1.16.0 with Adafruit BusIO@1.16.1...
Installed Adafruit BusIO@1.16.1

// ライブラリの検索とインストール/アンインストール
$ arduino-cli lib search ライブラリ名
$ arduino-cli lib install ライブラリ名
$ arduino-cli lib uninstall ライブラリ名

libコマンドとそのサブコマンドを使ってライブラリ操作ができます。 ライブラリを吟味する場合は、IDEの詳細画面を使ったほうがやりやすいかもしれません。 インストールしたライブラリの確認と更新には、このコマンドが便利です。

コンパイルしたい(compile

$ arduino-cli compile スケッチ名 --fqbn ボードのFQBN

compileコマンドで、スケッチをコンパイルできます。 --fqbnオプションで、ボードのFQBNを指定できます。

書き込みたい(upload

// ポート名とFQBNを確認
$ arduino-cli board list

$ arduino-cli upload スケッチ名 --port ポート名 --fqbn ボードのFQBN

uploadコマンドで、Arduinoデバイスにスケッチを書き込めます。

コマンド補完したい(completion

$ arduino-cli completion fish > ~/.config/fish/completions/arduino-cli.fish

設定したい(config

// 現在の設定を確認する
$ arduino-cli config dump
{}

// 設定を初期化する
$ arduino-cli config init
Config file written to: ~/Library/Arduino15/arduino-cli.yaml

// 設定を確認する
$ arduino-cli config dump
board_manager:
    additional_urls: []

configコマンドで、Arduino周りの設定ができます。 設定ファイルは~/Library/Arduino15/arduino-cli.yamlに作成されました。