Arduino
Arduino は柔軟で手軽なハードウェアとソフトウェアによる、オープンソースの電子工作プロトタイププラットフォームです。芸術家やデザイナー、ホビイスト、その他インタラクティブな機器や環境を作成したい全ての人を対象としています。詳細は Arduino HomePage を見て下さい。
インストール
- arduino パッケージをインストールしてください。オフラインドキュメントは arduino-docs パッケージでインストールできます。
- ユーザーを
uucp
とlock
グループに追加してください (詳しくは次のセクションを参照: #シリアル通信)。 - cdc_acm モジュールをロードする必要があります。
# modprobe cdc_acm
- PKGBUILD の arch=('i686' 'x86_64') 行に 'armv6h' を追加して arch=('i686' 'x86_64' 'armv6h') とすることで Raspberry Pi 上でもビルドできます。
AVR ボード
Arduino Uno などの AVR 基盤を使用する場合、任意で arduino-avr-core をインストールすることで古い avr-core の代わりに Arch Linux の上流の avr-gcc を使うことができます。古い arduino-core を使いたい場合 ボードマネージャでインストール する必要があります。"Tools>Board" メニューからコアをいつでも切り替えられます。
Arduino Due / Yun
Arduino Due と Arduino Yun は Arduino IDE バージョン 1.5 以上を必要とします。
Pinoccio Scout
Pinoccio Scouts も Arduino IDE を使ってプログラムすることが可能です。手順は こちら に記載されています。もしくは、AUR から arduino-pinoccioAUR をインストールすることもできます。
Intel Galileo
Intel Galileo ボードを Arduino IDE で使用したい場合、"Tools->Board->Boards Manager" から Galileo ツールのパッケージをダウンロードしてください。こちらの github の投稿 に従ってフィックスを適用できます。
Arm7 デバイス
こちら に対処方法が載っています。
RedBear Duo
perl-archive-zip をインストールしないと crc32 に関するエラーが表示されます。
設定
シリアル通信
arduino ボードはシリアル接続や USB シリアル接続によってコンピュータと通信します。そのためシリアルデバイスファイルへの読み書きアクセス権がユーザーに必要となります。Udev は uucp
グループによって所有されている /dev/tts/
にファイルを作成するためユーザーを uucp
グループに追加することで必要な読み書き権限が与えられます。デフォルトの Java IDE を使用する場合は、ユーザーを lock グループに追加して /var/lock/lockdev
にアクセスできるようにしてください。
# gpasswd -a $USER uucp # gpasswd -a $USER lock
Arduino にアップロードを行う前に、Tools メニューからシリアルポート、ボード、プロセッサを適切に設定してください。
stty
準備:
# stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
コマンドの後に改行せずにターミナルからコマンドを送信:
# echo -n "Hello World" > /dev/ttyACM0
Arduino からの出力を読み込み:
$ cat /dev/ttyACM0
他の IDE
ArduIDE
ArduIDE は Arduino 用の Qt ベース IDE です。AUR の arduide-gitAUR からインストールできます。
ターミナルから作業したい場合、複数の選択肢が存在します。
Arduino-CMake
arduino-cmake と CMake を使うことで複数のビルド環境でコマンドラインから Arduino のファームウェアをビルドすることができます。CMake があなたのニーズに合わせたビルド環境を生成し、お好きなツールを使用できます。シンプルな Makefile から Eclipse, Visual Studio, XCode などのプロジェクトまであらゆるビルド環境を準備可能です。
必要なパッケージ: cmake, arduino, avr-gcc, avr-binutils, avr-libc, avrdude。
gnoduino
gnoduinoAUR はオリジナルの Arduino IDE を GNOME 用にした実装で AUR からインストールできます。オリジナルの Arduino IDE ソフトウェアは Java で書かれています。gnoduino は Python で実装されており、GNOME を対象にしています。ただし xfce4 など他の WM でも動作します。軽量であることを謳っていますが、オリジナルの Arduino IDE と互換性は維持しています。ソースエディタは gtksourceview をベースとしています。
Ino
Ino は arduino ハードウェアを使うためのコマンドラインツールキットです。inoAUR は AUR からインストールできます。
Ino
は /etc/avrdude/avrdude.conf
にある avrdude.conf
ファイルを確認しますが、(avrdude のインストール時に) pacman はこのファイルを /etc/avrdude.conf
に配置します。Ino
が何かエラーを表示するときは /etc/avrdude
ディレクトリを作成してシンボリックリンクを作ってください:
# ln -s /etc/avrdude.conf /etc/avrdude/avrdude.conf
Makefile
Arduino IDE を使用する代わりに他のエディタと Makefile を使用することができます。
Arduino をプログラムするためのディレクトリをセットアップして、ディレクトリに Makefile をコピーしてください。Makefile のコピーは /usr/share/arduino/hardware/cores/arduino/Makefile
から取得できます。
設定にあわせて多少修正が必要です。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
スケッチでコールするライブラリにあわせて、ライブラリの一部をコンパイルする必要があります。SRC と CXXSRC を編集して必要なライブラリを記述してください。
編集したら make && make upload
でボードからスケッチを実行できるようになります。
Arduino-mk
arduino-mkAUR は 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 ARDUINO_CORE_PATH = /usr/share/arduino/hardware/arduino/avr/cores/arduino BOARDS_TXT = /usr/share/arduino/hardware/arduino/avr/boards.txt ARDUINO_VAR_PATH = /usr/share/arduino/hardware/arduino/avr/variants BOOTLOADER_PARENT = /usr/share/arduino/hardware/arduino/avr/bootloaders BOARD_TAG = uno ARDUINO_LIBS = include /usr/share/arduino/Arduino.mk
場合によっては avr-libc や avrdude のインストールが必要です。
Scons
scons と arscons を組み合わせて使うことでコマンドラインから簡単に Arduino プロジェクトをコンパイル・アップロードすることができます。Scons は python で作成されておりシリアルインターフェイスを使うのに python-pyserial が必要です。python-pyserial と scons をインストールしてください。
パッケージをインストールすると必要な依存パッケージも一緒にインストールされます。上記のように Arduino 本体も必要なのでインストールしてください。プロジェクトディレクトリを作成したら (例: test)、新しいディレクトリに arduino のプロジェクトファイルを作成します。ディレクトリと同じ名前を付けて拡張子に .ino を追加してください (例: test.ino)。arscons から SConstruct スクリプトを取得してディレクトリに配置します。スクリプトの中身を確認して、必要であれば編集してください。中身は python スクリプトです。プロジェクトを編集したら、以下を実行:
$ scons # This will build the project $ scons upload # This will upload the project to your Arduino
PlatformIO
PlatformIO は複数のハードウェアプラットフォームのスケッチをビルド・アップロードすることができる python ツールです。現在、Arduino/AVR ベースの基盤、TI MSP430 や TI TM4C12x ボードに対応しています。近い将来、ライブラリ機能も追加して GitHub から直接ライブラリを検索できるようにすることを開発者は予定しています。
インストール
platformioAUR または platformio-gitAUR パッケージをインストールしてください。
使用方法
$ platformio platforms install atmelavr $ platformio init $ vim platformio.ini
# # Atmel AVR based board + Arduino Wiring Framework # [env:ArduinoMega2560] platform = atmelavr framework = arduino board = megaatmega2560 upload_port = /dev/ttyACM0 targets = upload
$ platformio run
Emacs
Emacs を IDE として設定することができます。
AUR から 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
を使うことでスケッチをコンパイル・アップロードできます。
参照: [1]。
トラブルシューティング
Version 1.6
2014年10月5日現在、サードパーティ製のツールの多くは Arduino 1.0 (arduino10AUR) でしか動作しません。一部のツールだけが Arduino バージョン 1.6 (arduino) 以降でも動作します。ツールが動作しない場合はバージョンを確認してください。
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
に作成されます。変更を適用するのに arduino を切断して再接続したり次のコマンドを実行する必要はありません: udevadm trigger
。
一般的な idVendor
/idProduct
の組み合わせはディストリビューションパッケージの hardware/arduino/avr/boards.txt
で確認できます。中には Arduino プラットフォーム以外のデバイスも含まれています (FTDI)。serial
属性を使うことでデバイスを区別することが可能です。
シリアルポートを開くときのエラー
IDE を起動したときシリアルポートが確認できても、アップロード時に TX/RX の LED が点灯しないことがあります。シリアルモニターで変更したボーレートが間違っている可能性があります。~/.arduino/preferences.txt
を編集して serial.debug_rate を 115200 などの値にしてください。
Missing twi.o
/usr/share/arduino/lib/targets/libraries/Wire/utility/twi.o
ファイルが存在しない場合、arduino はファイルを作成しようとします。通常ユーザーでは書き込み権限がないためファイルは作成されません。root で arduino を実行すればファイルが作成できます。ファイルの作成後は、arduino を通常ユーザーで実行できます。
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 ピンをショートさせてください。
コンパイルエラー
以下のメッセージが表示される場合 (verbose モード):
/usr/share/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../avr/bin/ld: cannot find -lm
次のフィックスを試みてください [4]:
- avr-gcc パッケージをインストール
- 初めから入っている avr-gcc コンパイラを上でインストールしたパッケージのコンパイラで置き換える:
# cd /usr/share/arduino/hardware/tools/avr/bin # mv ./avr-gcc ./avr-gcc-backup # ln -s /usr/bin/avr-gcc ./
システムでインストールした avr ツールを使いたいときは、Arduino の Linux インストールページに書かれているように avr ディレクトリを削除します: "システムのコンパイラを使いたい場合、arduino の IDE をインストールしたフォルダにある ./hardware/tools/avr
を削除してください"。
Arduino.cc から適切な Linux バージョンをダウンロードして /usr/share/arduino/hardware/tools/avr
ディレクトリを標準のインストールアーカイブに含まれている avr ディレクトリで置き換えるという方法もあります。
ウィンドウマネージャでアプリケーションのサイズが変更できない、メニューがすぐ閉じる
Java#他のウィンドウマネージャになりすますを見てください。