はじめに
複数の Arduino から構成されるインスタレーション作品の場合、それぞれの Arduino が正常に動作しているのか=製作者の意図したとおりに動いているのかを確認しながら製作(開発)を進める必要があります。
本稿では開発ホストとして Raspberry Pi 3 を使用しますが、残念なことにラズパイ用の Arduino IDE では、シリアルコンソールを複数開くことができません。そこで本文書では、picocom というシリアルターミナルソフトを用いた、複数の Arduino からのシリアル出力を確認する方法について説明します。
複数の Arduino を ArduinoIDE より開発する
Raspberry Pi に複数の Arduino を接続すると、接続ごとにシリアルポートが増えていきます。これは、Arduino IDE の「ツール」→「シリアルポート」にて確認できます(シリアルモニタを開いていると全てのポートが表示されないので、その場合は閉じて下さい)。
私の環境では、シリアルポートは、/dev/ttyACM0 と /dev/tyACM1 という名前になっていました。ラズパイに接続したまま、ラズパイを起動すると、どのシリアルポートに、どの Arduino が接続されているのかは分かりません。その場合は、Arduino と接続されている USB ケーブルを一度抜いて、ひとつづつ差し込んでポート名を確認するようにして下さい。
複数の Arduino に異なるプログラムを書き込む場合は、このシリアルポートを切り替えて、コンパイル&転送していくこととなります。
別の手段でシリアルをモニタする
Arduino IDE によるシリアルモニタは複数開いておくことができないことは冒頭で述べたとおりです。しかし、USB デバイスによる仮想的なシリアルポートとして機能しているようですので、ここでは picocom という小さなシリアルモニタを用いて、IDE ではモニタできないシリアルポートの様子を観察します。
picocom
picocom は小型のシリアルモニタプログラムです。今回はこれを用いて IDE のシリアルモニタでは表示されていない、その他のシリアルポートをモニタします。
picocom のインストール
picocom は apt-get を使って、
sudo apt-get install picocom
でインストールできます(簡単です)。
picocom の使い方
picocom シリアルポート名、とすれば該当のシリアルポートがモニタできるのですが、そのままでは Arduino で出力した "\n" が正しく改行されません。これは LF として picocom に入力された文字を CR LF として解釈すれば、IDE のシリアルモニタと同じ様に表示されるので、--imap オプションを用いて変換します(変換用のオプションは LF を CRLF にするので、lfcrlf です)。
あと、picocom を起動してみると分かるのですが、デフォルトの通信速度は 9600 bps です。なので、Arduino 側のシリアルポートもその設定にしておくと便利でしょう。
実際のコマンドは以下のように書きます。ここでは、/dev/ttyACM1 をモニタしています:
pococom --imap lfcrlf /dev/ttyACM1
コンソールベースとなりますが、これで他の Arduino の出力も確認できます。もちろん、ターミナルウィンドウを複数開いて、別のポートを同時にモニタしても良いですし、別のタブにて picocom を走らせて、タブ切り替えによって確認することもできます。このあたりは、開発スタイルに応じて好きな方を選べば良いと思います。
picocom の終了方法ですが、Ctrl-A Ctrl-X です。Ctrl-C とか Ctrl-D とかでは終了しませんので、ご注意を。
まとめ
本稿では、複数の Arduino へ、異なるスケッチの書き込み方法を説明しました。次に、picocom を用いた Arduino IDE に附属のシリアルモニタを用いない、別のシリアルポートをモニタリングする方法について述べました。ここで述べた方法は、複数の Arduino から構成されるシステムの、最低限の開発環境整備だとは思いますが、動作確認程度はこれでなんとかなる場合も多いと思います。インスタレーションシステム作りに少しでも役に立てば幸いです(もっと他の便利な方法を知っている方は教えてください。現在、絶賛作品制作中なので助かります。よろしくおねがいします)。