インストール - Arduino IDE

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

Arduino IDEとは、Arduino向けのスケッチ(プログラム)を作成する統合開発環境である。
Arduino IDEを用いることで、スケッチを作成して、USBケーブルを通じてArduinoボードにアップロードするための環境が整う。

参考書
91KfZbyAH6L._SL1500_.jpg
Prototyping Lab 第2版
「作りながら考える」ためのArduino実践レシピ
813u8pOj7cL._SL1500_.jpg
Arduinoをはじめよう 第4版
61QVgV+3fwL._SL1176_.jpg
Handbook of Arduino
100以上の実践的なガイド
51YEa0eKNLL.jpg
Exploring Arduino
技術者のためのツールとテクニック
81AgsEZ+ULL._SL1500_.jpg
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のパッチを当てたドライバをインストールすることができる。

  1. CH34xを使用したデバイスを、USBポートから外す。
  2. 問題が発生したログを確認する。
    sudo dmesg | grep - iE ch34

    出力例:
    [ xxx] ch34x ttyUSB0: ch34x converter now disconnected from ttyUSB0
    [ xxx] ch34x 3-2:1.0: device disconnected
  3. パッチ適用済みのCH34xのビルドに必要なライブラリをインストールする。
    sudo zypper install kernel-source

  4. パッチ適用済みのCH34xのGithubにアクセスして、ドライバのソースコードをダウンロードする。
  5. パッチ適用済みのCH34xをビルドおよびインストールする。
    sudo make clean
    sudo make -j $(nproc)
    sudo make load
  6. 古いドライバをアンインストールする。
    sudo rmmod ch341
  7. 現在インストールされているモジュールの一覧を表示する。
    lsmod | grep ch34
  8. CH34xを使用したデバイスを、USBポートに接続する。
  9. 接続に関するログを確認する。
    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ケーブルでコンピュータに接続されているにもかかわらず、どのボードとしても検出されない。


  1. まず、下図のように、Arduino UNO R4 WiFiにある6ピンヘッダのGNDピンとDownloadピンを短絡 (ショート) させる必要がある。
    Arduino UNO R4 ESP32 Data Pins.png
  2. Arduino UNO R4 WiFiと不要なUSBデバイスをPCから外す。
  3. Arduino UNO R4 WiFi上で、USB type Cコネクタの隣にある6ピンヘッダのGNDピンとDownloadピンを探す。

  4. GNDピンとDownloadピンを短絡させる。
    これは、2つのピンの間にメス-メス ジャンパワイヤを使用して接続することを推奨する。
  5. メス-メス ジャンパワイヤが持っていない場合は、先の尖った導電性の物体 (オス-オス ジャンパワイヤの一端等) を使用して、両方のピンに接触するように配置することもできる。
  6. 短絡させた状態で、Arduino UNO R4 WiFiをPCに接続する。
  7. 新しいデバイスが接続されたというメッセージが表示される場合は、接続を許可する。


次に、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