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 |