NVIDIA Jetson TX1,TX2,TX2 NX,AGX Xavier 和 Nano开发板GPIO口配置及应用

NVIDIA Jetson TX1,TX2,TX2 NX,AGX Xavier 和 Nano开发板GPIO口配置及应用

简介

​ Jetson TX1、TX2、TX2 NX、AGX Xavier和Nano开发板都配备了一个包含40个引脚的GPIO接头,这些引脚可以用于数字输入输出。如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gIr1ItyM-1687860142526)(89dcbf0ee89a41318a67f1a0bf5d1bf4.png)]

​ 类似于Raspberry Pi上的40引脚接头,这些GPIO接口可用于连接各种外部设备,如传感器、执行器等。 为了方便控制这些GPIO接口,NVIDIA提供了Jetson GPIO Library包,其中包含了Python库,可以使用该库来控制数字输入输出。此库与Raspberry Pi上的RPi.GPIO库具有相同的API,因此用户可以将之前在Raspberry Pi上运行的应用程序轻松地移植到Jetson开发板上。 通过使用这个库,用户可以轻松地编写Python代码来读取和控制GPIO接口,并且可以根据需要进行自定义配置。这使得Jetson开发板成为一个强大的工具,可以用于各种嵌入式应用程序,例如机器人、智能家居系统、自动化控制系统等。对这些进行内容添加,使其变得充实。

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

这里我们简单介绍一下如何使用这个库关于 Jetson.GPIO, 这里有是官方的详细说明:

https://pypi.org/project/Jetson.GPIO/ 或者 https://github.com/NVIDIA/jetson-gpio

GPIO 和 BCM 对照表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YFAsMlsb-1687860142532)(image-20230627162919341.png)]

环境配置

1、下载 jetson-gpio:

执行命令 git clone https://github.com/NVIDIA/jetson-gpio

git clone https://github.com/NVIDIA/jetson-gpio

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3msmsdev-1687860142534)(image-20230627163122434.png)]

2、将下载的文件移动到目录: /opt/nvidia 中 假如你的这个目录存在这个库,我们需要备份原目录如下命令:

cd /opt/nvidia
sudo mv ~/jetson-gpio jetson-gpio_bak

3、进入 jetson-gpio 库文件夹,并安装库。

cd /opt/nvidia/jetson-gpio
sudo python3 setup.py install

4、创建一个 gpio 组,把你的当前的登录用户加到这个组,并赋予使用权限

sudo groupadd -f -r gpio
sudo usermod -a -G gpio user_name 
sudo cp /opt/nvidia/jetson-gpio/lib/python/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

注意: user_name 是你使用的用户名,比如说 nano

5.配置所有用户使用python中GPIO库的权限

sudo chmod a+rw /dev/gpiochip0
sudo chmod a+rw /dev/gpiochip1
sudo chmod a+rw /dev/gpiochip2

这样的话,软件环境就配置好了

示例

环境配置好了之后就可以测试一下例程了。在 jetson-gpio 上提供了几个简单的例程我 们可以简单测试一下,先进入示例程序目录 cd ~/opt/nvidia/jetson-gpio/samples/

1、simple_out.py

代码

#!/usr/bin/env python

# Copyright (c) 2019-2022, NVIDIA CORPORATION. All rights reserved.
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.

import RPi.GPIO as GPIO
import time

# Pin Definitions
output_pin = 18  # BCM pin 18, BOARD pin 12

def main():
    # Pin Setup:
    GPIO.setmode(GPIO.BCM)  # BCM pin-numbering scheme from Raspberry Pi
    # set pin as an output pin with optional initial state of HIGH
    GPIO.setup(output_pin, GPIO.OUT, initial=GPIO.HIGH)

    print("Starting demo now! Press CTRL+C to exit")
    curr_value = GPIO.HIGH
    try:
        while True:
            time.sleep(1)
            # Toggle the output every second
            print("Outputting {} to pin {}".format(curr_value, output_pin))
            GPIO.output(output_pin, curr_value)
            curr_value ^= GPIO.HIGH
    finally:
        GPIO.cleanup()

if __name__ == '__main__':
    main()

这个是一个简单的输入程序,使用的是 BCM 的引脚编码模式,可以读取 PIN12 的值并 打印到终端。

接线:分别将电源正极线、信号线、负极线接到1、12、14引脚,如下图:

在这里插入图片描述
然后运行程序: python3 simple_out.py

 python3 simple_out.py

预期效果: 运行程序后,可以看到终端打印信息, 程序会输出高电平和低电平(每 2 秒交替更新) 到物理引脚 PIN12

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dvD6JJCq-1687860142537)(image-20230627175428158.png)]

【注意】这里的 18 是指的 BCM 编码, 上面的 PIN12 是指物理编码,也就是板子上印的丝印的编码。

Jetson TX2 NX 的引脚的工作电平是 3.3V,所以使用的时候不要接 5V 电平。

在这里插入图片描述

如果需要连接引脚时请注意保护电路,避免短路烧坏元件

