워낙 잘못된 방법이 소개된 글이 많아 고생을 하여 작성.
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)
'Embedded > 라즈베리파이' 카테고리의 다른 글
[RPi] Bash(tty) over Bluetooth (0) | 2019.01.15 |
---|---|
[RPi] DID/디지털 액자로 만들기 (0) | 2017.12.31 |
AWS IoT + Raspberry Pi + Python 사용해보기 (2/3) (4) | 2017.12.19 |
AWS IoT + Raspberry Pi + Python 사용해보기 (1/3) (0) | 2017.12.19 |
[RPi] BLE/iBeacon (0) | 2017.12.16 |