一个控制jetson gpio通道的模块

Jetson.GPIO的Python项目详细描述


jetson.gpio-用于tegra的Linux

Jetson TX1、TX2、AGX Xavier和Nano开发板包含40针GPIO 收割台,类似于覆盆子皮的40针收割台。这些GPIO可以是 使用 Jetson GPIO库包。库具有与rpi.gpio相同的api 用于覆盆子皮的库,以便提供移动应用程序的简单方法 在树莓皮上跑步到Jetson板上。

本文档介绍Jetson GPIO库中包含的内容 包,如何配置系统并运行提供的示例应用程序, 以及库API。

包装部件

除此文档外,jetson gpio库包还包含 以下内容:

  1. lib/python/子目录包含实现所有 库功能。py模块是 导入到应用程序中并提供所需的API。gpio_event.py 并且gpio\u pin_data.py模块由gpio.py模块使用,不能是 直接导入到应用程序中。

  2. samples/子目录包含有助于获取 熟悉库api和应用程序入门。这个 simple_input.pysimple_output.py应用程序演示如何执行读取 分别写入GPIO引脚,而按钮显示.pybutton_event.pybutton_interrupt.py显示如何使用按钮按下 使用忙等待、阻塞等待和中断回调使LED闪烁 分别是。

安装

使用pip

安装此库的最简单方法是使用pip

sudo pip install Jetson.GPIO

手动下载

您可以克隆此git存储库,或将其副本下载为存档文件 然后减压。你可以把图书馆的文件放在你喜欢的任何地方 系统。可以通过手动方式直接从该目录使用库 设置pythonpath,或使用setup.py安装:

sudo python3 setup.py install

设置用户权限

为了使用jetson gpio库,正确的用户权限/组必须 先设置。

创建新的GPIO用户组。然后将您的用户添加到新创建的组。

sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name

通过将99-gpio.rules文件复制到rules.d中来安装自定义udev规则 目录:

sudo cp etc/99-gpio.rules /etc/udev/rules.d/

要执行新规则,您需要重新启动或重新加载udev 运行规则:

sudo udevadm control --reload-rules && sudo udevadm trigger

运行示例脚本

