GPIO는 라즈베리파이와 외부 하드웨어의 입출력을 위한 인터페이스 이다. 라즈베리파이는 ARM기반 BCM2835/2836을 CPU로 사용하는데 wiringPi는 이 CPU의 GPIO의 사용을 위한 C언어 기반 라이브러리 이다.
리눅스는 모든 디바이스가 파일로 인식이 되고 GPIO또한 하나의 파일이므로 open( ),write( ), read( )같은 시스템 라이브러리로 제어가 가능하지만 wiringPi를 이용하면 더 쉽고 직관적으로 제어할 수 있다. 좀 더 상세한 내용은 아래 링크에서 확인 할 수 있다.
1. wiringPi 설치
먼저 아래 명령어를 차례대로 실행해서 git에서 패키지를 내려 받은 후에 설치하자.
$ sudo apt-get install git-core
$ sudo apt-get update
$ sudo apt-get upgrade
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ git pull origin
$ ./build
2. wiringPi 설치 버전 확인
아래 명령으로 버전을 확인 해 보자.
$ gpio -v
정상적으로 설치가 됬다면 아래와 같이 버전정보를 확인 할 수 있다.
3. GPIO 핀번호 확인
wiringPi의 GPIO 핀번호는 기본적인 라즈베리파이의 GPIO 핀번호와 다르다. 아래 명령어로 핀 번호를 확인 할 수 있다.
$ gpio readall
다음 화면과 같이 확인 할 수 있다. wpi부분이 번호 이고 name이 그 용도이다.
4. 회로도
5. wiringPi 함수
5.1 GPIO값의 초기범위 설정
라즈베리파이에서는 1번(BCM 18) 핀만 PWM출력을 지원한다. PWM은 Pulse Width Modulation (펄스 폭 변조)의 약어로 GPIO는 디지털 신호를 가지기 때문에 PWM으로 아날로그 신호를 제어를 해야 한다. 모터는 연속된 값으로 움직이는 아날로그 신호이다. softPwmCreate (1,0,200)는 1번 핀의 출력을 200단계로 구성된 20ms길이의 주기를 만든다.(200 * 100 = 20000 microseconds)
int softPwmCreate(int pin, int initialValue, int pwmRange);
5.2 PWM 값 변경
value 매개변수로 각도를 조절 할 수 있다.
void softPwmWrite(int pin, int value);
6. 서보모터 구동 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <wiringPi.h> #include <stdio.h> #include <softPwm.h> #define PIN 1 int main() { if(wiringPiSetup() == -1) return 1; softPwmCreate(PIN ,0, 200); softPwmWrite(PIN ,5); // - 방향 delay(600); //600ms 동안 softPwmWrite()상태가 지속됨 softPwmWrite(PIN ,25); //+ 방향 delay(600); return 0; } | cs |
7. wiringPi 코드 빌드와 실행
위의 코드를 빌드하기 위해선 wiringPi 라이브러리가 필요하다. 아래와 같이 소문자 L을 붙여서 라이브러리를 링크시킨다.
$ gcc -o test test.c -lwiringPi
8. 실행 동영상
'Raspberry' 카테고리의 다른 글
[feeder] screw와 서보모터 연결 (0) | 2017.06.29 |
---|---|
Gstreamer 파이프라인 테스트 (0) | 2017.06.20 |