2.通过控制继电器控制下位机,实现4个GPIO口的宫殿控制

control.py代码:

#!/usr/bin/env python


import RPi.GPIO as GPIO
import time

# Pin Definitions
output_pin1 = 18  # BCM pin 18, BOARD pin 12
output_pin2 = 23  # BCM pin 18, BOARD pin 16
output_pin3 = 24  # BCM pin 18, BOARD pin 18
output_pin4 = 25  # BCM pin 18, BOARD pin 20


def setup_gpio():
    GPIO.setmode(GPIO.BCM)  # BCM pin-numbering scheme from Raspberry Pi
    # set pins as output pins with optional initial state of LOW
    GPIO.setup(output_pin1, GPIO.OUT, initial=GPIO.LOW)
    GPIO.setup(output_pin2, GPIO.OUT, initial=GPIO.LOW)
    GPIO.setup(output_pin3, GPIO.OUT, initial=GPIO.LOW)
    GPIO.setup(output_pin4, GPIO.OUT, initial=GPIO.LOW)


def control_status(flag=0):
    if flag == 0:
        print('0')
    elif flag == 1:
        GPIO.output(output_pin1, GPIO.HIGH)
        time.sleep(2)
        setup_gpio()
        print('1')
    elif flag == 2:
        GPIO.output(output_pin1, GPIO.HIGH)
        GPIO.output(output_pin2, GPIO.HIGH)
        time.sleep(2)
        setup_gpio()
        print('2')
    elif flag == 3:
        GPIO.output(output_pin1, GPIO.HIGH)
        GPIO.output(output_pin2, GPIO.HIGH)
        GPIO.output(output_pin3, GPIO.HIGH)
        time.sleep(1)
        print('3')
    elif flag == 4:
        setup_gpio()
        GPIO.output(output_pin1, GPIO.HIGH)
        GPIO.output(output_pin2, GPIO.HIGH)
        GPIO.output(output_pin3, GPIO.HIGH)
        GPIO.output(output_pin4, GPIO.HIGH)
        time.sleep(1)
        print('4')


while True:
    setup_gpio()
    num = input("input your num")
    control_status(int(num))

这段代码用于控制Raspberry Pi上的GPIO引脚输出高低电平来控制外部设备的状态。具体功能如下:

  1. 引入RPi.GPIO和time模块。
  2. 定义了4个GPIO引脚的BCM编号、BOARD编号以及对应的引脚状态,在setup_gpio()函数中进行引脚初始化。
  3. 定义了一个名为control_status()的函数,用于根据传入的参数(0~4)控制不同的GPIO引脚输出状态,实现控制外部设备的目的。
  4. 在主程序中通过循环持续接收用户输入num,并调用control_status()函数来控制外部设备。

总结

通过Jetson TX2 NX的GPIO接口控制继电器非常简单。只需要连接继电器模块到正确的GPIO引脚上,安装Jetson GPIO库,编写Python脚本并运行即可。这个技巧可以帮助实现各种下位机控制应用。

详细的GPIO 和 BCM 对照表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BCUpsiH6-1687860142538)(image-20230627180051567.png)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/32448.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Solid Converter PDF v10 安装及使用教程

目录 一、软件介绍二、下载教程三、安装教程四、使用教程1.PDF转Word、Html等2.合并PDF文件 一、软件介绍 Solid Converter PDF是一套专门将PDF文件转换成Word的软件。 能够将PDF转换为Word、Excel、HTML、PowerPoint、纯文本文件从PDF文档中提取数据并以CSV等格式保存能够转…

【人工智能】— 深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化

【人工智能】— 深度神经网络、卷积神经网络(CNN)、多卷积核、全连接、池化 深度神经网络训练训练深度神经网络参数共享 卷积神经网络(CNN)卷积多卷积核卷积全连接最大池化卷积池化拉平向量激活函数优化小结 深度神经网络训练 Pr…

Pytest+selenium+allure+Jenkins自动化测试框架搭建及使用

一、 环境搭建 1. Python下载及安装 Python可应用于多平台包括windows, Linux 和 Mac OS X, 本文主要介绍windows环境下。你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 如未安装python, 推荐下载python 3.8.3以…

Prompt的技巧持续总结

Prompt 有很多网站已经收录了,比如:aimappro 有些直接抄上述网站的作业即可,不过也来看看, 有一些日常提问大概的咒语该怎么写。 1 三种微调下的提示写法 chatgpt时代的创新:LLM的应用模式比较 实际案例说明AI时代大…

将win上的文件传输到Ubuntu虚拟机

首先获取Ubuntu系统的ip地址,在Ubuntu的Terminal中输入ifconfig,可以看到Ubuntu的ip地址 可以看到我电脑的ip地址是10.0.2.15。更改虚拟机的网络连接 这里以VirtualBox为例,打开VirtualBox设置,选择网络,将连接方式改…

通付盾入围《2023年度中国数字安全能力图谱(行业版)》