根据需要设置权限后,在 samples/可以使用目录。下面介绍每个 应用程序:

  1. simple_input.py:此应用程序使用车身控制模块针脚编号模式并读取 40针头的第12针的值,并将该值打印到 屏幕:

  2. simple_out.py:此应用程序使用来自 覆盆子pi,在bcm引脚18(或 每2秒一次。

  3. button_led.py:此应用程序使用板针编号。它需要一个 连接到插脚18和接地的按钮,连接插脚18的上拉电阻器 连接到3V3和连接到引脚12的LED和限流电阻器。这个 应用程序读取按钮状态并保持LED每秒钟亮一次 按下按钮的时间。

  4. button_event.py:此应用程序使用板针编号。它需要一个 连接到插脚18和接地的按钮,连接该按钮的上拉电阻器 连接到3V3和连接到引脚12的LED和限流电阻器。这个 应用程序执行与button_led.py相同的功能,但执行 舞台调度等待按钮按下事件,而不是连续检查 为减少CPU使用而设置的管脚值。

  5. button_interrupt.py:此应用程序使用板针编号。它 需要一个连接到引脚18和GND的按钮,一个连接到 按钮连接到3v3,一个LED和一个连接到引脚12的限流电阻器 第二个LED和限流电阻器连接到引脚13。这个 应用程序缓慢地连续闪烁第一个LED,并快速闪烁 只有当按下按钮时,第二个LED才会亮五次。

如果将jetson.gpio添加到pythonpath,则运行这些示例应用程序:

python3 <name_of_application_to_run>

或者,如果jetson.gpio未添加到pythonpath中,则 脚本可用于运行这些示例应用程序。这可以用 在samples/目录中执行以下命令:

./run_sample.sh <name_of_application_to_run>

还可以使用以下命令查看脚本的用法:

./run_sample.sh -h
./run_sample.sh --help

完整的库API

jetson gpio库提供rpi.gpio提供的所有公共api。 图书馆。下面讨论每个api的使用:

<H4>1。导入libary

要导入jetson.gpio模块,请使用:

import Jetson.GPIO as GPIO

这样,您可以在 申请。也可以使用名称rpi.gpio而不是 使用rpi库获取现有代码的jetson.gpio。

<H4>2。管脚编号

jetson gpio库提供了四种对i/o管脚进行编号的方法。第一 两个对应于rpi.gpio库提供的模式,即board和bcm 是指40针GPIO头和Broadcom SoC的管脚号 分别是GPIO号码。剩下的两种模式,cvm和tegra-soc使用 与CVM/CVB上的信号名称相对应的字符串而不是数字 连接器和tegra soc。

要指定使用的模式(强制),请使用以下函数 调用:< /P>

sudo pip install Jetson.GPIO
0

要检查已设置的模式,您可以拨打电话:

sudo pip install Jetson.GPIO
1

模式必须是gpio.board、gpio.bcm、gpio.cvm、gpio.tegra_soc或 没有,

<H4>3。警告

您尝试使用的GPIO可能已被使用 当前应用程序的外部。在这种情况下,Jetson GPIO 如果正在使用的GPIO配置为除 默认方向(输入)。如果你之前试着清理,它也会警告你 设置模式和频道。要禁用警告,请致电:

sudo pip install Jetson.GPIO
2 <H4>4。设置频道

在用作输入或输出之前,必须设置GPIO通道。配置 频道作为输入,呼叫:

sudo pip install Jetson.GPIO
3

要将频道设置为输出,请调用:

sudo pip install Jetson.GPIO
4

也可以指定输出通道的初始值:

sudo pip install Jetson.GPIO
5

当设置一个通道作为输出时,也可以设置多个通道 一次频道:

sudo pip install Jetson.GPIO
6 <H4>5。输入

要读取频道的值,请使用:

sudo pip install Jetson.GPIO
7

这将返回gpio.low或gpio.high。

<H4>6。输出

要设置配置为输出的管脚值,请使用:

sudo pip install Jetson.GPIO
8

状态可以是gpio.low或gpio.high。

您还可以输出到频道列表或元组:

sudo pip install Jetson.GPIO
9 <H4>7。清理

在程序结束时,最好清理通道,以便所有管脚 设置为默认状态。要清除所有使用的频道,请致电:

sudo python3 setup.py install
0

如果你不想清理所有频道,也可以清理 单个频道或频道的列表或元组:

sudo python3 setup.py install
1 <H4>8。Jetson车载信息和库版本

要获取有关Jetson模块的信息,请使用/读取:

sudo python3 setup.py install
2

这提供了一个具有以下键的python字典:p1_revision,ram, 版本、类型、制造商和处理器。字典中的所有值都是 字符串,p1_revision除外,它是一个整数。

获取有关t库版本,使用/读取:

sudo python3 setup.py install
3

这将提供一个x.y.z版本格式的字符串。

<H4>9。中断

除了繁忙的轮询之外,库还提供了 监视输入事件:

wait_for_edge()函数

此函数将阻塞调用线程,直到提供的边 检测。函数的调用如下:

sudo python3 setup.py install
4

第二个参数指定要检测的边,可以是 gpio.rising、gpio.falling或gpio.both。如果你只想限制等待 在指定的时间内,可以选择设置超时:

sudo python3 setup.py install
5

如果 发生超时。

检测到的事件()函数

此函数可用于定期检查自 最后一次通话。函数的设置和调用如下:

sudo python3 setup.py install
6

与以前一样,您可以检测gpio.rising、gpio.falling或gpio.both的事件。

检测到边缘时运行回调函数

此功能可用于为回调函数运行第二个线程。因此, 回调函数可以与主程序并行运行以响应 到一个边缘此功能可以如下使用:

sudo python3 setup.py install
7

如果需要,还可以添加多个回调,如下所示:

sudo python3 setup.py install
8

本例中的两个回调是按顺序运行的,而不是同时运行,因为 只有线程运行所有回调函数。

为了防止通过折叠多次调用回调函数 将多个事件合并为一个事件,可以选择设置一个缓冲时间:

sudo python3 setup.py install
9

如果不再需要边缘检测,可以按如下方式删除:

sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name
0 <H4>10。检查GPIO通道的功能

此功能允许您检查提供的GPIO频道的功能:

sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name
1

函数返回gpio.in或gpio.out。

<H4>11。PWM

有关如何使用pwm通道的详细信息,请参见samples/simple_pwm.py

gpio库只支持带附加硬件pwm的管脚上的pwm 控制器。与rpi.gpio库不同,jetson.gpio库没有 实现软件仿真的pwm。Jetson Nano支持2个脉冲宽度调制通道,以及 Jetson AGX Xavier支持3个PWM通道。Jetson TX1和TX2不支持 任何脉宽调制通道。

系统pinmux必须配置为连接硬件pwm控制器 到相关引脚。如果未配置pinmux,则pwm信号将不会 拿着别针!jetson.gpio库不会动态修改pinmux 实现此目的的配置。阅读l4t文档了解如何 配置pinmux。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我们应该在测试java代码时模拟黄瓜测试吗。我们应该在多大程度上使用黄瓜?   Hibernate Weblogic 10.3.4 java。lang.NoSuchMethodError:javax/persistence/spi/PersistenceUnitInfo。getValidationMode()Ljavax/persistence/ValidationMode;   java如何在main()中访问私有静态实例变量   java JMockit无法模拟类的公共final字段   java是否可以返回特定控制器操作的输出(html)?   java如何返回正确类型的列表?   rest-OpenUI/Swagger-java-to-API   java组织。springframework。豆。工厂NoSuchBeanDefinitionException或加载ApplicationContext失败   java使用POST将参数从JSP发送到Servlet   java如何监听特定的按钮按下和主视图用户交互?   java如何让gradle在本地maven repo中覆盖库?   如何在Java中“合并”两个URI?   java如何制作一个方法来移动数组中的字符?   使用来自java的命令启动powershell窗口   java垃圾收集器和匿名类   java如何为CellTable(GWT 2.4)中的ImageResourceCell创建PanelPopup?