Upgrade to Pro — share decks privately, control downloads, hide ads and more …

IoT実践! 行先予定表を電子ペーパーで作る

IoT実践! 行先予定表を電子ペーパーで作る

Avatar for Ryosuke Uchiyama

Ryosuke Uchiyama

December 11, 2022
Tweet

More Decks by Ryosuke Uchiyama

Other Decks in Technology

Transcript

  1. 要件定義 Ph.1 • 行先表示端末 • Webアプリのダッシュボード Ph.2 • ダッシュボードから行先表示板を確認 •

    ユーザー管理 Ph.3 • マルチデバイス対応(各島に1端末) • ログ強化など
  2. 行先表示端末 名前 行先 帰社 高海 桜内 テレワーク 黒澤 渡辺 4/7~9

    東京 4/10 津島 国木田 テレワーク 小原 • こんな感じで表示制御できるやつ • 名前、行先、帰社、出勤有無を変更可能 • 出勤有無は反転色などで表現 • RasPi+モノクロ液晶or電子ペーパー • データはRasPi上にて永続化 • ダッシュボードから更新、参照するため、 WebAPIを用意して待ち受ける
  3. ダッシュボード • 行先表示端末を変更するWebアプリ • それぞれ任意の文字列を入力可能 • 出勤有無はトグル的なUIで変更 • 更新されたら端末に即時反映 •

    Ph.1ではとりあえず誰が誰の情報を書き換えてもよいことにする • Ph.2でユーザー管理:権限持ったユーザー?だけが他人の行先表示板を変更可能 • Ph.3でマルチデバイス対応:複数の島の端末を1つのダッシュボードで閲覧、変更可能
  4. 使ったもの Raspberry Pi 4 Model B ARMプロセッサを搭載したシングルボードコンピュータ。 購入価格:7,700円 7.5inch E-Ink

    display HAT for Raspberry Pi SPIインターフェイスでRasPiと接続できる電子ペーパーディスプレイ。 購入価格:9,197円
  5. プロパティ設計 - テーブル 高坂 高海 絢瀬 桜内 南 松浦 園田

    黒澤(ダ) 星空 渡辺 西木野 津島 東條 国木田 小泉 小原 矢澤 黒澤(ル) 幅マージン 高さマージン フォント、サイズ 行数 列数(この場合は2) e-Paperの高さ e-Paperの幅
  6. インターフェイス設計 名前 説明 引数 戻り値 get_all() テーブル情報を全て取得 なし テーブル: List[List[Dict[str,

    Any]]] set_name() 指定セルの名前を設定 X位置: int, Y位置: int, 設定文字列: str なし set_status() 指定セルの行先を設定 X位置: int, Y位置: int, 設定文字列: str なし set_present() 指定セルの在席状態を設定 X位置: int, Y位置: int, 設定状態: bool なし get_name() 指定セルの名前を取得 X位置: int, Y位置: int 名前: str get_status() 指定セルの行先を取得 X位置: int, Y位置: int 行先: str get_present() 指定セルの在席状態を取得 X位置: int, Y位置: int 在席状態: bool
  7. Web API設計 パス メソッド リクエストパラメータ レスポンス / GET なし テーブル:

    List[List[Dict[str, Any]]] /{row}/{column} GET なし セルの情報: Dict[str, Any] /{row}/{rolumn} POST { "name": Union[str, None], "status": Union[str, None], "present": Union[bool, None] } { "status": "update success." }
  8. 今後の課題など • とりあえず Issues に起票した機能追加、不具合改修 • 帰社時刻を入力する欄を忘れてた • ダッシュボードをもうちょっとリッチに •

    複数デバイス対応とかデプロイ先真面目に考えるとか • 筐体が欲しい • 数十分放置で画面が少しずつ薄くなっていく希ガス(リフレッシュ入れたら改善するのか) • ぶっちゃけ実用に足るかどうかは分からない • 実用するなら数十センチ四方の電子ペーパーが必要。存在するのか。コスパ悪そう