Dave from DesignSpark
How do you feel about this article? Help us to provide better content for you.
Dave from DesignSpark
Thank you! Your feedback has been received.
Dave from DesignSpark
There was a problem submitting your feedback, please try again later.
Dave from DesignSpark
What do you think of this article?
背景・動機
- 目覚まし時計を用いた朝の起床は、高い確率で失敗する。なぜなら、目覚ましが鳴ってもスヌーズボタンを押して、睡眠時間を簡単に延長できてしまうからである。
- 太陽光を浴びると目覚めがよくなり、注意力が高まるという研究がある[1]。ユーザにカーテンを開けさせ、太陽の光を浴びさせることができれば、ベッドへ戻る意志を抑えられるはずである。そこで、カーテンが閉じ状態の際にアラーム音が鳴り、開き状態の際に停止する目覚まし時計を提案する。
設計
図1 システム全体の設計と、アラームが作動する例
セットアップ
本システムは、図1のように以下の3つのデバイスから構成される。
- Raspberry Pi A: 目覚まし時計本体。
- Raspberry Pi B: 外光検知用。
- Android端末: 専用アプリを搭載。
なお、Raspi A, Bには、区別のため異なる色のLEDを搭載している。
セットアップは、以下の手順で行う。
- 朝方に起きて、Raspberry Pi Aをベッドの近くに、Raspberry Pi Bをカーテンの後ろに置く。これにより、Aが部屋の明るさを、Bが外の明るさを検知できるようになる。
- Androidアプリを用いて、光の差のしきい値thを設定する。
このしきい値はアラームの感度を決定しており、屋内と屋外の光の差がthを超えるとアラームが起動する仕掛けになっている。- まず、カーテンを閉めてアラームが鳴るのを確認する。音が鳴らない場合はしきい値thを下げる。
- 次に、カーテンを開けてアラームが止まるのを確認する。音が止まらない場合は、しきい値を上げる。
- 起床時刻を設定する。
この時刻が決まったら設定が完了する。
使用方法
ユーザーが設定した起床時刻になると、寝室内からアラームが鳴る。アラームは、ユーザーがベッドから出てカーテンを開けるまで鳴り続ける。カーテンを開けると、光が室内に差し込んで、アラームが止まる。
カーテンを閉めてベッドに戻りたくなるかもしれないが、再びカーテンを閉めればアラームが鳴る。
実装
本システムは、サーバー、クライアント、Androidアプリの3要素から構成される。
図2: アラーム本体兼サーバ(左)と窓の光を計測するクライアント(右)
サーバ
サーバは、Raspberry Pi本体、Arduino、スピーカから構成されている(図2)。
- Arduino:フォトレジスタ(cdsセンサ)に基づいて光量を測る回路を持つ。回路のフォトレジスターは、光が当たると抵抗値が変動するため、変動をもとに光の強さを推定できる。光量は、USB経由でサーバプロセスに送る。
- スピーカー:アラーム音を再生するために使う。
- サーバプロセス:Python Flaskでホストする。Androidアプリ及びクライアントとHTTPで通信し、GETメソッドのクエリパラメータを取得する。
- クライアントRasPiから、変数lightOut(外の光の強さ)を受け取る。
- Androidアプリから、変数th(しきい値)とalarm(アラーム時間)を受け取る。
サーバーは無期限に動作し、自身のフォトレジスターの光量とクライアント側の光量とを比較する。光量の差を計算し、ユーザー定義の閾値内(外)であればアラームを停止(起動)する。または、現在時刻が起床時間のとき、アラームを一定時間鳴らす。(図3)
図3 アラームの作動ロジック
クライアント
- サーバーと同様の構成である(図2)。Raspberry PiにArduino(とフォトレジスタ)を接続している。
- クライアントプロセス:Pythonスクリプトを継続的に実行し、USBでArduino(の光計測回路)から光量を受け取り、定期的にHTTPでサーバーに送る。
Androidアプリ
- HTTPのGETメソッドで以下のクエリパラメータをサーバに送る。
- th:アラームの起動に係る閾値
- alarm:起床時刻
まとめ
日の出目覚まし時計は、寝坊を防ぐためのIoTデバイスである。強制的にカーテンを開けさせ、太陽の光を浴びさせることで、スヌーズボタンによる二度寝を防止し、また朝の目覚めを改善する。正しく設定すれば、このシステムは正確に機能し、カーテンを開けると非常に素早く反応する。