워낙 잘못된 방법이 소개된 글이 많아 고생을 하여 작성.

Raspberry PI Zero W, Jessie 기준이다.


TX, RX 핀은 구글에 검색하면 이미지가 많이 나오니 핀 배열을 참고하자.


검색을 해보면 텍스트 파일을 수정하거나 데몬을 끄고 켜는 등의 작업이 많은데 다 필요없다.


$ sudo raspi-config


Interfacing Options

-> Serial

-> Would you like a login shell to be accessible over serial? <No>

-> Would you like the serial port hardware to be enabled? <Yes>


이렇게만 해주면 boot 설정 변경 등을 알아서 해주며 재부팅이 필요할 경우 재부팅까지 묻는다.


이 후 /dev/ttyS0 파일스트림을 사용하면 된다. /dev/ttyAMA0 이 아님!


블루투스 데몬이나 시리얼 서비스 등등을 바꿔야한다는 글들이 많지만 다 필요없으니 참고.



Python 에서 시리얼 통신

아래 방법 중 하나로 serial 라이브러리 설치


sudo python -m pip install pyserai
sudo apt install python-serial (Python3 의 경우엔 python3-serial)



import serial
ser = serial.Serial('/dev/ttyS0', 9600, timeout=3)

ser.readline().strip().decode('utf-8')
ser.write(b'TEST\n')
ser.write('TEST\n'.encode('utf-8')


serial 변수 생성 이후 open 하고 싶다면,


ser = serial.Serial(timeout=3)
ser.port = '/dev/ttyS0'
while True:
	try:
		ser.open()
		if ser.is_open: break
		time.sleep(1)
	except: pass



참고

class serial.Serial:
	__init__(port=None, baudrate=9600, bytesize=EIGHTBITS, 
		parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, 
		xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, 
		inter_byte_timeout=None, exclusive=None)


+ Recent posts