본문 바로가기

PROGRAMMING/PYTHON

[Python3] ARTIK 시리얼 포트로 LoRa(stm32) 데이터 수신

  • LoRa P2P 데이터를 수신하기 위한 작업
  • LoRa 통신을 하는 장비들끼리 주파수가 맞아야 한다.
  • 현재 장비는 ARTIK 710에 stm32가 연결 되어 UART 통신을 한다.
  • LoRa 설정 파라미터를 수정하기 위해서는 stm32에 직접 접근 해야 함.
  • 기능 수행 전 stm32 칩을 활성화 해주는 코드를 실행 해야 함.

  Python으로 시리얼포트 데이터 수신

  • ARTIK 710 - stm32가 시리얼 포트로 연결돼 있어야 한다.

  pyserial 설치


  • python 외부 라이브러리인 pyserial을 설치해야한다. python2 , python3 두 버전 모두 지원

$ pip3 install pyserial



  pyserial 코드


1
2
3
4
import serial
 
ser = serial.Serial(port='포트번호', baudrate=115200, timeout=None)
data = ser.readline()
cs
  • pyserial을 설치했지만 serial로 import 한다.
  • 시리얼 포트 번호를 설정하고 baudrate를 맞춰 객체 생성.
  • 그리고 한줄씩 읽는다.
  • python3에서는 전송되는 데이터가 binary형태더라 그래서 뒤에 decode('utf8') 옵션추가가 필요함.

  전체 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
import time
import serial
 
from random import *
 
 
def loar_receiver():
 
    # UART 세팅
    ser = serial.Serial(port='/dev/ttySAC4', baudrate=115200, timeout=None)
 
    while True:
        try:
            data = ser.readline().decode('utf8').replace(' ''').replace('\n'''#필요 옵션 추가
            data = data.upper()
 
            if not data : #수신되는 데이터가 없다면 계속 첫 수신 상태로 
                continue
 
        except Exception as e:
            pass
 
if __name__ == '__main__':
 
    loar_receiver()
 
 
cs