사용핀 설정
Jetson Nano에서는 40핀 헤더를 다양한 용도로 사용하기 위해 핀의 기능을 설정해야 하는 경우가 있습니다. 이를 위해 NVIDIA에서 제공하는 Jetson-IO 도구를 사용합니다. 이 도구는 GPIO, I2C, SPI, UART 등 특정 기능으로 핀을 설정할 수 있도록 지원합니다.
그림.1   40 헤드핀
Jetson-IO 도구 개요
- **Jetson-IO 도구**는 Jetson Nano의 핀 멀티플렉싱을 간단하게 구성할 수 있는 인터페이스를 제공합니다.
- 40핀 헤더의 핀은 기본적으로 GPIO로 설정되지만, 특정 핀은 I2C, SPI, UART 또는 PWM과 같은 다른 기능으로 사용할 수 있습니다.
- **Jetson-IO는 GUI 및 명령줄 인터페이스를 통해 사용 가능**합니다.
Jetson-IO 도구 설치
Jetson Nano에는 Jetson-IO가 기본적으로 설치되어 있습니다. 설치되어 있지 않다면 다음 명령으로 설치를 확인하고 업데이트할 수 있습니다:
sudo apt update
sudo apt install -y jetson-io
Jetson-IO 실행
Jetson-IO를 실행하려면 다음 명령어를 입력하세요:
sudo jetson-io
Jetson-IO GUI가 실행되며, 여기서 핀 설정을 변경할 수 있습니다.
그림.2   핀설정
핀 설정 단계
1. Jetson-IO 실행
- 위 명령어로 Jetson-IO를 실행하면 GUI 창이 나타납니다.
2. 핀 기능 선택
- GUI에서 "Configure 40-pin Header" 옵션을 선택합니다.
- 사용하려는 기능(I2C, SPI, UART 등)을 활성화합니다.
3. 핀맵 확인
- 활성화된 기능에 따라 40핀 헤더의 핀맵이 자동으로 변경됩니다.
- 필요한 핀과 기능을 확인한 뒤 적용합니다.
4. 구성 저장 및 적용
- "Save and Reboot to Apply" 옵션을 선택합니다.
- 변경 사항은 Jetson Nano가 재부팅된 후 적용됩니다.
명령줄에서 핀 상태 확인
Jetson Nano의 핀 상태는 /sys/kernel/debug/gpio 파일에서 확인할 수 있습니다:
sudo cat /sys/kernel/debug/gpio
Jetson Nano의 핀 기능 목록
Jetson Nano의 40핀 헤더에서 기본적으로 사용할 수 있는 기능은 다음과 같습니다:
1. 주요사용핀
| 핀 번호 | 기본 기능 | 설정 가능한 추가 기능 |
|---|---|---|
| 3 (SDA) | I2C1 SDA | GPIO, I2C |
| 5 (SCL) | I2C1 SCL | GPIO, I2C |
| 7 | GPIO | PWM |
| 8 | UART TX | GPIO, UART |
| 10 | UART RX | GPIO, UART |
| 12 | GPIO | PWM, GPIO |
| 19 (MOSI) | SPI MOSI | GPIO, SPI |
| 21 (MISO) | SPI MISO | GPIO, SPI |
| 23 (SCLK) | SPI SCLK | GPIO, SPI |
| 24 (CE0) | SPI CS0 | GPIO, SPI |
| 26 (CE1) | SPI CS1 | GPIO, SPI |
2. 전체사용핀
| 핀 번호 | 기본 기능 | 설정 가능한 추가 기능 |
|---|---|---|
| 1 | 3.3V Power | - |
| 2 | 5V Power | - |
| 3 | I2C1 SDA | GPIO, I2C |
| 4 | 5V Power | - |
| 5 | I2C1 SCL | GPIO, I2C |
| 6 | GND | - |
| 7 | GPIO | PWM |
| 8 | UART TX | GPIO, UART |
| 9 | GND | - |
| 10 | UART RX | GPIO, UART |
| 11 | GPIO | GPIO |
| 12 | GPIO | PWM, GPIO |
| 13 | GPIO | GPIO |
| 14 | GND | - |
| 15 | GPIO | GPIO |
| 16 | GPIO | GPIO |
| 17 | 3.3V Power | - |
| 18 | GPIO | GPIO |
| 19 | SPI MOSI | GPIO, SPI |
| 20 | GND | - |
| 21 | SPI MISO | GPIO, SPI |
| 22 | GPIO | GPIO |
| 23 | SPI SCLK | GPIO, SPI |
| 24 | SPI CS0 | GPIO, SPI |
| 25 | GND | - |
| 26 | SPI CS1 | GPIO, SPI |
| 27 | I2C0 SDA | GPIO, I2C |
| 28 | I2C0 SCL | GPIO, I2C |
| 29 | GPIO | GPIO |
| 30 | GND | - |
| 31 | GPIO | PWM, GPIO |
| 32 | GPIO | PWM, GPIO |
| 33 | GPIO | PWM, GPIO |
| 34 | GND | - |
| 35 | GPIO | GPIO |
| 36 | GPIO | GPIO |
| 37 | GPIO | GPIO |
| 38 | GPIO | PWM, GPIO |
| 39 | GND | - |
| 40 | GPIO | PWM, GPIO |
3. 주요 기능 요약
-
전원 및 GND 핀:
- 핀 1, 17: 3.3V 출력
- 핀 2, 4: 5V 출력
- 핀 6, 9, 14, 20, 25, 30, 34, 39: GND (접지)
-
I2C 핀:
- 핀 3 (SDA), 5 (SCL): I2C1 인터페이스
- 핀 27 (SDA), 28 (SCL): I2C0 인터페이스
-
SPI 핀:
- 핀 19 (MOSI), 21 (MISO), 23 (SCLK), 24 (CS0), 26 (CS1): SPI 인터페이스
-
UART 핀:
- 핀 8 (TX), 10 (RX): UART 인터페이스
-
PWM 핀:
- 핀 7, 12, 31, 32, 33, 38, 40: PWM 신호 생성 가능
-
GPIO 핀:
- 나머지 핀은 기본적으로 GPIO로 설정되어 있으며, 일부는 I2C, SPI, UART, PWM 등으로 설정 가능합니다.
예제: I2C 핀 활성화
Jetson-IO를 사용하여 I2C 핀을 활성화하는 방법을 설명합니다.
-
Jetson-IO 실행:
sudo jetson-io -
I2C 설정:
- 메뉴에서 "Enable I2C"를 선택합니다.
-
I2C1 또는 I2C2를 활성화합니다.
-
저장 및 재부팅:
-
설정을 저장하고 재부팅합니다.
-
I2C 디바이스 확인: 재부팅 후, 연결된 I2C 디바이스를 확인하려면 다음 명령을 실행합니다:
sudo i2cdetect -y 1
GPIO 핀 제어를 위한 Jetson.GPIO 라이브러리
Jetson Nano에서 GPIO 핀을 제어하려면 Python의 Jetson.GPIO 라이브러리를 사용할 수 있습니다.
Jetson.GPIO 설치
Jetson.GPIO는 기본적으로 설치되어 있지만, 설치되어 있지 않다면 다음 명령으로 설치 가능합니다:
sudo apt install python3-jetson-gpio
GPIO 사용 예제
import Jetson.GPIO as GPIO
LED_PIN = 18
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.output(LED_PIN, GPIO.HIGH) # LED ON
Jetson-IO를 사용하면 Jetson Nano의 핀 설정을 GUI를 통해 직관적으로 관리할 수 있어 다양한 하드웨어와의 통합이 용이해집니다. 핀 설정 후 Jetson.GPIO, I2C, SPI 등의 라이브러리를 사용해 원하는 기능을 구현할 수 있습니다.