Jetsonnano B01 笔记2:GPIO库-Pycharm远程调试-点灯

news2024/9/22 13:37:27

今日继续我的Jetsonnano 学习之路,今日主要学习使用Pycharm远程调试Jetsonnano以及驱动使用Jetsonnano的GPIO库,最终尝试使用jetson点亮第一个LED。

本文搬运成分较多,因为Jetsonnano资料比较少,做这些笔记方便自己以及大家查阅。

目录

一、GPIO库:

Jetsonnano环境配置与安装库:

Python远程调试与库的导入:

一、ssh配置:

1. 确认ssh状态:

2. 获得设备IP

 二、使用pycharm连接SSH:

三、Pycharm配置:

下载Jetson.GPIO库:

Python代码:

设置GPIO的引脚定义:

消除警告:

设置引脚的模式:

读取引脚的值:

设置引脚的值:

清除所有引脚的设置:

设置中断:

事件检测:

事件回调函数:

Jetsonnano点灯测试代码:

在Jetson上的运行:

 运行Python文件:

停止python代码的运行:

 测试效果图:

参考文章:


一、GPIO库:

Jetson Nano 上设有 40PIN GPIO 接口。 Jetson Nano GPIO 电压为 3.3V ,因此在不使用
电压电平转换的情况下,不应将高于 3.3V 的电压电平连接 Nano GPIO 引脚。

Jetson TX1, TX2, AGX Xavier和Nano开发板包含一个40引脚GPIO头,类似于树莓派中的40引脚头。可以使用Jetson GPIO library包中提供的Python库来控制这些GPIO的数字输入和输出。该库具有与RPi相同的API。为树莓派的GPIO库,以便提供一种简单的方法来移动在树莓派上运行的应用程序到Jetson板。

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

Jetsonnano环境配置与安装库:

一般情况下 Jetson Nano 系统已经内置了 Jetson.GPIO 库不需要进行下面的安装和配置。
1) 首先需要安装 PIP 工具,打开终端后依次输入下方指令:
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python3-pip

 2) 接着下载安装Jetson.GPIO库,依次输入下方指令:

sudo pip install Jetson.GPIO
sudo pip3 install Jetson.GPIO

 3) 然后设置用户权限,依次输入下方指令:

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

4) 99-gpio.rules文件复制到rules.d目录,输入以下命令:

sudo cp /opt/nvidia/jetson-gpio/lib/python/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/

 注意:这里要确认python包里rules文件所在的位置是否如上命令

5) 为了使新规则生效,我们需要运行以下命令来重新引导或重新加载 udev 规则。
sudo udevadm control –reload-rules && sudo udevadm trigger

Python远程调试与库的导入:

        有时我们不在jetson上使用pycharm 编程Python,可以选择在电脑上编程后将文件传输给jetson运行,嵌入式设备资源有限,在上面安装一个IDE有点浪费,所以,我们可以在常用开发设备上安装Pycharm,远程连接JetsonNano进行调试。 但电脑上没有jetson的GPIO库,因此这里学习一下怎么使用python远程调试以及导库:

一、ssh配置:

1. 确认ssh状态:

 可以通过下面的命令可以查看ssh的状态:

ps -ef | grep ssh

 如果只有ssh-agent 证明只开启了ssh client,没有ssh service,可以手动启动。

# 启动ssh服务
sudo /etc/init.d/ssh start
# 启动ssh服务
sudo service ssh start
# 重启ssh服务
sudo service ssh restart

2. 获得设备IP

ssh开启后,通过ifconfig 命令获得JetsonNano的 ip 地址,这里需要注意:

  • (1)无线连接路由器上网方式,查找 wlan 后的ip
  • (2)与路由器LAN口连接上网方式,查找 eth0 后的ip

 二、使用pycharm连接SSH:

 这样就成功连接上了:

三、Pycharm配置:

下载Jetson.GPIO库:

根据以下步骤找到并下载库:

Python代码:

设置GPIO的引脚定义:

#使用物理引脚编号模式,以板上引脚的物理位置为准。
GPIO.setmode(GPIO.BOARD) 

#使用 Broadcom SoC 的引脚编号模式,以引脚在芯片上的编号为准。
GPIO.setmode(GPIO.BCM)

#使用 NVIDIA Tegra 芯片的引脚编号模式,以引脚在芯片上的编号为准。
GPIO.setmode(GPIO.CVM)

#同样使用 NVIDIA Tegra 芯片的引脚编号模式。
GPIO.setmode(GPIO.TEGRA_SOC)

消除警告:

GPIO.setwarnings(False)

设置引脚的模式:

GPIO.setup(channel, GPIO.IN)                     # 引脚设置为输入
GPIO.setup(channel, GPIO.OUT)                    # 引脚设置为输出
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH) # 带初始化的引脚定义


# 同时设定多个引脚的定义
channels = [18, 12, 13]
GPIO.setup(channels, GPIO.OUT)

读取引脚的值:

