1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【設計編】M5StickCで作るスマートバンド的なモノ

Last updated at Posted at 2022-04-12

目的

寝落ちや在宅ワークによる運動不足など不健康な生活を改善できるスマートバンド的なモノを作りたい!
今回は概要レベルの設計を行う。1

環境

構成イメージ

構成イメージ.png

作業メモ

どんな機能を作るのか?

加速度/ジャイロ/心拍数をM5StickCで取得して、そこから寝落ちや運動不足を検知→ユーザーに警告、といった動きをさせる予定

設計

参考サイト
https://plantuml.com/ja/

  • ユースケース図(ユースケース記述)/アクティビティ図にて概要レベルの設計を行う
  • ユースケース図/アクティビティ図は 参考サイト のPlantUMLにて作成

ユースケース図

ユースケース図.png

  • PlantUMLのコード
@startuml
left to right direction

actor "User" as Men1
actor "raspberry pi" as Men2

rectangle M5StickC {
  usecase "データを取得する" as Func1
  usecase "寝落ちを検知する" as Func2
  usecase "運動不足を検知する" as Func3
  usecase "警告音を出力する" as Func4
}

Men1 -- Func1
Func1 -- Men2
Men1 -- Func2
Men1 -- Func3
Func2 --> Func4:include
Func3 --> Func4:include
@enduml

ユースケース記述

ユースケース名 データを取得する
目的 加速度/ジャイロ/心拍数の値を定期的に取得し、取得したデータを外部機器へ送信する
アクター User/raspberry pi
事前条件 外部機器とネットワーク接続済み
事後条件 -
基本系列 1.User(アクター)がこのユースケースを起動する
2.加速度/ジャイロ/心拍数の値を定期的(数秒程度の周期)に取得し、取得したデータをRAMへ保持
3.データが一定容量になるまで2を繰り返す
4.一定容量保持したデータを事前に定めたフォーマットに則り、raspberry pi(アクター)へ送信する
代替系列 ・基本系列4でraspberry pi(アクター)への送信に失敗する場合、ネットワーク再接続を行う
拡張 -
備考 ・基本系列4の"フォーマット"は {日時} `{加速度},{ジャイロ},{心拍数}/{加速度},{ジャイロ},{心拍数}/・・・
シナリオ 1.UserはM5StickC(システム)をデータ取得モードに設定する
2-1.M5StickCを身に着けた状態で1.5時間程度日常生活を行った
2-2.M5StickCを身に着けた状態で1.5時間程度睡眠した
3.raspberry piにてデータがフォーマット通りに送信されている事を確認できた
ユースケース名 寝落ちを検知する
目的 加速度/ジャイロ/心拍数の値を定期的に取得し、取得値が定めた閾値を超える場合、寝落ちと判断し警告をする
アクター User
事前条件 閾値が設定されている
事後条件 寝落ちを通知する警告音が出力されている
基本系列 1.User(アクター)がこのユースケースを起動する
2.加速度/ジャイロ/心拍数の値を定期的(数秒程度の周期)に取得し、閾値と比較する
3-1.一定時間連続で閾値を超えた場合、ユースケース「警告音を出力する」を呼び出し、Userへ寝落ちを通知する
3-2.上記以外の場合、2を繰り返す
代替系列 -
拡張 -
備考 -
シナリオ 1.UserはM5StickC(システム)を寝落ち検知モードに設定する
2.M5StickCを身に着けた状態で日常生活を行った
3-1.10分連続でソファーで横になって眠ってしまった。M5StickC(システム)が寝落ちを判断し警告音が鳴ることで目が覚めた
3-2.5分×2回でソファーで横になって眠ってしまったが、10分連続ではないため、M5StickC(システム)が寝落ちと判断しなかった
3-3.ソファーで横になりながら長時間ネットサーフィンをしていたが、眠っているわけではないため、M5StickC(システム)が寝落ちと判断しなかった。
ユースケース名 運動不足を検知する
目的 加速度/ジャイロ/心拍数の値を定期的に取得し、取得値が定めた閾値を超える場合、運動不足と判断し警告する(運動を促す)
アクター User
事前条件 閾値が設定されている
事後条件 運動不足を通知する警告音が出力されている
基本系列 1.User(アクター)がこのユースケースを起動する
2.User(アクター)が運動不足を検知する時間を設定する
3.加速度/ジャイロ/心拍数の値を定期的(数秒程度の周期)に取得し、閾値と比較する
4-1.一定時間連続で閾値を超えた場合、ユースケース「警告音を出力する」を呼び出し、Userへ寝落ちを通知する
4-2.上記以外の場合、3を繰り返す
代替系列 -
拡張 -
備考 テレワークなどで運動不足になることを抑制するために検討した機能
シナリオ 1.UserはM5StickC(システム)を運動不足検知モードに設定する
2.運動不足を検知する時間を設定した
3.M5StickCを身に着けた状態で日常生活を行った
4-1.設定時間以上にほとんど体を動かさず生活を送った。M5StickC(システム)は運動不足と判断し警告音が鳴ることで運動を促された
4-2.設定時間以内に適度に体を動かしつつ生活を送った。M5StickC(システム)は運動不足と判断せず警告音が鳴ることはなかった
ユースケース名 警告音を出力する
目的 アクターへ警告を出すため、気づくことができるような警告音を出力する
アクター User
事前条件 警告音は出力されていない(すでに警告音が出力されている場合は出力しないようにする)
事後条件 警告音が出力されている
基本系列 ユースケース「寝落ちを通知する」、ユースケース「運動不足を通知する」を参照
代替系列 ユースケースが起動されたとき、警告音が出力されている場合は追加で警告音を出力しない
拡張 -
備考 -
シナリオ ユースケース「寝落ちを通知する」、ユースケース「運動不足を通知する」を参照

アクティビティ図

アクティビティ図.png

  • PlantUMLのコード
@startuml
|User|
start
:モードを選択する;

|M5StickC|
switch (モード)
case (それ以外のモード(例外))
  stop

case (寝落ち検知モード)
  repeat
    :データを取得する;
    floating note left: モード変化があるまで\n繰り返し
  repeat while(寝落ち検知の閾値) is (超えない) not (超える)
  :警告音を出力する;

case (運動不足検知モード)
  repeat
    :データを取得する;
  repeat while(運動不足検知の閾値) is (超えない) not (超える)
  :警告音を出力する;

case (データ取得モード)
  while ()
    :データを取得する;
    :データを送信する;
    |raspberry pi|
    :データを受信する;
  endwhile
|M5StickC|
endswitch

stop
@enduml

まとめ

寝落ちや在宅ワークによる運動不足など不健康な生活を改善できるスマートバンド的なモノを作りたい!
今回は概要レベルだが設計を行う。

目標達成!
概要レベルでも設計することで、検討漏れを洗い出すことができたかなと思う。
次回から実装を行っていく。

  1. Qiitaなどの投稿でソースコードは書かれているが仕様は書かれていない記事も多く、なぜこのコードになったのか分からないと感じるケースがあったので、残してみようと思った。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?