Raspberry pi Zero WにWio Terminalを繋いでディスプレイ表示する

はじめに

Seeedから発売されている、Wio TerminalRaspberry pi(以下、ラズパイ)のディスプレイになるとのことで、今回試してみました。

f:id:azuzuzu:20201025232044p:plain
Wio TerminalとラズパイZero

ラズパイとWio TerminalはUSBで接続します。

Seeedの公式Wikiの以下の記事

Raspberry Pi用HMIディスプレイを作る - Seeedウィキ(日本語版)

に方法はかかれてますので、基本はここの内容に従って作業をすればよいです。

ただこのサイト、

  • ChromeでもFirefoxでも少し表示がおかしい
  • 自動翻訳をつかったのか一部日本語がおかしい

と見にくいのに注意。例えば、「sudoサービスlightdmの再起動」は「sudo service lightdm restart」というコマンドを翻訳してしまったと思われます。

Raspberry Pi Zero Wで動くか(手順的な面と性能的な面)がわからなかったので、実際にやってみました。

結論としては、それなりに動きました。

f:id:azuzuzu:20201025232226p:plain
Wio Terminalでのディスプレイ表示

見ての通り、解像度は320 x 240なのでやれることは限られてます。WiFiやBluetoohの切り替えとかにはつかるかもしれません。配置するウェジットを工夫すればちょっとしたことができかも?

f:id:azuzuzu:20201025232354p:plain
WiFi選択画面

設定でUSBの数だけWio Terminalを繋げるそうなので、Wikiではラズパイ(Zeroではない)の4つのUSBポートに4台つなげる例が書かれてます。が、あまり実用的には思えないですね。

本命は、WikiにもあるPyQtGraph等をつかって直接GUI表示する方法ですね。これは次に試してみようとおもっています。

さて、以降では、今回動作させるまでの手順+αをまとめます。Raspberry Pi Zero Wということで、セットアップ等は非常に時間がかかるので、VTuberの雑談配信やアニメをみながら作業するのがよいかと思います。(個人的嗜好)

今期アニメだと「戦翼のシグルドリーヴァ」が結構好き。

環境

以下に、今回使用した環境をまとめておきます。

項目 内容
H/W Raspberry pi Zero W
OS image Raspberry Pi OS (32-bit) with desktop and recommended software. Version: August 2020, 2020-08-20
SD容量 16GB
その他デバイス Wio terminal
USBケーブル Wio terminal付属のもの

大まかな手順

Wio Terminalの準備

Wio Terminalに、ディスプレイ表示用のファームウェアを書き込む必要があります。

ソースはgithubに公開されてるので、自分でもってきてArduino IDEで作成することができる一方、

github.com

Wikiからダウンロードできるuf2ファイルを使って、対応ファームを入れ替えることもできます。

Raspberry Pi用HMIディスプレイを作る - Seeedウィキ(日本語版)

PCにWio Terminalを繋いで、Wio Terminalのディスプレイに向かって左側面にある電源スイッチを、ONの位置から下に素早く2回引き下げます。すると、PC側にドライブとして認識されます。

そこにuf2ファイルをコピーすると、再起動してファイルを読み込んで起動します。mbedライクですね。

用意されてるuf2ファイルは2種類あって、Wio Terminalの画面右下にある青いスイッチでマウスを操作できるもの(USBDisplayAndMouseControl)と、マウスを使わないかわりリフレッシュレートが高いもの(NullFunctional)。今回はUSBDisplayAndMouseControlを使ってみました。

ラズパイ側の準備

まずはカーネルカーネルヘッダを更新。

$ sudo apt install raspberrypi-kernel-headers raspberrypi-kernel

その後、githubからドライバのソースを取得。作業はユーザのホームディレクトリ配下で行いました。

$ git clone https://github.com/Seeed-Studio/seeed-linux-usbdisp

その後、ビルドしてインストール、再起動。

$ cd ~/seeed-linux-usbdisp/drivers/linux-drive
$ make
$ sudo make install
$ sudo reboot

設定ファイルを、Xサーバの設定ディレクトリにコピー。

sudo cp ~/seeed-linux-usbdisp/drivers/linux-driver/xserver_conf/10-disp.conf /usr/share/X11/xorg.conf.d/

ウィンドウマネージャ(lightdm)を再起動。

$ sudo service lightdm restart

WikiではここでWio TerminalをUSBポートに接続とありますが、Raspberry pi Zだと繋いだとたん電力不足でリブートしていまいますので、ラズパイ起動時に接続しておくのが良いです。

以上になります。

その他メモ

HDMIへディスプレイ出力を戻したい

Wio terminalにディスプレイ表示を切り替えると、HDMIへには出力されなくなります。

HDMIに戻すには、

1) 設定ファイル名を変更して無効にし、

$ mv /usr/share/X11/xorg.conf.d/10-disp.conf /usr/share/X11/xorg.conf.d/10-disp.conf.disable

2) ディスプレイマネージャ(lightdm)を再起動します。

$ sudo service lightdm restart

切り替えに少し時間がかかります。