젯슨 나노 - 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로 작성하면 다음과 같습니다.
# 파이썬 패키지 사용
이전에 jetpack을 설치하셨다면 안하셔도 될겁니다.
다운은 다음과 같이 진행합니다.
설치후에 사용법은 다음과 같습니다.
/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/
나노에 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/
댓글
댓글 쓰기