Arduino IDEについて。 インストール、初期設定など。 ここではUbuntu 18.04でArduino IDE Linux 64 bits版を使用する場合についてを記載しています。

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

Arduino IDEのインストール

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

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

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

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

インストールスクリプト(install)を実行し、インストールが完了するとデスクトップ上に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.gtkrc
style "arduino" {
  font_name = "Noto Sans CJK JP 10"
}

class "GtkWidget" style "arduino"

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

arduino
--- a/arduino.original
+++ b/arduino
@@ -1,5 +1,7 @@
 #!/usr/bin/env bash
 
+export GTK2_RC_FILES=$GTK2_RC_FILES:./arduino.gtkrc
+
 APPDIR="$(dirname -- "$(readlink -f -- "${0}")" )"

その後、ターミナルから起動スクリプトarduinoを実行すると、指定したフォントがウィンドウやメニューに反映された状態で起動する。

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

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


デスクトップ上のアイコン等、.desktopファイルから起動する場合にはgtkrcファイルが読み込まれないので、ファイルarduino-arduinoide.desktopExecエントリを編集して環境変数GTK2_RC_FILESを設定する。

arduino-arduinoide.desktop
--- a/arduino-arduinoide.desktop.original
+++ b/arduino-arduinoide.desktop
@@ -3,7 +3,7 @@ Type=Application
 Name=Arduino IDE
 GenericName=Arduino IDE
 Comment=Open-source electronics prototyping platform
-Exec=/home/smdn/arduino-ide/arduino-1.8.10/arduino
+Exec=env GTK2_RC_FILES=/home/smdn/arduino-ide/arduino-1.8.10/arduino.gtkrc /home/smdn/arduino-ide/arduino-1.8.10/arduino
 Icon=arduino-arduinoide
 Terminal=false
 Categories=Development;IDE;Electronics;

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

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

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

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

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

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

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