태양광 발전의 발전량을 로깅해 보았다. (3) Microbit 간 무선 통신과 RaspberryPi-Microbit 간 직렬 통신으로 측정 값 로깅
6094 단어 RaspberryPimicrobit태양광 발전IoT
Microbit 간 무선 통신과 RaspberryPi-Microbit 간 시리얼 통신으로 측정값 로깅
여기에서는, 전류·전압 측정 모듈 INA260을 접속한 Microbit로부터, 다른 Microbit에 측정 데이터를 무선 통신으로 전송하고, USB 접속된 RaspberryPi와 시리얼 통신하여 RaspberryPi로 측정값을 로깅한다.
● 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
그러나 로깅한다면 좀 더 손을 더하고 싶기 때문에 파이썬으로 써 보겠습니다.
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()
【태양광 발전의 발전량을 로깅해 보았다. 목차】
Reference
이 문제에 관하여(태양광 발전의 발전량을 로깅해 보았다. (3) Microbit 간 무선 통신과 RaspberryPi-Microbit 간 직렬 통신으로 측정 값 로깅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takoyakiya/items/009ab91425be97121c94텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)