项目介绍
Jetson.GPIO
Jetson TX2 J21有40个引脚,类似于树莓派的40个引脚,可以通过Jetson GPIO samples包中提供的python库控制输入输出。该库与Raspberry Pi的RPi.GPIO库具有相同的API,以便提供一种简便的方法来将在Raspberry Pi上运行的应用程序移动到Jetson板上。
包装组件
除本文档外,Jetson GPIO库软件包还包含以下内容:
1.该lib/python/
子目录包含实现所有库功能的Python模块。gpio.py模块是将被导入到应用程序中的主要组件,并提供所需的API。gpio_event.py 和gpio_pin_data.py模块使用gpio.py模块,gpio.py模块不能直接导入到应用程序中。
2.该samples/
子目录包包含库API和应用程序入门示例应用程序的。在 simple_input.py和simple_output.py应用程序显示了如何进行分别读取和写入到GPIO引脚,而button_led.py, button_event.py并button_interrupt.py说明如何将按钮按压控制LED,阻塞等待和中断回调LED
3.关于该函数库的具体说明,你可以在https://pypi.org/project/Jetson.GPIO/中了解环境配置和安装库
安装
1.首先安装PIP工具
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python3-pip
2.下载安装
安装此库最简单的方法就是使用pip:
sudo pip install Jetson.GPIO
sudo pip3 install Jetson.GPIO
您也可以从 GitHub clone此git存储库,或下载其副本作为存档文件并解压缩。可以放在系统的任意位置,使用setup.py来安装:
sudo python3 setup.py install
设置用户权限
为了使用Jetson GPIO库,必须首先设置正确的用户权限/组。
创建一个新的gpio用户组。然后将您的用户添加到新创建的组中。
sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name
注意:这里的your_user_name需要改成你自己的账号名,不然库无法正常使用
通过将99-gpio.rules文件复制到rules.d目录中来安装自定义udev规则。(找不到99-gpio.rules的话可以到/lib/Jetson.GPIO-2.0.8/build/lib/Jetson/GPIO手动复制)
如果您已将源下载到Jetson.GPIO:
sudo cp lib/python/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/
为了使新规则生效,您需要通过运行以下命令重新引导或重新加载udev规则:
sudo udevadm control --reload-rules && sudo udevadm trigger
运行示例脚本
通过根据需要设置权限,samples/可以使用目录中提供的示例应用程序,程序存放在/opt/nvidia/jetson-gpio/samples/ 路径下。下面介绍每个应用程序的操作:
simple_input.py
此应用程序使用BCM引脚编号模式,并从40引脚接头连接器的引脚12读取值,并将该值打印到屏幕上。
simple_out.py
:此应用程序使用Raspberry Pi的BCM引脚编号模式,每2秒在BCM引脚18(或接头板上的板卡引脚12)输出高低交替值。
button_led.py
:此应用程序使用BOARD引脚编号。它需要一个连接到引脚18和GND的按钮,一个将引脚18连接到3V3的上拉电阻以及一个连接到引脚12的LED和限流电阻。应用程序读取按钮状态,并在每次连接时使LED保持点亮1秒钟。按下按钮。
button_event.py
:此应用程序使用BOARD引脚编号。它需要一个连接到引脚18和GND的按钮,一个将按钮连接到3V3的上拉电阻以及一个连接到引脚12的LED和限流电阻。该应用程序执行与button_led.py相同的功能,但执行阻塞等待按钮按下事件,而不是连续检查引脚的值以减少CPU使用率。
button_interrupt.py
:此应用程序使用BOARD引脚编号。它需要一个连接到引脚18和GND的按钮,一个将按钮连接到3V3的上拉电阻,一个连接到引脚12的LED和限流电阻以及连接到引脚13的另一个LED和电流限制电阻。仅当按下按钮时,第一个LED才会连续且快速地闪烁第二个LED五次。
用户可以使用指令运行程序,注意将xxxx替换成对应的程序名
sudo python3 xxxx.py
手写LED灯控制程序
首先新建一个jetson-gpio-test.py文件
sudo vi jetson-gpio-test.py
进入编辑器界面后,按下“a”开始输入
import Jetson.GPIO as GPIO
import time as time #引用需要用的库
LED_Pin = 11
GPIO.setmode(GPIO.BOARD)
GPIO.setup(LED_Pin, GPIO.OUT)#设置要操作的引脚,并将引脚设置为输出引脚
while (True):
GPIO.output(LED_Pin, GPIO.HIGH)
time.sleep(2)
GPIO.output(LED_Pin, GPIO.LOW)
time.sleep(2) #通过切换GPIO的电平来点亮和熄灭LED
GPIO.cleanup() #最后在退出循环的时候清楚GPIO的状态
按下“ESC”并输入“:wq”保存文件并退出,然后将一个LED灯连接到11号引脚上
试着运行程序
sudo python3 jetson-gpio-test.py
可以看LED灯以两秒的间隔在闪烁。
运行效果