見出し画像

こどものバス閉じ込め対策デバイスを作ってみました!!

こんにちは、アバナード関西オフィスの大北です。

皆さんの記憶にも新しいと思いますが、今年(2022年)に2件の園バスで置き去りが発生し、園児が亡くなるというあってはならない事故が起こりました。
こういった事故が発生しないように様々な策を講じてはいると思いますが、残念ながら従来の人の作業に頼った対応だと完全には防げません。
(当たり前の話しですが、人の作業ミスを完全になくすことはできません)

そこで今回、IoTを活用してバスに閉じ込められた人を検知し、通知する仕組みを作ることにしました。(紹介する仕組みはバスに限らず子供の帰宅を検知する等、様々な場面で活用できます)

やりたいことのイメージ

このブログでは、使用したIoTデバイス/クラウドサービスとシステム構成等を皆さんにご紹介します。

システム要件と実現方式

<実現したいこと>
人感センサーの検知をクラウドに連携し、検知されたことの通知、および検知されたバス/日時を参照できるようにしたい。

<前提条件>

  • 日中帯の閉じ込めを対象とするため、登園(AM9時想定)から降園(PM3時想定)までの6時間をセンサーの稼働時間とする。

  • バスのエンジンが切れてから外部バッテリーから電源が供給される。

<実現方式>
上記の要件と前提を踏まえて、人感センサーの検知情報をRaspberrypi経由でIoTHubに連携し、クラウド上にデータを貯め込む方式としました。

事前に用意するもの

今回、使用したデバイス等はこちらになります。
(Wifiが繋がる環境下であれば、4GPi、SIMカード、ACアダプタを省略いただけます)

  • Raspberry pi 本体(検証した端末はRaspberrypi4)

  • 人感センサー(3個セットで600円)

  • 4GPi(公式サイトで25,000円)

  • 通常サイズのSIMカード(今回はSORACOMのSIMを使用)

  • ACアダプタ(12V 2.0A)

システムの全体構成図(ざっくり版)

全体構成としてはこんな感じです。

全体構成図

IoTEdge側の説明

まずは、IoTEdge側のについて説明したいと思います。
今回、園バスに設置するにあたり、登園から降園までの間のみ動かしたいという要件があるので、その対応としてバッテリーとRaspberrypiの間にリレー装置を設けています。
また、Raspberrypiには、Wifiのない環境でインターネット通信するために4GPiを取り付けております。
※4GPiの詳細はこちらのブログを参照ください
Raspberry piでモバイル通信してみた!!|AvaKansai|note

IoTEdge側の配線はシンプルで、こんな感じです。

配線図


実物の写真

次に実装したプログラムを紹介します。
①人感センサー検知/送信
センサー情報の検知し、データをjson形式でIoTHubに送信する(Python)

②ネットワーク状況確認
4GPiが正常に起動しているかどうか確認し、起動していなければ自動再起動する(Shell)

③自動シャットダウン
6時間経過したらシャットダウンする(Shell)

④正常に動作しているかの確認
正常に起動していることを確認するために、IoTHubにデータを送信する(Python)

⑤各プログラムの自動実行
①~④のプログラムを電源起動後に自動実行する(systemctl)

「①人感センサー検知/送信」の人感センサーを取得する部分とIoTHubに送信する部分を一部掲載しますので、参考にしていただければと思います。

人感センサーを取得する部分
IoTHubに送信する部分

Azureサービス側の説明

IoTHubをざっくり説明するとIoTデバイスからのデータを受け取るサービスです。残念ながらIoTHubから直接データベースにデータを格納できないので、StreamAnalyticsを中継する構成にしています。

Azureサービスのざっくりとした設定の流れは以下の通りです。StreamAnalyticsに関しては私も初めて触りましたが、特に躓くポイントはありませんでした。

  • IoTHubの作成、デバイスの登録

  • データベースの作成(今回はサーバレスのSQLDatabaseを使用)

  • StreamAnalyticsの作成

  • StreamAnalyticsの入力(IoTHub)、出力(SQLDatabase)、クエリの登録

参考までにStreamAnalyticsのクエリ部分のキャプチャを掲載しておきます。

StreamAnalyticsのクエリ部分のキャプチャ

PowerPlatform側の説明

登録したデータを参照/通知できるようにPowerAppsやPowerAutomateを使用しています。PowerAutomateでの通知は常にデータベースへのアクセスが発生し、サーバレスの意味がなくなってしまうため、特定の時間帯のみフローを有効にするなどの考慮が必要です。
※私自身、PowerAutomateの設定によって想定よりも多くコストがかかってしました。。。

参考までにPowerAppsで作って画面イメージを載せておきます。

PowerAppsのイメージ

最後に

概ね構築はできているため、先日、大阪府の河南町役場に行って、実際の送迎バスの電圧確認や設置場所の確認、センサー感度の確認を行いました。その時の写真も掲載します。
思っていたよりもセンサーの感度が良く一番後ろの座席でも検知することができたので、一安心しました(^^)
(お忙しい中、バスの移動等ご対応くださった河南町職員の皆様、ご協力いただき誠にありがとうございました)

バス内で検証した時の写真①
バス内で検証した時の写真②

最後まで読んでいただき、ありがとうございました!

アバナード関西 大北 真之
naoyuki.ohkita@avanade.com

この記事が気に入ったらサポートをしてみませんか?