OBONO’s Diary

へっぽこプログラマの戯言

OLED 続き

前回の続き。OLED に文字を出せることができたので、あとは「タクトスイッチを押したタイミングで画面に何かしら表示して、しばらくしたら画面を消す」を実現する。
画面表示方法を調べた時もそうだったけど、ネットで調べると大抵 python で書かれたサンプルコードが見つかるんだよね。これまで python を書いたことが無かったのだが、見よう見まねで頑張ってコードを書いてみた。(書いたコードは Gist にアップロード済み)

このコードでは、引数に任意のコマンド文字列を渡せるようにしてあり、タクトスイッチを押した際、そのコマンドの実行結果が画面に表示されるようになっている。そのため、別途、以下のようなシェルスクリプトを用意しておく。

#!/bin/bash
date '+%F %T'
uptime | sed -r 's/^.+up ([^,]+),.+$/UP \1/'
uptime | sed -r 's/^.+\s(\S+),\s(\S+),\s(\S+)$/CPU \1 \2 \3/'
df -h | grep /mnt/exhdd | awk '{print "HDD",$3,"/",$2,$5}'
free -h | sed -n -e 2p | awk '{print "MEM",$3,"/",$2}'

あとは、こいつをサービスとして常駐させるべく、以下のような内容で /etc/systemd/system/monitor-status.service ファイルを作成し、

[Unit]
Description=Status monitor daemon

[Service]
WorkingDirectory=/root/monitor-status
ExecStart=/root/monitor-status/monitor.py ./script.sh
Restart=always

[Install]
WantedBy=multi-user.target

systemctl コマンドを実行すれば完成。

# systemctl daemon-reload
# systemctl enable monitor-status
# systemctl start monitor-status


というわけで、普段は画面表示は消えているが、
f:id:OBONO:20190703224516j:plain
タクトスイッチを押すと、現在時刻、稼働日数、CPU Load 値、HDD 使用量、メモリ使用量を画面に表示。
f:id:OBONO:20190703224546j:plain
約 30 秒で自動的に画面表示が消える。よしよし、想定通りに動作しているぞ。

大した事をやったわけではないのだが、これはこれで妙な満足感を得られたのであった。めでたしめでたし。

参考記事

Tweet on 2019-07-04

23:32:11 任天堂、「ファイアーエムブレム 風花雪月」の紹介映像を公開! 本日よりあらかじめダウンロードも開始 - GAME Watch URL @game_watchさんから あー、今月発売なのか。イカン、ゲームが積み上がり始めそうな感じだ。
23:52:55 ソースコードはここに置いた。GPIO17にタクトスイッチを付ける前提。引数にコマンド文字列を渡して実行すると、スイッチを押すたびにコマンドが実行され、その結果が画面に出力される。 URL

Tweet on 2019-07-03

23:59:17 はてなブログに投稿しました #はてなブログ OLED - OBONO’s Diary URL
09:55:19 (リツイート)
23:01:44 タクトスイッチ押したら、約30秒間OLEDにラズパイ2の稼働状況を表示するようにできた。 URL
23:24:27 初めて python でプログラム書いたけど、中カッコを使わないのがちょっと気持ち悪い…。まぁ、慣れの問題なんだろうけど。

Tweet on 2019-07-02

00:05:29 @mikiconfig あれ?こんなシーンありましたっけ?ごめんなさい、よく覚えてないです…
10:15:54 @puni2marimo 遅レス失礼。この記事で紹介されているゲーム機についていたものです。素性が怪しいので、ゲーム機から調べるのはちょっと厳しいかも… URL
22:18:02 買うか悩んだが、結局購入。ネット通販では売り切れ始めていたので、地元の書店で注文。 URL

Tweet on 2019-07-01

06:51:36 あまりに疲れていたせいか、昨日は20時半に寝て、そのまま今まで眠ってしまったようだ。
11:40:08 鉄道博物館なう URL
13:07:59 なかなか見ごたえのあるところだな… URL
21:22:03 帰宅。夜の首都高速、加えて雨の中の運転は怖かったよ…

OLED

昨年の秋に 128×64 OLED である SSD1306 を購入したわけだが、実はこの時2つ購入してたんだよね。
この OLED をラズパイ2に繋ぎたいとずっと思っていたのだが、昨年5月に作った時報の仕組みを維持しつつ、OLED を繋ぐ必要がある。そんな事情もあって、なかなか手を出せずにいたんだけど、意を決して回路を組みなおしてみた。
f:id:OBONO:20190704230937p:plain
こんな感じ(この図は表面から見た図)でユニバーサル基板上に配線し、メロディ IC はピンヘッダを噛ませて直接はんだ付け。OLED はピンソケットを付けて着脱可能にし、タクトスイッチをピンソケットの上に糊付けする。スピーカーも着脱可能にしておいた。
f:id:OBONO:20190702235229j:plain
とりあえず、画面に何かしらの文字列を表示させることはサクッとできたので、後は何を出力するか。それについてはまた後日。

Tweet on 2019-06-29

21:03:47 シンカリオン最終回ですか。来週からの息子のシンカリオンロスが心配だ。
21:07:29 いつの間にやら Arduboy コミュニティ内で伝説になっていたようだ。 URL
23:55:43 ラズパイ2にOLED(SSD1306)を繋いでみた。イイ感じ。 URL

Tweet on 2019-06-28

08:37:06 Portal に熱中しすぎたせいか、会社でポータルガンを撃ちまくってヒャッハーしてる夢を見た。
21:57:17 自作 Arduboy の生贄にしたゲーム機の液晶モジュール。BLD-QTB1D8039 という型番なのだが、ネットを探してもデータシートが見つけられない。再利用とか考えないで、さっさと捨てようかな。 URL