某庁の現業室にある時計を再現してみた
2025.05.27 · 2525 words · 6 minute readこの記事ではアフィリエイト広告を利用しています
目次
某庁のオペレーションルーム(現業室)を見学した時、天井から吊るして設置されていた時計がカッコよかったので、余っていた小型横長液晶モニターで再現してみた。
部屋に転がってたツイ廃液晶Neoの使い道、これが正解かもしれん
— けーいち (@9SQ) April 21, 2025
オペレーションルームの時計なので opr-clock と命名した。何の捻りもない。
https://github.com/9SQ/opr-clock
仕組みとしては、上下2段の時計をPILでレンダリングしてnumpyで画像を回転&RGB565形式に変換し、フレームバッファに書き込んでいるだけ。
セグメントが非点灯の部分も薄らグレーで表現したり、現地見学と報道写真から 分 と 秒 は0パディングする事が分かっているので再現したり、というのがこだわりポイント。
Xで公開したところ、欲しいという声があったので作り方を以下にまとめておきます。
1. opr-clockの材料
Raspberry Pi Zero 2 W
Raspberry Pi 3 A+ や Raspberry Pi 4 でも良いが、opr-clockだけを動かすならそんなにスペックは要らないので、余って転がってない限りは安い Raspberry Pi Zero 2 W で十分。
ただし、有線LAN接続が必要な場合は、Raspberry Pi 3 B+ や Raspberry Pi 4 を使うしかない…MicroSDカード
32GB以上あれば余裕があるはず。今回はSanDiskのHigh Endurance(高耐久)64GBを選んだけれど、最後にOverlayfsにするので余程安くて怪しい物でなければ通常版でも良いはず。ヒートシンク
Raspberry Pi用の小さいヒートシンク。貼っておくことをお勧めする。
解像度480x1920pxの横長モニター
私は以前買って家に転がしてた ツイ廃液晶Neo を使ったが、今は入手できないのでAmazonやAliexpressで似たものを調達する。
今回は、検証用に新たに Wisecoco 8.8インチ小型モニター(8,500円)を購入したので、これを使って構築する。HDMI to Mini HDMIケーブル、USB Micro-B ケーブルがそれぞれ1本付いてくる。HDMI to Mini HDMIケーブル
モニターに (Full) HDMI to Mini HDMIケーブルが1本付いてくる場合は不要。HDMI to Mini HDMI変換アダプタ
Mini HDMI to Mini HDMIケーブルがあるなら変換アダプタは不要。U字になっている変換アダプタがあると、配線をモニタ裏に隠せて綺麗。USB Micro-B ケーブル x2本
モニターに1本付いてくる場合は1本不要。Raspberry Piとモニターの電源供給用。
モニター用はU字になっているケーブルを使うと、裏に配線を隠す事ができる。
お好みでRaspberry Piのケースやモニターの固定具など、設置環境に応じて買い足してください。
2. Raspberry Piのイメージを焼く
昔はdd使ったりしてたけど、今は Raspberry Pi Imager があるので楽々。
ダウンロードしてインストールして起動したら、
- Raspberry Piデバイスは RASPBERRY PI ZERO 2 W を選択
- OSは RASPBERRY PI OS (LEGACY, 64-BIT) LITE を選択
- MicroSDカードをカードリーダー等に挿してストレージを選択して次へ
設定を編集するか聞かれるので、ここでホスト名やユーザー名/パスワード、そしてWi-Fiの設定、SSHを有効化しておく。
ここで設定しなかった場合、Raspberry Piにキーボードを接続してCLIで諸々設定する羽目になるので要注意…
3. Raspberry Piの設定
3-1. 接続〜起動
イメージを焼いたMicroSDをRaspberry Piに挿し、HDMIケーブルを接続、USBケーブルで電源供給すると、デフォルトで以下のように縦方向のコンソールが表示されるはず。
この状態で、別の端末からSSHで接続して作業する。
まずはパッケージのアップデート
sudo apt update
sudo apt upgrade
念の為、fbset
を実行してモニターの情報をチェック。
mode "480x1920"
geometry 480 1920 480 1920 16
timings 0 0 0 0 0 0 0
accel true
rgba 5/11,6/5,5/0,0/0
endmode
480x1920
だったらOK。
3-2. 画面の向きを設定
現状は縦向きなので横向きにして、起動中の出力も抑制する。
sudo nano /boot/cmdline.txt
初期状態で以下のような内容になっていると思う。(PARTUUIDはそれぞれ違うかも)
console=serial0,115200 console=tty1 root=PARTUUID=503ab566-02 rootfstype=ext4 fsck.repair=yes rootwait cfg80211.ieee80211_regdom=JP
rootwait
の後ろに
logo.nologo quiet vt.global_cursor_default=0 video=HDMI-A-1:480x1920M@60,rotate=90
を追加して保存(Ctrl+X→Y→Enter)
この時点で一旦 sudo reboot
すると、以下のように画面が横向きの状態で表示される。
ちなみに、rotate=90の設定はフレームバッファの向きに影響しないので、入れても入れなくてもどちらでも良い。入れない場合は縦向きのままログインプロンプトが表示される。
3-3. NTPの設定
sudo nano /etc/systemd/timesyncd.conf
#NTP=
のコメントアウトを外してNTPサーバを追加。
[Time]
NTP=ntp.nict.jp
NICTのNTPを利用しているが、お好みのものがあればそれでもOK。
保存して、NTPの同期を有効化、日時が正常に合っていることを確認。
sudo timedatectl set-ntp true
date
3-4. opr-clockのインストール
Gitをインストール
sudo apt install git
opr-clockのリポジトリをクローンしてフォントをダウンロードする。
git clone https://github.com/9SQ/opr-clock.git
cd opr-clock
mkdir fonts
cd fonts
wget https://github.com/googlefonts/kosugi-maru/raw/refs/heads/main/fonts/ttf/KosugiMaru-Regular.ttf
wget https://github.com/keshikan/DSEG/releases/download/v0.46/fonts-DSEG_v046.zip
unzip fonts-DSEG_v046.zip
cp fonts-DSEG_v046/DSEG7-Classic/DSEG7Classic-BoldItalic.ttf ./
cd ../
実行に必要なライブラリ(numpy等)はRaspberry Pi OSの場合、標準でインストールされているので、あとは実行するだけ。
python3 main.py
このように現在時刻の時計が表示されるはず。
止めてコンソールに戻る時は Ctrl+C
3-5. systemdで自動起動設定
opr-clockをサービス化して自動起動設定することで、Raspberry Piの起動時に自動的に表示される。
sudo nano opr-clock.service
以下の3箇所の pi を 2.Raspberry Piのイメージを焼く
で設定したユーザー名に変更
ExecStart=/usr/bin/python3 /home/pi/opr-clock/main.py
WorkingDirectory=/home/pi/opr-clock
User=pi
保存してコピー、自動起動の有効化、サービスを開始。
sudo cp opr-clock.service /etc/systemd/system/
sudo systemctl enable opr-clock
sudo systemctl start opr-clock
モニターに時計が表示されていれば正常。
ここで sudo reboot
すると、起動後も自動的に時計が表示される。
ちなみに、起動してWi-Fiを掴み、NTPサーバと同期するまで時刻がズレるが、これはRaspberry Pi Zero 2 WがRTC(とバッテリーバックアップ)を持っていない為だ。
3-6. Overlayfsで電源断の対策
突然電源が切れてもSDカードが死なないようにする。
sudo raspi-config
4 Performance Options Configure performance settings
を選択P3 Overlay File System Enable/disable read-only file system
を選択Would you like the overlay file system to be enabled?
で<Yes>
を選択The overlay file system is enabled.
→<Ok>
Would you like the boot partition to be write-protected?
で<Yes>
を選択The boot partition is read-only.
→<Ok>
- → キーで
<Finish>
を選択 Would you like to reboot now?
→<Yes>
を選択して再起動
4. 完成
冒頭のXに投稿した写真のように、縁が白のモニターだとよりそれっぽくなりますが国内での入手性が悪そう(Aliexpressで探すといくつか見つかった)。