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

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

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

目录

一、GPIO库:

Jetsonnano环境配置与安装库:

Python远程调试与库的导入:

一、ssh配置:

[1. 确认ssh状态:](#1. 确认ssh状态:)

[2. 获得设备IP](#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

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

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

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

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

  1. 将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的状态:

python 复制代码
ps -ef | grep ssh

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

python 复制代码
# 启动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的引脚定义:

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

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

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

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

消除警告:

python 复制代码
GPIO.setwarnings(False)

设置引脚的模式:

python 复制代码
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)

读取引脚的值:

python 复制代码
GPIO.input(channel)         #返回值为GPIO.LOW or GPIO.HIGH

设置引脚的值:

python 复制代码
GPIO.output(channel, state) #state可以是GPIO.LOW or GPIO.HIGH

清除所有引脚的设置:

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

设置中断:

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

事件检测:

python 复制代码
GPIO.add_event_detect(channel, GPIO.RISING)
run_other_code()
if GPIO.event_detected(channel):
    do_something()

事件回调函数:

python 复制代码
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点灯测试代码:

python 复制代码
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的需要装):

python 复制代码
#此处filename是你自己的文件名
python3 filename.py

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

python 复制代码
python3 1.py

然后回车就可以运行了。

停止python代码的运行:

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

python 复制代码
ps aux | grep python

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

python 复制代码
kill pid

测试效果图:

参考文章:

JetsonNano教程:Pycharm远程调试运行及本地与远端文件同步_jetsonnano运行pycharm-CSDN博客
jetson nano GPIO控制说明_jetson nano 引脚_AoDeLuo的博客-CSDN博客

相关推荐
Nu11PointerException1 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
亦枫Leonlew2 小时前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝2 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
黑叶白树4 小时前
简单的签到程序 python笔记
笔记·python
幸运超级加倍~5 小时前
软件设计师-上午题-15 计算机网络(5分)
笔记·计算机网络
芊寻(嵌入式)6 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
准橙考典7 小时前
怎么能更好的通过驾考呢?
人工智能·笔记·自动驾驶·汽车·学习方法
密码小丑8 小时前
11月4日(内网横向移动(一))
笔记
鸭鸭梨吖9 小时前
产品经理笔记
笔记·产品经理
齐 飞9 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb