2020/01/11(SAT) 【M5Stack】Bluetoothを使ってみる
冬休みの自由研究の続きね。
年末に買ったM5Stack↓これね
フォト

ESP32というコア2でクロック240MHzのマイコンに
BluetoothとWifiと液晶とSDカードスロットと・・・
いろいろ揃っているやつね。

で、
Bluetoothのちょっと難しい話。
実はBluetoothは2種類あります。
初期のころからの流れのLegacyと言われる普通のBluetoothと
省電力のBLE(Bluetooth Low Energy)ね。
後者は、今もいうのかな?Bluetooth SMARTって呼ばれてた奴。
LegacyのBluetoothとは通信できません。
で、両方を積んでいるのをBlueooth SMART Readyと言ってた。
これも今そう呼んでいるかよくわかんないけど。
バージョンでいうと4.0で分かれます。
なので、
BLEというと、Bluetooth SMARTの方を指して
省電力の機能しか使えないのが一般的。
バージョンで言われるとどっちかわかんない時がある

M5StackにもBluetoothがついているんだけど
雑誌とか本ではBLEの話しか載ってなかったから
Legacyの機能は載ってないと思ってたら
ググッたら、そうじゃなさげなのがわかった。
Serial Port Profile(SPP)のサンプルが見つかった。
↓これね
フォト

これを動かすと以下の構成でBluetooth通信
シリアル通信ができるようになります。
フォト

左のPCはUSBでシリアルでM5StackとPCがつながり
右のPCとはBlueoothでシリアル通信できる。
ちなみに右のPCから接続行くと
↓こう見える。
フォト

この例だとCOM40につながる
フォト

実際に動かしてみる
↓左のPCのコンソール
最後の行は左のPCから「Hello」と入力すると
フォト

↓右のBluetoothでつながったPCのコンソールに「Hello」と出る
フォト

お返しに右のPCから「I am M5Stack on Bluetooth!」と入力すると
フォト

左のPCのコンソールに「I am M5Stack on Bluetooth!」と出ます。
フォト

双方向の通信の確認ができました。
しかもシンプルなコードでBluetoothの通信ができました。

これを応用して
仮に水温をBluetoothで飛ばしてみる
M5Stackで水温を測定して、それをBluetoothでPCに飛ばす。
↓こんな構成
フォト

実際の回路は↓こんな感じ。
フォト

PCで受けたログ↓こんな感じ
約3秒毎にM5Stackから送られてきます。
フォト

 #回路の写真が18℃でログが22℃なのは
 #時系列的に違うタイミングなので許して・・・

ざっくりプログラム
↓宣言部。変数などを宣言しています。
フォト

↓初期化処理
Bluetoothの初期化と温度センサの入力のPIN設定をしています
画面も初期化
ポイントは30行目。
AD変換をする時にスピーカーにノイズが載っちゃうのですが
このおまじないでソフト的に抑えてます。
フォト

↓ループ処理です
100ms毎にセンサーからデータを吸い上げて
サンプリングが30になったら、つまり3秒経ったら
平均値を求めて画面に出力します。
77行目でBluetoothのシリアルポートへ出力しています。
フォト

ということで
LegacyなBluetoothだけど通信できました。
スマホ用にBlueoothのコンソールアプリがあるみたいなので
スマホとの連携も可能です。
Legacyだと省電力でないので、電気食いますけどね。

今回は温度でしたが
これを、アクセル開度、YPVS開度、エンジン回転数などの
情報を収集してログをBluetoothで飛ばすことも可能となります。
ちなみにBluetoothで飛ばさなくても
SDカードスロットがあるので、そのまま保存も可能なはず。
う〜む。夢は広がる。
次はWiFiの実験かなぁ〜?
アクセスポイントやhttpサーバを立てれるらしい。
そしたらスマホのブラウザで無線通信できちゃう。
あとBLEも試してみたいけどね

やる気があれば、次につづくw