GPIO.input(channel)         #返回值为GPIO.LOW or GPIO.HIGH

设置引脚的值:

GPIO.output(channel, state) #state可以是GPIO.LOW or GPIO.HIGH

清除所有引脚的设置:

GPIO.cleanup() #清除所有引脚的值
GPIO.cleanup([chan1, chan2]) #清除部分引脚的值

设置中断:

#第二个参数指定要检测的边缘,可以是GPIO.RISING、GPIO.FALLING或GPIO.BOTH。
#如果您只想将等待时间限制为指定的时间,可以选择设置超时:
GPIO.wait_for_edge(channel, GPIO.RISING)
GPIO.wait_for_edge(channel, GPIO.RISING, timeout=500)

事件检测:

GPIO.add_event_detect(channel, GPIO.RISING)
run_other_code()
if GPIO.event_detected(channel):
    do_something()

事件回调函数:

def callback_one(channel):
    print("First Callback")

def callback_two(channel):
    print("Second Callback")

GPIO.add_event_detect(channel, GPIO.RISING)
GPIO.add_event_callback(channel, callback_one)
GPIO.add_event_callback(channel, callback_two)

Jetsonnano点灯测试代码:

import Jetson.GPIO as GPIO
import time
led_pin = 7
GPIO.setmode(GPIO.BOARD)
GPIO.setup(led_pin, GPIO.OUT)
try:

    while 1:
        print("on")
        GPIO.output(led_pin, GPIO.HIGH)
        time.sleep(2)
        print("off")
        GPIO.output(led_pin, GPIO.LOW)
        time.sleep(2)

except KeyboardInterrupt:
    GPIO.output(led_pin, GPIO.LOW)
    GPIO.cleanup()
print("done")

在Jetson上的运行:

 运行Python文件:

编写完代码后保存为.py文件,再将此文件SSH远程传输给Jetsonnano,此处我是直接使用NoMachine远程连接了它的桌面,直接将其拖入文件资源管理器了:

然后就是打开Jetsonnano的终端,运行这段Python代码(没装Python的需要装):

#此处filename是你自己的文件名
python3 filename.py

这里注意此处filename是你自己的文件名,我的文件名是1,因此替换为

python3 1.py

然后回车就可以运行了。

停止python代码的运行:

 列出所有正在运行的Python进程:

ps aux | grep python

终止进程(其中`pid`是要终止的Python进程的进程ID):

kill pid

 测试效果图:

参考文章:

JetsonNano教程:Pycharm远程调试运行及本地与远端文件同步_jetsonnano运行pycharm-CSDN博客

 jetson nano GPIO控制说明_jetson nano 引脚_AoDeLuo的博客-CSDN博客

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

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

相关文章

什么是IIFE(Immediately Invoked Function Expression)?它有什么作用?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐IIFE 的基本语法⭐IIFE 的主要作用⭐如何使用 IIFE 来创建私有变量和模块封装⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅…

【Unity】Unity坑的集锦之RenderTexture打包黑屏

问题:Camera Output Texture设置RenderTexture后,打包用来Save PNG,黑屏 如果你打AB 包,然后是相机的OutputTexture是拖拽的话,记得将包一起打入 或者你可以代码赋值 Camera.targetTexture await Loader.LoadAsset&l…

实时测试工具 Visual Studio 扩展 NCrunch 4.18 Crack

NCrunch Visual Studio 扩展 .NET 的终极实时测试工具 在编码时查看实时测试结果和内联指标。 下载v4.18 发布于 2023 年 7 月 17 日 跳过视频至: 代码覆盖率 指标 分布式处理 配置 发动机模式 Visual Studio 自动并发测试 NCrunch 是一个完全自动化的测试扩展&a…

地理地形sdk:Tatuk GIS Developer Kernel for .NET Crack

Tatuk GIS Developer Kernel for .NET 是一个变体,它是受控代码和 .NET GIS SDK,用于为用户 Windows 操作系统创建专业 GIS 软件的过程。它被认为是一个完全针对Win Forms 的.NET CIL,WPF 框架是针对C# 以及VB.NET、VC、Oxy 以及最终与.NET 的…

IOS逆向之小程序H5等抓包,调试技巧

现在好多app都是h5 或者 小程序的形式发放,之前导出ipa,F5分析早就不行了,还有比如某小程序的逆向,js 逆向都需要抓包以及调试js 来完成。 传统方式。 电脑端Fiddler 和Charles。 IOS 端的Stream, 安卓端的小黄鸟&…

duffing方程matlab绘制

duffing混沌振子形式如下: k,a,c,f为自定义系数,将初值设为,k0.5,ac1 此时可通过更改f的值从0到1来改变duffing混沌系统状态,从固定点状态,小周期状态,混沌状态到大周期状态。例如f0.6时处于混沌状态,如下…

【C++漂流记】函数的高级应用——函数默认参数、占位参数、重载

