Ubuntu Weekly Recipe

第606回 オープンソースな多機能測定器Pocket Science LabをUbuntuで使う

この記事を読むのに必要な時間:およそ 4 分

Pocket Science Lab(PSLab)はオシロスコープやマルチメーター,ロジックアナライザー,シグナルジェネレーターなど多くの機能を備えた,スマートフォンからも操作できるシングルボードコンピューターです。今回はこのPSLabをUbuntuから操作してみましょう。

オープソースハードウェア「Pocket Science Lab」

Pocket Science Lab(PSLab)の最大の特徴のひとつが「オープンソースハードウェア」を謳っていることです。つまりソフトウェアだけでなくハードウェアファームウェアの仕様やコードも公開されているため,ユーザーが必要に応じて改造・拡張しやすい作りになっているのです。

機能としてはオシロスコープやマルチメーターだけでなく,ロジックアナライザーやシグナルジェネレーター,電源などとして利用できますし,I2C/SPI/UARTの口もあるのでそれらのバスにつながった外部デバイスの制御もできます。Pythonライブラリが公開されているので,USBに接続したシリアルコンソール経由でプログラマブルに操作することも可能です。

さらに「Pocket」の名前のとおり,ハードウェアそのもののサイズはRaspberry Piよりも一回り小さく作られています。ディスプレイと操作はスマートフォンを,電源はUSBケーブルを利用できるため,ハードウェア自体はとても小さくて済むのです。

つまり最低限必要なのはプローブ用のピンヘッダーに接続するケーブル類とAndroidベースのスマートフォンもしくはPCだけです。なお,スマートフォンに接続する場合は,USB-OTGケーブルである必要があります。いわゆるスマートフォンにマウスやUSBメモリーのようなUSBデバイスを接続して動かせるようになるケーブルです。

デスクトップ向けアプリケーションのインストール

PSLabにはAndroid向けのアプリケーションとは別にWindows/Linux向けのデスクトップアプリケーションが用意されています。実体はElectronベースのアプリケーションではあるものの,デバイスとの通信はPythonを用いています。言い方を変えれば,これらが動く環境であればOS・ディストリビューションを問わず動作する見込みです。

ただしAndroid版に比べると,照度計・圧力計・加速度計・角速度計・方位計・温度計・ガスセンサーなどの情報取得機能や,Andorid版程度の使いやすいUIが不足しているという印象です。OTGケーブルが入手できなかったり,Androidに余計なアプリを入れたくなかったり,どうしてもデスクトップLinuxを使いたい場合でない限りは,Android版をおすすめします。

ちなみに各種センサーは,PSLabで直接計測できるわけではなく,Android版は接続したスマートフォンのデバイスから情報を取得しているようです。しかしI2C/SPI/UARTのデータバスを持っているため,自分でセンサー系ICを接続し,Pythonスクリプトを記述すれば,情報を取得することが可能になるはずです。具体的な実装例はPSLabのPythonライブラリを参照してください。

それでは実際に,Ubuntu 18.04 LTSにデスクトップアプリケーション版のPSLabをインストールしましょう。選択肢は次の3つです。

  • 公式が配布する安定版のdebファイルをインストールする
  • 公式が配布する開発版のdebファイルをインストールする
  • GitHubからソースコード一式をインストールする

このうち安定版についてはCI/CDの問題かGitHub LFSの問題かは不明ですが,パッケージファイルをダウンロードできません。よって一番簡単なのは開発版のdebファイルをダウンロード・インストールする方法です。

debファイルはフロントエンドの,つまりはElectronアプリケーションを動かすための依存関係は記述されていますが,バックエンドのPythonライブラリについては記述されていません。よってバックエンド部分は別途自分でインストールしなければなりません。

第589回「M5StickVの開発用にMaixPy IDEをUbuntuで動かす」のように,LXD上でPSLabデスクトップアプリケーションを動かす方法もあります。とりあえずデスクトップアプリケーション専用のコンテナを作ってしまいましょう。LXDを使わない場合は以下のコマンドはスキップしてください。

$ lxc launch ubuntu:18.04 pslab
$ lxc config set pslab raw.idmap 'both 1000 1000'
$ echo -e "uid 1301 1000\ngid 200 1000" | lxc config set pslab raw.idmap -
$ lxc config set pslab environment.DISPLAY ':0'
$ lxc config device add pslab X0 disk path=/tmp/.X11-unix/X0 source=/tmp/.X11-unix/X0
$ lxc config device add pslab gpu gpu
$ lxc exec pslab apt update
$ lxc exec pslab apt full-upgrade
$ lxc exec pslab -- apt install -y x11-apps x11-xserver-utils mesa-utils libasound2
$ lxc restart pslab
$ lxc exec pslab -- sudo -i -u ubuntu

ここから先の手順は,LXDを使う場合はコンテナの中で,使わない場合はホスト上で実行するものとします。

まずはフロントエンドのパッケージをダウンロード・インストールします。

$ wget https://github.com/fossasia/pslab-desktop/raw/install/pslab-desktop-development-linux.deb
$ sudo apt install ./pslab-desktop-development-linux.deb

次にバックエンドを動かすに当たって足りない依存関係およびバックエンドそのものをインストールします。

$ sudo apt install -y python3-numpy python3-serial python3-pip build-essential git
$ git clone https://github.com/fossasia/pslab-python.git
$ (cd pslab-python; make && sudo make install)

バックエンドはPython 3のスクリプトです。そこで上記ではこのスクリプトが利用するNumPy・PySerialと,バックエンドビルド時に利用するであろうpip,ビルドツール一式をインストールしています。NumPyとPySerialはpipからインストールしてもかまいません。

最後の2行はPSLabのバックエンドをクローンし,ビルド・インストールしているだけです。

これでデスクトップアプリケーションであるPSLabを起動する準備が整いました。アプリケーションは次のコマンドで起動できます。

$ /opt/PSLab/pslab

LXDの中にインストールした場合は,ホスト側からだと次のように実行します。

$ lxc exec pslab -- sudo -i -u ubuntu /opt/PSLab/pslab

図1 PSLabの起動画面

画像

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。