Arduino IDEについて。 インストール、初期設定など。 ここではUbuntu 20.04でArduino IDE Linux 64 bits版を使用する場合についてを、バージョン1.8.12時点の動作に基づいて記載しています。

Arduino IDEのインストールと環境設定

Arduino IDEのインストール

まずはArduino - Softwareよりソースパッケージをダウンロードする。

続いてインストール。 ここでは/home/user/arduino-ide/arduino-1.8.12をインストール先とする。

mkdir ~/arduino-ide
cd ~/arduino-ide
tar -xvf arduino-1.8.12-linux64.tar.xz
cd arduino-1.8.12/
./install.sh

/home/user/ArduinoはArduinoスケッチとライブラリを格納するフォルダとして使われるのでここにはインストールできない。

インストールスクリプト(install.sh)を実行し、インストールが完了するとデスクトップ上にArduino IDEのアイコンが作成される。

Arduino IDE

デスクトップに作成される起動ファイル(.desktopファイル)がダブルクリックで起動できない状態になっている場合は、右クリックして[起動を許可する]を選択する必要がある。

Arduino IDEの起動を許可する

起動を許可すれば、以下のようにアイコンが表示され、起動できるようになる。

デスクトップアイコンから起動できるようになったArduino IDE

Arduino IDEの起動

アイコンから起動するか、インストールしたディレクトリにあるスクリプトarduinoを実行すれば、Arduino IDEが起動する。

デフォルトでは実行環境の言語に合わせた言語とフォントで起動するが、TrueTypeフォントがインストールされていない環境などでは、文字が豆腐(□)に文字化けしている場合がある。

文字化けした状態のArduino IDE

このような場合は、[CTRL]+[,]を押すことで環境設定ウィンドウが開くので、言語をEnglish (English)あるいはSystem Defaultなど、文字が正しく表示されている言語を選び、一旦再起動すればとりあえず(言語はともかく)読める状態にはなる。

環境設定の言語設定

文字化けの解消方法については後述の§.文字化けとフォントに関してを参照。

USBデバイスのパーミッション変更

Arduino等のデバイスを接続したときに作成されるUSBデバイスファイル/dev/ttyUSBnへのアクセスパーミッションを変更する。 sudo chmod og+rwで各ユーザーにrw権限を与えるか、ユーザーをdialoutグループに追加することでアクセスを許可する。

ここではユーザーをdialoutグループに追加する。 まずはusermodコマンドで現在のユーザー($USER)をdialoutグループに追加する。

$USERをdialoutグループに追加する
sudo usermod -a -G dialout $USER

続いて、追加したグループ情報を更新する。

グループ情報の更新
現在のグループ情報を表示する
$id
uid=1000(smdn) gid=1000(smdn) groups=1000(smdn), ...

グループの情報を更新させる
$su - $USER
#exit

再度現在のグループを確認して、更新されたかどうか確認する
$id
id=1000(smdn) gid=1000(smdn) groups=1000(smdn),20(dialout), ...

グループ情報が更新されない場合は、一旦ログアウトすることで更新される?(未確認)

更新されたら、Arduino IDEを再起動して、[ツール]→[ボード]の設定と、[ツール]→[シリアルポート]の設定を行う。

文字化けとフォントに関して

日本語が文字化けする場合

日本語に対応したTrueTypeフォントがArduino IDEをインストールした環境にない場合、文字化けする。 そのため、何かしらのTrueTypeフォント(OpenTypeではない)をインストールしてから再起動すると、文字化けしなくなる。

TrueTypeフォントのインストールは、~/.fontsディレクトリを作成して*.ttfファイルを配置するか、apt list ttf-*で検索して一覧に表示されるTrueTypeフォントのパッケージをインストールすることで行える。

例として~/.fontsディレクトリにVLゴシックVL-Gothic-Regular.ttfVL-PGothic-Regular.ttfを配置してから起動すると次のように正しく表示される。

TrueTypeフォントをインストールした状態

