라즈베리 파이 SERIAL 통신 설정 및 사용법 (PYTHON)
아두이노에 연결하던지 혹은 다른 여러가지 용도로 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://spellfoundry.com/sleepy-pi/setting-arduino-ide-raspbian/
아두이노 개발환경 설치
Serial 통신을 위한 준비가 끝났습니다. 아두이노 개발환경을 설치하고 싶은 경우 아래 링크의 내용을 그대로 따라하면 됩니다.
https://www.hardcopyworld.com/?cat=50
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