1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします
2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで一通りのbluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。
3. microbitのボタン状態の通知を取得するプログラム
buttonnotify.py
import sys
import time
from bluepy import btle
class MyDelegate(btle.DefaultDelegate):
def __init__(self, chA, chB):
btle.DefaultDelegate.__init__(self)
self.loop = True
self.chA = chA
self.chB = chB
self.stateA = 0
self.stateB = 0
def handleNotification(self, hd, data):
print("notification: {},{}".format(hd,ord(data)))
if hd == 45:
self.stateA = ord(data)
if hd == 48:
self.stateB = ord(data)
if self.stateA == 2 and self.stateB == 2:
print("exit...")
self.loop = False
per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)
# Button Service
svcButton = per.getServiceByUUID("e95d9882-251d-470a-a062-fa1922dfa9a8")
# Button A State
chA = svcButton.getCharacteristics("e95dda90-251d-470a-a062-fa1922dfa9a8")[0]
ch_cccd=chA.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)
# Button B State
chB = svcButton.getCharacteristics("e95dda91-251d-470a-a062-fa1922dfa9a8")[0]
ch_cccd=chB.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)
dg = MyDelegate(chA, chB)
per.setDelegate( dg )
while dg.loop:
if per.waitForNotifications(0.1):
continue
4. microbitのボタン状態の通知を取得するプログラムの実行
$ python3 buttonnotify.py
notification: 48,1
notification: 48,2
0はボタンを押していない状態、1で押した状態、2で長押し状態を示します。AボタンとBボタンを長押し状態にするか、Ctrl+Cでプログラムを終了します。〇参考情報
・Bluetooth Developer Studio Level 3 Profile Report
0 件のコメント:
コメントを投稿