Posted at

トイレセンサを作ってみた: プロトタイプ編


目次


  • プロトタイプ編(本記事)

  • ハードウェア編

  • 3Dモデル編

  • ファームウェア編

  • Webサービス編

  • Slackボット編


1. 背景と概要(各記事共通)

筆者がお伺いしている企業は成長まっただ中の企業で、どんどんメンバーが増えていっています。

しかし、現在のビルには1フロアにつきトイレが1つがなく、トイレに行っても「使用中」の事が増えてきました。特に、昼食後のトイレの稼働率の高さときたら!

そこで、よくある感じの「トイレセンサ」を作ってみました。このシステムは、以下の4つの要素で構成されています。


  • トイレに設置し、トイレの使用状況をネットワークに送信する「トイレセンサ」

  • トイレに向かう通路の途中に設置し、LEDでトイレの使用状況を知らせる「トイレインジケータ」

  • Webブラウザからトイレの使用状況を知ることができる「Webアプリ」

  • 「トイレセンサ」の情報を取得して判断し、トイレインジケータ、Webアプリに配信する「コントローラ」


2. プロトタイピング

まずは簡単にプロトタイプを作成し、実現可能性の検討を行いました。結論から言えば、問題なくトイレの使用状況を検出できました。

今回、「トイレが使用中である」ことの検出には、光センサを用いました。使用者によってトイレの照明が灯されていれば「使用中」と判断します。

ちなみに、完成版では焦電センサ(人感センサ)も併用しています。

また、状態表示器としてマイコン内蔵フルカラーLEDを用いました。


2.1. 回路図

とても雑ですが、プロトタイプの回路図は以下の通りです。

DSC_6018.jpg

回路図ではIO24、IO25を使用していますが、あとにIO33、IO13に変更しています。


2.2. 部品リスト

使用した部品のリストは、以下の通りです。

No
種別
品番など
入手元
参考価格

1
ESP32開発ボード
ESP32 DevKitC
秋月電子
1,480円

2
リニア光センサ
LLS05-A
秋月電子
150円

3
マイコン内蔵フルカラーLED
NexPixel系
秋月電子
70円

4
抵抗
10kΩ
-
-


2.3. 仮組み

ブレッドボード上に仮組みを行い、動作確認を行いました。

DSC_6008.jpg

また、とても雑な感じではありますがトイレに実際に設置し、機能することを確認しました。

DSC_6014.jpg

ちなみに完成品はこんな感じです。

DSC_6134.jpg


3. 検出から表示への流れ

使用状況の検出から、トイレインジケータへの表示の流れは、ざっと以下の通りです。


  1. トイレセンサは、光センサの値(電圧値)をESP32に内蔵されているADC(アナログ/デジタルコンバータ)で読み出します。

  2. トイレセンサは、光センサの値を定期的、または一定以上変化時にMQTTトピックに送信します。

  3. コントローラは、MQTTトピックの値を受信します。

  4. コントローラは、光センサの値が閾値以上であれば「使用中」(照明が点灯中)、そうでなければ「空き」(照明が消灯中)と判断します。

  5. コントローラは、判断した結果をMQTTトピックに送信します。

  6. トイレセンサは、MQTTトピックから受信した判断結果を前面のLEDに表示します。(使用中:赤、空き:緑)

  7. トイレインジケータは、MQTTトピックから受信した判断結果を前面のLEDに表示します。(使用中:赤、空き:緑)


4. ソースコード

ソースコードはnayutaya/iotリポジトリにてMITライセンスで公開しています。

トイレセンサのファームウェアはproject/restroom_sensor/firmwareにあります。


5. 終わりに

今後、各構成要素について、少しずつ書き下していきます。