後述する方法でウィンドウやメニューのフォントを変えた場合は、ウィンドウ下部の標準出力やステータス表示にはフォント指定が反映されず、文字化けしたままになる。

ウィンドウやメニューのフォントを変える場合

まず、Arduinoのインストールディレクトリにgtkrcファイルを作成し、以下のようにフォント名を指定した内容を記述する。 ファイル名やスタイル名(下記の例の"arduino")は任意。

arduino.gtkrc
style "arduino" {
  font_name = "Noto+Sans+CJK+JP 10"
}

class "GtkWidget" style "arduino"

font_nameフォント名[空白]フォントサイズのように指定する。 指定するフォント名に空白が含まれる場合は、空白を+に置き換えて指定する。 例えばNoto Sans CJK JPの場合は、上記の例のようにNoto+Sans+CJK+JPとする。 フォント名とフォントサイズの間の空白は区切りとして扱われるので、+に置き換えないように注意。


次に、起動スクリプトであるarduinoを編集し、先に用意したgtkrcファイルへのパスを環境変数GTK2_RC_FILESに追加する。

arduino
--- a/arduino.original
+++ b/arduino
@@ -2,6 +2,8 @@
 
 APPDIR="$(dirname -- "$(readlink -f -- "${0}")" )"
 
+export GTK2_RC_FILES=$GTK2_RC_FILES:"$APPDIR"/arduino.gtkrc
+
 for LIB in \
     "$APPDIR"/java/lib/rt.jar \
     "$APPDIR"/java/lib/tools.jar \

以降、Arduino IDEを起動すると指定したフォントがウィンドウやメニューに反映された状態で起動する。

gtkrcファイルでフォントを指定して起動した状態

gtkrcファイルで指定したフォントサイズは、エディタにも反映されてしまう点に注意。

エディタのフォントを変える場合

一旦Arduino IDEを終了し、設定ファイル~/.arduino15/preferences.txtを編集する。 エントリeditor.fontを探し、エディタに使用したいフォント名とフォントスタイル、フォントサイズを指定する。

~/.arduino15/preferences.txt
editor.font=editor.font=Noto Mono,plain,12

再度Arduino IDEを起動すると、指定したフォントがエディタに設定された状態で起動する。

Arduino IDEを起動した状態でpreferences.txtで編集しても、起動しているArduino IDEには反映されず、また終了時にはその時点での設定でpreferences.txtが上書きされてしまうようなので注意。

空白のあるフォント名は正しく検索されず類似した名前の別のフォントが選択されてしまう場合がある?(検証不十分)

Arduino core for the ESP32のインストール

ESP32を使用する場合は、"Arduino core for the ESP32"をインストールする。 Installation instructions for Debian / Ubuntu OS (espressif/arduino-esp32)に記載されている手順のとおり進めればよい。

まずは適当な場所に作業ディレクトリを作り、記載のとおりにコマンドを実行する。

Arduino core for the ESP32のインストール
mkdir temp
cd temp

wget https://bootstrap.pypa.io/get-pip.py && \
sudo python get-pip.py && \
sudo pip install pyserial && \
mkdir -p ~/Arduino/hardware/espressif && \
cd ~/Arduino/hardware/espressif && \
git clone https://github.com/espressif/arduino-esp32.git esp32 && \
cd esp32 && \
git submodule update --init --recursive && \
cd tools && \
python3 get.py

作業ディレクトリにget-pip.pyが残るので、インストールが完了して不要になったら作業ディレクトリごと削除する。

pipが既にインストールされている環境の場合は、以下のように省略できる。

Arduino core for the ESP32のインストール (pipがインストールされている環境の場合)
mkdir -p ~/Arduino/hardware/espressif && \
cd ~/Arduino/hardware/espressif && \
git clone https://github.com/espressif/arduino-esp32.git esp32 && \
cd esp32 && \
git submodule update --init --recursive && \
cd tools && \
python3 get.py

Arduino IDEを再起動すると、[ツール]の[ボード]の一覧にESP32関連の項目が追加される。 "ESP32 Dev Module"など適当なボードを選択する。

