?>

Hard Copy World

HCW

Raspberry Pi

Home > Learning >

Raspberry Pi

라즈베리 파이 Serial 통신 설정 및 사용법 (python)

페이지 정보

작성자 하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일15-04-09 14:57 조회19,398회 댓글4건

본문

아두이노에 연결하던지 혹은 다른 여러가지 용도로 GPIO - Serial 핀을 사용하는 경우 미리 사용을 위한 설정이 필요합니다.

 

SERIAL 통신 활성화 과정

 

/etc/inittab 파일 수정

  • sudo nano /etc/inittab
  • 아래 내용을 주석처리
  • #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

 

/boot/cmdline.txt 파일 수정

  • sudo nano /boot/cmdline.txt

내용 중 “console=ttyAMA0,115200 kgdboc=ttyAMA0,115200″ 부분을 삭제

  • dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait

수정하면 아래처럼 됨.

  • dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait

 

Linux dynamic device management 설정 수정

  • sudo nano /etc/udev/rules.d/85-paperduinopi.rules

아래 내용을 추가

  • KERNEL=="ttyAMA0", SYMLINK+="ttyS0",GROUP="dialout",MODE:=0666

 

재부팅

  • sudo shutdown - r now

 

참고!! 보다 상세한 내용을 아래 링크에서 구하실 수 있습니다.

 

 

아두이노 개발환경 설치

 

Serial 통신을 위한 준비가 끝났습니다. 아두이노 개발환경을 설치하고 싶은 경우 아래 링크의 내용을 그대로 따라하면 됩니다.

http://www.hardcopyworld.com/gnuboard5/bbs/board.php?bo_table=lecture_rpi&wr_id=3

 

 

 

PYSERIAL 라이브러리를 이용한 파이썬 예제

 

파이썬에서 serial 포트 제어하게 해주는 py-serial 라이브러리 설치

  • sudo apt-get install python-serial

 

pyserial 예제파일 만들기

  • nano pyserial_test.py

 

아래와 같이 소스코드 입력

import serial
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
ser.open()
 
ser.write("testing")
try:
    while 1:
        response = ser.readline()
    print response
except KeyboardInterrupt:
    ser.close()

 

예제파일을 실행해보죠.

  • python pyserial_test.py

 

실행 후 serial로 연결된 장치에서 문자를 보내보세요. (줄넘김 문자 포함해서) 받은 메시지가 콘솔에 표시되면 정상 동작하는 겁니다.

만약 pyserial_test.py 실행했을 때 아래와 같은 에러가 난다면...

Traceback (most recent call last):
  File "pyserial_test.py", line 1, in <module>
    import serial
ImportError: No module named serial

이건 라이브러리가 제대로 설치되지 않아서입니다.

pyserial 소스코드를 직접받아 설치해야 합니다. 아래 사이트에서 최신 pyserial을 받습니다. (pyserial-2.7.tar.gz)

https://pypi.python.org/pypi/pyserial#downloads

 

다운로드 받은 파일을 라즈베리 파이에 업로드 합니다. 그리고 파일이 있는 디렉터리로 이동하고 압축을 풀어줍니다.

  • $ tar -xzf pyserial-2.6.tar.gz

명령어로 압축풀기 귀찮으시면 미리 압축 풀어서 업로드해도 됩니다.

이제 직접 설치

  • $ sudo python setup.py install

 

다시 pyserial_test.py 실행해보시면... 이제 라이브러리를 찾지 못해서 import 과정 에러가 나지는 않을 것입니다.

  • sudo python pyserial_test.py

 

 


하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물

모든 전통이 한 때는 오해를 면치 못했다. 마찬가지로 모든 아이디어는 한 때는 비웃음을 면치 못했다. -홀브룩 잭슨 ::::: 느닷없이 떠오르는 생각이 가장 귀중한 것이며, 보관해야할 가치가 있는 것이다. -베이컨 ::::: 미리 숙고하면 힘든 일도 그저 실행에 옮기는 순간 쉬워진다. - 로버트 M. 피어식

추천 0
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

하드카피님의 댓글

하드카피 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

라즈베리 파이 UART 설정 방법
http://leaqua.mulple.com/blog/%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8%EC%99%80-%EB%9D%BC%EC%A6%88%EB%B2%A0%EB%A6%AC%ED%8C%8C%EC%9D%B4%EC%9D%98-uartserial-%ED%86%B5%EC%8B%A0/
파이썬 hex 코드로 출력
http://stackoverflow.com/questions/12214801/print-a-string-as-hex-bytes
pyserial 참고 예제
http://programmingadvent.blogspot.kr/2012/12/raspberry-pi-uart-with-pyserial.html

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

라즈비안 JESSIE 버전 이후로는 systemd 가 적용되어서 완전히 틀려졌을겁니다;;; systemd 로 검색하셔서 대체하는 방법들을 찾으셔야 할 것 같습니다.