1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

M5stack Core2でBluetooth接続 PCのpythonプログラム

Last updated at Posted at 2022-05-20

先日の続きです。
Chrome経由での接続確認はできたのですが、Pythonでの実装をポチポチと
(かき集めた内容なので、間違っている箇所があったらご指摘下さい:bow_tone1:

Bluetooth接続と書いておきながらも、実際はBluetooth Low Energy(BLE)というエコモードなBluetoothです。
Pythonのライブラリはpybluezはインストールが上手くいかなかったので、Bleakを使いました

from bleak import BleakScanner
from bleak import BleakClient

Scannerがデバイス検索
Cliantが送受信に使われています

Python側から通信先を見つける

M5Stackは前回のプログラムを実行して、BLEを起動しておきます
Scannerを使って接続するデバイス名(UIFLOWで設定した"FIVE_STACK")でMacアドレスを取得する

import asyncio
from bleak import BleakScanner
from bleak import BleakError

device_name = "FIVE_STACK"

async def device_scan():
    devices = await BleakScanner.discover()
    idx = list(filter(lambda x: x.name == device_name, devices))

    # 検出デバイスを表示するだけの場合は以下
    # for d in devices:
    #     print(d)

    ADDRESS = idx[0].address # Macアドレスが出力される
    print(idx[0].name) # デバイス名が表示される

ここで表示されたMacアドレスは以降たくさん使います
変数に入れておきました

Cliantで使ったのは以下メソッド

cliant.read_gatt_char(UUIDを指定)
cliant.write_gatt_char(UUIDを指定)

BLEではUUIDという値を使って通信します

M5Stack Core2のUUIDはどれか

Bleakサイトのサンプルコードの「servies_explorer.py」を実行してみると
image.png
ServiceとCharavteristic、DescriptorのUUIDが表示された

上二つが(read)とあるから受信用UUIDってことかな
そうなると一番下の(write)が送信用かな
それをもとにやってみる

import asyncio
from bleak import BleakClient

address = "" # 通信先のMacアドレス
MODEL_NBR_UUID = "" # 受信したいUUID

async def main(address):
    async with BleakClient(address) as client:
        model_number = await client.read_gatt_char(MODEL_NBR_UUID)
        print("Model Number: {0}".format("".join(map(chr, model_number))))

asyncio.run(main(address))

addressとUUIDを試しに一番上のHandle:11という項目のものでやってみた
00002a00-0000-1000-8000-00805f9b34fb (Handle: 11): (read), Value: b'ESP32'
するとどうでしょう
image.png
M5Stackで使われているマイコンESP32と表示されました
b'ESP32'と同じなので、通信はできている!ということですかね

さらに双方向通信ができるようにしたいのですがまだ辿り着けていません。。

【追記 5/25】
BleakでCliantとする場合、PCはperipheralになる
M5StackCore2はBLEブロックを組み立てるとperipheralになっている?

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?