ラベル Bluetooth の投稿を表示しています。 すべての投稿を表示
ラベル Bluetooth の投稿を表示しています。 すべての投稿を表示

2020年10月30日金曜日

TFab Worksのmicro:bit用温度・湿度・気圧センサーのデータをBluetoothでRaspberry Piに送信する

TFab Worksのmicro:bit用温度・湿度・気圧センサーのデータをBluetoothでRaspberry Piに送信するには、以下の手順を実行します。

実装手順

1. microbitで以下のプログラミングを行う
ネームスペースnsに「S000」を10進数に変換した数値1395666992を指定して、インスタンスとして16bit(65536)シフトした温度、8bit(256)シフトした湿度、800引いた気圧をアドバタイズします。
2秒アドバタイズしたあとは、598秒停止して10分おきにデータを送付します。

・mirobitのプログラム画面

2. Raspberry Piで受信プログラムを作成する
bluepyをインストールしたうえで下のプログラムを入力します。
advertise-env.py
from bluepy import btle
import bluepy
import datetime

class MyScanDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)

  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] == '00000000000053303030':
          val_temp = int(value[34:36], 16)
          val_humidity = int(value[36:38], 16)
          val_atomosphere = int(value[38:40], 16) + 900
          now = datetime.datetime.now(datetime.timezone(datetime.timedelta(hours=9)))
          path = "./advertise-env.log"
          with open(path, mode="a") as lf:
            lf.write('{},{},{},{}\n'.format(now.strftime('%Y-%m-%d %H:%M:%S'),val_temp, val_humidity, val_atomosphere))
          print('{},{},{},{}\n'.format(now.strftime('%Y-%m-%d %H:%M:%S'),val_temp, val_humidity, val_atomosphere))

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

3. 以下のコマンドで、日時、温度、湿度、気圧をファイルに記録します。
/usr/bin/python3 advertise-env.py >> ./advertise-env.log

・micro:bitとTFab Worksのmicro:bit用温度・湿度・気圧センサー
 
Panasonicのエボルタ1950mAhの電池2本で 約9日くらい持つようです。

関連情報

・microbitに関する記事は以下を参照してください。
http://serverarekore.blogspot.com/search/label/microbit

2020年1月20日月曜日

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

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続したGrove音センサーの値を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


2020年1月17日金曜日

microbitのABボタンの状態値をBluetoothのAdvertiseでRaspberry Piに表示する

以下の手順でP0にABボタンの状態値をBluetoothのAdvertiseで表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位2ビットをBボタンの状態値/Aボタンの状態値として使用します。

3. ABボタンの状態値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-buttons.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_a = int(value[38:40], 16) & 1
            val_b = int(value[38:40], 16) & 2
            print('val_a:%d' % val_a)
            print('val_b:%d' % val_b)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseでABボタンの状態値を表示するプログラムの実行
sudo python3 advertise-buttons.py

〇参考情報
Bluetooth Developer Studio Level 3 Profile Report


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デバイスまとめ

2020年1月13日月曜日

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

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続したRotary Angleセンサーの値をBluetoothのAdvertiseで表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでnsに'HOME'を10進化した数値1213156677(=0x484f4d45="HOME")を最初に追加します
インスタンスの上位2ビットをseqに、下位ビットをRotary Angleセンサーの値として使用します。

3. Rotary Angleセンサー値を表示するプログラム
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でRotary Angleセンサーの値を表示するプログラムの実行
sudo python3 advertise-a0.py

〇GroveシールドとRotary Angleセンサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2020年1月12日日曜日

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に、下位1ビットをタッチセンサーの値として使用します。

3. ボタンの状態値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-d0.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) & 1
            print('val:%d' % val)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseでボタンの状態値を表示するプログラムの実行
sudo python3 advertise-d0.py

〇Groveシールドとボタンを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2020年1月11日土曜日

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に、下位1ビットをタッチセンサーの値として使用します。

3. タッチセンサー値を表示するプログラム
nsが一致し、seqの値が前回取得時と異なる値を取得して表示します。

advertise-d0.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) & 1
            print('val:%d' % val)

scanner = btle.Scanner().withDelegate(MyScanDelegate())
while True:
  scanner.scan(5.0)

4. BluetoothのAdvertiseでタッチセンサーの値を表示するプログラムの実行
sudo python3 advertise-d0.py

〇Groveシールドとタッチセンサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2020年1月9日木曜日

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

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2020年1月7日火曜日