初期状態での各種設定項目は次のようになっている。

Upload Speed 921600
CPU Frequency 240MHz (WiFi/BT)
Flash Frequency 80MHz
Flash Mode QIO
Flash Size 4MB (32MB)
Partition Scheme Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
Core Debug Level (None)
SPRAM Disabled

シリアルモニタを開き、baud rateを115200bpsに変更する。 その後、ボード上のRESETボタンを押すなどしてリセットすると、次のような内容が出力される。

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun  8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3ffc0000,len:0
load:0x3ffc0000,len:2304
load:0x40078000,len:3788
ho 0 tail 12 room 4
load:0x40098000,len:532
entry 0x4009813c

**************************************
*       hello espressif ESP32!       *
*        2nd boot is running!        *
*            version (V0.1)          *
**************************************
compile time 18:16:58

 SPI Speed      : 40MHz
 SPI Mode       : DIO
 SPI Flash Size : 4MB
Partition Table:
## Label            Usage          Type ST Offset   Length
0 factory          factory app      00 00 00010000 00100000
1 rfdata           RF data          01 01 00110000 00040000
2 wifidata         WiFi data        01 02 00150000 00040000
End of partition table
Loading app partition at offset 00010000
section 0: paddr=0x00000020 vaddr=0x00000000 size=0x0ffe8 ( 65512) 
section 1: paddr=0x00010010 vaddr=0x3f400010 size=0x05b64 ( 23396) map
section 2: paddr=0x00015b7c vaddr=0x3ffba720 size=0x01378 (  4984) load
section 3: paddr=0x00016efc vaddr=0x40080000 size=0x00400 (  1024) load
section 4: paddr=0x00017304 vaddr=0x40080400 size=0x126ac ( 75436) load
section 5: paddr=0x000299b8 vaddr=0x00000000 size=0x06658 ( 26200) 
section 6: paddr=0x00030018 vaddr=0x400d0018 size=0x325b4 (206260) map
start: 0x400807ac

Initializing heap allocator:
Region 19: 3FFBBA98 len 00024568 tag 0
Region 25: 3FFE8000 len 00018000 tag 1
Pro cpu up.
Pro cpu start user code
nvs_flash_init
frc2_timer_task_hdl:3ffbc564, prio:22, stack:2048
tcpip_task_hdlxxx : 3ffbeca8, prio:20,stack:2048
phy_version: 80, Aug 26 2016, 13:04:06, 0
pp_task_hdl : 3ffc34f0, prio:23, stack:8192

:>enter uart init
uart init wait fifo succeed
exit uart init

IDF version : master(db93bceb)

WIFI LIB version : master(934d079b)

ssc version : master(r283 4d376412)

!!!ready!!!
mode : softAP(XX:XX:XX:XX:XX:XX)
dhcp server start:(ip: 192.168.XXX.XXX, mask: 255.255.255.0, gw: 192.168.XXX.XXX)

+WIFI:AP_START

ESP32でのプログラムの書き込み

まずはブートモードを書き込みモードにして起動する。 アップロードに際して自動で切り替える機能のあるボードの場合は特に何もする必要はない。 ボード上にブートモード切り替え用のボタンがある場合はBOOT(またはFLASH)ボタンを押しながらRESETボタンを押す。 シリアルモニタ上では次のように表示され、アップロード待機状態になる。

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download

この状態で「マイコンボードに書き込む」を行う。 このとき、Arduino IDE下部の出力ペインには次のような内容が表示される。

最大1310720バイトのフラッシュメモリのうち、スケッチが207721バイト(15%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が15228バイト(4%)を使っていて、ローカル変数で312452バイト使うことができます。
esptool.py v2.6
Serial port /dev/ttyUSB0
Connecting......
Chip is ESP32D0WDQ6 (revision 0)
Features: WiFi, BT, Dual Core, Coding Scheme None
MAC: XX:XX:XX:XX:XX:XX
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...

Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 4102.1 kbit/s)...
Hash of data verified.
Compressed 17392 bytes to 11186...

