2015년 4월 22일 수요일

[00067] 파이썬의 pyserial 을 이용해서 아두이노와 통신하기 (1/3)

1. 파이시리얼(pyserial) : 파이썬 시리얼통신 모듈

 먼저 pyserial을 소개하도록 하겠다. pyserial은 시리얼 통신을 하기 위한 파이썬 모듈이다. 만약 winPython 을 사용한다면 pyserial 이 기본으로 설치되어 있다. ( 처음에는 이 사실도 모르다가 따로 설치를 해야 하겠거니 짐작하고 한참을 헤맸었다. ) 따라서 바로 import 하면 사용할 수 있다.  주의할 점은 모듈명은 pyserial이 아니라 그냥 serial 이라는 것이다.

>>> import serial

일단 아두이노를 연결하면 윈도우 장치관리자에서 COM포트 번호를 확인할 수 있다. 아두이노 우노를 연결하고 내 컴퓨터의 예를 보면 아래와 같이 'COM22'번으로 잡혀있다.


먼저 시리얼 통신 객체를 생성하여야하는데 serial 모듈에 있는 Serial 클래스 (즉, serial.Serial 클래스이다.)를 이용하면 된다. 생성자의 정의는 다음과 같다.

class serial.Serial

__init__(
    port=None,
    baudrate=9600,
    bytesize=EIGHTBITS,
    parity=PARITY_NONE,
    stopbits=STOPBITS_ONE,
    timeout=None,
    xonxoff=False,
    rtscts=False,
    writeTimeout=None,
    dsrdtr=False,
    interCharTimeout=None
)

입력 인수들:

  • port - 장치명. 윈도우즈에서는 'COM0', 'COM1' 등이다.
  • baudrate - 보레이트(baud rate) 예를 들면 9600, 115200 등.
  • parity - 패리티비트. FIVEBITS, SIXBITS, SEVENVITS, EIGHTBITS 등이 가능하다.
  • stopbit - 정지비트. STOPBITS_ONE , STOPBITS_ONE_POINT_FIVE , STOPBITS_TWO 등이 가능하다.
  • timeout - 수신 시간 제한 설정
  • xonxoff - 소프트웨어 흐름 제어를 설정
  • rtscts - 하드웨어(RTS/CTS) 흐름 제어 설정
  • dsrdtr - 하드웨어(DSR/DTR) 흐름 제어 설정
  • writeTimeout - 송신 시간 제한 설정
  • interCharTimeout

예외 발생

  • ValueError - 입력 변수값에 오류가 있을 경우 발생
  • SerialException - 시리얼 통신 장치에 오류가 있을 경우 발생

이것을 보면 포트 정도만 지정해 주어도 기본적으로 생성이 되는 것을 알 수 있다. 포트는 'COM22'와 같이 문자열로 넘겨주어야 한다. 포트명을 특정해 주면 즉시 장치와 연결이 open된다. 시리얼통신 장치를 다 사용하였다면 obj.close() 를 호출하여 반드시 닫아주어야 한다.

댓글 없음:

댓글 쓰기