太陽光発電の発電量をロギングしてみた。(3)Microbit間無線通信とRaspberryPi-Microbit間シリアル通信で、測定値をロギング
Microbit間無線通信とRaspberryPi-Microbit間シリアル通信で、測定値をロギング
ここでは、電流・電圧測定モジュールINA260を接続したMicrobitから、他のMicrobitに測定データを無線通信で転送し、USB接続されたRaspberryPiとシリアル通信してRaspberryPiで測定値をロギングする。
● Microbitの無線通信
Microbitは独自の無線通信により、他のMicrobitとデータ通信することができる。
Microbitの無線通信は意外とすごい。
冷蔵庫の中にMicrobitを入れて、庫外のMicrobitに温度データを送信できる。
試しに停止中の電子レンジにも入れてみたが、通信可能だった。
無線を使用するには、MakeCodeでは以下のブロックを使用するだけである。
・イニシャル処理で、送信側・受信側で同じ無線グループを設定
・受信側:「無線で受信したとき」トリガーを使用して受信値を取得する。
以下、MakeCodeで編集した、センサー接続側のソースの全体像である。
測定値を無線で他のMicrobitに送信している。
● Microbit-Raspberry間のシリアル通信
Microbitでシリアル通信すれには、MakeCodeで「高度なブロック」-「シリアル通信」を使用する。
以下はRasberryPiにUSB接続するMicrobitのプログラムである。
無線受信したデータをシリアル通信で送信する。
● RaspberryPi側シリアル通信
RaspberryPiとMicrobitは、USBケーブルで接続する。
RasberryPiでLXTerminalを起動し、以下のscreenコマンドを実行することでMicrobitの送信データを受信して表示することができる。
sudo screen /dev/ttyACM0 115200
しかし、ロギングするならもう少し手を加えたいので、pythonで書いてみる。
import serial
import struct
import datetime as dt
use_port = "/dev/ttyACM0"
_serial = serial.Serial(use_port)
_serial.baudrate = 115200
_serial.parity = serial.PARITY_NONE
_serial.bytesize = serial.EIGHTBITS
_serial.stopbits = serial.STOPBITS_ONE
_serial.timeout = 15
try:
while True:
rx = _serial.readline()
st = "{0},{1}".format(dt.datetime.now(), rx)
print(st)
with open('/home/pi/current_{}.log'.format(dt.date.today()), mode="a") as f:
f.write(st)
except Exception as ex:
print(ex)
finally:
_serial.close()
Author And Source
この問題について(太陽光発電の発電量をロギングしてみた。(3)Microbit間無線通信とRaspberryPi-Microbit間シリアル通信で、測定値をロギング), 我々は、より多くの情報をここで見つけました https://qiita.com/takoyakiya/items/009ab91425be97121c94著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .