ラズベリーパイでキオスク制作 - 想像以上にハマりポイントが多い

ラズベリーパイでキオスク制作

なぜラズベリーパイ?

クライアントから店舗用キオスクを作ってほしいという依頼がありました。

最初は普通のPCを使おうと思いましたが、キオスク用にはコストが高く、場所も取ります。ラズベリーパイなら小型で安価、しかもLinuxが動くのでWebベースのキオスクにぴったりです。

ラズベリーパイ+タッチモニターの組み合わせで進めることにしました。

基本構成

キオスクの核心はシンプルです。起動すると自動的にフルスクリーンブラウザが立ち上がり、特定のWebページだけを表示すればいいのです。

# 自動ログイン設定
sudo raspi-config  # Boot Options → Desktop Autologin

# Chromiumキオスクモード自動起動
# ~/.config/autostart/kiosk.desktop
[Desktop Entry]
Type=Application
Name=Kiosk
Exec=chromium-browser --kiosk --noerrdialogs --disable-infobars http://localhost:3000

理論上はこれで終わりです。でも現実はそう甘くありませんでした。

予想外のハマりポイント

スクリーンセーバー問題。一定時間が経つと画面が消えます。キオスクは24時間稼働する必要があるので、スクリーンセーバー、電源管理、DPMSを全て無効にしなければなりません。これだけで1時間以上かかりました。

メモリ不足。ラズベリーパイ4(4GB)ですが、Chromiumはメモリをかなり消費します。長時間起動しているとメモリリークで動作が遅くなる現象がありました。結局cronで毎晩Chromiumを再起動するスクリプトを入れました。

タッチスクリーンのキャリブレーション。タッチ位置と実際の画面位置がずれる問題。ドライバの設定を調整する必要がありますが、これがモニターごとに異なります。

ネットワーク切断対応。WiFiが切れるとWebページが表示されません。オフラインフォールバックページを作っておき、ネットワークが復旧したら自動的にリフレッシュするロジックを入れました。

SDカードの寿命。ラズベリーパイはSDカードから起動しますが、書き込みが多いとSDカードがすぐ壊れます。ログ記録を最小限にし、可能なものはRAMディスクに移しました。

Web開発者のハードウェア挑戦

Web開発だけしていた身からすると、ハードウェアは全く新しい世界です。ソフトウェアでは「再起動すれば解決」で済むのに、ハードウェアには物理的な制約があります。

店舗に設置した後はリモートで管理する必要があります。SSH接続ができなくなったら直接行かなければなりません。こういう部分まで考えると、リモート管理ツールの設定は必須です。

でもこういう試行錯誤が楽しいのです。新しい技術を学ぶときに感じるあの感覚。分からないことがあれば検索し、検索すれば解決策が見つかり、解決すれば達成感がある。

ラズベリーパイ一つでこれだけの成果物ができるのですから、コスパは最高です。次はArduinoにも挑戦してみようと思います。