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

发布时间:2026/6/13 8:27:38
Jetson TX2 NX GPIO实战:用Python点亮第一个LED灯(附完整代码与接线图)
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面包板和跳线若干关键接线步骤识别GPIO引脚找到Jetson TX2 NX的40针GPIO接头通常标记为J21我们将使用物理引脚编号12对应BCM编号18作为输出引脚。LED正负极判断LED长脚为正极阳极短脚为负极阴极。如果引脚被剪齐可以通过内部金属片大小判断小片为正极。实际接线方案将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.GPIO2.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开始闪烁按CtrlC停止...) 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 代码解析让我们分解这段代码的关键部分GPIO模式设置GPIO.setmode(GPIO.BOARD)使用物理引脚编号推荐新手使用也可以使用GPIO.BCM模式但需要记住BCM编号引脚配置GPIO.setup(led_pin, GPIO.OUT)将引脚设置为输出模式如果是读取输入信号则使用GPIO.IN控制输出GPIO.output(led_pin, GPIO.HIGH)输出高电平3.3V点亮LEDGPIO.output(led_pin, GPIO.LOW)输出低电平0V熄灭LED异常处理捕获KeyboardInterrupt让程序可以优雅退出finally块确保无论程序如何结束都会执行GPIO清理4. 运行与调试技巧保存代码后在终端运行python3 led_blink.py如果一切正常你应该能看到LED开始以1秒间隔规律闪烁。按CtrlC可以停止程序。常见问题排查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 添加物理按钮控制结合输入引脚实现按钮控制LEDbutton_pin 16 # 假设按钮接在引脚16 GPIO.setup(button_pin, GPIO.IN, pull_up_downGPIO.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显示倒计时等。