Odroid 보드에서 Python Serial 이용 방법

codedrawer·2021년 3월 18일
0

Python

목록 보기
2/2

Odroid 보드에서 Serial 포트를 사용하여 통신하는 방법을 알아보자

위 그림과 같이 Odroid 보드는 2개의 UART 및 1개의 USB 포트로 각각 외부와 케이블로 연결되어 있다.

  • USB-OTG 포트의 경우 외부와 USB로 연결
    USB 포트이지만 UART Serial 통신으로 변환하여 사용
  • UART 포트의 경우 USB-UART 케이블로 PC 터미널 로그 용도로 연결
    이 부분은 실제 동작과 무관한 디버깅 목적의 포트
  • UART 포트는 USB-UART 케이블로 외부 제어 보드와 연결

UART Serial로의 변환

USB-OTG 포트를 포함한 모든 포트를 UART Serial 로 동작 시키는 방법은

Odroid 보드는 Linux 기반에서 동작하기 때문에 모든 포트는 Linux Device Driver의 File Descriptor를 알아야 사용이 가능하다. Linux 기반의 HW 포트를 사용하는 장치는 통상 Linux File System /dev/ 경로에서 찾을 수 있다.

UART, USB 포트와 장치간의 관계는 다음과 같다.

따라서 장치를 사용하기 위해서는 알아야 하는 file descriptor 이름은 아래와 같이

  • USB-OTG 포트는 /dev/ttyGS0를 사용한다.
  • UART 포트는 /dev/ttyS0를 사용한다.
  • UART 포트는 /dev/ttyS2를 사용한다.
    Odroid HW의 UART2

이후 Python 어플리케이션은 User Space에서 동작 하므로 권한을 얻어야 한다.

  • ttyGS0의 권한을 얻는 방법은 아래와 같다. 하지만 이 경우는 USB 포트 이므로 UART로 사용하기 위해서는 Serial로 사용하기 위한 별도의 명령이 선행되어야 한다.

    # change USB-OTG to serial port 
    sudoPassword = 'odroid'
    command = 'modprobe g_serial'
    os.system('echo %s|sudo -S %s' % (sudoPassword, command))
    
    # need permission to open 
    sudoPassword = 'odroid'
    command = 'chmod 777 /dev/ttyGS0'
    ret = os.system('echo %s|sudo -S %s' % (sudoPassword, command))
  • ttyS0의 권한을 얻는 방법은

    # need permission to open 
    sudoPassword = 'odroid'
    command = 'chmod 777 /dev/ttyS0'
    os.system('echo %s|sudo -S %s' % (sudoPassword, command))
  • ttyS2는 위 ttyS0와 동일하다.

이후부터는 일반적은 Serial 통신처럼 사용하면 된다.

profile
Embedded SW

0개의 댓글