2017 멀티캠퍼스/Raspberry Pi

#7 라즈베리파이 I2C 통신

꿈꾸는어린이 2018. 1. 14. 20:30

//

일시 : 2018.01.11 14:00 ~ 18:00

내용 : I2C 조도센서, 온습도센서

부저, 초음파, 소리내기 집에서 해보기

//


I2C 통신 (Inter Integrated Circuit)

  • Inter Integrated Circuit

  • I-Square-C 라고도 부르며 필립스에서 제안한 통신 방식

  • 두 개의 신호(SDA, SCL)를 사양하는 양방향 직렬 통신 방식

  • 하나의 Master, 다수의 Slave

  • 일반적으로 7-bits 주소 사용. 하나의 I2C 버스에 연결되는 개별 장치의 식별 용도로 활용

  • 세계 표준 프로토콜

  • cpu <=> 모듈


  • 두 개의 선으로 여러 개의 디바이스를 제어하기 위한 인터페이스 (1:N 통신)

    하나의 Master와 다수의 Slave

    -> I2C 버스를 통해 많은 외부 장치들과 연결 O

  • SDA(Serial DAta)와 SCL(Serial CLock) 두가지의 핀 사용

    • SDA : 데이터를 전송하기 위한 신호(데이터 입출력)

      write동작에서는 Master -> Slave

      read 동작에서는 Slave -> Master 양방향 신호

    • SCL : 마스터와 슬레이브를 동기화하는 역할(외부 장치와 통신할 때 신호 동기화)

      Master -> Slave 단방향 신호

    => SDA와 SCL의 조합으로 여러 개의 디바이스를 제어

  • 하나의 마스터칩이 동일 선상의 여러 개의 슬레이브칩 통신을 관리할 수 있음

  • 슬레이브주소를 통해 통신 O, Slave address를 보내 맞는 Slave가 응답

  • 마스터는 SCL을 통해 버스를 제어, 슬레이브는 마스터가 제어하는대로 SDA를 통해 데이터를 입출력

  • 라즈베리파이(마스터) - 각종 센서, 외부 입출력 장치(슬레이브)

  • 양방향 데이터 전송을 지원하므로 SDA, SCL은 open drain(high신호를 줄 수 없고 low신호만 보낼 수 있음)으로 외부 pull-up 저항 필요

  • SDA, SCL 두 개의 신호에 다수의 장치가 부착되어 Master의 제어에 따라 데이터 송,수신.

  • 디바이스 주소는 대부분 7bit 주소 체계를 사용하며 동일한 Line에 연결된 다수의 장치를 식별하기 위한 목적으로 사용

pull-up 저항 : +쪽(3.3v)에 설치하는 저항. 제대로 된 high값을 보내기 위해 플로팅 현상(low인지 high인지 알 수 없는 불안정한 상태)을 해결하기 위함. 풀업 저항일 때 스위치가 off이면 high상태로 입력값에 혼동이 없다.

  # I2C 유틸리티 및 라이브러리 설치
sudo apt-get install python-smbus i2c-tools

# 재부팅
sudo reboot






<외부 블로그 참조>

I2C 자세히 알아보기

I2C 자세히 알아보기