「Arduino」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(同じ利用者による、間の5版が非表示)
1行目: 1行目:
 
[[Category:開発]]
 
[[Category:開発]]
 
[[Category:科学]]
 
[[Category:科学]]
  +
[[de:Arduino]]
 
[[en:Arduino]]
 
[[en:Arduino]]
  +
[[zh-hans:Arduino]]
Arduino は柔軟で手軽なハードウェアとソフトウェアによる、オープンソースの電子工作プロトタイププラットフォームです。芸術家やデザイナー、ホビイスト、その他インタラクティブな機器や環境を作成したい全ての人を対象としています。詳細は [http://www.arduino.cc/ Arduino HomePage] を見て下さい。
 
  +
{{Related articles start}}
  +
{{Related|AVR}}
  +
{{Related articles end}}
  +
[[Wikipedia:ja:Arduino|Arduino]] は柔軟で手軽なハードウェアとソフトウェアによる、オープンソースの電子工作プロトタイププラットフォームです。芸術家やデザイナー、ホビイスト、その他インタラクティブな機器や環境を作成したい全ての人を対象としています。
  +
  +
デバイスを接続して設定すれば、シリアル接続で読み書きタスクを実行することができます。例としては、[[シリアルコンソール#接続|シリアル監視プログラム]]を使った、UART 経由のインターフェイスや、マイクロコントローラのプログラミングがあります。公式の Arduino IDE (公式リポジトリで利用可能) を使えば、プログラミング、コンパイル、及びコードのアップロードが容易になります。また、任意のコンパイラやプログラマを使って、マイクロコントローラのプログラミングを行うこともできます。
   
 
== インストール ==
 
== インストール ==
   
* 次うちのどれかをインストールしてください: オリジナルの 1.x バージョン IDE の {{Pkg|arduino}}、公式 CLI {{Pkg|arduino-cli}}、新しい 2.x IDE の {{AUR|arduino-ide-bin}}。1.x IDEオフラインドキュメントは {{Pkg|arduino-docs}} でインストールできます
+
* 公式 CLI である {{Pkg|arduino-cli}}IDE の新しい 2.x リリースである {{Pkg|arduino-ide}} のどちらかをインストールしてください
* ユーザを {{ic|uucp}} [[ープ|ユーザグル]] に追加してください (詳しくは [[#シリアル通信]] セクションを参照)
+
* デバイスへの[[#シリア通信|ユーザーによるアクセス]]を有効化してください。
 
* {{ic|cdc_acm}} モジュールを[[カーネルモジュール|ロード]]する必要があるかもしれません。
 
* {{ic|cdc_acm}} モジュールを[[カーネルモジュール|ロード]]する必要があるかもしれません。
   
16行目: 23行目:
 
==== AVR ボード ====
 
==== AVR ボード ====
   
Arduino Uno などの AVR 基盤を使用する場合、任意で {{Pkg|arduino-avr-core}} をインストールすることで、バンドルされている古い avr-core の代わりに Arch Linux の上流の avr-gcc を使うことができます。古い arduino-core を使いたい場合 [https://docs.arduino.cc/learn/starting-guide/cores ボードマネージャでインストール] する必要があります。"Tools>Board" メニューからコアをいつでも切り替えられます。
+
Arduino Uno などの AVR 基盤を使用する場合、任意で {{Pkg|arduino-avr-core}} をインストールすることで、バンドルされている古い avr-core の代わりに Arch Linux の上流の avr-gcc を使うことができます。古い arduino-core を使いたい場合 [https://docs.arduino.cc/learn/starting-guide/cores ボードマネージャでインストール] する必要があります。''Tools > Board'' メニューからコアをいつでも切り替えられます。
   
 
==== Pinoccio Scout ====
 
==== Pinoccio Scout ====
   
[https://pinocc.io/ Pinoccio Scouts] も Arduino IDE を使ってプログラムすることが可能です。手順は [https://pinocc.io/solo こちら] に記載されています。もしくは、[[AUR]] から {{AUR|arduino-pinoccio}} をインストールすることもできます。
+
[https://pinocc.io/ Pinoccio Scouts]{{Dead link|2024|01|13|status=domain name not resolved}} も Arduino IDE を使ってプログラムすることが可能です。手順は[https://pinocc.io/solo こちら]{{Dead link|2024|01|13|status=domain name not resolved}}に記載されています。
  +
もしくは、{{AUR|arduino-pinoccio}} をインストールすることもできます。
   
 
==== Intel Galileo ====
 
==== Intel Galileo ====
   
Intel Galileo ボードを Arch Linux で使用したい場合、Arduino IDE をインストールし、"Tools->Board->Boards Manager" から Galileo ツールのパッケージをダウンロードしてください。[https://github.com/arduino/Arduino/issues/5523 こちらの github の投稿] に従ってフィックスを適用できます
+
Intel Galileo ボードを Arch Linux で使用したい場合、Arduino IDE をインストールし、''Tools > Board > Boards Manager'' から Galileo ツールのパッケージをダウンロードしてください。
  +
インストールを修正するには、[https://github.com/arduino/Arduino/issues/5523 こちらの github の投稿]に従ってください。
 
==== Arm7 デバイス ====
 
 
[http://blog.tklee.org/2014/10/arduino-ide-158-on-banana-pi.html こちら] に対処方法が載っています。
 
   
=== Arduino IDE 1.x 2.x ===
+
=== Arduino IDE 1.x 及び 2.x ===
   
 
以下の手順は、両方のバージョンの IDE で有効であるはずです。
 
以下の手順は、両方のバージョンの IDE で有効であるはずです。
36行目: 41行目:
 
==== AVR ボード ====
 
==== AVR ボード ====
   
AVR ボードは自動的に 2.x リリースの IDE によってインストールされますが、1.x と 2.x の両方のリリースで AVR ボードはボードマネージャから管理できます。1.x については [https://docs.arduino.cc/learn/starting-guide/cores こちら] を参照してください
+
AVR ボードは自動的に 2.x リリースの IDE によってインストールされますが、1.x と 2.x の両方のリリースで AVR ボードはボードマネージャから管理できます。
   
 
==== SparkFun ====
 
==== SparkFun ====
   
Pro Micro などの SparkFun ボードを使用するには、ボード定義をダウンロードしておく必要があります。詳細は [https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/installing-mac--linux こちら] [https://github.com/sparkfun/Arduino_Boards こちら] を参照。
+
Pro Micro などの SparkFun ボードを使用するには、ボード定義をダウンロードしておく必要があります。詳細は[https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-guide/installing-mac--linux こちら]と[https://github.com/sparkfun/Arduino_Boards こちら]を参照。
   
 
==== RedBear Duo ====
 
==== RedBear Duo ====
47行目: 52行目:
   
 
== 設定 ==
 
== 設定 ==
  +
  +
USB 経由での接続には、Arduino 上のインターフェイスチップが使用されます。純正のボードでは ATmegaxU2 が使用されていることが多いです (これは ACM デバイスとして認識されます)。Linux 上では、{{ic|cdc_acm}} [[カーネルモジュール|モジュール]]が使用されます。なので、Arduino が接続されると、Linux では {{ic|/dev/ttyACMx}} でアクセスできます。
  +
  +
非純正の Arduino ボードでは安いインターフェイスチップが使用されていることが多く、たいてい中国製の CH34x ファミリが使用されます。CH34x は上述の標準規格を実装しておらず、デバイス自体を USB 経由でプロプライエタリな UART として公開します。この場合、{{ic|ch341}} [[カーネルモジュール|モジュール]]が使用され、Linux 上では {{ic|/dev/ttyUSBx}} でアクセスできます。デバイスファイルの命名規則は [[#Arduino デバイスの永続的な命名|udev ルールにより変更]]できます。
  +
  +
{{Note|コードのアップロード時には、プログラマ用にシリアルポートを開放するために、全てのシリアル監視プログラムを閉じてください。}}
   
 
=== シリアル通信 ===
 
=== シリアル通信 ===
   
arduino ボードはシリアル接続や USB シリアル接続によってコンピュタと通信します。そのためシリアルデバイスファイルへの読み書きアクセス権ユーザに必要となります。[[Udev]] は {{ic|uucp}} グループによって所有されている {{ic|/dev/tts/}} にファイルを作成するためユーザーを {{ic|uucp}} グループ追加することで必要な読み書き権限が与えられます。フォルト Java IDE を使用する場合は、ユーザーを lock グループに追加し {{ic|/var/lock/lockdev}} にアクセスできるようにしてください
+
USB 経由で UART を公開するボードの場合シリアルへの読み書きアクセス権ユーザに与える必要があります [https://arduino.stackexchange.com/a/21219]。[[Udev#通常ユーザーにデバイスの使用を許可する]] 章で説明されるように、以下のファイルを作成してください:
   
  +
{{hc|/etc/udev/rules.d/01-ttyusb.rules|2=
# gpasswd -a $USER uucp
 
  +
SUBSYSTEMS=="usb-serial", TAG+="uaccess"
# gpasswd -a $USER lock
 
  +
}}
{{Note|変更を適用するには、一度ログアウトしてから再度ログインする必要があります。}}
 
   
Arduino にアップロードを行う前に、Tools メニューからシリアルポート、ボード、プロセッサを適切に設定してください。
+
[[Udev#新しいルールをロードする|Udev ルールを再読み込み]]し、Arduino デバイスを再度接続してください。Arduino 上コードをアップロードする前に、Tools メニュー (バージョン 1.x) か IDE 上部の Select board オプション (バージョン 2.x) から適切なシリアルポート、ボード、プロセッサ設定されていることを確認してください。
   
 
== stty ==
 
== stty ==
   
 
準備:
 
準備:
  +
 
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
 
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
   
コマンドの後に改行せずにターミナルからコマンドを送信:
+
先のコマンドの後、Terminal から改行なしのコマンドを送信できます:
  +
 
# echo -n "Hello World" > /dev/ttyACM0
 
# echo -n "Hello World" > /dev/ttyACM0
{{Note| As autoreset on serial connection is activated by default on most boards, you need to disable this feature if you want to communicate directly with your board with the last command instead of a terminal emulator (arduino IDE, screen, picocom...). If you have a Leonardo board, you are not concerned by this, because it does not autoreset. If you have a Uno board, connect a 10 µF capacitor between the RESET and GND pins. If you have another board, connect a 120 ohms resistor between the RESET and 5V pins. See http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection for more details.}}
 
   
  +
{{Note|ほとんどのボードでシリアル接続の自動リセットがデフォルトで有効化されているため、ターミナルエミュレータ (arduino IDE、screen、picocom...) を使わずにボードと直接通信する場合はこの機能を無効化しておく必要があります。Leonardo ボードは自動リセットしないため、このことを心配する必要はありません。Uno ボードの場合は、RESET ピンと GND ピンを 10 µF のコンデンサで繋げてください。その他のボードの場合は、RESET ピンと 5V ピンを 120 オームの抵抗で繋げてください。詳細は https://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection を参照してください。}}
Arduino からの出力を読み込み:
 
  +
  +
Arduino からデータを受信するには:
  +
 
$ cat /dev/ttyACM0
 
$ cat /dev/ttyACM0
   
 
== Arduino-Builder ==
 
== Arduino-Builder ==
  +
  +
{{Out of date|このセクションは、2.x バージョンの IDE がリリースされる前に書かれたものであり、機能の説明が正確でないかもしれません。Arduino-Builder の GitHub のページには、Arduino-Builder は廃止予定で Arduino CLI に移行すると冒頭に書かれてあります。}}
  +
 
{{Pkg|arduino-builder}} コマンドラインツールを使って Arduino のスケッチをビルドすることもできます。上流の {{Pkg|avr-gcc}} と {{Pkg|avrdude}} で {{Pkg|arduino-avr-core}} を使用するには設定ファイルの作成が必要です:
 
{{Pkg|arduino-builder}} コマンドラインツールを使って Arduino のスケッチをビルドすることもできます。上流の {{Pkg|avr-gcc}} と {{Pkg|avrdude}} で {{Pkg|arduino-avr-core}} を使用するには設定ファイルの作成が必要です:
   
{{hc|head=build.options.json |output=
+
{{hc|head=build.options.json |2=
 
{
 
{
 
"fqbn": "archlinux-arduino:avr:uno",
 
"fqbn": "archlinux-arduino:avr:uno",
82行目: 100行目:
   
 
スケッチをコンパイルするには:
 
スケッチをコンパイルするには:
  +
 
$ arduino-builder -build-options-file build.options.json blink.ino
 
$ arduino-builder -build-options-file build.options.json blink.ino
   
 
あるいはコマンドラインでオプションを渡す場合:
 
あるいはコマンドラインでオプションを渡す場合:
  +
 
$ arduino-builder -fqbn archlinux-arduino:avr:uno -hardware /usr/share/arduino/hardware -tools /usr/bin blink.ino
 
$ arduino-builder -fqbn archlinux-arduino:avr:uno -hardware /usr/share/arduino/hardware -tools /usr/bin blink.ino
   
 
== 他の IDE ==
 
== 他の IDE ==
 
=== ArduIDE ===
 
 
ArduIDE は Arduino 用の Qt ベース IDE です。[[AUR]] の {{AUR|arduide-git}} からインストールできます。
 
 
ターミナルから作業したい場合、複数の選択肢が存在します。
 
   
 
=== Arduino-CMake ===
 
=== Arduino-CMake ===
   
[https://github.com/queezythegreat/arduino-cmake arduino-cmake] と [http://www.cmake.org/cmake/resources/software.html CMake] を使うことで複数のビルド環境でコマンドラインから Arduino のファームウェアをビルドすることができます。CMake があなたのニーズに合わせたビルド環境を生成し、お好きなツールを使用できます。シンプルな Makefile から Eclipse, Visual Studio, XCode などのプロジェクトまであらゆるビルド環境を準備可能です。
+
[https://github.com/a9183756-gh/Arduino-CMake-Toolchain Arduino-CMake-Toolchain] と [https://www.cmake.org/cmake/resources/software.html CMake] を使うことで複数のビルド環境でコマンドラインから Arduino のファームウェアをビルドすることができます。CMake があなたのニーズに合わせたビルド環境を生成し、お好きなツールを使用できます。シンプルな Makefile から EclipseVisual StudioXCode などのプロジェクトまであらゆるビルド環境を準備可能です。
 
必要なパッケージ: {{Pkg|cmake}}, {{Pkg|arduino}}, {{Pkg|avr-gcc}}, {{Pkg|avr-binutils}}, {{Pkg|avr-libc}}, {{Pkg|avrdude}}。
 
 
=== gnoduino ===
 
 
{{AUR|gnoduino}} はオリジナルの Arduino IDE を GNOME 用にした実装で [[AUR]] からインストールできます。オリジナルの Arduino IDE ソフトウェアは Java で書かれています。gnoduino は Python で実装されており、GNOME を対象にしています。ただし xfce4 など他の WM でも動作します。軽量であることを謳っていますが、オリジナルの Arduino IDE と互換性は維持しています。ソースエディタは gtksourceview をベースとしています。
 
 
=== Ino ===
 
 
[https://github.com/amperka/ino Ino] は arduino ハードウェアを使うためのコマンドラインツールキットです。{{AUR|ino}} は [[AUR]] からインストールできます。
 
   
  +
必要なパッケージ: {{Pkg|cmake}}、{{Grp|arduino}}、{{Pkg|avr-gcc}}、{{Pkg|avr-binutils}}、{{Pkg|avr-libc}}、{{Pkg|avrdude}}。
{{ic|Ino}} は {{ic|/etc/avrdude/avrdude.conf}} にある {{ic|avrdude.conf}} ファイルを確認しますが、({{pkg|avrdude}} のインストール時に) [[pacman]] はこのファイルを {{ic|/etc/avrdude.conf}} に配置します。{{ic|Ino}} が何かエラーを表示するときは {{ic|/etc/avrdude}} ディレクトリを作成してシンボリックリンクを作ってください:
 
# ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf
 
   
 
=== Makefile ===
 
=== Makefile ===
   
  +
Arduino IDE を使わずに、他のエディタと Makefile を使うこともできます。
{{Note|Update 2015-03-23. Due to recent changes in Arduino ≥v1.5, many old Makefiles do not work without some modification. A simple Makefile for Arduino version 1.5+ can be found [https://github.com/tomswartz07/arduino-makefile on GitHub].}}
 
   
  +
Arduino をプログラムするためのディレクトリをセットアップし、そのディレクトリへ Makefile をコピーしてください。Makefile のコピーは [https://github.com/tomswartz07/arduino-makefile GitHub にあるこのテンプレート]を使うことができます。設定にあわせて多少修正が必要です。Makefile には豊富に説明が付いています。以下は編集が必要な行の一例です:
Arduino IDE を使用する代わりに他のエディタと Makefile を使用することができます。
 
   
  +
PORT = 通常は /dev/ttyUSBx、x は Arduino が接続されている USB シリアルポート
Arduino をプログラムするためのディレクトリをセットアップして、ディレクトリに Makefile をコピーしてください。Makefile のコピーは {{ic|/usr/share/arduino/hardware/cores/arduino/Makefile}} から取得できます。
 
  +
TARGET = スケッチの名前
 
設定にあわせて多少修正が必要です。Makefile には豊富に説明が付いています。以下は編集が必要な行の一例です:
 
 
PORT = usually /dev/ttyUSBx, where x is the usb serial port your arduino is plugged into
 
TARGET = your sketch's name
 
 
ARDUINO = /usr/share/arduino/lib/targets/arduino
 
ARDUINO = /usr/share/arduino/lib/targets/arduino
   
スケッチでコールするライブラリにわせて、ライブラリの一部をコンパイルする必要があります。SRC と CXXSRC を編集して必要なライブラリを記述してください
+
スケッチから呼び出されるライブラリ関数わせて、ライブラリをコンパイルする必要があります。そのために、SRC と CXXSRC を編集して必要なライブラリを include する必要があります
   
編集したら {{ic|make && make upload}} ボードからスケッチを実行できるようになります。
+
これで、{{ic|make && make upload}} を実行して、ボードにコードをアップロードして、スケッチを実行できるようになります。
   
 
=== Arduino-mk ===
 
=== Arduino-mk ===
   
{{AUR|arduino-mk}} は Makefile を使用するもうひとつのアプローチです。Arduino.mk を include するローカルな Makefile を作成することができます。使い方は [https://github.com/sudar/Arduino-Makefile プロジェクトページ] を見てください
+
[https://github.com/sudar/Arduino-Makefile arduino-mk] は Makefile を使用するもうひとつのアプローチです。Arduino.mk を include するローカルな Makefile を作成することができます。
   
 
Arduino 1.5 の場合、以下のローカル Makefile を試してください (Arduino 1.5 のライブラリディレクトリの構造は少し変わっています):
 
Arduino 1.5 の場合、以下のローカル Makefile を試してください (Arduino 1.5 のライブラリディレクトリの構造は少し変わっています):
139行目: 138行目:
 
ARDMK_DIR = /usr/share/arduino
 
ARDMK_DIR = /usr/share/arduino
 
AVR_TOOLS_DIR = /usr
 
AVR_TOOLS_DIR = /usr
  +
AVRDUDE_CONF = /etc/avrdude.conf
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino
 
BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt
+
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants
+
ARDUINO_PLATFORM_LIB_PATH = /usr/share/arduino/hardware/archlinux-arduino/avr/libraries
BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders
+
BOARDS_TXT = /usr/share/arduino/hardware/archlinux-arduino/avr/boards.txt
  +
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/archlinux-arduino/avr/variants
  +
BOOTLOADER_PARENT = /usr/share/arduino/hardware/archlinux-arduino/avr/bootloaders
  +
 
 
 
BOARD_TAG = uno
 
BOARD_TAG = uno
149行目: 151行目:
 
include /usr/share/arduino/Arduino.mk
 
include /usr/share/arduino/Arduino.mk
   
場合によっては {{pkg|avr-libc}} {{pkg|avrdude}} のインストールが必要です。
+
場合によっては {{pkg|avr-libc}} {{pkg|avrdude}} のインストールが必要です。
   
 
=== Scons ===
 
=== Scons ===
   
[http://www.scons.org/ scons] と [https://github.com/suapapa/arscons arscons] を組み合わせて使うことでコマンドラインから簡単に Arduino プロジェクトをコンパイル・アップロードすることができます。Scons は python で作成されておりシリアルインターフェイスを使うのに python-pyserial が必要です。{{pkg|python-pyserial}} と {{pkg|scons}} をインストールしてください。
+
[https://www.scons.org/ Scons] と [https://github.com/suapapa/arscons arscons] を組み合わせて使うことでコマンドラインから簡単に Arduino プロジェクトをコンパイル・アップロードすることができます。Scons は python で作成されておりシリアルインターフェイスを使うのに python-pyserial が必要です。{{pkg|python-pyserial}} と {{pkg|scons}} をインストールしてください。
   
パッケージをインストールすると必要な依存パッケージも一緒にインストールされます。上記のように Arduino 本体も必要なのでインストールしてください。プロジェクトディレクトリを作成したら (例: test)、新しいディレクトリに arduino のプロジェクトファイルを作成します。ディレクトリと同じ名前を付けて拡張子に .ino を追加してください (例: test.ino)。arscons から [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] スクリプトを取得してディレクトリに配置します。スクリプトの中身を確認して、必要であれば編集してください。中身は python スクリプトです。プロジェクトを編集したら、以下を実行:
+
パッケージをインストールすると必要な依存パッケージも一緒にインストールされます。上記のように Arduino 本体も必要なのでインストールしてください。プロジェクトディレクトリを作成したら (例: test)、新しいディレクトリに arduino のプロジェクトファイルを作成します。ディレクトリと同じ名前を付けて拡張子に .ino を追加してください (例: test.ino)。Arscons から [https://github.com/suapapa/arscons/blob/master/SConstruct SConstruct] スクリプトを取得してディレクトリに配置します。スクリプトの中身を確認して、必要であれば編集してください。中身は python スクリプトです。プロジェクトを編集したら、以下を実行してください:
   
$ scons # This will build the project
+
$ scons # プロジェクトをビルドする
$ scons upload # This will upload the project to your Arduino
+
$ scons upload # プロジェクトを Arduino へアップロードする
   
 
=== PlatformIO ===
 
=== PlatformIO ===
   
[http://docs.platformio.ikravets.com/en/latest/quickstart.html PlatformIO] は複数のハードウェアプラットフォームのスケッチをビルド・アップロードすることができる python ツールです。現在、Arduino/AVR ベースの基盤、TI MSP430 や TI TM4C12x ボードに対応しています。近い将来、ライブラリ機能も追加して GitHub から直接ライブラリを検索できるようにすることを開発者は予定しています。
+
[https://docs.platformio.org/en/latest/core/quickstart.html PlatformIO] は複数のハードウェアプラットフォームのスケッチをビルド・アップロードすることができる [[python]] ツールです。現在、Arduino/AVR ベースの基盤、TI MSP430 や TI TM4C12x ボードに対応しています。近い将来、ライブラリ機能も追加して GitHub から直接ライブラリを検索できるようにすることを開発者は予定しています。
   
 
==== インストール ====
 
==== インストール ====
   
{{AUR|platformio}} または {{AUR|platformio-git}} パッケージをインストールしてください。
+
{{pkg|platformio-core}} または {{AUR|platformio-git}} パッケージをインストールしてください。
   
 
==== 使用方法 ====
 
==== 使用方法 ====
 
$ platformio platforms install atmelavr
 
$ platformio init
 
$ vim platformio.ini
 
   
  +
以下は、プロジェクトを作成しアップロードする方法を説明している公式の [https://docs.platformio.org/en/latest/core/quickstart.html PlatformIO クイックスタートガイド]を元にしています。
#
 
# Atmel AVR based board + Arduino Wiring Framework
 
#
 
[env:ArduinoMega2560]
 
platform = atmelavr
 
framework = arduino
 
board = megaatmega2560
 
upload_port = /dev/ttyACM0
 
targets = upload
 
   
  +
Platformio プロジェクト用の新しいディレクトリを作成し、そのディレクトリへ cd してください。
$ platformio run
 
  +
そして、以下のコマンドを実行し、プロジェクトを特定のボード用 (ここでは megaatmega2560) に初期化してください:
   
  +
$ pio project init --board megaatmega2560
===Emacs===
 
  +
  +
これで、ツールチェインと依存パッケージがダウンロードされます。次に、{{ic|platformio.ini}} を作成してください:
  +
  +
{{hc|platformio.ini|2=
  +
; PlatformIO Project Configuration File
  +
[env:megaatmega2560]
  +
platform = atmelavr
  +
board = megaatmega2560
  +
framework = arduino
  +
}}
  +
  +
src/ フォルダ内に main.cpp を作成し、コードを追加してください。コード例は[https://docs.platformio.org/en/latest/core/quickstart.html クイックスタートガイド]にあります。
  +
  +
そして、コードをコンパイルし、platformio.ini で指定したデバイスへアップロードしてください:
  +
  +
$ pio run
  +
$ pio run --target upload
  +
  +
=== Emacs ===
   
 
[[Emacs]] を IDE として設定することができます。
 
[[Emacs]] を IDE として設定することができます。
   
[[AUR]] から {{aur|emacs-arduino-mode-git}} パッケージをインストールして emacs で {{ic|arduino-mode}} を有効にしてください。
+
{{aur|emacs-arduino-mode-git}} パッケージをインストールして emacs で {{ic|arduino-mode}} を有効にしてください。
  +
  +
以下の init スクリプトを追加してください:
   
init スクリプトに追加:
 
 
{{hc|~/.emacs|
 
{{hc|~/.emacs|
 
;; arduino-mode
 
;; arduino-mode
201行目: 212行目:
 
{{ic|Arduino-mk}} (上を参照) と {{ic|M-x compile}} {{ic|make upload}} を使うことでスケッチをコンパイル・アップロードできます。
 
{{ic|Arduino-mk}} (上を参照) と {{ic|M-x compile}} {{ic|make upload}} を使うことでスケッチをコンパイル・アップロードできます。
   
参照: [http://www.emacswiki.org/emacs/ArduinoSupport]。
+
[https://www.emacswiki.org/emacs/ArduinoSupport このページ]を参照
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
 
=== Version 1.6 ===
 
 
2014年10月5日現在、サードパーティ製のツールの多くは Arduino 1.0 ({{AUR|arduino10}}) でしか動作しません。一部のツールだけが Arduino バージョン 1.6 ({{Pkg|arduino}}) 以降でも動作します。ツールが動作しない場合はバージョンを確認してください。
 
   
 
=== Arduino デバイスの永続的な命名 ===
 
=== Arduino デバイスの永続的な命名 ===
   
複数の arduino を使っている場合、接続した順番で {{ic|/dev/ttyUSB[0-9]}} という名前がデバイスに付けられているのに気づくかもしれません。IDE では大した問題ではありませんが、バックグラウンドで arduino プロジェクトと通信するようなソフトウェアをプログラムする場合、鬱陶しく感じられるでしょう。以下の udev ルールを使うことで arduino に固定のシンボリックリンクを割り当てることができます:
+
複数の Arduino を使っている場合、接続した順番で {{ic|/dev/ttyUSB[0-9]}} という名前がけられているのに気づくかもしれません。IDE では大した問題ではありませんが、バックグラウンドで arduino プロジェクトと通信するようなソフトウェアをプログラムする場合、この仕様は問題となります。以下の ''udev'' ルールを使うことで、Arduino デバイスへ固定のシンボリックリンクを割り当てることができます:
  +
 
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki>
 
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki>
 
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"
 
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"
 
</nowiki>}}
 
</nowiki>}}
  +
これで arduino に {{ic|/dev/sensors/ftdi_A700dzaF}} のような名前でアクセスできるようになります。もっと意味のある名前をデバイスに付けたい場合:
 
  +
これで、Arduino に {{ic|/dev/sensors/ftdi_A700dzaF}} のような名前でアクセスできるようになります。もっと意味のある名前をデバイスにつけたい場合は:
  +
 
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki>
 
{{hc|/etc/udev/rules.d/52-arduino.rules|<nowiki>
 
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"
 
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"
 
</nowiki>}}
 
</nowiki>}}
上記で指定したシリアル番号のデバイスのシンボリックリンクが {{ic|/dev/arduino/nano}} に作成されます。変更を適用するのに arduino を切断して再接続したり次のコマンドを実行する必要はありません: {{ic|udevadm trigger}}。
 
   
  +
上記で指定したシリアル番号のデバイスのシンボリックリンクが {{ic|/dev/arduino/nano}} に作成されます。
一般的な {{ic|idVendor}}/{{ic|idProduct}} の組み合わせはディストリビューションパッケージの {{ic|hardware/arduino/avr/boards.txt}} で確認できます。中には Arduino プラットフォーム以外のデバイスも含まれています ([[wikipedia:FTDI|FTDI]])。{{ic|serial}} 属性を使うことでデバイスを区別することが可能です。
 
  +
Udev ルールの変更を適用するには、Arduino を接続しなおすか、以下のコマンドを実行する必要があります:
   
  +
# udevadm trigger
=== シリアルポートを開くときのエラー ===
 
   
  +
一般的な {{ic|idVendor}}/{{ic|idProduct}} ペアは、ディストリビューションパッケージの {{ic|/usr/share/arduino/hardware/archlinux-arduino/avr/boards.txt}} で調べることができます。ただし、一部のペアは Arduino プラットフォームに固有のものではないことに注意してください (特に [[wikipedia:FTDI|FTDI]])。デバイスを識別する良い方法は {{ic|serial}} 属性を使うことです。
IDE を起動したときシリアルポートが確認できても、アップロード時に TX/RX の LED が点灯しないことがあります。シリアルモニターで変更したボーレートが間違っている可能性があります。{{ic|~/.arduino/preferences.txt}} を編集して serial.debug_rate を 115200 などの値にしてください。
 
  +
  +
=== Error opening serial port ===
  +
  +
IDE を起動したときシリアルポートが確認できても、アップロード時に TX/RX の LED が点灯しないことがあります。シリアルモニターで変更したボーレートが間違っている可能性があります。{{ic|~/.arduino/preferences.txt}} を編集して {{ic|serial.debug_rate}} を 115200 などの別の値にしてください。
   
 
=== Uno/Mega2560 を使用する ===
 
=== Uno/Mega2560 を使用する ===
231行目: 245行目:
 
Arduino Uno と Mega2560 にはオンボード USB インターフェイス (Atmel 8U2) が存在しシリアルデータを受け取ります。そのため、デバイスを接続したときに cdc-acm カーネルモジュールによって作成される {{ic|/dev/ttyACM0}} からアクセスすることが可能です。
 
Arduino Uno と Mega2560 にはオンボード USB インターフェイス (Atmel 8U2) が存在しシリアルデータを受け取ります。そのため、デバイスを接続したときに cdc-acm カーネルモジュールによって作成される {{ic|/dev/ttyACM0}} からアクセスすることが可能です。
   
シリアル接続をするには 8U2 ファームウェアのアップデートが必要な場合があります。詳しくは [http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286350399] の #11 を確認してください。現在書き込むことができない Arduino の掲示板では、Uno を DFU にする方法が書かれている画像を見つけることができます。アカウントがなくて画像を閲覧できない場合、[http://www.scribd.com/doc/45913857/Arduino-UNO] を見てください。
+
シリアル接続をするには 8U2 ファームウェアのアップデートが必要な場合があります。詳しくは [https://forum.arduino.cc/t/easy-to-brick-arduino-uno-on-linux/47039] の #11 を確認してください。現在書き込むことができない Arduino の掲示板では、Uno を DFU にする方法が書かれている画像を見つけることができます。アカウントがなくて画像を閲覧できない場合、[https://www.scribd.com/doc/45913857/Arduino-UNO] を見てください。
   
Uno をループバックモードにして115200ボーで Arduino のシリアルモニターに文字列を打ち込むことで機能のテストができます。文字列が返ってくるはずです。ループバックにするには、デジタル側でピン 0 -> 1 をショートさせてリセットボタンを押すか、入力する際に GND -> RESET ピンをショートさせてください。
+
Uno をループバックモードにして 115200 ボーで Arduino のシリアルモニターに文字列を打ち込むことで機能のテストができます。文字列が返ってくるはずです。ループバックにするには、デジタル側でピン 0 -> 1 をショートさせてリセットボタンを押すか、入力する際に GND -> RESET ピンをショートさせてください。
   
  +
=== 安い中国製クローンの Mega2560 で USB ポートが認識されない ===
=== ウィンドウマネージャでアプリケーションのサイズが変更できない、メニューがすぐ閉じる ===
 
  +
[[Java#他のウィンドウマネージャになりすます]]を見てください。
 
  +
{{aur|i2c-ch341-dkms}} ドライバをインストールしてみてください。
  +
  +
=== Fails to upload: programmer is not responding ===
  +
  +
プロセッサの設定 (Arduino IDE の Tools->Processor) を {{ic|ATmega328P}} から {{ic|ATmega328P (Old Bootloader)}} に変更すると、アップロードの問題が解決することがあります。
  +
  +
=== シリアルポートが brltty と衝突する ===
  +
  +
Arduino 用のシリアルポートが {{ic|/dev/ttyUSB*}} に無く、デバイス接続時に [[journal]] に以下のようなログが出力される場合:
  +
  +
usb 3-1: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
  +
ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0
  +
  +
{{Pkg|brltty}} をアンインストールする必要があるかもしれません。詳細は [https://forum.manjaro.org/t/cant-connect-serial-port-error-ch341-uart-disconnected-from-ttyusb0/87208] を見てください。
  +
  +
=== Nano RP2040 Connect でアップロードに失敗する ===
  +
  +
アップロードが以下のエラーで失敗する場合:
  +
  +
Failed uploading: uploading error: exit status 1
  +
  +
以下のスクリプトを実行して、Raspberry Pi RP2040 ブートローダーモードの udev ルールをセットアップしてみてください:
  +
  +
# ~/.arduino15/packages/arduino/hardware/mbed_nano/3.5.1/post_install.sh
   
 
== 参照 ==
 
== 参照 ==
   
* https://bbs.archlinux.org/viewtopic.php?pid=295312
+
* [https://www.arduino.cc/ 公式ウェブサイト]
  +
* [https://docs.arduino.cc/software/ide-v2/tutorials/getting-started-ide-v2 IDE v2 チュートリアルガイド]
* https://bbs.archlinux.org/viewtopic.php?pid=981348
 
* http://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/
+
* https://answers.ros.org/question/9097/how-can-i-get-a-unique-device-path-for-my-arduinoftdi-device/
  +
  +
{{TranslationStatus|Arduino|2024-07-28|812403}}

2024年7月28日 (日) 23:16時点における最新版

関連記事

Arduino は柔軟で手軽なハードウェアとソフトウェアによる、オープンソースの電子工作プロトタイププラットフォームです。芸術家やデザイナー、ホビイスト、その他インタラクティブな機器や環境を作成したい全ての人を対象としています。

デバイスを接続して設定すれば、シリアル接続で読み書きタスクを実行することができます。例としては、シリアル監視プログラムを使った、UART 経由のインターフェイスや、マイクロコントローラのプログラミングがあります。公式の Arduino IDE (公式リポジトリで利用可能) を使えば、プログラミング、コンパイル、及びコードのアップロードが容易になります。また、任意のコンパイラやプログラマを使って、マイクロコントローラのプログラミングを行うこともできます。

インストール

  • 公式の CLI である arduino-cli か、IDE の新しい 2.x リリースである arduino-ide のどちらかをインストールしてください。
  • デバイスへのユーザーによるアクセスを有効化してください。
  • cdc_acm モジュールをロードする必要があるかもしれません。

Arduino IDE 1.x

以下のセクションは 1.x バージョンの IDE のみに適用されます。しかし、以下のいくつかは新しい方の IDE でも可能かもしれません。

AVR ボード

Arduino Uno などの AVR 基盤を使用する場合、任意で arduino-avr-core をインストールすることで、バンドルされている古い avr-core の代わりに Arch Linux の上流の avr-gcc を使うことができます。古い arduino-core を使いたい場合 ボードマネージャでインストール する必要があります。Tools > Board メニューからコアをいつでも切り替えられます。

Pinoccio Scout

Pinoccio Scouts[リンク切れ 2024-01-13] も Arduino IDE を使ってプログラムすることが可能です。手順はこちら[リンク切れ 2024-01-13]に記載されています。 もしくは、arduino-pinoccioAUR をインストールすることもできます。

Intel Galileo

Intel Galileo ボードを Arch Linux で使用したい場合、Arduino IDE をインストールし、Tools > Board > Boards Manager から Galileo ツールのパッケージをダウンロードしてください。 インストールを修正するには、こちらの github の投稿に従ってください。

Arduino IDE 1.x 及び 2.x

以下の手順は、両方のバージョンの IDE で有効であるはずです。

AVR ボード

AVR ボードは自動的に 2.x リリースの IDE によってインストールされますが、1.x と 2.x の両方のリリースで AVR ボードはボードマネージャから管理できます。

SparkFun

Pro Micro などの SparkFun ボードを使用するには、ボード定義をダウンロードしておく必要があります。詳細は、こちらこちらを参照。

RedBear Duo

perl-archive-zip をインストールしないと、crc32 が無いというエラーが発生するかもしれません。

設定

USB 経由での接続には、Arduino 上のインターフェイスチップが使用されます。純正のボードでは ATmegaxU2 が使用されていることが多いです (これは ACM デバイスとして認識されます)。Linux 上では、cdc_acm モジュールが使用されます。なので、Arduino が接続されると、Linux では /dev/ttyACMx でアクセスできます。

非純正の Arduino ボードでは安いインターフェイスチップが使用されていることが多く、たいてい中国製の CH34x ファミリが使用されます。CH34x は上述の標準規格を実装しておらず、デバイス自体を USB 経由でプロプライエタリな UART として公開します。この場合、ch341 モジュールが使用され、Linux 上では /dev/ttyUSBx でアクセスできます。デバイスファイルの命名規則は udev ルールにより変更できます。

ノート: コードのアップロード時には、プログラマ用にシリアルポートを開放するために、全てのシリアル監視プログラムを閉じてください。

シリアル通信

USB 経由で UART を公開するボードの場合は、シリアルポートへの読み書きアクセス権をユーザに与える必要があります [1]Udev#通常ユーザーにデバイスの使用を許可する 章で説明されているように、以下のファイルを作成してください:

/etc/udev/rules.d/01-ttyusb.rules
SUBSYSTEMS=="usb-serial", TAG+="uaccess"

Udev ルールを再読み込みし、Arduino デバイスを再度接続してください。Arduino 上にコードをアップロードする前に、Tools メニュー (バージョン 1.x) か IDE 上部の Select board オプション (バージョン 2.x) から適切なシリアルポート、ボード、プロセッサが設定されていることを確認してください。

stty

準備:

# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts

先のコマンドの後、Terminal から改行なしのコマンドを送信できます:

# echo -n "Hello World" > /dev/ttyACM0
ノート: ほとんどのボードでシリアル接続の自動リセットがデフォルトで有効化されているため、ターミナルエミュレータ (arduino IDE、screen、picocom...) を使わずにボードと直接通信する場合はこの機能を無効化しておく必要があります。Leonardo ボードは自動リセットしないため、このことを心配する必要はありません。Uno ボードの場合は、RESET ピンと GND ピンを 10 µF のコンデンサで繋げてください。その他のボードの場合は、RESET ピンと 5V ピンを 120 オームの抵抗で繋げてください。詳細は https://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection を参照してください。

Arduino からデータを受信するには:

$ cat /dev/ttyACM0

Arduino-Builder

この記事またはセクションは情報が古くなっています。
理由: このセクションは、2.x バージョンの IDE がリリースされる前に書かれたものであり、機能の説明が正確でないかもしれません。Arduino-Builder の GitHub のページには、Arduino-Builder は廃止予定で Arduino CLI に移行すると冒頭に書かれてあります。 (Discuss)

arduino-builder コマンドラインツールを使って Arduino のスケッチをビルドすることもできます。上流の avr-gccavrdudearduino-avr-core を使用するには設定ファイルの作成が必要です:

build.options.json
{
    "fqbn": "archlinux-arduino:avr:uno",
    "hardwareFolders": "/usr/share/arduino/hardware",
    "toolsFolders": "/usr/bin"
}

スケッチをコンパイルするには:

$ arduino-builder -build-options-file build.options.json blink.ino

あるいはコマンドラインでオプションを渡す場合:

$ arduino-builder -fqbn archlinux-arduino:avr:uno -hardware /usr/share/arduino/hardware -tools /usr/bin blink.ino

他の IDE

Arduino-CMake

Arduino-CMake-ToolchainCMake を使うことで、複数のビルド環境でコマンドラインから Arduino のファームウェアをビルドすることができます。CMake があなたのニーズに合わせたビルド環境を生成し、お好きなツールを使用できます。シンプルな Makefile から Eclipse、Visual Studio、XCode などのプロジェクトまであらゆるビルド環境を準備可能です。

必要なパッケージ: cmakearduinoavr-gccavr-binutilsavr-libcavrdude

Makefile

Arduino IDE を使わずに、他のエディタと Makefile を使うこともできます。

Arduino をプログラムするためのディレクトリをセットアップし、そのディレクトリへ Makefile をコピーしてください。Makefile のコピーは GitHub にあるこのテンプレートを使うことができます。設定にあわせて多少修正が必要です。Makefile には豊富に説明が付いています。以下は編集が必要な行の一例です:

PORT = 通常は /dev/ttyUSBx、x は Arduino が接続されている USB シリアルポート
TARGET = スケッチの名前
ARDUINO = /usr/share/arduino/lib/targets/arduino

スケッチから呼び出されるライブラリ関数に合わせて、ライブラリをコンパイルする必要があります。そのために、SRC と CXXSRC を編集して必要なライブラリを include する必要があります。

これで、make && make upload を実行して、ボードにコードをアップロードして、スケッチを実行できるようになります。

Arduino-mk

arduino-mk は Makefile を使用するもうひとつのアプローチです。Arduino.mk を include するローカルな Makefile を作成することができます。

Arduino 1.5 の場合、以下のローカル Makefile を試してください (Arduino 1.5 のライブラリディレクトリの構造は少し変わっています):

ARDUINO_DIR = /usr/share/arduino
ARDMK_DIR = /usr/share/arduino
AVR_TOOLS_DIR = /usr
AVRDUDE_CONF = /etc/avrdude.conf
ARDUINO_CORE_PATH = /usr/share/arduino/hardware/archlinux-arduino/avr/cores/arduino
ARDUINO_PLATFORM_LIB_PATH = /usr/share/arduino/hardware/archlinux-arduino/avr/libraries
BOARDS_TXT = /usr/share/arduino/hardware/archlinux-arduino/avr/boards.txt
ARDUINO_VAR_PATH = /usr/share/arduino/hardware/archlinux-arduino/avr/variants
BOOTLOADER_PARENT = /usr/share/arduino/hardware/archlinux-arduino/avr/bootloaders


BOARD_TAG    = uno
ARDUINO_LIBS =

include /usr/share/arduino/Arduino.mk

場合によっては avr-libcavrdude のインストールが必要です。

Scons

Sconsarscons を組み合わせて使うことでコマンドラインから簡単に Arduino プロジェクトをコンパイル・アップロードすることができます。Scons は python で作成されており、シリアルインターフェイスを使うのに python-pyserial が必要です。python-pyserialscons をインストールしてください。

パッケージをインストールすると必要な依存パッケージも一緒にインストールされます。上記のように Arduino 本体も必要なのでインストールしてください。プロジェクトディレクトリを作成したら (例: test)、新しいディレクトリに arduino のプロジェクトファイルを作成します。ディレクトリと同じ名前を付けて拡張子に .ino を追加してください (例: test.ino)。Arscons から SConstruct スクリプトを取得してディレクトリに配置します。スクリプトの中身を確認して、必要であれば編集してください。中身は python スクリプトです。プロジェクトを編集したら、以下を実行してください:

$ scons                # プロジェクトをビルドする
$ scons upload         # プロジェクトを Arduino へアップロードする

PlatformIO

PlatformIO は複数のハードウェアプラットフォームのスケッチをビルド・アップロードすることができる python ツールです。現在、Arduino/AVR ベースの基盤、TI MSP430 や TI TM4C12x ボードに対応しています。近い将来、ライブラリ機能も追加して GitHub から直接ライブラリを検索できるようにすることを開発者は予定しています。

インストール

platformio-core または platformio-gitAUR パッケージをインストールしてください。

使用方法

以下は、プロジェクトを作成しアップロードする方法を説明している公式の PlatformIO クイックスタートガイドを元にしています。

Platformio プロジェクト用の新しいディレクトリを作成し、そのディレクトリへ cd してください。 そして、以下のコマンドを実行し、プロジェクトを特定のボード用 (ここでは megaatmega2560) に初期化してください:

$ pio project init --board megaatmega2560

これで、ツールチェインと依存パッケージがダウンロードされます。次に、platformio.ini を作成してください:

platformio.ini
; PlatformIO Project Configuration File
[env:megaatmega2560]
platform = atmelavr
board = megaatmega2560
framework = arduino

src/ フォルダ内に main.cpp を作成し、コードを追加してください。コード例はクイックスタートガイドにあります。

そして、コードをコンパイルし、platformio.ini で指定したデバイスへアップロードしてください:

$ pio run
$ pio run --target upload

Emacs

Emacs を IDE として設定することができます。

emacs-arduino-mode-gitAUR パッケージをインストールして emacs で arduino-mode を有効にしてください。

以下の init スクリプトを追加してください:

~/.emacs
;; arduino-mode
(require 'cl)
(autoload 'arduino-mode "arduino-mode" "Arduino editing mode." t)
(add-to-list 'auto-mode-alist '("\.ino$" . arduino-mode))

Arduino-mk (上を参照) と M-x compile make upload を使うことでスケッチをコンパイル・アップロードできます。

このページを参照。

トラブルシューティング

Arduino デバイスの永続的な命名

複数の Arduino を使っている場合、接続した順番で /dev/ttyUSB[0-9] という名前がつけられているのに気づくかもしれません。IDE では大した問題ではありませんが、バックグラウンドで arduino プロジェクトと通信するようなソフトウェアをプログラムする場合、この仕様は問題となります。以下の udev ルールを使うことで、Arduino デバイスへ固定のシンボリックリンクを割り当てることができます:

/etc/udev/rules.d/52-arduino.rules
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="sensors/ftdi_%s{serial}"

これで、Arduino に /dev/sensors/ftdi_A700dzaF のような名前でアクセスできるようになります。もっと意味のある名前をデバイスにつけたい場合は:

/etc/udev/rules.d/52-arduino.rules
SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="A700dzaF", SYMLINK+="arduino/nano"

上記で指定したシリアル番号のデバイスのシンボリックリンクが /dev/arduino/nano に作成されます。 Udev ルールの変更を適用するには、Arduino を接続しなおすか、以下のコマンドを実行する必要があります:

# udevadm trigger

一般的な idVendor/idProduct ペアは、ディストリビューションパッケージの /usr/share/arduino/hardware/archlinux-arduino/avr/boards.txt で調べることができます。ただし、一部のペアは Arduino プラットフォームに固有のものではないことに注意してください (特に FTDI)。デバイスを識別する良い方法は serial 属性を使うことです。

Error opening serial port

IDE を起動したときシリアルポートが確認できても、アップロード時に TX/RX の LED が点灯しないことがあります。シリアルモニターで変更したボーレートが間違っている可能性があります。~/.arduino/preferences.txt を編集して serial.debug_rate を 115200 などの別の値にしてください。

Uno/Mega2560 を使用する

Arduino Uno と Mega2560 にはオンボード USB インターフェイス (Atmel 8U2) が存在しシリアルデータを受け取ります。そのため、デバイスを接続したときに cdc-acm カーネルモジュールによって作成される /dev/ttyACM0 からアクセスすることが可能です。

シリアル接続をするには 8U2 ファームウェアのアップデートが必要な場合があります。詳しくは [2] の #11 を確認してください。現在書き込むことができない Arduino の掲示板では、Uno を DFU にする方法が書かれている画像を見つけることができます。アカウントがなくて画像を閲覧できない場合、[3] を見てください。

Uno をループバックモードにして 115200 ボーで Arduino のシリアルモニターに文字列を打ち込むことで機能のテストができます。文字列が返ってくるはずです。ループバックにするには、デジタル側でピン 0 -> 1 をショートさせてリセットボタンを押すか、入力する際に GND -> RESET ピンをショートさせてください。

安い中国製クローンの Mega2560 で USB ポートが認識されない

i2c-ch341-dkmsAUR ドライバをインストールしてみてください。

Fails to upload: programmer is not responding

プロセッサの設定 (Arduino IDE の Tools->Processor) を ATmega328P から ATmega328P (Old Bootloader) に変更すると、アップロードの問題が解決することがあります。

シリアルポートが brltty と衝突する

Arduino 用のシリアルポートが /dev/ttyUSB* に無く、デバイス接続時に journal に以下のようなログが出力される場合:

usb 3-1: usbfs: interface 0 claimed by ch341 while 'brltty' sets config #1
ch341-uart ttyUSB0: ch341-uart converter now disconnected from ttyUSB0

brltty をアンインストールする必要があるかもしれません。詳細は [4] を見てください。

Nano RP2040 Connect でアップロードに失敗する

アップロードが以下のエラーで失敗する場合:

Failed uploading: uploading error: exit status 1

以下のスクリプトを実行して、Raspberry Pi RP2040 ブートローダーモードの udev ルールをセットアップしてみてください:

# ~/.arduino15/packages/arduino/hardware/mbed_nano/3.5.1/post_install.sh

参照

翻訳ステータス: このページは en:Arduino の翻訳バージョンです。最後の翻訳日は 2024-07-28 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。