본문 바로가기

라즈베리파이

Raspberry Pi GPIO 와 wiringPi 라이브러리

반응형


Raspberry Pi GPIO 와 wiringPi 라이브러리

라즈베리파이의 GPIO 활용법을 알아보자. 사용 언어는 C 언어이다. 개발환경은 하드웨어적으로는 라즈베리파이 모델B 버전2 512RAM 환경에, 소프트웨어적으로는 라즈베리파이의 공식 OS라고도 할 수 있는 데비안 리눅스계열의 Raspbian “wheezy”의 최신버전을 사용한다. 또한, 사용되는 언어로는 C언어를 이용할 생각이다. 컴파일러는 Raspbian 운영체제에 기본적으로 설치되어 있는 gcc 컴파일러를 사용한다.


실습을 하기에 앞서 필수적인 GPIO 제어프로그램에 대해 알아보자. 가장 “Gordons Projects” 라는 블로그를 운영하는 곳에서 C언어를 지원하는 “wiringPi” 라이브러리를 이용할 예정이다. 자세한 내용과 사용법이 필요하다면 다음의 사이트를 참조하기 바란다. http://www.wiringpi.com/


(1) wiringPi  설치


Raspberry Pi에 사용되는 BCM2835를 위한 C로 작성된 GPIO access library이다. wiringPi 라이브러리는 GNU LGPLv3 license에 따라서 사용하거나 변경이 가능하다. C와 C++로 사용 가능하지만, 적절한 wrapper를 사용하여 다른 언어에서도 사용 가능하도록 개발되었다. 아두이노 시스템에 익숙한 사용자를 위해 설계되어 사용법도 비슷하다. Raspberry Pi GPIO 특징은 아래와 같다.


- 40핀 범용 (General Purpose Input/Output , GPIO) 커넥터(P1)를 가짐 

신호와 버스로 구성 

8개의 범용 디지털 I/O 핀을 가짐 : 입력 혹은 출력 모드로 프로그래밍 설정 가능 (→ 이러한 핀 중 1개(GPIO_1)은 PWM 출력으로 설정 가능) 

추가적으로 2-wire I2C interface와 4-wire SPI interface(2개의 선택 신호, 총 5-핀 사용), 그리고 직렬 UART(serial UART)용 2개의 핀을 갖고 있음. 

Raspberry Pi (Revision 2)는 별도의 커넥터(P5)에 4개의 추가의 GPIO 라인을 갖고 있음 (단, P5 connector는 납땜을 필요로 함 ). 

I2C, SPI 와 UART 인터페이스는 자신의 버스 모드로 사용하지 않을 경우, 범용 I/O 핀으로 사용 가능 (→ P1 connector의 경우 최대 17개( 8 + 2 + 5 + 2 ) I/O pins 가능하고, Revision 2 Pi 보드의 경우 P5 connector에 추가의 4개의 핀 존재


wirringPi 라이브러리를 사용하기 위한 wiringPi 설치 방법은 아래와 같다.


1) 일단, 라즈베리파이의 업데이트 및 업그레이드를 실시한다.


$sudo apt-get update

$sudo apt-get upgrade


2) 소스관리툴 git 를 다운로드한다.

(오픈소스 https://github.com/WiringPi/WiringPi 의 소스를 체크아웃하기 위함)


$sudo apt-get install git-core


 3) “wiringPi” 프로젝트를 통째로 받아온다.


$git clone git://git.drogon.net/wiringPi


 4) 빌드 및 설치를 진행한다.


$cd wiringPi

$sudo ./build


 5) 설치가 잘 되었는지 아래의 명령어로 확인해 본다.


$gpio -v 

$gpio readall


위 두명령어를 사용한 화면을 아래에 나타낸다.


pi@raspberrypi ~ $ gpio -v

gpio version: 2.26

Copyright (c) 2012-2015 Gordon Henderson

This is free software with ABSOLUTELY NO WARRANTY.

For details type: gpio -warranty


Raspberry Pi Details:

  Type: Model B+, Revision: 1.2, Memory: 512MB, Maker: Sony


설치가 제대로 되었는지 확인해본다. pi@raspberrypi ~ $ gpio readall 명령을 실행하면





위와 같은 화면이 나온다면 제대로 설치가 된것이다. 여기서 중요한 점은 맨 상단의 테이블 컬럼 이름에 주의해서 핀을 사용해야 한다는것이다.

BCM : 브로드컴사 cpu 에 할당된 핀번호이다. 일반인들은 잘 사용하지 않지만 데모나 직접 커맨드라인에서 제어할때 사용된다. 


wPi 컴럼에 있는 gpio 핀번호가 우리가 wiringPi 라이브러리를 사용해 프로그램 할때 사용하는 핀번호이다. 


아래는 라즈베리 파이의 GPIO 핀 번호를 나타낸 그림이다.





아래는 너무나 잘 만든 라즈베리 파이 입출력을 그린 그림이다. 이미지 출처는 http://www.pighixxx.com/test/2015/06/raspberry-pi-v2-mod-b-pinout/ 이고 하단에 pdf 파일도 다운받을 수 있도록 되어있다.


그림을 클릭하면 큰 원본 이미지 파일을 받을 수 있다. 즐 개발하시라~~



반응형