Raspberry PiからBluetooth経由でmicrobitに接続した4桁表示ディスプレイに値を表示する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でP0に接続したGrove 4digit displayにBluetooth経由で値を表示する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでUART bluetoothサービスを最初に追加します
※Grove拡張機能ではgithub.com/seeed-studio/pxt-groveを指定します。
また、ペアリングをしなくても利用できるようにします

3. Grove 4 digit displayに値を表示するプログラム

uart4digitdisplay.py
from bluepy import btle

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

# UART Service
svcUART = per.getServiceByUUID("6E400001-B5A3-F393-E0A9-E50E24DCCA9E")

# TX Characteristics
chTX = svcUART.getCharacteristics("6E400002-B5A3-F393-E0A9-E50E24DCCA9E")[0]

# RX Characteristics
chRX = svcUART.getCharacteristics("6E400003-B5A3-F393-E0A9-E50E24DCCA9E")[0]

chRX.write("1234\n".encode("utf-8"))

4. Bluetoothで4桁表示ディスプレイに値を表示するプログラムの実行
python3 uart4digitdisplay.py

〇GroveシールドとGrove 4 digit displayを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2019年12月21日土曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGrove超音波距離センサーの値を取得する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続したGrove超音波距離センサーの値をBluetooth経由でRaspberry Pi上のPythonプログラムで取得する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでUART bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. Grove超音波距離センサーの値を取得するプログラム

uart_ultrasonic.py
from bluepy import btle

class MyDelegate(btle.DefaultDelegate):
  def __init__(self, TX, RX):
    btle.DefaultDelegate.__init__(self)
    self.TX = TX
    self.RX = RX

  def handleNotification(self, hd, data):
    print("distance: {},{}".format(hd,data.decode('utf-8')))

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

# UART Service
svcUART = per.getServiceByUUID("6E400001-B5A3-F393-E0A9-E50E24DCCA9E")
# TX Characteristics
chTX = svcUART.getCharacteristics("6E400002-B5A3-F393-E0A9-E50E24DCCA9E")[0]
ch_cccd=chTX.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x03\x00", False)

# RX Characteristics
chRX = svcUART.getCharacteristics("6E400003-B5A3-F393-E0A9-E50E24DCCA9E")[0]

dg = MyDelegate(chTX, chRX)
per.setDelegate( dg )

while True:
  if per.waitForNotifications(0.1):
    continue

4. Grove超音波距離センサーの値を取得するプログラムの実行
python3 uart_ultrasonic.py
distance: 39,102

distance: 39,340

distance: 39,103

〇GroveシールドとGrove超音波距離センサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2019年12月20日金曜日

Raspberry PiからBluetooth経由でmicrobitに接続したポテンションメーターの値を取得する

以下の手順でmicrobitのP0に接続したポテンションメーターの値をBluetooth経由でRaspberry Pi上のPythonプログラムで取得する事ができます。 ポテンションメーターを裏側(=つまみがない側)にして端子を上側にしたとき、
・左側から1番目の端子を、microbitのGND
・真ん中の端子を、microbitのP0
・右側から1番目の端子を、microbitの3V
に接続します。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. ポテンションメーターの値を取得するプログラム

iopin_potentionmeter.py
from bluepy import btle

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

class MyDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)

  def handleNotification(self, hd, data):
    print("Pin{}={}".format(str(data[0]), str(data[1])))

# Without this, the reading of the temperature characteristic fails
#p.setSecurityLevel("medium")

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")
# pin0 as Analog
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x01\x00\x00\x00")
# pin0 as Input
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x01\x00\x00\x00")
# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
ch_cccd=chDATA.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)

per.setDelegate(MyDelegate() )

while True:
  if per.waitForNotifications(0.1):
    continue

4. ポテンションメーターの値を取得するプログラムの実行
python3 iopin_potentionmeter.py
Pin0=254
Pin0=255

〇microbit用コネクターブレイクアウトボードとポテンションメーターを接続したmicrobit

〇参考情報
Bluetooth Developer Studio Level 3 Profile Report


2019年12月19日木曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGrove水分センサーの値を取得する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続したGrove水分センサーの値をBluetooth経由でRaspberry Pi上のPythonプログラムで取得する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. Grove水分センサーの値を取得するプログラム

iopin_moisture_sensor.py
from bluepy import btle

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

class MyDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)

  def handleNotification(self, hd, data):
    print("Pin{}={}".format(str(data[0]), str(data[1])))

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")
# pin0 as Angle
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x01\x00\x00\x00")
# pin0 as Input
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x01\x00\x00\x00")
# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
ch_cccd=chDATA.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)

per.setDelegate(MyDelegate() )

while True:
  if per.waitForNotifications(0.1):
    continue

4. Grove水分センサーの値を取得するプログラムの実行
python3 iopin_moisture_sensor.py
Pin0=11
Pin0=10
Pin0=12
Pin0=8

〇GroveシールドとGrove水分センサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2019年12月18日水曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGrove LEDを点滅させる

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続したLEDをBluetooth経由でRaspberry Pi上のPythonプログラムから点滅させる事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. Grove LEDを点滅させるプログラム

iopin_led.py
from bluepy import btle
import time

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")
# pin0 as Digital
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x00\x00\x00\x00")
# pin0 as Output
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x00\x00\x00\x00")

# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
while True:
  chDATA.write(b"\x00\x01")
  time.sleep(2)
  chDATA.write(b"\x00\x00")
  time.sleep(1)
4.Grove LEDを点滅させるプログラムの実行
python3 iopin_led.py

〇GroveシールドとLEDを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2019年12月17日火曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGrove音センサーの値を取得する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続したGrove音センサーの値をBluetooth経由でRaspberry Pi上のPythonプログラムから取得する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. Grove音センサーの値を取得するプログラム

iopin_sound_sensor.py
from bluepy import btle

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

class MyDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)

  def handleNotification(self, hd, data):
    print("Pin{}={}".format(str(data[0]), str(data[1])))

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")
# pin0 as Angle
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x01\x00\x00\x00")
# pin0 as Input
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x01\x00\x00\x00")
# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
ch_cccd=chDATA.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)

per.setDelegate(MyDelegate() )

while True:
  if per.waitForNotifications(0.1):
    continue

4. Grove音センサーの値を取得するプログラムの実行
python3 iopin_sound_sensor.py
Pin0=166
Pin0=165
Pin0=189

〇GroveシールドとGrove音センサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2019年12月16日月曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGroveのブザーを鳴らす

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続したブザーをBluetooth経由でRaspberry Pi上のPythonプログラムから鳴らすことができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. Groveのブザーを3秒間鳴らすプログラム

iopin_buzzer.py
from bluepy import btle
import time

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")
# pin0 as Digital
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x00\x00\x00\x00")
# pin0 as Output
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x00\x00\x00\x00")

# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
chDATA.write(b"\x00\x01")
time.sleep(3)
chDATA.write(b"\x00\x00")

4.Groveのブザーを鳴らすプログラムの実行
python3 iopin_buzzer.py.py

〇Groveシールドとブザーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2019年12月15日日曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGrove Rotary Angleセンサーの値を取得する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続したRotary Angleセンサーの値をBluetooth経由でRaspberry Pi上のPythonプログラムから取得する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. Rotary Angleセンサーの値を取得するプログラム

iopin_rotary_angle.py
from bluepy import btle

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

class MyDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)

  def handleNotification(self, hd, data):
    print("Pin{}={}".format(str(data[0]), str(data[1])))

# Without this, the reading of the temperature characteristic fails
#p.setSecurityLevel("medium")

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")
# pin0 as Angle
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x01\x00\x00\x00")
# pin0 as Input
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x01\x00\x00\x00")
# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
ch_cccd=chDATA.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)

per.setDelegate(MyDelegate() )

while True:
  if per.waitForNotifications(0.1):
    continue
4. Rotary Angleセンサーの値を取得するプログラムの実行
python3 iopin_rotary_angle.py
Pin0=254
Pin0=255

〇GroveシールドとRotary Angleセンサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2019年12月14日土曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGroveタッチセンサーの値を取得する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続したタッチセンサーの値をBluetooth経由でRaspberry Pi上のPythonプログラムから取得する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. Groveタッチセンサーの値を取得するプログラム

iopin_touch_sensor.py
from bluepy import btle

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

class MyDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)

  def handleNotification(self, hd, data):
    print("Pin{}={}".format(str(data[0]), str(data[1])))

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")
# pin0 as Digital
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x00\x00\x00\x00")
# pin0 as Input
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x01\x00\x00\x00")
# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
ch_cccd=chDATA.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)

per.setDelegate(MyDelegate() )

