본문 바로가기

& 프로그래밍/& Linux

라즈베리파이(GPIO)

라즈베리파이에는 GPIO라는 장치를 제공하여 주변에 다양한 센서들을 연결하여 제어할 수 있도록 해준다.

이번에는 이 GPIO를 이용하는 방법과 예제를 다뤄보고자 한다

 

GPIO 인터페이스는 라즈베리파이 가장자리에 위치한 핀이다. 여기에 원하는 장치를 연결해서 구동시키도록 설정해주는 것인데, 각 핀마다 가지고 있는 고유의 역할이 있다. 아래 사진을 통해 핀num, 역할을 확인하고 이 구조는 암기가 어렵다면 한장 출력해서 두고두고 보면서 활용하면 도움이 된다.

출처: https://wikidocs.net/3172

자, 각 GPIO핀이 하는 역할을 확인했다면, 이제 예제를 통해 라즈베리파이 콘솔에서 GPIO를 제어해보도록 하겠다.

 

1. GPIO 폴더로 이동하여 어떤 파일이 존재하는지 확인해본다

cd /sys/class/gpio
ls -l

ls를 통해 내용물을 보니 깔끔하다. 이 상태에서 gpio17번 핀을 초기화해서 LED를 켜보도록 할거다

echo 17 > /sys/class/gpio/export
ls -l

gpio 17번 핀을 초기화하니 위 사진처럼 gpio 17핀이 생성되었다. 이건 gpio17에 대한 심볼릭 링크로, 이제 이녀석을 통해 17번핀을 제어한다.

echo out > /sys/class/gpio/gpio17/direction

gpio17핀 모드설정을 out값으로 지정주었더니 위 사진과 같이 derection파일에 out값이 설정되있는걸 볼 수 있다.

 

gpio17핀은 digital핀으로 설정되어 있기에 0, 1값을 넣어서 LED를 켜주도록 설정해보자

echo 1 > /sys/class/gpio/gpio17/value

1값을 넣었더니 바로 LED에 불이 들어왔다!

반대로 LED를 끄는 방법은 value값에 0을 넣어주면 된다

echo 0 > /sys/class/gpio/gpio17/value

자, 예제를 다뤄보았으니 지금까지 설정한 값들을 모두 초기화시켜서 다음 과정에서 활용할 수 있도록 설정해주도록 하자

cd /sys/class/gpio
echo 17 > /sys/class/gpio/unexport
ls -l

위 코드처럼 17번핀을 unexport해주면 이전에 생성되었던 심볼릭 링크가 삭제되는 걸 볼 수 있다.

 

위 일련의 과정은 사실 따지고 보면 굳이? 이렇게? 라는 생각이 들 정도로 번거롭고 귀찮은 작업이기 하나... 학습목적상 이러한 과정이 진행된다~ 라고 이해하고 짚고 넘어가는 수준으로 생각하면 좋을 것 같다