* gpio 명령은 setuid 프로그램으로 설치되도록 만들어져 있기 때문에 일반 사용자가 sudo 명령 없이 (또는 root 권한 없이) 실행할 수 있다.
gpio 프로그램을 사용하면 GPIO 핀을 제어하는것 뿐 아니고 다음의 기능들을 수행할 수 있다.
* /sys/class/gpio 인터페이스를 통한 핀들의 export/unexport
* /sys/class/gpio 인터페이스를 통해 edge-trigger 인터럽트를 활성화
* SPI, I2C 모듈을 로드하여 read/write
* SPI 버퍼 사이즈나 I2C 속도를 설정
* Gertboard DAC로 값 출력
* Gertboard ADC 값 입력
* Raspberry Pi 보드 하드웨어 리비젼 확인
기본 사용법
$ gpio -v
버젼을 출력한다
$ gpio -g ...
-g 플래그를 사용하면 핀 번호를 wiringPi의 핀 번호 대신 BCM_GPIO 핀 번호로 인식하게 함
표준 입/출력 명령
$ gpio mode <pin> in/out/pwm/up/down/tri
핀의 모드를 설정한다. 설정 가능한 모드는 입력(in), 출력(out), PWM(pwm)이고 추가로 내부 저항의 풀업(up), 풀다운(down), Tri-state(tri) 설정이 가능하다.
$ gpio write <pin> 0/1
핀의 출력 레벨을 HIGH(1) 또는 LOW(0)으로 설정한다.
$ gpio read <pin>
핀의 레벨을 읽어 화면에 출력해준다. LOW면 '0', HIGH면 '1'이 출력된다.
$ gpio readall
정상적으로 억세스 가능한 모든 핀들을 읽어 테이블 형태로 핀 번호(wiringPi 번호 및 BCM_GPIO)와 모드, 현 입력값을 화면에 출력해 준다.
모듈 로드 명령
$ gpio load spi [buffer size in KB]
SPI 커널 모듈을 로드하고 옵션으로 내부 버퍼 사이즈를 KB 단위로 설정한다. 디폴트 사이즈는 4KB이고 거의 대부분의 경우 충분한 크기이다.
/dev/spi* 엔트리는 gpio 프로그램을 사용하는 사람이 소유한것으로 설정되기 때문에 다음 프로그램을 실행할 때 root 권한이 필요하지 않다.
$ gpio load i2c [baud rate in Kb/sec]
I2C 커널 모듈을 로드하고 옵션으로 Kb/sec 단위로 통신속도를 지정한다. 디폴트는 100Kb/sec이다.
/dev/i2c* 엔트리는 gpio 프로그램을 사용하는 사람이 소유한것으로 설정되기 때문에 다음 프로그램을 실행할 때 root 권한이 필요하지 않다.
/sys/class/gpio 모드 명령
$ gpio export <pin> in/out
주어진 핀 번호(BCM_GPIO 핀 번호)를 input 또는 output으로 export한다.
$ gpio unexport <pin>
주어진 핀 번호의 export를 제거한다.
$ gpio unexportall
/sys/class/gpio의 모든 export를 제거한다.
$ gpio exports
/sys/class/gpio 인터페이스를 통해 export 된 모든 gpio 핀의 목록과 모드를 화면에 출력한다.
$ gpio edge <pin> rising/falling/both/none
주어진 핀의 인터럽트 트리거를 활성화 시킨다.
주의) sys 모드 명령의 핀 번호는 항상 BCM_GPIO 핀 번호이다.
예제
$ gpio mode 0 out
$ gpio write 0 1
위의 명령은 wiringPi 핀번호 0번 핀을 출력으로 설정하고 출력값을 HIGH로 설정한다.
$ gpio -g mode 0 in
$ gpio -g read 0
위의 명령은 BCM_GPIO 핀번호 0번을 입력으로 설정하고 핀의 입력값을 읽는다.
Internal pull up/down
GPIO 핀은 내부 풀업/풀다운 저항을 가지고 있어 핀이 입력모드인 경우 소프트웨어로 어떤 저항을 사용할 지 제어할 수 있다.
$ gpio mode 0 up
$ gpio mode 0 down
$ gpio mode 0 tri
위의 명령은 각각 순서대로 WiringPi 0번 핀의 저항을 풀업, 풀다운, 둘 다 사용하지 않는걸로 설정한다.
댓글 없음:
댓글 쓰기