라즈베리파이:시리얼 통신
개요[편집 | 원본 편집]
보통 블루투스 통신모듈을 통해 스마트폰, 노트북을 이용하여 통신한다.
기본 설정[편집 | 원본 편집]
과정 | 설명 | 방법 |
---|---|---|
설정 | 라즈베리파이의 설정을 변경한다. | 라즈베리파이 설정 > 인터페이스 > Serial Port를 Enable로 설정 |
상식 | 라즈베리파이에선 TXD(15), RXD(14) 핀이 시리얼 통신용으로 할당되어 있다. | 아래의 명령을 통하여 장치의 이름을 찾을 수 있다.
ls -l /dev/serial0 그럼 ttyS0와 같은 이름을 얻는데, /dev/ttsS0 를 통해 접근 가능하다. |
기본 사용[편집 | 원본 편집]
과정 | 설명 | 방법 |
---|---|---|
데이터 입출력 | import serial
connected_serial = serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1.0) # timeout은 초단위
connected_serial.close() # 다 쓰고 나면 닫아주자.
data = connected_serial.read() # 데이터를 읽는다. 값이 들어오지 않는다면 timeout시간 후 빈 데이터를 반환한다.
data = data.decode() # 들어온 데이터는 bytes로 들어오기 때문에 디코딩 해주어야 한다.
data = connected_serial.readline() # 데이터를 읽는다. 종료문자 \r\n이 들어오면. 위 코드는 문자열이 오면 한 글자씩 받는다.
connected_serial.write("보넬 데이터".encode()) # 인코드 해서 데이터를 날려야 한다.
| |
데이터 검색 | 문자열 안에 특정 키워드가 있는지. | data.find('문자') # 문자가 있는 위치를 반환하는데, 없으면 -1을 반환한다.
# 주로 다음과 같은 형태로 활용한다.
if data.find('문자') >= 0:
pass
|
SPI 통신[편집 | 원본 편집]
Serial Peripheral Interface. 시리얼 통신을 사용하려면 다음과 같은 과정이 필요하다.
과정 | 설명 | 방법 |
---|---|---|
설정 | 라즈베리파이의 설정을 변경한다. | 라즈베리파이 설정 > 인터페이스 > SPI, I2C를 Enable로 설정(사용하고자 하는 SPI만 설정하면 될듯.) |
리부팅 | 설정을 반영하기 위해. | sudo reboot |
SPI라이브러리 설치 | 설치하고자 하는 위치에서 실행한다. | git clone [./Git://github.com/doceme/py-spidev git://github.com/doceme/py-spidev] |
파이썬에서의 활용 | import spidev
spi = spidev.SpiDev() # 인스턴스 생성.
spi.open(0,0) # 통신 시작.
spi.max_speed_hz = 100000 # 통신속도 설정.
|
I^2C 통신[편집 | 원본 편집]
Inter-Integrated Circuit. 동기식 시리얼 통신. SPI통신에선 슬레이브 기기가 추가될 때마다 통신라인이 필요한 것에 비해, IIC에선 간단하게 많은 기기를 설치할 수 있다. 대신 느리다. 때문에 저속 장치들 사이의 통신에 사용된다.
모든 기기들을 SCL과 SDA핀에 병렬연결해주면 된다.
과정 | 설명 | 방법 |
---|---|---|
설정 | 라즈베리파이의 설정을 변경한다. | 라즈베리파이 설정 > 인터페이스 > SPI, I2C를 Enable로 설정 |
리부팅 | 설정을 반영하기 위해. | sudo reboot |
확인 | /dev/i2c-1 과 같은 답변을 얻었다면 설정이 제대로 된 것. | ls /dev/i2c* |
툴 설치 | 기기를 SCL과 SDA에 연결한 후에
|
sudo apt-get install -y i2c-tools |
파이썬에서의 활용 | 보통 기기를 활용하는 라이브러리를 사용할 때 자동으로 지정하여 읽는데..
라이브러리별로 지정하는 방법이 다르다. |