2020年7月に、「テレワーク・リモートワークでの組込み機器のデバッグについて考える」という記事を公開しました。筆者としては、テレワークしている人が羨ましすぎたので、その時の考え方をもとにして実際に社内にリモートでデバッグが出来る環境を構築してみました。

「実機をどう操作するのか?」「実機の動きをどのように確認するのか?」を前回記事に沿って、弊社で構築した環境を公開します。悩める組込み開発者の皆さんの参考となれば幸いです。(まだ前回記事を読んでいない人はぜひ読んでみてください。)

テレワークでデバッグするための環境構築

まずは簡単に前回のおさらいをしていきます。
環境構築の要件は大まかに以下のふたつがありました。
  - 自宅のPCから会社の開発マシンにアクセスでき、リモートデスクトップ等で操作可能
  - 実機・デバッガなどは開発マシンに接続しておく
実際に構築した環境をイメージ図に起こすと以下のようになります。

自宅のPCから会社の開発マシンにアクセスする方法として、Windows標準機能のリモートデスクトップ接続もありますが、OSグレードによっては対象外となるパターンもあります。そこで、弊社ではGoogleの”Chrome Remote Desktop”を使用しました。”Chrome Remote Desktop”は、Googleのアカウントがあれば使用可能で、同一ネットワーク上にいる必要がありません。VPNなどの特殊な設定も不要なので、気軽に始められます。
※セキュリティ面の考慮は必要な部分になるため、企業様によってはネットワーク管理者に確認する必要があります。

今回は弊社ブログ内でも登場したことのある、“特製「卓上扇風機」をテレワークしながらデバッグする” という場面を想定して環境構築をしていきます。

動画を見るとわかるように、最低限以下の部分についてリモートで実現する必要があります。

  • 人の手が必要な部分
      • – 各種タッチキーの操作
      • – 人感センサーへの反応
  • 人の目が必要な部分
      • – ファンが回っているかどうか・ファンの色が何色かの確認
      • – 各種LEDが点灯しているかどうかの確認

どのように組込み機器をリモート操作するか

前回の記事では、ふたつのパターンに分けて紹介しました。当然、デバッガだけで確認が済んでしまうパターンもあるので、そのような場合はターゲットを操作する仕組みは不要です。
  1. ターゲット機器側で操作用のコマンドを用意してPCから実行する
  2. 専用のハードウェアを使って電気信号を入力する

この「組込み機器をリモートで操作する」という部分が、多くの組込み開発者を出社させてしまう要因となっている部分ではないでしょうか。今回はこのふたつのうち、後者「専用のハードウェアを使って電気信号を入力する」を例として挙げます。

Raspberry Piによる専用コントローラの開発

今回のターゲット機器は、タッチキーや距離センサに電気信号(ロジック信号やアナログ信号などの疑似電圧)を与えてあげることで、操作が実現できるようなものなので、専用のコントローラを開発しました。使用したのは、前回の記事でも紹介しましたが、皆さんもおそらく馴染みのある「ラズパイ(Raspberry Pi)」です。

もっとピン数が欲しい場合はラズパイを複数台使用したり、高速な電気信号を必要とする場合は、FPGAを使用したり・・・いろいろと手段はありますが、今回はラズパイ1台分のスペックでも十分でした。

専用コントローラ用アプリケーションの開発

また、ラズパイを制御するためのアプリケーションも開発しました。このアプリケーションは、ターゲット機器のタッチキーに見立てたボタンや、センサーに電圧をかけるためのUIを実装しました。今回の仕様は、「POWERボタン:電源入切」「MODEボタン:風量調節(3段階)」「ECOボタン:ECOモード切替」の3つのボタンの配置と、「D/A OUT」で、距離センサへの入力電圧を任意で切り替えできるものとしました。

これでGUIを操作すれば実際にターゲット機器を手で操作しているときと同じ電気信号を送ることが可能になりました。GUI上での操作で、専用コントローラを操作できるようになれば、リモートデスクトップでそのGUIを操作することで、ターゲット機器を操作できるようになります。すなわち、ここまでで組込み機器をリモート操作する仕組みが完成しました。

どのように組込み機器の振る舞いを確認するか

