라즈베리파이의 GPIO를 제어하는 wiringPi 라이브러리의 설치 방법
wiringPi 설치
라즈베리 파이의 GPIO를 제어할 수 있는 언어는 C, C++, C#, Python, Java등 매우 다양하게 있다. 그 중에서 제일 많은 사용자들이 있고, 초기부터 최근까지 꾸준이 업데이트가 유지된 wiringPi(Gordon이 개발, GNU LGPLv3 라이선스, 홈페이지 http://wiringpi.com/)를 이용한다.
GPIO 란?
GPIO(General Purpose Input Output)란 하나의 연결 단자를 입력이나 출력으로 고정시키지 않고 선택적으로 사용할 수 있게 융통성을 높인 범용 입출력 단자를 말한다. GPIO 단자를 입력으로 프로그래밍하면 인터럽트 소스로 사용 가능하며, 마찬가지로 일부 GPIO 단자는 프로세서를 휴면 상태에서 깨우는 사건(event)를 생성하기도 한다.
1. 새로운 패키지를 실행하기 전에 꼭 해주어야 할것이 하나 있다. 바로 $sudo apt-get update 이다. 이 명령은 패키지 관리 서버로부터 이용 가능한 프로그램 패키지의 목록을 최신버전으로 업데이트 하는 명령이다.
$sudo apt-get update
2. 다음으로 업데이트 명령어로 갱신된 패키지 목록 중 컴퓨터에 설치된 프로그램이 업데이트 되었으면 새로운 버전으로 설치하게 해주는 작업이다. 사용하는 OS 배포버전에 따라 많은 업데이트가 이루어진 경우도 있으며 이러한 경우에는 시간이 오래 걸릴 수 도 있다.
$sudo apt-get upgrade
3. 소스관리 툴인 git를 다운로드와 함께 설치한다.
$ sudo apt-get install git-core
4. git를 이용하여 “wiringPi” 라이브러리를 다운로드하고 빌드한다.
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build
설치가 잘 되었는지 다음의 명령어로 확인한다.
$ gpio -v
pi@raspberrypi ~ $ gpio readall
+-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5V | | |
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |
| 4 | 7 | GPIO. 7 | IN | 0 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 |
| | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 |
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 1 | IN | GPIO. 1 | 1 | 18 |
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 1 | IN | GPIO. 4 | 4 | 23 |
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |
| 10 | 12 | MOSI | ALT0 | 0 | 19 || 20 | | | 0v | | |
| 9 | 13 | MISO | ALT0 | 0 | 21 || 22 | 1 | IN | GPIO. 6 | 6 | 25 |
| 11 | 14 | SCLK | ALT0 | 0 | 23 || 24 | 1 | ALT0 | CE0 | 10 | 8 |
| | | 0v | | | 25 || 26 | 1 | ALT0 | CE1 | 11 | 7 |
| 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 |
| 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | |
| 6 | 22 | GPIO.22 | IN | 0 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 |
| 13 | 23 | GPIO.23 | IN | 1 | 33 || 34 | | | 0v | | |
| 19 | 24 | GPIO.24 | IN | 1 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 26 | 25 | GPIO.25 | IN | 1 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |
| | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+--B Plus--+---+------+---------+-----+-----+
pi@raspberrypi ~ $
$ gpio readall
명령어는 현재 GPIO 할당된 핀 네임, 모드, 핀 상태값을 모두 보여준다. 테이블 상단의 BCM 열의 번호가 회로도에 나와 있는 GPIO 핀 번호를 나타내고, 옆의 wPi 열의 핀 번호가 wiringPi 라이브러리를 사용할 때의 실제 번호이다. 프로그램으로 구현시 우리는 wPi 의 핀 번호를 사용하게 된다. BCM 번호는 브로드컴사가 할당한 핀 번호로 알고 있으면 된다. 파이선에서 프로그램 개발하거나 wiringPi 라이브러리를 사용하지 않으면 BCM 번호를 이용한다.
'라즈베리파이' 카테고리의 다른 글
라즈베리파이3 B+ 에 대한 좋은 자료 (0) | 2019.01.18 |
---|---|
Raspberry Pi GPIO 와 wiringPi 라이브러리 (0) | 2018.11.22 |
GPIO 충돌, I2C 사용할 때 GPIO와 충돌해결 - wire, w1_gpio, w1_therm (0) | 2018.11.22 |
라즈베리파이 수동부저 모듈사용하여 음악 연주하기 (0) | 2018.11.22 |
라즈베리파이란? (0) | 2018.11.01 |