라즈베리파이에는 26개의 범용 I/O 핀(GPIO)이 있다. I2C, SPI, UART 등의 통신이나 PWM 신호도 사용할 수 있다. 여기서는 이들 중 I2C 통신을 실험한다.
라즈베리파이의 I2C 통신용 라이브러리를 인스톨하고 키보드로 1줄만 입력하면 I2C 디바이스를 기동할 수 있다.
최근에는 I2C의 센서나 LCD 모듈 등 구할 수 있는 디바이스도 풍부하다. I2C는 SDA(데이터)와 SCL(클록)이라는 2개 선으로 통신하고 추가 접속도 가능하다.
여기서는 ① 9축(가속도, 각속도, 지자기) 센서, ② 대기압 센서, ③ LCD 모듈과 같은 3가지 I2C 디바이스를 기동한다. 키보드로 1줄을 입력하고 동작을 시험한 뒤, 장치로 사용할 수 있도록 스탠드 얼론으로 기동하는 프로그램을 제작한다.
라즈베리파이에 센서 IC와 키보드, HDMI 모니터를 접속하고 리눅스의 커맨드 입력으로 센서 IC를 기동시킨다. 기동시킨 결과는 16진수로 디스플레이에 표시된다.
센서 IC의 데이터를 물리량으로 변환해 표시하는 C언어 프로그램을 작성해 스탠드 얼론으로 기동한다. 결과는 HDMI 모니터나 LCD 모듈로 표시된다. I2C 디바이스는 범용 I/O 핀에 접속한다.
리눅스의 I2C 조작용 라이브러리 i2ctools를 사용하면 키보드에서 커맨드를 입력해 I2C에 액세스할 수 있다. 통신 프로토콜이나 클록의 드라이브 등은 모두 라즈베리파이의 OS 리눅스(라즈비안) 디바이스 드라이버가 도움을 준다.
유저는 디바이스 파일(/dev/i2c-*)을 키보드로 읽기/쓰기하면 I2C를 조작할 수 있다. 또한 C언어로 액세스 제어용 프로그램을 작성해 사용할 수도 있다.
- CQ출판사 『트랜지스터기술』
이 기사는 월간 전자기술 기술 특집 <전자공작용 소형 PC, 라즈베리파이를 체험해 보자 - I2C 통신 애플리케이션 동작 … 엑셀 감각으로 IC와 액정을 동작시킨다>의 요약글입니다.
정리 : 김희성 기자 (npnted@hellot.net)