젯슨 나노 - GPIO

jetson nano의 설치를 하지 못하신 분들은 여기를 참고하시면 됩니다.

나노에 LED를 제어하는 방법을 알아보려 합니다.
GPIO의 사용법?을 알아보는 겁니다. LED는 다음과 같이 연결해줍니다.

LED의 + -> 7 pin
LED의 - -> 6pin(사이에 저항 330Ω을 연결합니다.)


나노는 라즈베리와 달리 핀 옆에 번호가 쓰여있어 연결하기엔 쉽습니다.


저는 7번핀에 연결했습니다 위 표를 보시면 7번은 GPIO216입니다.
GPIO216은 다음과 같은 방법으로 정해집니다.

GPIO-NUMBER = (GPIO_GROUP-NUMBER-1)*32 + GPIO번호

예를들어 GP6_24가 있다면 (6-1)*32 + 24 = 184입니다. 이건 회로도를 보셔야 확인이 가능합니다. 그런데 직접제작하는 것이 아니라 나노를 사용하시는 거라면 위에 게시된 핀으로 하시면 됩니다.

# 우분투에서 사용을 하려면 sys-fs에 노드를 만들어야 합니다.
echo 216 > /sys/class/gpio/export
# 핀을 아웃으로 설정합니다.
echo out > /sys/class/gpio/gpio216/direction
# 값 입력
echo 1 > /sys/class/gpio/gpio216/value
echo 0 > /sys/class/gpio/gpio216/value

이러한 과정을 C로 작성하면 다음과 같습니다.


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define LED_GPIO_DIR "/sys/class/gpio"

int main(){
 int  led_gp,value, i;
 char buff[256];
 FILE *led_gpio;

 scanf("%d",&led_gp);

 snprintf(buff,sizeof(buff),"%s/export",LED_GPIO_DIR);
 led_gpio = fopen(buff,"w");
 fprintf(led_gpio,"%d\n",led_gp);
 fclose(led_gpio);

 snprintf(buff,sizeof(buff),"%s/gpio%d/direction",LED_GPIO_DIR,led_gp);
 led_gpio = fopen(buff,"w");
 fprintf(led_gpio,"out\n");
 fclose(led_gpio);

 snprintf(buff,sizeof(buff),"%s/gpio%d/value",LED_GPIO_DIR,led_gp);
 led_gpio = fopen(buff,"w");
 setvbuf(led_gpio,NULL,_IONBF,0);
  
 value = 0;
 for(i=0;i<=10;i++){
  fprintf(led_gpio,"%d\n",value);
  sleep(1);
  value = !value;
 }
 fclose(led_gpio);

 snprintf(buff,sizeof(buff),"%s/unexport",LED_GPIO_DIR);
 led_gpio = fopen(buff,"w");
 fprintf(led_gpio,"%d\n",led_gp);
 fclose(led_gpio);

 return 0;
}

# 파이썬 패키지 사용

이전에 jetpack을 설치하셨다면 안하셔도 될겁니다.
다운은 다음과 같이 진행합니다.

$ sudo apt install python3-pip
$ sudo pip3 install Jetson.GPIO

설치후에 사용법은 다음과 같습니다.


$ python3
>>> import Jetson.GPIO as GPIO
>>> GPIO.setmode(GPIO.BOARD)
>>> GPIO.setup(7, GPIO.OUT)
>>> GPIO.output(7, GPIO.HIGH)
>>> GPIO.output(7, GPIO.LOW)

/sys/에 접근 했을 때는 chip에 있는 GPIO의 번호로 동작하지만 파이썬으로 했을 경우 보드에 기재된 번호로 하게 됩니다.

(참고)
http://forum.falinux.com/zbxe/index.php?document_srl=832795&mid=lecture_tip
https://ahnbk.com/?p=638
https://www.jetsonhacks.com/2019/06/07/jetson-nano-gpio/



댓글

이 블로그의 인기 게시물

파이썬을 이용한 image to pdf 변환 프로그램