以下の手順でP0に接続した水分センサーの値をBluetoothのAdvertiseで表示する事ができます。
1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします
2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位ビットを水分センサーの値として使用します。
3. 水分センサー値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。
advertise-a0.py
from bluepy import btle
import bluepy
class MyScanDelegate(btle.DefaultDelegate):
def __init__(self):
btle.DefaultDelegate.__init__(self)
self.lastseq = None
def handleDiscovery(self, dev, isNewDev, isNewData):
if isNewDev or isNewData:
for (adtype, desc, value) in dev.getScanData():
#print(adtype, desc, value)
if desc == '16b Service Data' and value[0:4] == 'aafe' and value[8:28] == '000000000000484f4d45':
seq = (int(value[32:33], 16) & 0xC) >> 2
if seq != self.lastseq:
self.lastseq = seq
val = int(value[38:40], 16)
print('val:%d' % val)
scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
scanner.scan(5.0)
4. BluetoothのAdvertiseで水分センサーの値を表示するプログラムの実行
sudo python3 advertise-a0.py
〇Groveシールドと水分センサーを接続したmicrobit
関連情報
・Groveデバイスまとめ・Bluetooth Developer Studio Level 3 Profile Report
0 件のコメント:
コメントを投稿