四、GPIO控制
GPIO(General-purpose input/output )是一种通用型输入输出接口,其脚位可由使用者编程控制。根据实际需要,这些脚位可以被设置为通用输入(GPI)、通用输出(GPO),或兼具输入输出功能(GPIO)。
Jetson Orin Nano系列的40PIN GPIO引脚定义如下:
在JetPack 5系统中使用GPIO
1 使用命令行控制GPIO
1.1获取GPIO口的引脚名称与编号
以31号引脚为例,454为GPIO口编号,PQ.06为引脚名称
请通过上一节1.2 GPIO口的引脚名称与编号
1.2提升至root权限,启用GPIO口
sudo bash
echo 454 > /sys/class/gpio/export
1.3设置GPIO为输入模式
echo in > /sys/class/gpio/PQ.06/direction
获取GPIO当前状态,返回值1为高电平,0为低电平
cat /sys/class/gpio/PQ.06/value
1.4设置GPIO为输出模式
echo out > /sys/class/gpio/PQ.06/direction
设置GPIO输出,1为高电平,0为低电平
echo 1 > /sys/class/gpio/PQ.06/value
您也可以使用以下脚本进行测试
#!/bin/bash
trap 'echo PQ.06 > /sys/class/gpio/unexport; echo "GPIO PQ.06 已释放"is released"' EXIT
echo "setting GPIO PQ.06"
echo PQ.06 > /sys/class/gpio/export 2>/dev/null
# set Pin output mode
echo out > /sys/class/gpio/PQ.06/direction
# blink
while true
do
echo 0 > /sys/class/gpio/PQ.06/value
sleep 0.5
cat /sys/class/gpio/PQ.06/value
sleep 0.5
echo 1 > /sys/class/gpio/PQ.06/value
sleep 0.5
cat /sys/class/gpio/PQ.06/value
sleep 0.5
done
2. 使用python控制GPIO
2.1 安装JETSON.GPIO包
- 如果您不确定您的环境是否正常,或者您尝试使用conda环境运行脚本请执行以下指令安装Jetson官方的GPIO库
pip install JETSON.GPIO
Jetson GPIO库提供了四种给I / O引脚编号的方法。
- BOARD:物理引脚编号(40针接口顺序)。
- BCM:Broadcom SoC 的 GPIO 编号(常用)。
- CVM:CVM/CVB 连接器的信号名称。
- TEGRA_SOC:Tegra SoC 信号名称。
import time
import RPi.GPIO as GPIO
# define pin number
output_pin = 31
# set pin as BOARD mode
GPIO.setmode(GPIO.BOARD)
# set pin mode
GPIO.setup(output_pin, GPIO.OUT)
print("Press CTRL+C to exit")
curr_value = GPIO.HIGH
try:
while True:
time.sleep(1)
print("pin {} now is {}".format(output_pin, curr_value))
GPIO.output(output_pin, curr_value)
# blink
curr_value ^= GPIO.HIGH
finally:
GPIO.cleanup()
其他具体用法和例程可参考项目官网