近日,数世咨询发布《2023年度中国数字安全能力图谱(行业版)》。通付盾作为以分布式数字身份和大数据决策智能技术为核心的数字化高端软件与服务提供商,凭借在数字安全领域的实力和影响力,入选政府、互联网两大行业细分…

ElasticSearch的安装和访问

ElasticSearch的安装 前言: 本次下载是在Windows系统进行操作,版本为7.6.1,因为下周最新版本的8.1.2有问题 ElasticSearch基于Java开发,JDK最低1.8版本 ElasticSearch的版本要和之后引入的Maven的Jar包版本对应 1 下载ElasticSearch 官网:https://www.elastic.co/cn/ 产品…

【yocto1】利用yocto工具构建嵌入式Linux系统

文章目录 1.获取Yocto软件源码2.初始化Yocto构建目录2.1 imx-setup-release.sh脚本运行2.2 imx-setup-release.sh脚本解析2.2.1 setup-environment脚本解析 3.构建嵌入式Linux系统3.1 BitBake构建系统3.2 BitBake构建系统过程简要解析3.2.1 解析Metadata基本配置Metadatarecipe…

Spring Boot面试题

什么是 Spring Boot? Spring Boot 是一个简化 Spring 应用程序开发的框架,通过自动配置、起步依赖和简化的配置方式,使开发人员能够更快速、方便地创建和配置 Spring 应用程序,提高开发效率和开发体验。 Spring Boot 的设计目标…

如何做一份干净的git提交记录

背景 毕业工作有一些年头了,之前在写工作代码或者给开源项目贡献的时候,提交代码都不是很规范,甚至可以说十分的随意,想到什么就提交什么,根本没有管理提交记录的概念或者想法(当你身边的人都不怎么在意的…

基于 Wav2Lip-GFPGAN 深度学习模型的数字人Demo

写在前面 工作中遇到简单整理博文为 Wav2Lip-GFPGAN 环境搭建运行的 Demo理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是…

kubernetes operator解析

您是否想过站点可靠性工程 (SRE) 团队如何有效地成功管理复杂的应用程序? 在 Kubernetes 生态中,只有一个答案:Kubernetes Operators! 在本文中,我们将研究它们是什么以及它们是如何工作的。 Kubernetes Operator 概念…

RabbitMQ 能保证消息可靠性吗

系列文章目录 消息队列选型——为什么选择RabbitMQ RabbitMQ 五种消息模型 RabbitMQ 能保证消息可靠性吗 系列文章目录前言一、消息可靠性的定义二、几种不可靠的场景三、防意外丢失1. 消息持久化2. 队列持久化3. 发布确认3.1 简单发布确认3.2 批量发布确认3.3 异步发布确认 4…

miniconda 安装 windows+linux

虽然常用anaconda,但是有时候只需要管理环境的时候,用miniconda更方便 如果想安装anaconda,可以参考这篇:anaconda安装 一、linux下 1.下载 链接:miniconda文档 cd /usr/localwget https://repo.anaconda.com/mini…

简要介绍 | CUDA底层原理:加速高性能计算的关键技术

注1:本文系“简要介绍”系列之一,仅从概念上对CUDA的底层原理进行非常简要的介绍,不适合用于深入和详细的了解。 CUDA底层原理:加速高性能计算的关键技术 CUDA Refresher: The GPU Computing Ecosystem | NVIDIA Technical Blog 1…

python自动化办公——定制化读取Excel数据并写入到word表格

Python自动化办公——Excel写word表格 文章目录 Python自动化办公——Excel写word表格一、引言二、数据准备三、python代码1、方法一2、方法二3、方法三 一、引言 最近到了毕业设计答辩的时候,老师让我帮毕业生写一段毕业设计的功能就是提供一个学士学位授予申请表…

基于CST软件的对数周期天线设计

摘要: 对数周期天线存在多种形式,主要包括齿片形、齿线型和偶极型等。其中,1960年提出的对数周期偶极子天线(LPDA)是结构最简单、应用最广泛且性能优良的一类对数周期天线,广泛应用于 UHF、VHF、HF 频段的…

python中os库用法详解(总结)

os库主要是对文件和文件夹进行操作,在Python中对⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能。 具体步骤如下: 1. 导⼊os模块 import os 2. 使⽤ os 模块相关功能 os.函数名() 1、⽂件重命名 os.rename(⽬标⽂件名, 新⽂件名) 示例代码&#…

MySQL:七种 SQL JOINS 的实现(图文详解)

MySQL:7种SQL JOINS的实现 前言一、图示表示二、代码举例1、INNER JOIN(内连接)2、LEFT JOIN(左连接)3、RIGHT JOIN(右连接)4、OUTER JOIN(全连接)5、LEFT EXCLUDING JOI…

nbcio-vue中formdesigner的组件显示不正常的处理

今天看演示系统的formdesigner组件显示不正常,也不知道是什么时候开始的事情, 如下: 对组件的操作倒是正常,但看本地是正常的,如下: 开始也不知道是什么原因,看代码也是一样的,应该…