【PR】この記事には広告が含まれています。
Raspberry Pi Touch Displayの後継モデルとして登場したTouch Display 2。キーボードやマウスを使わず、指先だけで直感的に操作できるRaspberry Pi公式ディスプレイです。
今回、Touch Display 2をRaspberry Pi財団から提供いただき、詳しくレビューしました。
記事の後半では、このディスプレイを活用した情報表示用サイネージの作成方法も紹介しています。
Touch Display 2はスイッチサイエンスさんやKSYさんで購入できます。気になる方はぜひチェックしてみてください。
開封
ディスプレイサイズは7インチ。1280 x 720のフルカラー静電容量式タッチスクリーンを採用しています。前モデルの800 x 480と比較して、解像度が大幅に向上しました。
ディスプレイ本体の重さは248g。バッテリーは内蔵していません。
裏面にRaspberry Piを取り付けます。Zeroシリーズ以外でDSIポートを持つ全モデルに対応しているようです。
ディスプレイ以外の付属品は以下の通りです。
- FFC(Flat Flexible Cable)
- 電源ケーブル
- 8×M2.5ネジ
FFC(Flat Flexible Cable)は2種類付いています。これはRaspberry Piのモデルに合わせた接続を可能にするためです。Raspberry Pi 5では22ピンから15ピンに変換するFFCを使用。他のモデルには15ピン同士のFFCを使用します。
準備
今回はRaspberry Pi 5をTouch Display 2に取り付けて使用しました。
Raspberry Pi OSは、11/6時点で最新のバージョンを使用しています。
OSのインストール方法の詳細は、OSインストールから初期設定まで|ラズベリーパイ セットアップ手順のすべてをご覧ください。新たにOSのインストールをする場合は、Wi-Fi接続などの初期設定を済ませておきます。
取り付け
電源コネクタをディスプレイ側に差し込みます。
付属のFFCをディスプレイに接続します。Pi 5用は形状が異なります。
Raspberry Pi 5を取り付けます。
FFCをラズパイ側に取り付けます。DSIポートが2か所ありますが、どちらに差し込んでも使用できました。
電源ケーブルをRaspberry Piの5VとGNDのピンに差し込みます。ディスプレイの電源はここから供給されます。
Touch Display 2自体は、わずか15mmの厚みですが、ラズパイ本体を取り付けると32mmになりました。
公式パーツであるアクティブクーラーも取り付けて使用できます。
取り付けが完了し、USB電源ケーブルを差し込んだ状態。基板むき出しの状態で使用するのは心もとないので、できれば保護カバーが欲しいところではあります。
試しにRaspberry Pi 5用公式ケースを取り付けてみました。別途「8x M2.5ネジ」を4本用意すれば、ラズパイ本体とケースを一緒に固定できます。
ケースのフタ部分はフラットケーブルがあり、取り付け不可でした。
デスクにおいて使用する際に安定感が増します。ただ、ケースの厚みがやや気になります。
ケース部分を握ることで、手持ちで使いやすくなりました。
起動
ディスプレイ取り付け以前と比較すると起動時間が長くなりました。私の環境では1分20秒かかります。ディスプレイやタッチ機能の初期化に追加の時間がかかり、起動が遅くなっているようです。
画面の向きは設定により変更できます。メニューを開き「設定」、「Screen Configuration」の順にタップします。
「Screens」をタップします。
「DSI-2」、「向き」の順にタップし、向きを選択します。
「Apply」をタップします。
10秒以内にOKをタップすると、画面の向きが切り替わります。
「Brightness」の設定では、画面の明るさの変更も可能です。
文字入力ではスクリーンキーボードを利用可能です。スクリーンキーボードを表示するには、画面右上のキーボードのアイコンをクリックします。
スクリーンを消す場合も、同じく画面右上のキーボードのアイコンをクリックします。
キーボードが表示されない場合は以下のコマンドを実行して、画面上で使えるスクリーンキーボード「squeekboard」をインストールします。
sudo apt install squeekboard
squeekboardはローマ字入力には対応していなようです。他のキーボードソフトも試しましたが、今のところローマ字入力ができていません。
【活用事例】インフォメーションパネル
Touch Display 2の画面に時計、カレンダー、天気、ニュースを表示するインフォメーションパネルを作成しました。画面中央にレーダー風のアニメーションを配置し、文字の色もレーダーに合わせて統一しています。また常時表示しておけるようにスタンドも自作しています。
ここからは制作の過程を紹介していきます。
スタンドの作成
3Dプリンターで自分好みのデザインのスタンドを作成します。まずはCADソフトでスタンドを設計します。
プリント時間は約3時間。Touch Display 2に付属のM2.5ネジ4本で固定する仕様にしました。寸法の調整をするため、2回作り直しています。
イメージ通りに仕上がりました。
前面から電源のケーブルが目立たないように、L字型のアダプターを使用しました。
ソフトウェアの準備
MagicMirror2という情報表示が可能なスマートミラーを作成するためのオープンソースソフトウェアを使用します。MagicMirror2を使えば、ミラーがなくてもクールな見た目のディスプレイ表示を作れます。
設定操作はタッチパネルでは難しいため、VNC接続やマウス・キーボードを使って行います。
MagicMirror2のインストール
ターミナルを開きます。
以下のコマンドを順に実行していきます。
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
git clone https://github.com/MichMich/MagicMirror
cd MagicMirror/
npm run install-mm
設定ファイルの作成
config.jsを作成します。
nano config/config.js
nanoエディタが開いたら、以下のコードを貼り付けて保存します。
let config = {
address: "localhost", // Address to listen on, can be:
// - "localhost", "127.0.0.1", "::1" to listen on loopback interface
// - another specific IPv4/6 to listen on a specific interface
// - "0.0.0.0", "::" to listen on any interface
// Default, when address config is left out or empty, is "localhost"
port: 8080,
basePath: "/", // The URL path where MagicMirrorツイ is hosted. If you are using a Reverse proxy
// you must set the sub path here. basePath must end with a /
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"], // Set [] to allow all IP addresses
// or add a specific IPv4 of 192.168.1.5 :
// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
// or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],
useHttps: false, // Support HTTPS or not, default "false" will use HTTP
httpsPrivateKey: "", // HTTPS private key path, only require when useHttps is true
httpsCertificate: "", // HTTPS Certificate path, only require when useHttps is true
language: "en",
locale: "en-US",
logLevel: ["INFO", "LOG", "WARN", "ERROR"], // Add "DEBUG" for even more logging
timeFormat: 24,
units: "metric",
modules: [
{
module: "alert",
},
{
module: "updatenotification",
position: "top_bar"
},
{
module: "clock",
position: "top_left"
},
{
module: "calendar",
header: "Japanese Holidays",
position: "top_left",
config: {
calendars: [
{
fetchInterval: 7 * 24 * 60 * 60 * 1000,
symbol: "calendar-check",
url: "https://www.google.com/calendar/ical/ja.japanese%23holiday%40group.v.calendar.google.com/public/basic.ics"
}
]
}
},
{
module: "MMM-VideoLoop",
position: "middle_center", // Central position
config: {
videoPath: "http://localhost:8081/radar.mp4"
}
},
{
module: "weather",
position: "top_right",
config: {
weatherProvider: "openmeteo",
type: "current",
lat: 35.6895,
lon: 139.6917
}
},
{
module: "weather",
position: "top_right",
header: "Weather Forecast",
config: {
weatherProvider: "openmeteo",
type: "forecast",
lat: 35.6895,
lon: 139.6917
}
},
{
module: "newsfeed",
position: "bottom_bar",
config: {
feeds: [
{
title: "NHK news",
url: "https://www3.nhk.or.jp/rss/news/cat0.xml"
}
],
showSourceTitle: true,
showPublishDate: true,
broadcastNewsFeeds: true,
broadcastNewsUpdates: true
}
},
]
};
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") { module.exports = config; }
nanoエディタでファイルを保存して終了するには、Ctrl + O
を押して保存し、Enter
を押してから、Ctrl + X
で終了します。
このコードは、MagicMirrorの設定ファイルです。MagicMirrorではモジュールという独立した機能を使用して表示内容を設定します。このモジュールごとに表示内容を設定でき、必要な情報を自由にカスタマイズして表示できます。
今回の表示内容は以下の通りです。
- alert・・・システムの通知や警告を表示するモジュール
- updatenotification・・・MagicMirrorの更新情報をトップバーに表示するモジュール
- clock・・・時刻を表示するモジュール
- calendar・・・日本の祝日を表示するカレンダーモジュール
- MMM-VideoLoop 動画をループ再生するモジュール
- weather (current weather) 現在の天気情報を表示。緯度と経度から情報を取得。ここでは東京の緯度・経度を設定
- weather (weather forecast) 天気予報を表示するモジュール
- newsfeed 下部にニュースフィードを表示するモジュール
レーダーアニメーション表示用モジュールを作成する
レーダーの動画をループ再生するために、MMM-VideoLoopという名前のモジュールを作成します。
MagicMirrorのモジュールディレクトリに移動します。
cd modules
MMM-VideoLoop
フォルダを作成します。
mkdir MMM-VideoLoop
MMM-VideoLoop
フォルダに移動します。
cd MMM-VideoLoop
MMM-VideoLoop.js
ファイルを作成して編集モードに入ります。
nano MMM-VideoLoop.js
nanoエディタが開いたら、以下のコードを貼り付けます。
Module.register("MMM-VideoLoop", {
defaults: {
videoPath: "http://localhost:8081/radar.mp4" //
},
getDom: function() {
const wrapper = document.createElement("div");
wrapper.style.textAlign = "center";
const video = document.createElement("video");
video.src = this.config.videoPath;
video.autoplay = true;
video.loop = true;
video.muted = true;
video.style.width = "100%";
video.style.maxWidth = "800px";
video.onerror = () => {
wrapper.innerText = "Failed to load video. Please check the path.";
console.error("Failed to load video:", this.config.videoPath);
};
wrapper.appendChild(video);
return wrapper;
}
});
このコードでは「MMM-VideoLoop」モジュールを定義し、指定されたURLから動画をループ再生する設定をしています。videoPath
プロパティで動画のURLを設定し、getDom
関数で動画要素を作成、表示します。
デザインを調整する
custom.cssを作成して、テキストの色や表示位置など、デザインの設定をします。
cd
nano /home/pi/MagicMirror/css/custom.css
nanoエディタが開いたら、以下のコードを貼り付けて保存します。
/* Set all text to a more greenish yellow-green */
* {
color: #7FFF00 !important; /* Chartreuse */
}
/* Adjust text for the weather module (specify further if necessary) */
.weather .bright,
.weather .dimmed,
.weather .normal,
.weather .small,
.weather .large {
color: #7FFF00 !important;
}
/* Apply to other modules if text remains */
.clock .bright,
.clock .dimmed,
.calendar .event,
.compliments .compliment,
.newsfeed .newsfeed-title,
.newsfeed .newsfeed-source {
color: #7FFF00 !important;
}
/* MMM-VideoLoop module to be placed at the back */
.MMM-VideoLoop {
position: absolute;
top: -5px;
left: -110px;
width: 120%;
height: auto;
z-index: 0; /* Set a low z-index to place it behind */
pointer-events: none; /* Make sure it doesn't interfere with clicks */
transform: scale(1.2);
}
/* Ensure other modules are above */
.module {
position: relative;
z-index: 10; /* Set higher z-index for other modules */
}
.calendar {
position: relative !important;
z-index: 120 !important;
このCSSコードは、MagicMirrorの画面デザインを調整するための設定です。まず、全体のテキスト色を黄緑色(#7FFF00)に変更します。次に、天気やカレンダー、ニュースフィードなど特定のモジュールのテキスト色も同じ黄緑色に設定しています。また、動画モジュール(MMM-VideoLoop)は画面の最背面に配置し、他のモジュールがその上に表示されるようにz-index
を調整しています。
レーダー動画をダウンロードする
回転するレーダーの動画は、Pixabayで公開されているものをダウンロードして使用します。Pixabayは著作権フリーの画像、動画、音声などを共有するサイトです。
動画のサイズは640×360を選択します。
ダウンロードしたら、ファイル名を「radar.mp4」に変更しておきます。名前が違うと表示できません。
radar.mp4を/home/pi/MagicMirrorフォルダに移動します。
表示を起動する
MagicMirrorディレクトリに移動します。
cd /home/pi/MagicMirror
Pythonの簡易サーバーを立ち上げて、MagicMirrorに動画(radar.mp4)を提供します。最初はファイルのパスを直接指定して読み込もうとしましたが、うまくいきませんでした。
python3 -m http.server 8081
別のターミナルを開き、MagicMirrorを起動します。
cd MagicMirror/ && npm run start
以下のように表示が開始されれば成功です。
表示を中断するには、CtrlキーとQキーを同時に押します。
まとめ
Touch Display 2は簡単に取り付けられ、すぐに使用を始められる手軽さが魅力です。7インチという絶妙なサイズもポイントで、デスクトップ画面のタッチ操作が快適に行える一方、Raspberry Piのコンパクトさを損なうこともありません。これ以上小さくなるとボタン操作など細かいUI操作が難しくなりますが、このサイズなら日常的な操作に対応できます。
一方、Raspberry Piがむき出しの状態になるため、保護用のカバーやスタンドを自作する必要がある点はデメリットです。タブレットのような使い心地を期待して購入すると、少し物足りなく感じるかもしれません。ただ、カスタマイズの自由度が広がる点においては、これもまたRaspberry Piらしさと言えるでしょう。