目次
- プロトタイプ編(本記事)
- ハードウェア編
- 3Dモデル編
- ファームウェア編
- Webサービス編
- Slackボット編
1. 背景と概要(各記事共通)
筆者がお伺いしている企業は成長まっただ中の企業で、どんどんメンバーが増えていっています。
しかし、現在のビルには1フロアにつきトイレが1つがなく、トイレに行っても「使用中」の事が増えてきました。特に、昼食後のトイレの稼働率の高さときたら!
そこで、よくある感じの「トイレセンサ」を作ってみました。このシステムは、以下の4つの要素で構成されています。
- トイレに設置し、トイレの使用状況をネットワークに送信する「トイレセンサ」
- トイレに向かう通路の途中に設置し、LEDでトイレの使用状況を知らせる「トイレインジケータ」
- Webブラウザからトイレの使用状況を知ることができる「Webアプリ」
- 「トイレセンサ」の情報を取得して判断し、トイレインジケータ、Webアプリに配信する「コントローラ」
2. プロトタイピング
まずは簡単にプロトタイプを作成し、実現可能性の検討を行いました。結論から言えば、問題なくトイレの使用状況を検出できました。
今回、「トイレが使用中である」ことの検出には、光センサを用いました。使用者によってトイレの照明が灯されていれば「使用中」と判断します。
ちなみに、完成版では焦電センサ(人感センサ)も併用しています。
また、状態表示器としてマイコン内蔵フルカラーLEDを用いました。
2.1. 回路図
とても雑ですが、プロトタイプの回路図は以下の通りです。
回路図では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. 仮組み
ブレッドボード上に仮組みを行い、動作確認を行いました。
また、とても雑な感じではありますがトイレに実際に設置し、機能することを確認しました。
ちなみに完成品はこんな感じです。
3. 検出から表示への流れ
使用状況の検出から、トイレインジケータへの表示の流れは、ざっと以下の通りです。
- トイレセンサは、光センサの値(電圧値)をESP32に内蔵されているADC(アナログ/デジタルコンバータ)で読み出します。
- トイレセンサは、光センサの値を定期的、または一定以上変化時にMQTTトピックに送信します。
- コントローラは、MQTTトピックの値を受信します。
- コントローラは、光センサの値が閾値以上であれば「使用中」(照明が点灯中)、そうでなければ「空き」(照明が消灯中)と判断します。
- コントローラは、判断した結果をMQTTトピックに送信します。
- トイレセンサは、MQTTトピックから受信した判断結果を前面のLEDに表示します。(使用中:赤、空き:緑)
- トイレインジケータは、MQTTトピックから受信した判断結果を前面のLEDに表示します。(使用中:赤、空き:緑)
4. ソースコード
ソースコードはnayutaya/iotリポジトリにてMITライセンスで公開しています。
トイレセンサのファームウェアはproject/restroom_sensor/firmwareにあります。
5. 終わりに
今後、各構成要素について、少しずつ書き下していきます。