2020年1月16日木曜日

microbitに接続した光センサー値をBluetoothのAdvertiseでRaspberry Piに表示する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順で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

参考情報

Bluetooth Developer Studio Level 3 Profile Report

・基板を見えないようにするためにGrove Light Sensorのケースを作成する場合は以下の記事を参照してください。
OpenSCADとUltimaker Curaを使用してGrove Light Sensorのケースを作成する

・Raspberry Pi ZeroとGrove Base HATを利用してGrove Light Sensorを接続する場合は、以下の記事を参照してください。
Raspberry Pi ZeroとGrove Base HAT for Raspberry Piと光センサーで、明るさを取得する

Groveデバイスまとめ

0 件のコメント:

コメントを投稿