函数的高级应用,侧重介绍函数的默认参数、函数的占位参数、函数重载定义解释及使用。 文章目录 一、函数的默认参数二、函数的占位参数三、函数重载函数重载的注意事项 一、函数的默认参数 函数默认参数是指在函数声明时为参数提供一个默认值,这样在调…

适用于多种场景功能强大的在线海报图片素材设计器源码

源码介绍: 在线海报设计系统素材设计源码是一个漂亮且功能强大的在线海报图片设计器, 仿照稿定设计而成。该系统适用于多种场景,包括海报图片生成、电商分享图、文章长图、 视频/公众号封面等。用户无需下载软件,即可轻松实现创意,迅速完成排版,让设计更简单! 该系统…

Tableau自学三部曲_Part1:Tableau介绍与安装

文章目录 一、Tableau的优势1. Excel2. SQL3. Python/R4. Tableau 二、Tableau、PowerBI、FineBI到底应该学哪个1. 功能全面性2. 易学程度3. 学习顺序 三、Tableau下载与安装1. 下载2. 注册3. 安装4. 试用5. 激活6. 秘钥管理7. 学生账号申请 一、Tableau的优势 1. Excel 容易…

XCon2023 | 聚铭网络受邀出席并发表“安全运营中心的应用及发展”主题演讲

作为国内信息安全领域“历史最悠久、举办规模最大、知名度最高”的闭门型技术峰会,2023年XCon安全焦点信息安全峰会(XFocus Information Security Conference)在8月30日于北京盛大召开,本次大会以“链无境皆可能”为主题&#xff…

Python之面向对象(一)

目录 面向对象为什么要面向对象?要素 定义一些特性内存空间实例的创建与初始化创建实例方法__new__初始化实例方法__init__ 类的继承多态新式类与经典类 面向对象 为什么要面向对象? 方便版本更新迭代,程序结构清晰明了 要素 类&#xff…

ClickHouse进阶(十一):Clickhouse数据字典-1

进入正文前,感谢宝子们订阅专题、点赞、评论、收藏!关注IT贫道,获取高质量博客内容! 🏡个人主页:含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 📌订阅…

肖sir__设计测试用例方法之编写测试用例12

编写测试用例 一、用例模板 案例1: 案例2: 案例3: 二、测试工作重点: 编写测试用例、 执行用例 (依据测试用例) 三、测试流程(h模型) 1、拿到需求 2、编写测试计划(…

vue项目搭建

安装node node官网获取安装包 下载好的安装包,后面重复点击下一步(Next)就行 安装完成后,关闭窗口即可 windows键R键打开小窗口,然后输入cmd打开命令行 node -v检查安装的node版本 npm -v检查安装的npm版本&#…

【云原生进阶之PaaS中间件】第一章Redis-1.6.1Java项目使用Redis

1 Java 使用 Redis 1.1 方案简述 redis的java客户端很多,官方推荐的有三种: JedisLettuceRedissonSpring 对Redis 客户端进行了整合,提供了Spring Date Redis ,在Spring Boot项目中还提供了对应的Starter,即spring-b…

高级IO---五种IO模型多路转接之Select

文章目录 五种IO模型1、阻塞IO2、非阻塞IO3、信号驱动IO4、多路转接IO5、异步IO总结IO 同步与异步阻塞与非阻塞设置非阻塞利用fcntl接口实现一个设置非阻塞的函数 多路转接之Selectselect函数原型fd_set结构返回值 socket就绪条件读就绪写就绪 select的特点select使用示例Util.…

Flowable 之任务分配

文章目录 一、任务分配和流程变量1.1 任务分配1.1.1 固定分配1.1.2 表达式分配① 值表达式② 方法表达式 1.1.3 监听器分配 1.2 流程变量1.2.1 全局变量1.2.2 局部变量1.2.3 案例讲解 二、候选人和候选人组2.1 候选人2.1.1 部署和启动流程2.1.2 任务的查询2.1.3 任务的拾取2.1.…

FRR+BFD+OSPF与BGP联动

1.拓扑设计 2.拓扑介绍 如图,LY集团 由核心机房与接入层网络组成,集团网络需要通过核心机房访问互联网,集团网络运行OSPF与IBGP协议;集团网络中接入层网络正常经过R2访问互联网,如果R2设备失效后,应立即换到…

Git版本管理

Git版本介绍 Git 是一个分布式版本控制系统,它被广泛用于协作软件开发和管理代码的变更。Git 的设计目标是为了处理速度快、灵活性强、数据完整性好的版本管理需求。以下是 Git 版本管理的详细介绍: 版本控制系统 (VCS): Git 是一种版本控制…

深度ESP32 PWM教程如何在ESP32 中使用PWM

关于ESP32PWM的简要说明 ESP32 SoC 满载了非常有用的外设,PWM 就是其中之一。是的。ESP32 的芯片中有一个专用的 PWM 硬件模块。脉宽调制或简称PWM是一种成熟且广泛使用的供电技术。 您可以使用 ESP32 的 PWM 来驱动 LED、电机(普通直流电机和无刷电机…