北東北 LabVIEWユーザー会

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ESP32 BluetoothSerial and LabVIEW

Abstract

Using M5StickC with built-in ESP32 communication module and acceleration sensor, acceleration data was sent to Windows 10 PC via Bluetooth SPP communication, and the data was received and displayed by LabVIEW. Further consideration is needed regarding the communication speed.

 

ESP32のBluetoothSerialとLabVIEW(改定版)

ESP32通信モジュール及び加速度センサを内蔵するM5StickCを使い、加速度データをブルートゥースのSPP通信でWindows10 PCに送り、LabVIEWでデータを受け取り表示した。通信速度に関してはさらなる検討が必要である。

―――――――――――――――――

 

ESP32通信モジュールで動作するM5StickCという小さなデバイスがあります。腕時計というには少し大きいですが、加速度センサやマイク、押しボタンスイッチなどの入力と小さなカラーLCDモジュール、さらに80mAhのLiPoバッテリーも付いています。外部IOピンとGroveポートもあるので、好みの入出力を追加することができます。国内での入手性も良く2000円程度で購入できます。USB-CケーブルでPCに接続し、Arduino IDEでプログラムを書き込むことができます。

 

M4080478 2.JPGM4080479 2.JPGM4080481 2.JPG

 

Arduinoは各種センサーのインターフェースにするのには最適ですが、難点はUSBケーブルにつながっていることで、楽に無線接続ができるようになれば良いなと思っていました。

WiFiも有力な候補でLabVIEWのWebサービスなどを使ってできるのですが、ちょっと面倒くさい感があって、暇になったらやってみるリストに入れていました。昨年(2019)の秋に購入したままになっていたM5StickCもあるのでそろそろやってみようかといじり始めたのですが、WiFiの前にブルートゥースの状況を見ていたら、ESP32のライブラリにBluetoothSerialがあることに気がつきました。早速やってみるとLabVIEW側は普通のシリアル通信で良いので非常に手軽に使えることがわかりました。

ある程度実用性もありそうな加速度測定を例にサンプルを作りましたので、装置の振動を観測したいという用途や、趣味のゴルフのスイングの改良などに試してみてください。

 

下の写真はBluetoothでデータを受け取っているPCの前でM5StickCを振りながら撮影しました。ケーブルがあるとデータが取りにくい状況では役に立つのではないでしょうか。

 

M4070474 2.JPG

 

ブルートゥースのSPP通信というものはこれまで使ったことがなかったのですが、UART機器に無線通信機能を付加する通信モジュールで使われているようです。

以下のURLはSPP通信の概略を理解するのに良いでしょう。

 

http://www.microtechnica.tv/support/manual/rbt-001_man.pdf 

https://www.musen-connect.co.jp/blog/course/product/spp-to-ble/ 

 

Arduinoのプログラムです。

スケッチ.png

 

ルートゥースのSPP通信の部分は以下の3行です。

#include "BluetoothSerial.h” <<<< ESP32のライブラリに含まれている

SerialBT.begin("ESP32"); <<<< ESP32という名前で通信開始

SerialBT.printf("%7.4f, %7.4f, %7.4f\n", accX, accY, accZ); <<<< 加速度データを文字列で送る

 

M5StickCの加速度センサのサンプル“IMU.ino”をベースに改造しました。

M5StickC > Basics > IMU

 

imu.png

 

使用したArduinoプログラム

-------------------------------------------------------------

#include <M5StickC.h>

#include "BluetoothSerial.h"

float accX = 0.0F;

float accY = 0.0F;

float accZ = 0.0F;

BluetoothSerial SerialBT;

void setup() {

Serial.begin(115200);

Serial.println("M5_Acc.ino");

 

SerialBT.begin("ESP32");

 

M5.begin();

M5.IMU.Init();

M5.Lcd.setRotation(3);

M5.Lcd.fillScreen(BLACK);

M5.Lcd.setTextSize(2);

}

void loop() {

M5.IMU.getAccelData(&accX,&accY,&accZ);

//Serial.printf("%7.4f, %7.4f, %7.4f\n", accX, accY, accZ);

SerialBT.printf("%7.4f, %7.4f, %7.4f\n", accX, accY, accZ);

M5.Lcd.setCursor(20, 5);

M5.Lcd.printf("X: %7.4f", accX);

M5.Lcd.setCursor(20, 30);

M5.Lcd.printf("Y: %7.4f", accY);

M5.Lcd.setCursor(20, 55);

M5.Lcd.printf("Z: %7.4f", accZ);

delay(10);

}

 

-----------------------------------------------------------------------

 

Windows側では「Windowsの設定 > Bluetoothとその他のデバイス」でM5StickCとペアリングする必要があります。Arduinoプログラムの中で"ESP32"という名前で通信していますので、ESP32とペアリングすることになります。

 

bluetooth.png

 

ペアリングに成功するとBluetoothリンク経由のCOMポートがあらわれます。

 

デバイスマネージャー.png

 

通信設定はプロパティでできるようです。

 

プロパティ.png

 

ここではデフォルトで9600bpsでしたが、VIでは115200bpsの設定でエラーもなく通信できていました。表示されるチャートを見ただけですが、10msec間隔で送られてくる24文字が受け取れているような雰囲気です。実際のところは通信速度に関しては少し調べないといけません。

 

「BT_M5-Acc.vi」はLabVIEW2014ですので、機会があれば活用ください。

 

フロントパネル.pngブロックダイアグラム.png

 

非商用無料で使えるLabVIEW Community Edition(個人的予想では5月19日にリリース)を楽しみに待っている人も多いと思いますが、今からLabVIEW2019の評価版をダウンロードして使い始めても無料評価期間が切れる前に、LabVIEW Community Editionが使えるようになると思います。

 

0 件の賞賛
メッセージ1/1
8,293件の閲覧回数