LoginSignup
1
1

More than 1 year has passed since last update.

M5stack Core2でBluetooth接続 PCのpythonプログラム3(PCで受信)

Posted at

BLE通信の送信ができ、受信もできる

送信はできるようになった
PCが受信側となって実行できるようにするには?

PC側の受信プログラム

前々回のUUIDで調べた(read)にはValueにすでに値が入っていたので、
notifyにあたるキャラクタリスティックを読み込んでみたところ成功しました

import asyncio
import uuid
from bleak import BleakScanner
from bleak import BleakClient
from bleak import BleakError

device_name = "FIVE_STACK"
#[Characteristic] 6e400003-b5a3-f393-e0a9-e50e24dcca9e (Handle: 20): 
# (notify), Value: None
read_UUID = uuid.UUID("6e400003-b5a3-f393-e0a9-e50e24dcca9e")

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

    # 検出デバイスの表示
    #for d in devices:
    #    print(d)

    global ADDRESS
    ADDRESS = idx[0].address
    print("find device " + str(idx[0].name))

async def connect_read():
    global ADDRESS

    async with BleakClient(ADDRESS,use_cached=False) as client:
        def callback(sender, data):
            print(f"Received: {data}")

            data_str = data.decode()
            print("decode ->"+data_str)
        
        print("..receive message")
        while True:
            await client.start_notify(read_UUID, callback)          

if __name__ == "__main__":
    asyncio.run(ble_scan())
    asyncio.run(connect_read())

notifyはコールバック関数で~とリファレンスサイトにあったので、受信時にコールバック関数へ飛ばしました

UIFLOWのBlockly

前回のものに、BLE writeブロックを追加、1秒おきにカウントアップしていく

image.png

実行結果

1秒ごとに表示される
受信データをそのまま表示させるとbytearray(b'')が返ってくる
受信データをデコードすることで文字列になった
image.png

次はPCのプログラムをデスクトップアプリケーション化してみようと思います

1
1
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
1