インストール - Arduino IDE
概要
Arduino IDEとは、Arduino向けのスケッチ(プログラム)を作成する統合開発環境である。
Arduino IDEを用いることで、スケッチを作成して、USBケーブルを通じてArduinoボードにアップロードするための環境が整う。
参考書 | |||
---|---|---|---|
Prototyping Lab 第2版 「作りながら考える」ためのArduino実践レシピ |
Arduinoをはじめよう 第4版 |
Handbook of Arduino 100以上の実践的なガイド | |
Exploring Arduino 技術者のためのツールとテクニック |
ELEGOO Arduino UNO R3 最終版スタータキット UNOチュートリアル付 |
Arduino IDEのインストール
Windows
Arduino IDEをダウンロードしてインストールを開始する。
基本的には、[Next]ボタンを押下し続けることでインストールは完了する。
インストールの途中で、Arduino USB Driver、libusb-win32、Genuino USB Driver等のデバイスドライバがインストールされる。
セキュリティメッセージが表示される場合は、[インストール]ボタンを押下する。
RHEL / SUSE
Arduino IDEは、以下の3つのインストール方法がある。
ここでは、リポジトリに追加してインストールする方法およびインストールせずに使用する方法を記載する。
- ワンクリックインストール(SUSEのみ)
- リポジトリに追加してインストールする方法
- インストールせずに使用する方法
リポジトリを追加してインストール
Arduino IDE 2を使用する場合、依存関係のライブラリをインストールする。
# RHEL sudo dnf install fuse # SUSE sudo zypper install fuse
まず、Arduino IDEのリポジトリを追加する。
# SUSE sudo zypper --gpg-auto-import-keys ar -f 'https://download.opensuse.org/repositories/CrossToolchain:/avr/$releasever/' 'CrossToolchain:avr' sudo zypper refresh
次に、Ardduino IDEをインストールする。
sudo zypper install arduino
手動でインストール
Arduino IDE 2を使用する場合、依存関係のライブラリをインストールする。
# RHEL sudo dnf install fuse # SUSE sudo zypper install fuse
Arduinoの公式サイトから、Arduino IDE 2をダウンロードする。
ダウンロードしたファイルを解凍する。
unzip arduino-ide_<バージョン>_Linux_64bit.zip mv arduino-ide_<バージョン>_Linux_64bit Arduino_IDE
必要ならば、Arduino IDE 2を任意のディレクトリに配置する。
mv Arduino_IDE <任意のインストールディレクトリ>
Arduino IDE 2のデスクトップエントリファイルを作成する。
vi ~/.local/share/applications/org.Arduino-IDE.desktop
# ~/.local/share/applications/org.Arduino-IDE.desktopファイル
[Desktop Entry]
Type=Application
Name=Arduino IDE <Arduinoのバージョン>
GenericName=Arduino IDE
Comment=Open-source electronics prototyping platform
Exec=/<Arduino IDEのインストールディレクトリ>/arduino
Icon=/<Arduino IDE 2のインストールディレクトリ>/resources/app/resources/icons/512x512.png
Categories=Development;IDE;Electronics;
Keywords=embedded electronics;electronics;avr;microcontroller;
MimeType=text/x-arduino;
StartupWMClass=processing-app-Base
Terminal=false
Arduino IDEの設定
フォントの設定
Arduino IDE 1.8系, 2系において、標準フォントの表示が粗いため、別のフォントを使用することを推奨する。
フォントの設定を行うため、preferences.txtファイルを以下のように編集する。
- Windows
- C:\Users\<ユーザ名>\AppData\Local\Arduino<バージョン>\preferences.txt
- RHEL / SUSE
- ~/.arduino<バージョン>/preferences.txt
# C:\Users\<ユーザ名>\AppData\Local\Arduino<バージョン>\preferences.txtファイル # または # ~/.arduino<バージョン>/preferences.txtファイル editor.font=Noto Sans,plain,14
Arduino IDE 1.8系の設定
スケッチをアップロードする時、ボードとシリアルポートを選択した後に、以下に示すようなエラーが出力される場合がある。
Error opening serial port ...
これを解決するため、シリアルポートのパーミッションを設定する。
まず、PCとArduinoを接続した後、/dev/ttyACMXの所属グループ名を確認する。 (X : 数値)
ls -l '/dev/ttyACM*' # 出力例 crw-rw---- 1 root dialout 188, 0 5 apr 23.01 ttyACM0
Arduino IDE 1.8系を使用するユーザをdialoutグループをメンバーにする必要がある。また、必要ならば、lockグループ、uucpグループもメンバーにする。
ただし、ほとんどの環境では、dialoutグループにユーザを追加するだけでよい。
もし、YaSTで行う場合は、[セキュリティとユーザ]セクション - [ユーザとグループの管理]を選択して、必要な変更を行う。
また、ターミナルから実行するには、以下のコマンドを実行する。
sudo usermod -aG dialout $USER # または sudo usermod -aG tty dialout lock uucp $USER
もし、上記のグループからユーザを削除する場合は、以下のコマンドを実行する。
sudo gpasswd -d $USER tty dialout lock uucp
設定を反映させるため、PCを再ログイン、または、再起動する。
スケッチをボードにアップロード、および、シリアルモニターが使用できるかどうかを確認する。
Arduino IDE 2系の設定
Arduino IDE 2がシリアルポートにアクセスしてソースコードをボードにアップロードできるようにするには、/etc/udev/rules.d/99-arduino.rulesファイルを作成して、ルールを追加する。
sudo vi /etc/udev/rules.d/99-arduino.rules
# /etc/udev/rules.d/99-arduino.rulesファイル SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", GROUP="plugdev", MODE="0666"
Udevを再起動、または、PCを再起動する。
※注意
Udevを再起動する場合 (特に、変更が特定のデバイスに関連している場合) は、そのデバイスを再接続する、または、
sudo udevadm trigger
コマンドを実行して対話的にデバイスのイベントをトリガーする必要がある。
# Udevを再起動 sudo udevadm control --reload-rules または sudo udevadm trigger --action=change または sudo udevadm trigger # PCを再起動 sudo systemctl reboot
CH34xドライバを使用する場合
CH34xドライバのパッチのインストール
Arduinoのクローンにおいて、Linux標準のCH34xドライバを使用する場合、シリアル通信に失敗するケースがいくつか報告されている。
もし、問題が発生する場合、CH34xのパッチを当てたドライバをインストールすることができる。
- CH34xを使用したデバイスを、USBポートから外す。
- 問題が発生したログを確認する。
sudo dmesg | grep - iE ch34
出力例:
[ xxx] ch34x ttyUSB0: ch34x converter now disconnected from ttyUSB0
[ xxx] ch34x 3-2:1.0: device disconnected
- パッチ適用済みのCH34xのビルドに必要なライブラリをインストールする。
sudo zypper install kernel-source
- パッチ適用済みのCH34xのGithubにアクセスして、ドライバのソースコードをダウンロードする。
- パッチ適用済みのCH34xをビルドおよびインストールする。
sudo make clean
sudo make -j $(nproc)
sudo make load
- 古いドライバをアンインストールする。
sudo rmmod ch341
- 現在インストールされているモジュールの一覧を表示する。
lsmod | grep ch34
- CH34xを使用したデバイスを、USBポートに接続する。
- 接続に関するログを確認する。
sudo dmesg | grep - iE ch34
出力例:
[ xxx] ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
[ xxx] ch341 3-2:1.0: device disconnected
場合によっては、シリアルポートのパーミッションを設定する必要がある。
PCの環境において、CH34xがどのように列挙されたかにより、デバイスファイル(/dev/ttyUSB0)が異なる場合があるため、
シリアルポートの設定に問題がある場合は、必要に応じてポートを調整すること。
sudo usermod -a -G dialout $USER sudo chmod a+rw /dev/ttyUSB0
ライブラリのディレクトリ
Winodws
Arduino IDEからインストールしたライブラリは、C:\Users\[ユーザー名]\Documents\Arduino\librariesフォルダに保存される。
また、システムにプリインストールされているライブラリは、C:\Program Files\Arduino IDE\resources\libraryフォルダに保存される。
なお、ライブラリの場所を確認する場合は、Arduino IDEのメイン画面から、[ファイル] - [環境設定]から、[スケッチブックの保存場所]ボタンを押下して確認できる。
デフォルトでは、ドキュメント\Arduinoに設定されている。
Linux
Arduino IDEからインストールしたライブラリは、~/Arduino/librariesディレクトリに保存される。
なお、Arduino IDE 2では、2種類のライブラリの保存場所がある。
- ユーザがインストールしたライブラリ
- ~/Arduino/libraries
- システムにプリインストールされているライブラリ
- ~/.arduino15/libraries
- /usr/share/arduino/libraries
なお、ライブラリの場所を確認する場合は、Arduino IDEのメイン画面から、[ファイル] - [環境設定]から、[スケッチブックの保存場所]ボタンを押下して確認できる。
エラー関連
書き込みできない場合
プログラムの書き込み時において、以下に示すようなエラーが出力される場合がある。
Cannot perform port reset: 1200-bps touch: setting DTR to OFF: broken pipe
このエラーは、Arduinoのブートローダーとの通信に問題が発生している典型的なケースである。
- 解決方法 1 : デバイスファイルのパーミッション変更する
- (デバイスファイル名が異なる場合は適宜変更すること)
sudo chmod a+rw /dev/ttyACM0
- 解決方法 2 : 実行するユーザをdialoutグループに追加する
sudo usermod -a -G dialout $USER
- この後、再ログインする必要がある。
- 解決方法 2 : Arduinoを再起動する
- ArduinoのUSBケーブルを抜き差しする、または、別のUSBポートに接続する。
- Arduinoのリセットボタンを押下した後に書き込みを実行する。
- 解決方法 4 : Arduinoが認識されているかどうかを確認する
- デバイスの認識を確認する。
ls -l /dev/ttyACM*
またはsudo dmesg | grep tty
- 解決方法 5 : udevルールの確認と追加
- udevルールを追加するため、以下に示す内容を追記する。
sudo nano /etc/udev/rules.d/99-arduino.rules
SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0043", MODE="0666" SUBSYSTEM=="tty", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0001", MODE="0666"
- 設定を反映させるため、udevを再起動する。
sudo udevadm control --reload-rules
特に、解決方法1〜2の方法で解決することが多い。
ファームウェアの復元
Arudino UNO R4 WiFi
Arduino UNO R4 WiFiにはUSB-シリアル通信を処理するESP32-S3チップが搭載されている。
このチップのファームウェアは、Arduino IDEまたはArduino Cloudを使用してアップグレードできるが、アップグレード後のファームウェアが正常に動作しない場合がある。
この時、espflashツールを使用してファームウェアを復元することができる。
これは、以下に示すような症状が起きている場合に有効である。
- Arudino UNO R4 WiFiが、Arduino IDEまたはArduino Cloudの[ボード情報の取得]を選択すると、汎用のESP32ボード (例: ESP32-S3-Box) として検出される。
- Arudino UNO R4 WiFiが、Arduino IDEまたはArduino Cloudの[ボード情報の取得]を選択すると、データUSBケーブルでコンピュータに接続されているにもかかわらず、どのボードとしても検出されない。
- まず、下図のように、Arduino UNO R4 WiFiにある6ピンヘッダのGNDピンとDownloadピンを短絡 (ショート) させる必要がある。
- Arduino UNO R4 WiFiと不要なUSBデバイスをPCから外す。
- Arduino UNO R4 WiFi上で、USB type Cコネクタの隣にある6ピンヘッダのGNDピンとDownloadピンを探す。
- GNDピンとDownloadピンを短絡させる。
これは、2つのピンの間にメス-メス ジャンパワイヤを使用して接続することを推奨する。 - メス-メス ジャンパワイヤが持っていない場合は、先の尖った導電性の物体 (オス-オス ジャンパワイヤの一端等) を使用して、両方のピンに接触するように配置することもできる。
- 短絡させた状態で、Arduino UNO R4 WiFiをPCに接続する。
- 新しいデバイスが接続されたというメッセージが表示される場合は、接続を許可する。
次に、espflashツールのGithubにアクセスして、espflashツールをダウンロードする。
ダウンロードしたファイルを解凍する。
unzip unor4wifi-update-linux.zip cd unor4wifi-update-linux
espflashツールを実行してファームウェアを復元する。
./bin/espflash write-bin -b 115200 0x0 firmware/UNOR4-WIFI-S3-*.bin
復元前において、以下に示すようなプロンプトが表示される。
この時、キーボードの[N]キーを押下する。
? Remember this serial port for future use? (y/n) > 訳: 今後の使用のために、このシリアルポートを記憶しておきますか? (y/n)
ファームウェアの復元に成功した後、Arudino UNO R4 WiFiをPCから外す。
次に、GNDピンとDownloadピンのジャンパワイヤ (短絡用) を外す。
Arudino UNO R4 WiFiをPCに再度接続する。
Arduino IDE等から[ボード情報の取得]を選択して、"Arudino UNO R4 WiFi"と表示されているかどうかを確認する。
※注意
Linux上でespflashツールを実行する時、以下に示すようなエラーが出力される場合がある。
これは、システムにインストールされているGLIBCのバージョンが古いためである。
./bin/espflash: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by ./bin/espflash) ./bin/espflash: /lib64/libc.so.6: version `GLIBC_2.32' not found (required by ./bin/espflash) ./bin/espflash: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./bin/espflash)
この時、インストール - GLIBCのページを参照して、エラーで出力されているバージョン以降のGLIBCを別途インストールする。
インストールしたGLIBCをラッピングして、espflashツールを実行する。
# 別途インストールしたGLIBCをラッピングして、espflashツールを実行する場合 export GLIBC_DIR="<GLIBCのインストールディレクトリ>" $GLIBC_DIR/lib/ld-linux-x86-64.so.2 \ --library-path $GLIBC_DIR/lib64:$GLIBC_DIR/lib:/usr/lib64:/usr/lib:/lib64:/lib \ ./bin/espflash write-bin -b 115200 0x0 firmware/UNOR4-WIFI-S3-*.bin
Fritzingデザインソフトウェア
Arduinoプロジェクトで使用するための推奨されるソフトウェアである。
Fritzingは、インタラクティブな電子機器をクリエイティブに操作できるようにするためのオープンソースライブラリである。
Fritzingは、Arduinoプロジェクトの文書化、電子回路の詳細の学習、他の人との作業の共有、製造設計に役立つ。
パッケージ管理システムからインストール
SUSEでは、メインリポジトリを利用してFritzingをインストールすることができる。
sudo zypper install fritzing
AppImageをダウンロード
GLIBC 2.31以降であれば、どのLinuxディストリビューションでも動作するようにAppImageとして配布されている。
ただし、AppImageをサポートするためにlibfuse2ライブラリをインストールする必要がある。
Fritzingの公式Webサイトにアクセスして、AppImageファイルをダウンロードする。
価格は、8ユーロまたは25ユーロから任意の金額から選択する。
ダウンロードしたFritzingに実行権限を付加する。
chmod u+x fritzing-<バージョン>-qt6.AppImage
ソースコードからインストール
一般的に、Fritzingは有料であるが、ソースコードからインストールすることにより無料で使用することができる。
まず、Fritzingのビルドに必要なライブラリをインストールする。
なお、最新のFritzingはQt 6に対応している。
# RHEL sudo dnf install make gcc gcc-c++ xz-devel \ qt6-base-devel qt6-core-devel qt6-qt5compat-devel qt6-concurrent-devel qt6-xml-devel \ qt6-network-devel qt6-sql-devel qt6-serialport-devel qt6-printsupport-devel \ qt6-gui-devel qt6-widgets-devel qt6-svg-devel qt6-openglwidgets-devel # SUSE sudo zypperi install make gcc gcc-c++ xz-devel \ qt6-base-devel qt6-core-devel qt6-qt5compat-devel qt6-concurrent-devel qt6-xml-devel \ qt6-network-devel qt6-sql-devel qt6-serialport-devel qt6-printsupport-devel \ qt6-gui-devel qt6-widgets-devel qt6-svg-devel qt6-openglwidgets-devel
以前のFritzingをインストールする場合は、Qt 5ライブラリが必要となる。
# RHEL sudo dnf install make gcc gcc-c++ xz-devel \ qt6-base-devel qt6-core-devel qt6-qt5compat-devel qt6-concurrent-devel qt6-xml-devel \ qt6-network-devel qt6-sql-devel qt6-serialport-devel qt6-printsupport-devel \ qt6-gui-devel qt6-widgets-devel qt6-svg-devel qt6-openglwidgets-devel # SUSE sudo zypper install libqt5-qtbase-devel libQt5Core-devel libQt5Concurrent-devel libQt5Xml-devel \ libQt5Network-devel libqt5-qtserialport-devel libQt5PrintSupport-devel libQt5Sql-devel \ libQt5Gui-devel libQt5Widgets-devel libqt5-qtsvg-devel
FritzingのGithubからgit clone
コマンドを実行して、ソースコードをダウンロードする。
git clone https://github.com/fritzing/fritzing-app.git cd fritzing-app
Fritzingをビルドおよびインストールする。
mkdir build && cd build qmake PREFIX=<Fritzingのインストールディレクトリ> \ ../phoenix.pro
※注意
qmake
コマンドは、Linuxディストリビューションによってはコマンド名が異なる場合がある。
AVR GCCツールチェーンの使用
公式のリポジトリからインストール
まず、以下のリポジトリを追加する。
# SUSE sudo zypper ar -cfp 90 'https://download.opensuse.org/repositories/CrossToolchain:/avr/$releasever/' AVR-GCC
インストールするライブラリは、以下の4つである。
- avrdude
- avr-libc
- cross-avr-binutils
- cross-avr-gcc
もし、Arduino IDEがAVR-GCCを見つけることができない場合、/usr/local/binディレクトリ等にシンボリックリンクを作成する。
例えば、AVR-GCCが/optディレクトリにインストールされている場合、以下のコマンドを実行する。
sudo find /opt/cross/bin/ -iname "avr*" -exec ln -s -t /usr/local/bin/ {} \;
サードパーティ製のインストール
※注意 1
これは、Windows x86, x64およびLinux x64向けのAVR GCCツールチェーンである。
Binutils、AVR LibC、AVRDUDE、Make、GDBも含まれている。
※注意 2
サードパーティ製のGCCツールチェーンはArduino IDE 1.8.13で動作確認しているため、Arduino IDE 2で使用できるかどうかは不明である。
Arduino IDEにおいて、Arduino付属のコンパイラが古いため、AVRの一部のライブラリとの互換性が無い場合がある。
そのため、サードパーティ製の最新版に近いAVR GCCツールチェーンを使用することができる。
まず、Arduino IDEの標準コンパイラをバックアップする。
cp -r /<Arduinoのインストールディレクトリ>/hardware/tools/avr /<Arduinoのインストールディレクトリ>/hardware/tools/avr_org
次に、AVR GCCツールチェーンをダウンロードする。
ダウンロードしたAVR GCCツールチェーンを解凍する。
tar xf avr-gcc-<バージョン名>-x64-linux.tar.bz2
解凍したAVR GCCツールチェーンのファイルおよびディレクトリを、/<Arduino IDEのインストールディレクトリ>/hardware/toolsディレクトリに上書きする。
mv -f avr-gcc-<バージョン名>-x64-linux/* /<Arduinoのインストールディレクトリ>/Arduino/arduino-1.8.13/hardware/tools/avr
Arduino IDEを起動する時、サードパーティ製AVR GCCツールチェーンが自動的に検出される。
AVR GCCツールチェーンが正常に動作するかどうかを確認するため、例えば、Blinkサンプル等をコンパイルしてArduinoにダウンロードする。
VSCodeでの開発
VSCodeでは、コード補完機能も使用できることから、開発が効率化することができる。
このセクションでは、Arduinoの開発をVSCodeで行うための設定に関する手順を記載する。
前提条件
前提条件として、以下の導入が完了しているものとする。
- VSCode
- VSCodeの拡張機能(Arduino for Visual Studio Code、arduino-snippets、C/C++ for Visual Studio Code)
- Arduino IDE
VSCodeの設定
VSCodeを起動して、[ファイル]メニュー - [ユーザー設定] - [設定]を選択して、設定画面を開く。
設定画面右の[ユーザー]タブ - [拡張機能] - [ArduinoConfiguration]を選択する。
以下に、設定項目と編集内容を記載する。
- arduino.path
- Arduino IDEの実行ファイルがあるディレクトリを入力する。
- Windowsの場合 : C:\Program Files (x86)\Arduino
- Linuxの場合 : <Arduino IDEのインストールディレクトリ>
- arduino.commandPath
- Arduino IDEのインストールディレクトリにある実行ファイル名を入力する。
- Windowsの場合 : arduino_debug.exe
- Linuxの場合 : arduino
- arduino.defaultBaudRate
- シリアルモニタのボーレートのデフォルト値を設定する。
- ボーレートの値は、9600を推奨する。
- C_Cpp.intelliSenseEngine
- コード補完機能の設定である。この設定項目では、
Tag Parser
を選択する。
- コード補完機能の設定である。この設定項目では、
- C_Cpp.default.includePath
- インクルードする時に読み込むライブラリの場所を入力する。
- [setting.jsonで編集]を選択する。
- 以下に設定例を示す。
- Windowsの場合
"C_Cpp.default.includePath": [
"C:\\Users\\<ユーザ名>\\Documents\\Arduino\\libraries",
"C:\\Program Files (x86)\\Arduino\\tools",
"C:\\Program Files (x86)\\Arduino\\libraries",
"C:\\Program Files (x86)\\Arduino\\hardware"]
- Linuxの場合
"C_Cpp.default.includePath": [
"/home/<ユーザ名>/Arduino/libraries",
"/home/<ユーザ名>/InstallSoftware/Arduino/arduino-<バージョン名>/libraries",
"/home/<ユーザ名>/InstallSoftware/Arduino/arduino-<バージョン名>/tools",
"/home/<ユーザ名>/InstallSoftware/Arduino/arduino-<バージョン名>/hardware"]
以下に、setting.jsonの設定例を示す。
{ // ...略 // Arduino "arduino.defaultBaudRate": 9600, // ボーレートの設定 "arduino.path": "/home/<ユーザ名>/InstallSoftware/Arduino/arduino-<Arduino IDEのバージョン>", "arduino.commandPath": "arduino", "arduino.logLevel": "info", "arduino.enableUSBDetection": true, "arduino.disableTestingOpen": false, "arduino.skipHeaderProvider": false, "arduino.disableIntelliSenseAutoGen": true, // VSCode起動時のIntelliSenseの自動生成を無効にする // C++ "C_Cpp.intelliSenseEngine": "Tag Parser", "C_Cpp.default.includePath": [ "/home/<ユーザ名>/Arduino/libraries", "/home/<ユーザ名>/InstallSoftware/Arduino/arduino-1.8.13/libraries", "/home/<ユーザ名>/InstallSoftware/Arduino/arduino-1.8.13/tools", "/home/<ユーザ名>/InstallSoftware/Arduino/arduino-1.8.13/hardware"] }
コンパイルまたはファームウェアのダウンロードにおいて、出力されるメッセージが文字化けする場合、
以下のファイルを編集して、215〜225行目までのソースコードをコメントアウトする。
- Windows
- C:\Users\%USERNAME%\.vscode\extensions\vsciot-vscode.vscode-arduino-<バージョン名>\out\src\common\util.js
- Linux
- ~/.vscode/extensions/vsciot-vscode.vscode-arduino-<バージョン名>/out/src/common/utils.js