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

0 件のコメント:

コメントを投稿