みなさん、こんにちは。
IoTシステムの企画や開発に関わっていると、ついつい最初にやってしまいがちなことがあります。
それは……、「どのセンサーを使おうかな?」から考え始めてしまうことです。
実は、IoTにおいて一番大切なのは「どのセンサーを選ぶか」ではありません。 本来、設計は以下の順番で進めるべきなんです。
- 何をしたいのか?(目的)
- それはどんな「状態」なのか?(定義)
- その状態を判別するには、何を測ればいいのか?(手段)
今回は「外れてはいけないホースが外れたことを検知したい」というシンプルなテーマを例に、失敗しないセンサー選定の思考プロセスを解説していきます。
「データありき」のIoTがうまくいかない理由
少し前まで、IoTの世界ではこんな言葉がよく聞かれました。
「とりあえずデータを集めて、あとでビッグデータ解析をすれば何か分かるはずだ!」
でも、結果はどうだったでしょうか。多くのプロジェクトが、残念ながら実用化(PoC)の壁を越えられずに終わってしまいました。
- 目的が曖昧
- 使い道が決まっていない
- 解析結果をどう現場に活かすか分からない
これらは技術の問題ではなく、「設計の順番」の問題です。プロダクトアウト(技術起点)でIoTを成功させるのは、実はとっても難しいことなんです。
今回のテーマ – 「ホースが抜けたら教えてほしい」
では、具体的な例で考えてみましょう。
- やりたいこと(目的)
ホースが抜けていないか監視し、抜けたらすぐに通知してほしい。人間が24時間監視し続けることは事実上不可能なため、まさにIoT向きの目的です。 - 状態の定義
正常: ホースがしっかり接続されている
異常: ホースが抜けている
ここまで整理すると、やるべきことが見えてきます。「ホースが抜けた状態」を、いかに確実かつ簡単に検知するか、が勝負です。
何を測れば「ホースが抜けた」と分かるのか?
次に、ホースが抜けた瞬間に起きる「物理的な変化」を想像してみます。
- 圧力が変わる?
- 流量が変わる?
- 電気的な状態が変わる?
ここで大切なポイントがあります。それは、「精密な測定値はいらない」ということです。 必要なのは、抜けたか・抜けていないか、つまり 「オンかオフか」 だけ。
そこで、ホースが抜けた時に「電流(信号)が流れる/流れない」という状態を作れないか?という問いを立てます。
問いを解決するセンサー選定の結果 → ホールセンサー
「磁気の有無」でスイッチのように反応してくれるのが、ホールセンサーです。モーターの回転数の計測や、ドアの開閉検知などによく使われる、とてもポピュラーで安定したセンサーです。
ホースが抜ける、つまり脱落状態を測定するセンサーとして、これ以上適切なセンサーはありません。
仕組みはこうです。
- ホース側に磁石を取り付ける
- 接続側にホールセンサーを設置する
- ホースが抜けると、磁石が遠ざかり「磁気」が消える
これなら、複雑なデータ解析をしなくても「ホース脱落」を確実にキャッチできますよね。この時点で、センサーは「目的から自然に導き出された答え」になります。

M5StickCで実際に動かしてみる
では実際に実装してみましょう。今回は、手軽にプロトタイプが作れる「M5Stackホールセンサーユニット」と「M5StickC」を使いました。
実際のプロジェクトであれば、ディスプレイは必要ありませんの、M5StickCよりも小型省電力なM5 ATOMS3 Lite あたりが最適かと思います。
公式のサンプルコードをベースに、M5StickCで動くように少しだけ調整します。
主な修正ポイント
- ライブラリ
M5Stack.hからM5StickC.hに変更 - ピン番号
ADC対応で扱いやすいGPIO 33を使用 - 表示
小さな画面に合わせてレイアウトを微調整
サンプルコード
#include <M5StickC.h>
#define HALL 33
void setup() {
M5.begin(true, false, true);
Serial.begin(115200);
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextColor(WHITE);
pinMode(HALL, INPUT); // プルアップ・プルダウンは内部で処理されているため不要
}
void loop() {
// ホールセンサーの状態を読み取る(0 or 1)
bool status = digitalRead(HALL);
M5.Lcd.setTextSize(2);
M5.Lcd.setTextColor(WHITE, BLACK);
M5.Lcd.setCursor(10, 30);
M5.Lcd.printf("Hall Status: %d", status);
delay(100);
}
驚くほど短いコードですが、これで「磁石があるかないか」をバッチリ判定できます。あとはこの status の値を使って、「ブザーを鳴らす」「LINEで通知する」といった処理を付け加えるだけです!
まとめ – センサーは「手段」であって「出発点」ではない
今回お伝えしたかったのは、ホールセンサーの使い方そのものではありません。
- 何をしたいのか
- それはどんな状態なのか
- その状態を知るには何を測ればよいのか
この順番で考えれば、使うべき技術やセンサーは自ずと決まってくる、ということです。
IoTは単なる「データを集める技術」ではなく、「現実世界の状態を定義し、分解する技術」だと私は考えています。
世の中には使われないデータが確かに蓄積されています。しかし、それをうまく活用するのは容易ではありません。目的と合致するデータなどそうそうないからです。
「データがあるから何かする」のではなく、「やりたいことがあるからデータを取る」。
そんな、目的志向のIoT設計をぜひ意識してみてください。
本日も最後までお読みいただきありがとうございました。
それでは、よいIoTライフを!