続いて、動作しているターゲット機器の振る舞いを確認する環境を構築していきます。目視に代わる外部からの確認方法や、内部ではどのような処理が実行されたのかを確認する方法について説明します。弊社で提供している、「DT+シリーズ」を用います。DT+シリーズは全てのアプリケーションがリモートデスクトップ上で操作可能なので、テレワークでも活躍できるツールです。

DT+Traceによる内部処理の情報解析

「DT+Trace」を使用して、ターゲット機器を動作させた際に、内部ではどのような処理が実行されたのかを見える化します。実行経路や、変数値遷移、関数やタスクの時間周期などを確認できます。

DT+Analogによる電気信号の解析

組込み機器開発では切っても切れない関係、ハードウェアの信号計測です。前回の記事では、オシロスコープについては触れていませんでしたが、弊社の「DT+Analog」という製品が、まさにオシロスコープの代役として使えそうなので、環境に組み込んでみました。DT+Analogは、アナログ信号をモニタ・保存できるツールです。PC上のアプリケーションに波形が表示されたり、GUIで波形の取得停止が可能なので、テレワーク中でもオシロスコープで波形を見ているような感覚で検証ができます。DT+Analogはよくあるオシロスコープに比べると、非常にコンパクトなサイズ感に収まっています。「百歩譲って実機は持ち帰り可能だけどオシロスコープが持ち帰り不可だから作業が進まない・・・」という開発者の方にもピッタリな使用感だと思います。

DT+Cameraによる外部状態の監視

ターゲット機器の外部的な見た目(ファンが回っているか・ファンの色は何色かなど)は、どうしても目視での確認が必要になるところです。市販のWEBカメラとフリーのツールを併用して録画するのも手ですが、弊社には「DT+Camera」という製品があります。DT+Cameraはネットワークカメラで、録画はもちろん、ネットワーク経由でのリアルタイムストリーミングや複数台設置の運用も可能です。ここでは、実際に専用コントローラとアプリケーションとDT+Cameraを使用して、遠隔操作している映像をお見せします。


PCアプリ上のボタンを操作することで、DT+Cameraのリアルタイムストリーミング映像でターゲット機器が動作されているのがわかります。

実際に設置してみた

実際に設置してある機材は以下のような感じです。各種DT+のアプリケーションは、ほかのDT+アプリケーションと同期した解析が可能です。内部処理の動きに合わせた外部動作の状態確認や、ハードウェアの信号と外部動作の照らし合わせなども可能なので、テレワーク中に不具合が発覚した場合でも解析のアプローチはさまざまな選択肢があります。当然、データ保存や録画をしているので、再現頻度が低い不具合でも、内部・外部両方のデータを保存できます。細かいアプリケーションの使い方や、同期がどのように見えるのかといったところは、今回は割愛しますが、弊社YouTubeチャンネルや、個別にデモ等でご案内いたします。

まとめ

今回は、テレワークでのリモートデバッグというところに重きを置きました。ラズパイを使用して、ターゲット機器を操作して、その時の外部・内部の情報を計測する環境も構築しました。これらを応用して、ラズパイなどの専用ハードウェアやアプリケーションから、あらかじめ生成したテストのシナリオを実行する仕組みまで搭載してあげれば、今回ご紹介した環境の延長線上に「テスト自動化」というキーワードも見えてくると思います。テレワークに限らず、夜間・休日にもテストを回したいという開発者の方も、是非参考にしていただければ幸いです。

ワクチンの接種が始まり、落ち着きを見せ始めるであろう新型コロナウィルス。しかしながら、業種によってはテレワークでも不都合がない場合もあり、働き方改革と称しテレワークの推奨はしばらく続くのではないでしょうか。筆者のように、テレワークしている人が羨ましい・・・と思う方も思わない方も、この機会にご自身の働き方を見直してみませんか?弊社では、リモートデバッグ環境構築や、テスト自動化環境構築のご相談を承っておりますので、是非一度ご相談ください。

リモートデバッグやテスト自動化のご相談を承ります!

ご紹介したRaspberryPiを使用したリモートデバッグやテスト自動化のソリューションなど、要件に応じたソリューションをご提供しております!ぜひご相談ください。
詳細はこちらから