ESP32 WROOMでモーター回転数を計測する
中小企業向けに「IoT」と話すと、専用データ収集装置、クラウド契約、大きな予算という認識が多いです。実際に手を動かしてみると、入門の試作はそこまでではありません。今回はAmazonで1400円ほどで売っているボード1枚と赤外線センサー(3個 580円)で、小型モーターの回転数を計ってみました。
1.IoTは、まず「今の状態を数値にする」こと
工場のファン、ポンプ、コンベアなど回っているかどうか現場の感覚に頼りがちです。回転数が落ちていれば負荷や熱による劣化のサインとなります。最初から工場全体をつなぐ必要はありません。1台で「今、何回転か」が1秒ごとに出れば、それがIoTの入り口です。
2.使ったものは千円台のボードとIRセンサー
使ったのはFreenoveのESP32ボードです。Wi-Fi付きの小型コンピュータで、Amazonで1400円前後でした。パソコンとはUSBでつなぎ、Arduino IDEという無料ソフトで動かします。Wi-Fi付きなので、計測データをPCにも飛ばせます。今回は有線でやってます。
センサーはMH-Sensor Seriesの赤外線反射型センサーです。光を当てて、返ってきた反射光をデジタル信号にします。応答はLM393というコンパレーターを使っていて数十kHz以下ぐらいまでは大丈夫です。モーター側にプロペラをつけ羽の1枚にアルミ箔を貼りました。箔がセンサーの前を通るたびに1パルス 一回転一回の出力を検出します。

3.参考コード Arduino IDE
センサの出力をESP32のピンに入れ、立下りで数えます。周期から回転数(RPM)を出し、1秒ごとにシリアルに出力する。パソコン側のArduino IDEのSerial Plotterでリアルタイムにグラフが表示される。 コードは最初はCoPilotに尋ねた。そのコードが下記になる。GPIOの何番を使うかが問題となった。最初のコードでは32番だったが18番のほうがいいみたいである。
// ESP32 + TCRT5000 で 1 回転 1 パルスの RPM 計測
const int SENSOR_PIN = 18;
volatile unsigned long pulseCount = 0;
unsigned long lastCalcTime = 0;
float rpm = 0.0;
int num = 0;
float ave = 0.0;
float sum = 0.0;
void IRAM_ATTR onPulse() {
pulseCount++;
}
void setup() {
Serial.begin(115200);
pinMode(SENSOR_PIN, INPUT_PULLUP);
// 立ち下がりエッジで割り込み
attachInterrupt(digitalPinToInterrupt(SENSOR_PIN), onPulse, FALLING);
lastCalcTime = millis();
}
void loop() {
unsigned long now = millis();
if (now – lastCalcTime >= 1000) { // 1秒ごとに計算
noInterrupts();
unsigned long count = pulseCount;
pulseCount = 0;
interrupts();
rpm = (count * 60.0);
Serial.print(rpm);
Serial.println(“,”);
lastCalcTime = now;
}
}
実際の計測風景 センサーとプロペラの距離は5mmぐらい

Arduino IDEのPlotter出力

4.計測値を安定させるにはプログラムの改善が必要
上記のプログラムでは、計測ノイズに弱く大きな値を出力したりばらつきが大きかったりする。別の生成AIにノイズに強くしてくれと指示したところ、メジアンフィルターと指数移動平均(EMA)をとって安定値を出力するようになった。ここでは、詳細は割愛する。
まとめ
IoTの入門は、いきなり専用装置やクラウドに上げてなどと大掛かりに始める話ではありません。千円台のボードとセンサーの利用で現場の量を数値化できます。また、ノイズによる対策については生成AIの助けを借りることで安定化をはかることができました。今後加速度センサーを使った振動のモニタのブログも書いていきたいと思います。さらにESP32はWi-Fiを備えているのでそれをデータ収集用のPCに転送してデータを蓄積しさらにデータベースを備えたホストPCに送信してデータ収集システムを作ることが可能です。このような草の根IoTなどから工場のIoTを進めてはいかがでしょうか。
もし、草の根IoTにご興味がありましたらぜひCSコンサルティングにご相談ください。 問い合わせ。
