加速度センサーを使ってみる その2(MPU6050、Node-RED MCU)

はじめに

 前回はESP32と加速度センサーのMPU6050を使いました。プログラムはArduino IDEで書き込みましたが、今回はNode-RED MCUで書き込みます。Node-REDで作成したプログラムをマイコンに書き込むことができます。

▼Node-RED MCUについてはこちらをご覧ください。

書籍紹介:『はじめてのNode-RED』/『はじめてのNode-RED MCU Edition』

Node-REDとは  一言でいうと、Node-REDはプログラミングが簡単にできるツールです。ビジュアルプログラミングの一種で、視覚的にわかりやすくなっています。 ▼百聞は一見…

▼Node-RED MCUの環境構築についてはこちら。今回もRaspberry Piで実行しています。

Node-RED MCUの環境を構築する(ESP-IDF v5.1.1対応版、Raspberry Pi)

はじめに  Moddable SDKがv4.2にアップデートされたことにより、Node-RED MCUの環境が大きく変化しています。特にESP-IDF v5に対応したことで、ESP-IDF v4のままだとエラ…

▼前回の記事はこちら。回路も前回と同じです。

加速度センサーを使ってみる その1(MPU6050、ESP32、デュアルコア)

はじめに  今回は加速度センサーのMPU6050を使ってみました。いつも使っているスターターキットに入っていたものです。GY-521と印字されていますが、MPU6050と変わりませ…

センサーの値を取得する

Sensorノードの設定をする

 Node-RED MCUのSensorノードを使って、加速度センサーの値を取得します。

▼Sensorノードを配置して、センサーの種類を選択します。

▼今回はInvenSenseのMPU6050を使います。

▼選択すると、詳しい設定をすることができます。アドレスは0x68になっていますね。

デバッグウィンドウに表示する

 デバッグウィンドウに表示させてみましょう。injectノードとdebugノードを接続します。

▼ESP32側のフローはこちら

 タイムスタンプと書かれたinjectノードで、定期的にSensorノードを実行しています。

▼下のほうにある繰り返しの欄を設定します。ちなみに、時間間隔が短すぎると処理できなくなることがあります。

▼debugノードでは、msgオブジェクト全体を見てみます。

▼デバッグウィンドウの表示はこんな感じ。

 デバッグウィンドウの表示から、例えばX軸の加速度はmsg.payload.accelerometer.xに入っていることが分かります。データ全てを受信するだけでは使いにくいので、X軸方向の加速度のみを表示させてみましょう。

▼debugノードでmsg.payload.accelerometer.xを指定すると、X軸方向の加速度だけ取得できます。

▼また、デバッグ用のツールであるxsbugにもセンサーの値が表示されます。

Node-REDでグラフ化する

 加速度センサーの値をMQTT通信で送って、Node-RED側でグラフ化します。ここではNode-RED上で起動している、Aedes MQTT brokerにデータを送信します。

▼Node-REDとのMQTT通信に関する記事はこちら

Node-REDでMQTT通信(Node-RED MCU、M5Stack)

はじめに  今回はNode-REDでMQTT通信を使ってみました。MQTT通信はIoT機器の通信にも使われていて、軽量かつ低消費電力だそうです。  Node-RED MCUでプログラムを書き込…

▼Node-RED側のフローはこちら。mqtt in/outノードのトピックを、ESP32側と揃えておきましょう。

 デバッグウィンドウで確認したように、X軸の加速度はmsg.payload.accelerometer.xを指定すると取得できます。この数値をグラフ化するためのノードに送信します。

▼changeノードの設定はこんな感じ。他にもY軸用と、Z軸用を用意しています。

 Node-REDのダッシュボードの設定を行います。ここではnode-red-dashboardgaugechartを使います。

▼Groupの設定以外は基本的にデフォルトなのですが、種類や色、ラベル、単位などを変更することができます。

 ダッシュボード画面を開いて、グラフを見てみましょう。

▼Node-REDの画面右側にあるダッシュボードの設定画面から開くことができます。

▼実際に表示させたグラフはこんな感じ。円形ディスプレイに表示させたくなりますね。

▼実際に動かしているときの様子はこちら

最後に

 Node-RED MCUで加速度センサー用のプログラムを作成し、Node-REDでグラフ化してみました。単位が分からないのですが、重力方向で大体9.8ぐらいだったのでm/s²ではないかと思っています。

 処理が早すぎるとうまくいきません。MQTTブローカーを起動しているNode-REDが動かなくなったこともありました。温度や湿度などの環境系のセンサーであれば取得頻度が遅くても使えますが、即応性が求められる場面でNode-REDと加速度センサーを使うのは向いていないかもしれません。

 重力の方向が分かるので、ディスプレイを向きに応じて傾けるといった用途などには使えそうですね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です