Arduinoで簡易ロジックアナライザを使ってみる

How to create a simple logic analyzer with Arduino
電子工作プログラミングにおいて、あれば便利な計測機器としてロジックアナライザがあります。波形などアナログのデータを取得できるオシロスコープとは違い、ロジックアナライザは基本的にオン・オフの信号しか読み取りませんが、規格化されている高速デジタル通信を可視化することには秀でています。

そんなロジックアナライザをArduinoで作るというオープンソースプロジェクトがあったのでご紹介したいと思います。

必要なもの
  1. Arduino本体
    USBシリアル通信に対応しているのであれば、基本的にArduino NanoやArduino互換機でも可。STM32にも対応しています。
  2. Processing
    Javaベースの開発環境です。クライアントソフトがこの言語で作られています。

ロジックアナライザの作り方
GitHubプロジェクトページでソースコード一式をダウンロードし、Arduino IDEを開いたら、「UNO.ino」をスケッチへコピーして、Arduinoへ書き込みます。これでハードウェアの完成です。標準ではArduinoのD8~D13ピンに接続したピンが解析対象となります。
クライアントソフトの作り方
Processingを起動したら、先ほどのソースコードに含まれていた「processing.pde」の内容を読み込むか、コピー&ペーストします。次に、「String LA_port = "COM10";」の数値をロジックアナライザプログラムを書き込んでいるArduinoが所有するポート番号(Arduino IDEの「ツール→シリアルポート」で確認できます)に置き換えます。
プログラムを修正したら、「実行」ボタンを押してプログラムを開始すると、クライアントソフトが動作します。
「Start」ボタンを押すとしばらくの後、信号の解析結果が表示されます。なお、信号の変化が全く見つからなかった場合は黒い画面のままとなります。
「Start」ボタンの右隣の「milliseconds/microseconds」で時間軸をミリ秒かマイクロ秒単位かに切り替えます。次の数値は倍率を示しており、ボタンのクリックではなく、マウスホイールで変更します。「Save」ボタンを押すと、プロジェクトファイルのあるフォルダーにtiff形式でスクリーンショットが保存されます。

Arduinoの処理性能上、数MHzの周波数を持つSPI信号などは出力されているかどうかを確認できるレベルです。もう少し詳しく解析したいのであれば、Amazonで売っている1000円のロジックアナライザとオープンソースプロジェクトのPulseViewを活用してみましょう。
2018/10/10