実装手順
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 件のコメント:
コメントを投稿