トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

DSD TECH HM-11/10

DSD TECH HM-11/10

日本国内で使う場合は「技適未取得機器を用いた実験等の特例制度」を利用してください。

 Raspbery Pi

インストール

$ sudo pip3 install bluepy
$ sudo pip3 install ble-serial

起動

$ sudo ble-scan # デバイスアドレスの確認
$ ble-serial -d AA:BB:CC:DD:EE:FF & #デバイスアドレスを指定

送受信(シリアル通信)

$ echo aaaaaa > /tmp/ttyBLE
$ cat < /tmp/ttyBLE
import serial
ser = serial.Serial('/tmp/ttyBLE', 9600)  # デバイス名とボーレートを設定しポートをオープン 
ser.write(b"hello")      # 出力
ser.close()             # ポートのクローズ
import serial
ser = serial.Serial('/tmp/ttyBLE', timeout=0.1)  # timeoutを秒で設定(default:None)ボーレートはデフォルトで9600
c = ser.read()  # 1文字読み込み
str = ser.read(10)  # 指定文字数読み込み ただしtimeoutが設定されている場合は読み取れた分だけ
line = ser.readline()  # 行終端'\n'までリードする
ser.close()

Pythonからの接続と送信(BLE)

import bluepy.btle as btle

p = btle.Peripheral("AA:BB:CC:DD:EE:FF")
s = p.getServiceByUUID("0000ffe0-0000-1000-8000-00805f9b34fb")
c = s.getCharacteristics()[0]

c.write(bytes("Hello world\n", "utf-8"))
p.disconnect()   

Pythonからの接続と受信(BLE)

import bluepy.btle as btle

class ReadDelegate(btle.DefaultDelegate):
    def handleNotification(self, cHandle, data):
        print(data.decode("utf-8"))

p = btle.Peripheral("AA:BB:CC:DD:EE:FF")
p.withDelegate(ReadDelegate())

while True:
    while p.waitForNotifications(1):
        pass

p.disconnect()