라즈베리파이:시리얼 통신

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동

틀:라즈베리파이

  1. 라즈베리파이:개요
    1. 틀:우분투
    2. 라즈베리파이:무선랜
    3. 라즈베리파이:블루투스
  2. 라즈베리파이:파이썬 제어
  3. 라즈베리파이:하드웨어
    1. 라즈베리파이:GPIO
      1. 라즈베리파이:시리얼 통신
    2. 라즈베리파이:카메라
    3. 라즈베리파이:서보모터
    4. 라즈베리파이:모터

개요[편집 | 원본 편집]

보통 블루투스 통신모듈을 통해 스마트폰, 노트북을 이용하여 통신한다.

기본 설정[편집 | 원본 편집]

과정 설명 방법
설정 라즈베리파이의 설정을 변경한다. 라즈베리파이 설정 > 인터페이스 > 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에 연결한 후에

i2cdetect -y 1을 명령하면 연결된 주소가 나온다.

sudo apt-get install -y i2c-tools
파이썬에서의 활용 보통 기기를 활용하는 라이브러리를 사용할 때 자동으로 지정하여 읽는데..

라이브러리별로 지정하는 방법이 다르다.