while True:
  if per.waitForNotifications(0.1):
    continue

4. Groveタッチセンサーの値を取得するプログラムの実行
python3 iopin_touch_sensor.py
Pin0=1
Pin0=0

〇Groveシールドとタッチセンサーを接続したmicrobit

関連情報

Groveデバイスまとめ

Bluetooth Developer Studio Level 3 Profile Report


2019年12月13日金曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGroveボタンの値を取得する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続したGroveボタンの値をBluetooth経由でRaspberry Pi上のPythonプログラムから取得する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. Groveボタンの値を取得するプログラム

iopin_button.py
from bluepy import btle

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

class MyDelegate(btle.DefaultDelegate):
  def __init__(self):
    btle.DefaultDelegate.__init__(self)

  def handleNotification(self, hd, data):
    print("Pin{}={}".format(str(data[0]), str(data[1])))

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")
# pin0 as Digital
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x00\x00\x00\x00")
# pin0 as Input
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x01\x00\x00\x00")
# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
ch_cccd=chDATA.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)

per.setDelegate(MyDelegate() )

while True:
  if per.waitForNotifications(0.1):
    continue
4. Groveボタンの値を取得するプログラムの実行
python3 iopin_button.py
Pin0=1
Pin0=0

〇Groveシールドとボタンを接続したmicrobit

関連情報

Bluetooth Developer Studio Level 3 Profile Report


Groveデバイスまとめ

2019年12月12日木曜日

Raspberry PiからBluetooth経由でmicrobitに接続したGrove光センサーの値を取得する

Groveシールドで様々なデバイスを利用するすることができます。
以下の手順でmicrobitのP0に接続した光センサーの値をBluetooth経由でRaspberry Pi上のPythonプログラムから取得する事ができます。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで入出力端子bluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. 光センサーの値を取得するプログラム

iopin-light-sensor.py
from bluepy import btle

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

# IO Pin Service
svcIOPIN = per.getServiceByUUID("E95D127B-251D-470A-A062-FA1922DFA9A8")

# pin0 as Analog
chADC = svcIOPIN.getCharacteristics("E95D5899-251D-470A-A062-FA1922DFA9A8")[0]
chADC.write(b"\x01\x00\x00\x00")

# pin0 as Input
chPIOC = svcIOPIN.getCharacteristics("E95DB9FE-251D-470A-A062-FA1922DFA9A8")[0]
chPIOC.write(b"\x01\x00\x00\x00")

# Pin Data
chDATA = svcIOPIN.getCharacteristics("E95D8D00-251D-470A-A062-FA1922DFA9A8")[0]
ba = chDATA.read()
print("Pin{}={}".format(str(ba[0]), str(ba[1])))
4. 光センサーの値を取得するプログラムの実行
$ python3 iopin-light-sensor.py
Pin0=60

〇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デバイスまとめ

2019年12月11日水曜日

Raspberry PiからBluetooth経由のUARTでmicrobitと通信する

Raspberry PiからBluetooth経由でUARTでmicrobitと通信するには、以下の手順を実行します。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じでUARTサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. 地磁気センサーの値を取得するプログラム
uart.py
from bluepy import btle

class MyDelegate(btle.DefaultDelegate):
  def __init__(self, TX, RX):
    btle.DefaultDelegate.__init__(self)
    self.TX = TX
    self.RX = RX

  def handleNotification(self, hd, data):
    print("notification: {},{}".format(hd,ord(data)))
    chRX.write("pressed!\n".encode("utf-8"))

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

# UART Service
svcUART = per.getServiceByUUID("6E400001-B5A3-F393-E0A9-E50E24DCCA9E")
# TX Characteristics
chTX = svcUART.getCharacteristics("6E400002-B5A3-F393-E0A9-E50E24DCCA9E")[0]
ch_cccd=chTX.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x03\x00", False)

# RX Characteristics
chRX = svcUART.getCharacteristics("6E400003-B5A3-F393-E0A9-E50E24DCCA9E")[0]

dg = MyDelegate(chTX, chRX)
per.setDelegate( dg )

chRX.write("start!\n".encode("utf-8"))
while True:
  if per.waitForNotifications(0.1):
    continue

4. Bluetooth経由のUARTでmicrobitと通信するプログラムの実行
$ python3  python3 uart.py
notification: 39,66
notification: 39,65

〇参考情報
Bluetooth Developer Studio Level 3 Profile Report