Writing at 0x00001000... (100 %)
Wrote 17392 bytes (11186 compressed) at 0x00001000 in 0.1 seconds (effective 1087.6 kbit/s)...
Hash of data verified.
Compressed 207840 bytes to 105407...

Writing at 0x00010000... (14 %)
Writing at 0x00014000... (28 %)
Writing at 0x00018000... (42 %)
Writing at 0x0001c000... (57 %)
Writing at 0x00020000... (71 %)
Writing at 0x00024000... (85 %)
Writing at 0x00028000... (100 %)
Wrote 207840 bytes (105407 compressed) at 0x00010000 in 1.7 seconds (effective 999.9 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...

Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 1531.0 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

自動的にリセットする機能のあるボードの場合は、このあとリセットされ、通常のモードで起動する。 ボード上にブートモード切り替え用のボタンがある場合はBOOT(またはFLASH)ボタンを押さずにRESETボタンだけを押す。

リセット後、シリアルモニタには次のように出力される。

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun  8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:9720
ho 0 tail 12 room 4
load:0x40080400,len:6352
entry 0x400806b8

この後、書き込んだプログラムが実行される。

Seeeduino SAMD Boardsのインストール

Seeeduino XIAOなどを使用する場合は、"Seeeduino SAMD Boards"をインストールする。 Seeeduino XIAO - Seeed Wiki ¶Softwareに記載されている手順のとおり進めればよい。

まず、[ファイル]メニューの[環境設定]を開き、[追加のボードマネージャのURL]の欄右端にあるボタンから入力ウィンドウを開く。 このウィンドウに、URLhttps://files.seeedstudio.com/arduino/package_seeeduino_boards_index.jsonを追記する。

Seeeduino SAMD Boards用のボードマネージャURLの追記

次に、[ツール]メニュー → [ボード: ...] → 一覧最上位にある[ボードマネージャ...]を開く。

ボードマネージャを開く

Seeeduino XIAOなどで検索し、表示されるSeeed SAMD Boards by Seeed Studioをインストールする。

Seeed SAMD Boards by Seeed Studioを検索してインストールする

インストールが終わったら、[ツール]メニュー → [ボード: ...] → Seeed SAMD (32-bits ARM Cortex-M3+ and Cortex-M4) Boardsのカテゴリにあるボードから、目的のボードを選択する。

目的のSeeeduino SAMD Boardを選択する

初期状態での各種設定項目は次のようになっている。

USB Stack Arduino
Debug Off

スケッチ例から01.Basics/Blinkを書き込み、ビルトインLEDが明滅すれば動作OK。 「マイコンボードに書き込む」を行う際、Arduino IDE下部の出力ペインには次のような内容が表示される。

最大262144バイトのフラッシュメモリのうち、スケッチが34100バイト(13%)を使っています。
Atmel SMART device 0x10010005 found
Device       : ATSAMD21G18A
Chip ID      : 10010005
Version      : v1.1 [Arduino:XYZ] Nov 27 2019 16:35:59
Address      : 8192
Pages        : 3968
Page Size    : 64 bytes
Total Size   : 248KB
Planes       : 1
Lock Regions : 16
Locked       : none
Security     : false
Boot Flash   : true
BOD          : true
BOR          : true
Arduino      : FAST_CHIP_ERASE
Arduino      : FAST_MULTI_PAGE_WRITE
Arduino      : CAN_CHECKSUM_MEMORY_BUFFER
Erase flash
done in 0.817 seconds

Write 34716 bytes to flash (543 pages)

[===                           ] 11% (64/543 pages)
[=======                       ] 23% (128/543 pages)
[==========                    ] 35% (192/543 pages)
[==============                ] 47% (256/543 pages)
[=================             ] 58% (320/543 pages)
[=====================         ] 70% (384/543 pages)
[========================      ] 82% (448/543 pages)
[============================  ] 94% (512/543 pages)
[==============================] 100% (543/543 pages)
done in 0.213 seconds

Verify 34716 bytes of flash with checksum.
Verify successful
done in 0.045 seconds
CPU reset.