Jetson TX2 NX GPIO实战:用Python点亮第一个LED灯(附完整代码与接线图)
2026/6/13 8:26:52 网站建设 项目流程

Jetson TX2 NX GPIO实战:用Python点亮第一个LED灯(附完整代码与接线图)

当你第一次拿到Jetson TX2 NX开发板时,最令人兴奋的莫过于让硬件真正"活"起来。而点亮一个LED灯,就像是嵌入式开发世界的"Hello World",简单却充满仪式感。本文将带你从零开始,用Python代码控制GPIO引脚,完成这个经典入门实验。

1. 硬件准备与接线指南

在开始编程之前,我们需要准备好必要的硬件组件并正确连接它们。对于这个基础实验,你只需要以下材料:

  • Jetson TX2 NX开发板(含40针GPIO扩展接头)
  • 1个LED灯(建议使用5mm直径的普通发光二极管)
  • 1个220Ω电阻(用于限流保护LED)
  • 面包板和跳线若干

关键接线步骤:

  1. 识别GPIO引脚:找到Jetson TX2 NX的40针GPIO接头(通常标记为J21),我们将使用物理引脚编号12(对应BCM编号18)作为输出引脚。

  2. LED正负极判断:LED长脚为正极(阳极),短脚为负极(阴极)。如果引脚被剪齐,可以通过内部金属片大小判断(小片为正极)。

  3. 实际接线方案

    • 将LED正极通过220Ω电阻连接到GPIO12引脚
    • 将LED负极连接到开发板的GND(接地)引脚
    • 建议使用面包板作为中间连接平台

注意:务必串联限流电阻,直接连接LED到GPIO可能烧毁LED或损坏开发板引脚。

下表列出了本实验所需的主要引脚定义:

引脚功能物理引脚编号BCM编号备注
GPIO输出1218用于控制LED亮灭
地线14-多个GND引脚可选其一

2. 软件环境配置

Jetson TX2 NX默认搭载了Ubuntu操作系统,我们需要确保Python环境和必要的库已正确安装。

2.1 安装Python与GPIO库

打开终端,执行以下命令更新系统并安装所需软件包:

sudo apt-get update sudo apt-get install python3-pip sudo pip3 install Jetson.GPIO

2.2 设置用户权限

为了避免每次都需要sudo权限运行GPIO程序,我们需要将当前用户加入gpio组:

sudo groupadd -f gpio sudo usermod -a -G gpio $USER

完成后需要重新登录使权限生效。可以通过以下命令验证是否添加成功:

groups | grep gpio

如果看到"gpio"出现在输出中,说明设置成功。

3. Python控制LED完整代码

现在我们可以编写Python脚本控制LED了。创建一个名为led_blink.py的文件,输入以下内容:

import Jetson.GPIO as GPIO import time # 设置GPIO模式为BOARD(物理引脚编号) GPIO.setmode(GPIO.BOARD) # 定义使用的引脚 led_pin = 12 try: # 设置引脚为输出模式 GPIO.setup(led_pin, GPIO.OUT) print("LED开始闪烁,按Ctrl+C停止...") while True: # LED亮 GPIO.output(led_pin, GPIO.HIGH) time.sleep(1) # 保持1秒 # LED灭 GPIO.output(led_pin, GPIO.LOW) time.sleep(1) # 保持1秒 except KeyboardInterrupt: print("程序被用户中断") finally: # 清理GPIO设置 GPIO.cleanup()

3.1 代码解析

让我们分解这段代码的关键部分:

  1. GPIO模式设置

    • GPIO.setmode(GPIO.BOARD):使用物理引脚编号(推荐新手使用)
    • 也可以使用GPIO.BCM模式,但需要记住BCM编号
  2. 引脚配置

    • GPIO.setup(led_pin, GPIO.OUT):将引脚设置为输出模式
    • 如果是读取输入信号,则使用GPIO.IN
  3. 控制输出

    • GPIO.output(led_pin, GPIO.HIGH):输出高电平(3.3V),点亮LED
    • GPIO.output(led_pin, GPIO.LOW):输出低电平(0V),熄灭LED
  4. 异常处理

    • 捕获KeyboardInterrupt让程序可以优雅退出
    • finally块确保无论程序如何结束都会执行GPIO清理

4. 运行与调试技巧

保存代码后,在终端运行:

python3 led_blink.py

如果一切正常,你应该能看到LED开始以1秒间隔规律闪烁。按Ctrl+C可以停止程序。

常见问题排查:

  • LED不亮

    • 检查接线是否正确,特别是LED极性
    • 用万用表测量GPIO引脚是否有电压输出
    • 确认电阻值合适(通常220Ω-1kΩ)
  • 权限错误

    • 确认用户已加入gpio组
    • 尝试sudo python3 led_blink.py临时测试
  • GPIO编号混淆

    • 确认代码中使用的是BOARD还是BCM编号
    • 参考官方引脚图核对物理位置

5. 进阶实验与扩展思路

成功完成基础LED控制后,你可以尝试以下扩展实验:

5.1 改变闪烁模式

修改代码实现不同的闪烁效果,例如:

# 快速闪烁两次然后暂停 for _ in range(2): GPIO.output(led_pin, GPIO.HIGH) time.sleep(0.2) GPIO.output(led_pin, GPIO.LOW) time.sleep(0.2) time.sleep(1)

5.2 使用PWM实现呼吸灯效果

PWM(脉冲宽度调制)可以平滑调节LED亮度:

# 创建PWM实例,频率为100Hz pwm = GPIO.PWM(led_pin, 100) pwm.start(0) # 初始占空比为0 try: while True: # 渐亮 for dc in range(0, 101, 5): pwm.ChangeDutyCycle(dc) time.sleep(0.1) # 渐暗 for dc in range(100, -1, -5): pwm.ChangeDutyCycle(dc) time.sleep(0.1) except KeyboardInterrupt: pwm.stop() GPIO.cleanup()

5.3 添加物理按钮控制

结合输入引脚,实现按钮控制LED:

button_pin = 16 # 假设按钮接在引脚16 GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) try: while True: if GPIO.input(button_pin) == GPIO.LOW: GPIO.output(led_pin, GPIO.HIGH) else: GPIO.output(led_pin, GPIO.LOW) time.sleep(0.1)

6. 项目实战:简易交通灯系统

将所学知识综合应用,我们可以用三个LED(红、黄、绿)模拟交通灯系统:

# 定义引脚 red_pin = 12 yellow_pin = 16 green_pin = 18 # 设置各引脚为输出 GPIO.setup(red_pin, GPIO.OUT) GPIO.setup(yellow_pin, GPIO.OUT) GPIO.setup(green_pin, GPIO.OUT) try: while True: # 红灯亮10秒 GPIO.output(red_pin, GPIO.HIGH) time.sleep(10) # 绿灯亮10秒 GPIO.output(red_pin, GPIO.LOW) GPIO.output(green_pin, GPIO.HIGH) time.sleep(10) # 黄灯闪烁3秒 GPIO.output(green_pin, GPIO.LOW) for _ in range(6): GPIO.output(yellow_pin, GPIO.HIGH) time.sleep(0.25) GPIO.output(yellow_pin, GPIO.LOW) time.sleep(0.25)

这个项目可以进一步扩展,比如添加行人按钮控制、使用LCD显示倒计时等。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询