임베디드 시스템/라즈베리파이

라즈베리파이 (3) - Raspberry Pi에 GPIO 설치하기 (WiringPi)

달서비 2022. 5. 18. 00:54

라즈베리파이의 진정한 기능은 GPIO 핀을 통하여 다른 모듈들을 제어할 수 있는 점입니다. 이번에는 wiringPi를 통하여  GPIO를 제어하는 방법을 알아보겠습니다. 

 

WiringPi라이브러리의 사이트는 아래에 첨부합니다. (꼭 한번 읽어보세요.)

http://wiringpi.com/

 

WiringPi

WiringPi is a PIN based GPIO access library written in C for the BCM2835, BCM2836 and BCM2837 SoC devices used in all Raspberry Pi. versions. The source code is not publicly available but may be made available to those who wish commercial support. It is de

wiringpi.com

 

아래의 명령어를 터미널에서 차례대로 치면 설치됩니다.

sudo apt-get install git-core
sudo git clone https://github.com/WiringPi/WiringPi 
cd WiringPi
sudo ./build

간단하게 요약하면 WiringPi패키지를 설치 후 build를 통하여 저장합니다. 

build까지 완료하면 해당 텍스트가 나온다

다운로드를 완료하고 아래의 명령어에 핀맵이 나오면 완료하였습니다.

gpio readall

라즈베리파이3B의 핀맵

이렇게 설치하면 WiringPi가 설치 완료된 것을 알 수 있습니다.

 

예제 (C언어)

제대로 돌아가는지 확인하기 위하여 간단하게 LED를 작동하는 예제를 만들어보겠습니다.

LED 구성 예제

저는 GPIO 보드로 한눈에 보이게끔 하였는데 없으신 분은 핀맵에서 해당 위치를 찾아서 위와 같이 회로를 구성하면 됩니다. 아래의 소스코드를 치고 컴파일을 해서 LED가 깜빡깜빡하면 완료되었습니다.

 

test_led.c 파일의 소스코드입니다.

#include <stdio.h>
#include <wiringPi.h> 
#define LED 21                  // BCM 기준의 - GPIO 21

int main()
{
 if(wiringPiSetupGpio()==-1)	// GPIO설정
	return 1;

 pinMode(LED, OUTPUT);          // 출력으로 설정
 
 while(1)
  {
    digitalWrite(LED, 0);       // LED off
    delay(1000);
    digitalWrite(LED, 1);       // LED on
    delay(1000);
  }
}

 

이제 컴파일하고 실행하면 됩니다.

gcc –o  ./result ./test_led.c  -l wiringPi 
./result

 

라즈베리파이에 다양한 통신 규격(방식)들이 있는데 GPIO부터 하나씩 하나씩 시간이 나면 정리하겠습니다.