※この記事は書きかけです。随時更新していきます。
作ったもの
研究室の在室ボードの代わりに、こんなものを作ってみました。
表示は、5分ごとに切り替わります。
電子ペーパー使って在室ボード作ってみた#raspberrypi #EPAPER #電子ペーパー #電子工作 pic.twitter.com/8mAjueBAwI
— やえぴー (@YaezakuraP) February 10, 2024
開発背景
以前より、在室ボードはマグネットを使って手動で在室かどうかを表す方式をとっていました。下図のような表を印刷してドアに貼り付け、その上にマグネットを置くことで自分の在室状況を示す仕組みです。手軽に在室状況を把握できるので、多くの研究室で一般的かと思います。
しかし、このシステムには欠点が存在します。それは、手動であることです。手動で変更する必要があるゆえ、帰宅したにもかかわらず、在室になっていたり、逆に帰宅しているのに在室になっていたりと、うっかりが発生してしまうことがありました。
そこで、自動で在室と不在が切り替わるような在室ボードの作成に至りました。
仕組み
仕組みは至って単純で、Pingによる死活監視を使って在室状況を判断しています。
研究室内には、学生が自由に使えるWi-Fi環境が整っており、そのWi-Fiに学生のスマートフォンが接続されると、Ping
が通るようになります。
この仕組みを使って、定期的にRaspberry Pi
から予め指定されたIPアドレス
に対してPing
を送信、Ping
が返ってきたら、在室
、そうでなければ不在
と判断するという仕掛けになっています。
外出と不在
また、Pingが通らない(不在と判断)
とき、すぐには不在
とは表示されず、外出
になるような工夫をしています。研究室の学生は、講義や図書館、お手洗いなどで一時的に不在になることもあるわけですから、すぐに帰宅になってしまうと困ります。
そこで、在室確認時に直近の在室状況をSQLite
を使って記録するとともに、書き換えの際は、過去のデータを参照して、不在の時間が一定以上の場合は、帰宅
に変更するようにしています。
書き込みをしない判断
これらの仕組みを備えたコードを定期実行するだけでも、在室ボードとしては十分な役割を果たします
。しかしこのままでは、在室状況が前回の実行時と在室状況の変化がなく、書き換えの必要がなくても書き換え処理が行われてしまいます。
今回のシステムでは、在室状況の表示に電子ペーパーを使っているので、(消費電力や描画速度の観点からも)極力表示の書き換えは避けたいところです。
そこで、書き換えの必要があるときだけ、書き換えを行い、そうでなければ、書き換えを行わなない、という処理を加えてあります。
電子ペーパーと液晶ディスプレイの比較
電子ペーパーと液晶ディスプレイの違いを以下にまとめました。
電子ペーパー | 液晶ディスプレイ | |
---|---|---|
表示速度 | 遅い(最速でも1fps以下) | 速い(60fps) |
表示色 | 3色1 | $256^{3}$色以上 |
消費電力 | 小さい(書き換え時に消費) | 大きい(常に消費) |
電子ペーパーは液晶ディスプレイに比べ、表示色、表示速度の面で大きく引けをとっています。しかし、画面の書き換え時しか、電力を消費しないという面は大変魅力的です。
今回は、設置場所の都合上、コンセントから直接電源を取れる環境になく、バッテリーを電源に使用することになります。このような状況下では、消費電力が少ない電子ペーパーの方が使い勝手が良いので、こちらを使用することにしました。
また、電子ペーパーは「画面が書き換わる感じがしない(印刷物みたい)」な見た目が印象的です。
コード
現在準備中
セットアップ
コードをダウンロードした後は、以下のセットアップが必要です。
① 名前・Ping送信先の書き換え
在室ボードに表示する名前、およびPing
の送信先を設定する必要があります。
② 参照パスの設定
後述する、cron
を用いた自動実行を行う関係で、実行に必要なファイルはすべてフルパスで記載する必要があります。そのため、参照パスをフルパスに変更する必要があります。
既知の不具合
以下のような不具合を確認しています。動作に致命的な影響がないため、放置しています(治す気力がないだけ)
①. iOS環境で在室
のはずなのに外出
・不在
になってしまう。
iPhone
を持っていないので、詳細は不明ですが、在室している(Wi-Fiに接続されている)のにも関わらず、外出
または、不在
になってしまうことがあるようです。
これは、iOSの仕様(?)で、スリープ中は一定時間過ぎるとPing
を返さなくなってしまうことが原因のようです。
-
今回用いた電子ペーパーの例 ↩