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

news2024/10/5 18:28:21

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)]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

cesium系列:根据中心点绘制圆和返回离某点最近的一个点的方法

1.背景 有需求写一个方法cesium 提供一个代码方法接收参数为function aaa(point1,point2,radius,num)其中点1和点2是经度纬度高度对象, 以point2为圆心,radius为半径生成一个圆弧,并创建一个数组在圆弧上均匀生成 num个点,点需要包含经纬高,…

2023年江西省研究生数学建模竞赛题目三解题思路

为了竞赛公平性,本人只提供思路,不提供具体的解决方法,欢迎交流讨论。给你们分享省赛特等奖的解题思路,哈哈哈,欢迎评论区讨论。这里给出第三题的解题思路。第二题的思路在这里:2023年江西省研究生数学建模…

打造加速组织变革的PMO—新药研发PMO实践分享︱先声药业研发PMO负责人

先声药业研发PMO负责人谢少斐先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:打造加速组织变革的PMO—新药研发PMO实践分享。大会将于8月12-13日在北京举办,敬请关注! 议题简要: 2023年生物医药…

力扣 110. 平衡二叉树

题目来源:https://leetcode.cn/problems/balanced-binary-tree/description/ C题解1:递归法,后续遍历,从叶子节点开始,判断左右子树的深度差是否大于1。 /*** Definition for a binary tree node.* struct TreeNode {…

搭建OpenGL开发环境

资料 安装教程 软件下载 Visual Studio 2019CMakeGLFWGLAD glfw 3.3.8 下载glfw的目的: 获取压缩包里的include生成glfw3.lib 获取include 解压找到Include,include包含GLFW文件夹 生成glfw3.lib 使用CMake生成GLFW的工程文件在生成的目录中找…

基于OpenCV的傅里叶变换

基于OpenCV的傅里叶变换 傅里叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在图像中变化剧烈的地方(比如边界)经过傅里叶别换后就相当与高频,反之变…

研究发现,电源指示灯的闪烁也能泄露密码

在巧妙的旁路攻击中,一组学者发现可以通过分析设备电源 LED 指示灯的变化来破解设备密钥。 内盖夫本古里安大学和康奈尔大学的研究人员在一项研究中表示,CPU 执行的密码计算会改变设备的功耗,从而影响设备电源 LED 的亮度。通过利用这一观察…

Git使用与配置

Git分布式版本控制工具 一、Git安装与配置 Git基本配置 打开Git Bash 设置用户信息 # 配置用户名和用户邮箱 git config --global user.name xxx git config --global user.email xxxxx.com查看用户信息 # 查看用户名和用户邮箱 git config --global user.name git config --g…

HVV蓝队扫盲,关于HVV你不知道的全在这

HVV蓝队扫盲,关于HVV你不知道的全在这 1.蓝队实战阶段职责分工2.蓝队防守的四个阶段3.蓝队常用防护手段4.蓝队常用安全设备边界防御设备安全检测设备流量监测设备终端防护设备威胁情报系统5.蓝队作战的三个阶段6.演练禁止采用的攻击方式1.蓝队实战阶段职责分工 1、领导小组。为…

【零基础入门学习Python---Python面向对象编程保姆级教程】

🚀 Python 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

QT Creator上位机画波形之Qcharts使用学习

先看一个Qcharts的简单demo Qcharts是QT自带的组件,不需要另外添加文件。 打开QT Creator,新建一个工程,命名可以参考下图: 基类选择QWidget: .pro文件中添加charts模块 main.cpp源码: #include "…

Nginx配置块location及rewrite详解

目录 一、location配置块详解 1.location 大致分为三类 2.location 常用的匹配规则 3.location 匹配的优先级 4.location 匹配流程 5.location 的实际使用 二、if 模块常用的nginx全局变量 三、rewrite详解 1.rewrite简介 2.rewrite实现跳转原理 3.rewrite 执行顺序 …

房企如何向制造业学习,提高运营效率,降本增效?

导语 | 近年来,随着外部环境的变化,国内的房地产市场受到了很大的冲击,也发生了显著的变化。很多人都认为房地产行业已经迎来了「青铜时代」甚至是「黑铁时代」,已由过去的「高杠杆、高增长、高利润」经营模式转变为「低利润、低增…

借助 VMware 技术加快数字化优先、客户至上的银行业的发展

迎接下一波客户至上的银行业创新浪潮 金融服务业对颠覆并不陌生。对于许多机构来说,新冠疫情的突然爆发,戏剧性地证明了运营敏捷性的价值。这些机构不仅加倍重视数字化体验,而且迅速适应了新情况:打破障碍,采用新技术…

【数据结构OJ题】链表带环问题

目录 1.判断链表是否带环 证明 2.寻找环的入口点 1.判断链表是否带环 原题链接:力扣 思路一:先遍历一遍链表,计算出链表的长度,然后将长度除二,在遍历半个链表即可。但是这种方法效率比较低。 思路二:…

【软考网络管理员】2023年软考网管初级常见知识考点(30)-文件管理与传送控制

涉及知识点 文件管理的概念,绝对路径和相对路径,设备管理,IO控制方式有哪些。 软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 原创于:CSDN博主-《拄杖盲学轻声码》,更…

天天做Web测试,咋还不知道怎么测试呢?

目录 前言: 一、UI测试 二、链接测试 三、搜索测试 四、表单提交测试 五、输入域测试 六、分页测试 七、兼容性测试 前言: Web测试是一个比较广泛的测试领域,涵盖的测试内容较多,包括功能测试、性能测试、安全测试等。 下面就说一…

Docker 新手向导

博文目录 文章目录 新手向导 (Get Started)应用程序容器化下载应用代码容器化该应用配置镜像加速器 启动这个应用容器 更新应用程序共享应用程序推送镜像Play with Docker使用镜像 持久化数据库容器的文件系统容器卷 (Container volumes)保留所有数据深入卷 使用绑定装载快速卷…

Android Jetpack Compose之TabRow的使用

Android Jetpack Compose是一个现代化的UI工具包,它让开发者可以以声明式的方式来构建出美观且功能强大的Android应用。在本文中,我们将详细介绍其中的一个重要组件——TabRow。 一. TabRow简介 TabRow是Jetpack Compose中的一个组件,主要用…

在家用电脑怎么赚钱,在家就能获得收益的三种方式

如何在家赚钱可能是许多人都困扰的问题之一。实际上,有很多在家赚钱的方法可供选择。然而,我在网上发现许多人缺乏学习的动力,不愿意承担风险,因此大约80%的人选择从事辛苦劳动或成为被剥削的人,导致他们连续几年在互联…