40PIN配置
40PIN配置
1.介绍
Jetson TX1,TX2,AGX Xavier,Nano和Orin系列开发板包含一个40引脚GPIO接头,类似于Raspberry Pi中的40引脚接头。可以使用Jetson GPIO Library包中提供的Python库来控制这些GPIO的数字输入和输出。该库与Raspberry Pi的RPi.GPIO库具有相同的API,以便提供一种将Raspberry Pi上运行的应用程序移动到Jetson板的简便方法。
除本文档外,Jetson GPIO库包还包含以下内容:
该lib/python/子目录包含实现所有库功能的Python模块。gpio.py模块是将导入应用程序并提供所需API的主要组件的gpio_event.py 和gpio_pin_data.py模块用于通过gpio.py模块和不能在向应用程序直接导入。
该samples/子目录包含示例应用程序,以帮助您熟悉库API并开始使用应用程序。这些 simple_input.py和simple_output.py应用程序分别展示了如何对GPIO引脚执行读写操作button_led.py, button_event.py并button_interrupt.py显示如何使用按钮按下来分别使用忙等待,阻塞等待和中断回调来使LED闪烁。
本文档将介绍Jetson GPIO库包中包含的内容,如何配置系统以及运行提供的示例应用程序和库API。这里我们简单介绍一下如何使用这个库关于 Jetson.GPIO, 这里有详细说明: https://pypi.org/project/Jetson.GPIO/ 或者 https://github.com/NVIDIA/jetson-gpio
2.引脚图
下载 jetson-gpio: git clone https://github.com/NVIDIA/jetson-gpio
2.将下载的文件移动到目录: /opt/nvidia 中 假如你的这个目录存在这个库,我们需
要备份原目录如下命令:
然后把下载的放进opt/nvidia/ 目录下,因为笔者是将文件夹放在路径~/下,还有当前是处于opt/nvidia/,所以可执行以下命令进行移动文件夹
sudo mv ~/jetson-gpio ./
3.安装 pip3 工具:
sudo apt-get install python3-pip
4.进入jetson-gpio库文件夹,并安装库。
cd /opt/nvidia/jetson-gpio sudo python3 setup.py install
5.使用前,还需要创建一个 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/
为了使新规则生效,您需要通过运行以下命令重新引导或重新加载udev规则
sudo udevadm control --reload-rules && sudo udevadm trigger
注意: user_name 是你使用的用户名,比如”nvidia”
3.引脚读取功能
环境配置好了之后就可以测试一下例程了。在 jetson-gpio 上提供了几个简单的例程我们可以简单测试一下,先进入示例程序目录
cd /opt/nvidia/jetson-gpio/samples/
simple_input.py这个是一个简单的输入程序,使用的是 BCM 的引脚编码模式,可以读取 PIN12 的值并打印到终端。
运行程序:
sudo python3 simple_input.py
预期效果:
运行程序后,可以看到终端打印信息, 默认情况下 Pin18 的值是低电平,找一个杜邦线将第 12号引脚连到 3.3V,可以看到读取的值变成了 HIGH,如果连到 GND,会显示 LOW
【注意】
这里的 18 是指的BCM 编码,上面的 PIN12 是指物理编码,也就是板子上印的丝印的编码。Jetson Orin NX 的引脚的工作电平是 3.3V,所以使用的时候尽量不要接 5V 电平。
4.引脚电平输出控制
运用例程中的simple_out.py或者运行/home/jetson/GPIO_test/test_pin.py
程序会输出高电平和低电平(每 2 秒交替更新) 到物理引脚 PIN12
运行程序
#way 1:
sudo python3 simple_out.py
#way 2:
cd ~/GPIO_test
python3 test_pin.py
预期效果
可以拿电压表测试引脚的电压变高变低(12号引脚是simple_out.py,21号引脚则是test_pin.py) 下图的现象则是21号引脚的结果(test_pin.py)
5.控制LED
基于Jetson Orin NX 的 GPIO控制LED灯闪烁
硬件连接 将LED的正极接在Jetson Orin NX的第十二个引脚上,负极接在第三十九个引脚(GND)上,通过控制引脚输出高低电平,控制LED的亮灭,通过time库中的.sleep()方法控制间隔的时间。
运行程序
cd ~/GPIO_test
sudo python3 led.py
预期效果 连好硬件后,运行程序, led灯会间隔2秒闪烁一次。(改实验的rgb灯为我们店铺的rgb灯模块,想自己测试的可以选购)
注意:要使用其他的led模块的话最好是led和引脚之间要连接一个适当大小的保护电阻作为保护,否则过流可能会烧坏jetson orin nx。
6.Jetson Orin NX与外部设备串口通讯
1.准备工作
本节测试Jetson Orin NX 串口自己收发的教程。 由下图可以看到Jetson Orin NX的串口的TXD和RXD引脚分别对应物理引脚8,10。
接线: Jetson Orin NX引脚8(TXD)→Jetson Orin NX 引脚10(RXD)
开启串口权限,注意这个权限关机后就也被关闭,下次需要重新开启
sudo chmod 777 /dev/ttyTHS1
2.使用例程测试串口的功能
从github下载一个串口通讯案例,源代码和解释可以到这个github连接查看
git clone <https://github.com/JetsonHacksNano/UARTDemo>
进入文件夹
cd UARTDemo
如果您不打算在UART上使用串行控制台,则应禁用串行控制台(可不做看个人选择):
systemctl stop nvgetty
systemctl disable nvgetty
udevadm trigger
安装serial模块
sudo apt-get install python3-serial
终端输入运行程序:
sudo python3 uart_example.py
运行后可以看到Jetson Orin NX 循环的发送"NVIDIA Jetson Orin NX Developer Kit\r\n"里面的字符,并显示终端上。
3.使用linux的串口助手测试
1.运行以下命令
sudo apt install cutecom
sudo cutecom
就可以看见cutecom打开了 一般不需要设置,直接点击open就能使用,然后通过InPUT输入文本,按回车键就能发送内容了。 效果如图:
4.注意事项
如果使用USB转TTL模块电脑和Orin nx进行通信注意一下几点 1.杜邦线不可太长,太长会乱码 2.出现只能收不能发的情况是电压不足导致的,把usb转ttl模块的5V口和nano的5V进行连接 3.如果线合理,但出现乱码,波特率、奇偶校验、停止位检查是否一致 4.其它情况:https://blog.csdn.net/lxj362343/article/details/89646731
7.Jetson Orin NX I2C通讯
Jetson Orin NX I2C 通讯教程
Jetson Orin NX 的 I2C 引脚如图所示,要使用前需要开启 I2C 服务。
首先安装 I2Ctool,终端输入:
sudo apt-get update
sudo apt-get install -y i2c-tools
检查安装情况,终端输入:
apt-cache policy i2c-tools
扫描某一总线 bus 上所有 i2c 设备,并且打印出设备 i2c 总线地 址,例如这里 I2C 引脚上挂载了一个地址为 0x0f 的设备,则会 显示起对应的设备 I2C 地址
sudo i2cdetect -y -r -a 7
smbus 为 python 库,如果未安装 smbus,终端输入:
sudo apt-get update
sudo apt-get install -y python3-smbus
Smbus 协议有许多相关的库函数可以用于 I2C 通讯