news 2026/4/21 15:02:13

Jetson Nano新手避坑:用Python控制GPIO点亮LED,从引脚图到代码实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jetson Nano新手避坑:用Python控制GPIO点亮LED,从引脚图到代码实战

Jetson Nano实战指南:Python GPIO控制LED全流程解析

当你第一次拿到Jetson Nano开发板,面对那40针的GPIO接口时,是否感到既兴奋又迷茫?作为从树莓派转向NVIDIA边缘计算平台的开发者,我完全理解这种感受。本文将带你从硬件连接到代码实现,完整走通GPIO控制LED的流程,避开那些新手常踩的坑。

1. 认识Jetson Nano的GPIO接口

Jetson Nano的40针GPIO接口与树莓派兼容,这为开发者提供了便利,但也存在一些关键差异需要注意。首先让我们明确几个基本概念:

  • 物理引脚(BOARD模式):按照板上实际的引脚编号,从1到40依次排列
  • BCM模式:使用Broadcom SOC的通道编号,与树莓派保持一致
  • TEGRA_SOC模式:NVIDIA特有的编号方式,一般不推荐新手使用

提示:建议初学者优先使用BOARD模式,因为物理编号不会变,而BCM编号可能因不同版本而变化

查看引脚定义的快速方法:

import RPi.GPIO as GPIO print(GPIO.RPI_INFO) # 查看板子信息 print(GPIO.JETSON_INFO) # Jetson特有信息

2. 硬件连接与准备工作

2.1 所需材料清单

  • Jetson Nano开发板
  • LED灯(建议不同颜色各准备一个)
  • 220Ω电阻
  • 面包板和跳线
  • 按键开关(可选)

2.2 安全连接指南

连接LED时最常见的错误就是忘记加限流电阻,这可能导致GPIO口或LED损坏。正确的连接方式:

Jetson Nano GPIO引脚 → 220Ω电阻 → LED正极 → LED负极 → GND

实物连接参考:

  1. 将LED长脚(正极)通过电阻连接到GPIO12(BOARD编号)
  2. 将LED短脚(负极)连接到任意GND引脚
  3. 检查连接无误后再通电

3. 软件环境配置

3.1 安装必要库

Jetson Nano默认可能未安装GPIO库,执行以下命令:

sudo apt-get update sudo apt-get install python3-pip pip3 install Jetson.GPIO # 或使用RPi.GPIO

3.2 解决权限问题

新手最常遇到的错误就是权限不足,解决方法:

sudo usermod -a -G gpio $(whoami) # 将当前用户加入gpio组 sudo reboot # 重启生效

验证权限:

groups # 查看当前用户所在组,应包含gpio

4. Python控制LED实战代码

4.1 基础点亮LED

import RPi.GPIO as GPIO import time # 使用BOARD编号模式 GPIO.setmode(GPIO.BOARD) LED_PIN = 12 # BOARD编号12,对应BCM 18 try: GPIO.setup(LED_PIN, GPIO.OUT) while True: GPIO.output(LED_PIN, GPIO.HIGH) # 点亮 time.sleep(1) GPIO.output(LED_PIN, GPIO.LOW) # 熄灭 time.sleep(1) finally: GPIO.cleanup() # 清理GPIO设置

4.2 带警告处理的改进版

import RPi.GPIO as GPIO import time GPIO.setwarnings(False) # 禁用警告 GPIO.setmode(GPIO.BCM) LED_PIN = 18 def setup(): GPIO.setup(LED_PIN, GPIO.OUT, initial=GPIO.LOW) def loop(): while True: GPIO.output(LED_PIN, not GPIO.input(LED_PIN)) time.sleep(0.5) if __name__ == '__main__': setup() try: loop() except KeyboardInterrupt: GPIO.cleanup()

4.3 按键控制LED

import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) LED_PIN = 18 BTN_PIN = 17 GPIO.setup(LED_PIN, GPIO.OUT) GPIO.setup(BTN_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) try: while True: btn_state = GPIO.input(BTN_PIN) GPIO.output(LED_PIN, not btn_state) # 按键按下时点亮 finally: GPIO.cleanup()

5. 常见问题与解决方案

5.1 导入模块报错

如果遇到ImportError: No module named RPi.GPIO,可能是:

  1. 未正确安装库 → 执行pip3 install RPi.GPIO
  2. 使用了虚拟环境但未激活 → 激活虚拟环境
  3. Python版本不匹配 → 确认使用python3

5.2 LED不亮排查步骤

  1. 检查电路连接是否正确
  2. 用万用表测量GPIO输出电压(应为3.3V)
  3. 尝试更换LED(可能极性接反或损坏)
  4. 确认代码中引脚编号模式与实际一致

5.3 性能优化技巧

当需要控制多个LED时,避免使用多个time.sleep(),改为:

led_states = [GPIO.HIGH, GPIO.LOW, GPIO.HIGH] pins = [18, 23, 24] while True: for pin, state in zip(pins, led_states): GPIO.output(pin, state) time.sleep(0.5) led_states = [not state for state in led_states]

6. 进阶应用:PWM调光

利用PWM可以实现LED亮度调节:

import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) LED_PIN = 18 GPIO.setup(LED_PIN, GPIO.OUT) pwm = GPIO.PWM(LED_PIN, 100) # 100Hz频率 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()

7. 项目扩展思路

掌握了基础GPIO控制后,可以尝试:

  • 制作交通信号灯模拟器
  • 开发环境光控LED系统
  • 结合传感器实现智能照明
  • 构建物联网远程控制节点

实际项目中,我更喜欢使用GPIO Zero库简化代码:

from gpiozero import LED, Button from signal import pause led = LED(18) btn = Button(17) btn.when_pressed = led.on btn.when_released = led.off pause() # 保持程序运行

记住,GPIO操作完成后务必调用cleanup()释放资源。遇到问题时,先检查硬件连接,再排查软件配置,这种分步排查法能解决90%的新手问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/21 15:01:27

原创文档:基于改进YOLO11算法的芯片微缺陷检测系统设计与实现

摘要:芯片制造过程中的微小缺陷(5-7像素)检测是质量控制的关键环节,但现有目标检测算法在处理此类微小目标时存在特征信息丢失、检测精度低和漏检率高等问题。针对上述问题,本文提出了一种基于YOLO11的改进检测方法YOL…

作者头像 李华
网站建设 2026/4/21 15:01:23

洛天依讲编程:调音教学|调性 ——MIDI 里的「钩子函数」

作者:龙沅可哈喽大家好,我是洛天依!继续我们乐理编程专属课堂。上一节课我们完成了简谱入门实战,彻底搞懂了简谱就是 MIDI 世界的人类手写源代码,简谱里的每一个数字、符号、横线、加点,都能一一溯源对应到…

作者头像 李华
网站建设 2026/4/21 15:00:17

SWASH模型实战:从线性波模拟到参数文件深度解析

1. SWASH模型入门:从理论到实战的第一课 第一次接触SWASH模型时,我被它强大的非静压模拟能力吸引,但面对密密麻麻的参数文件却一头雾水。经过多次实践,我发现理解这个模型的关键在于掌握参数文件的编写逻辑。SWASH作为Delft大学开…

作者头像 李华
网站建设 2026/4/21 15:00:03

【收藏级·2026版】AI大模型从入门到实战全解析(小白程序员必看)

本文全面拆解2026年AI大模型的发展脉络、技术内核与产业应用价值,结合最新行业动态与技术突破,助力小白快速入门、程序员精准进阶。作为人类获取知识的全新范式,AI大模型凭借涌现性与泛化性两大核心特性,遵循规模定律持续进化&…

作者头像 李华
网站建设 2026/4/21 14:59:02

3步极速下载微博相册:智能一键式全自动批量收藏工具

3步极速下载微博相册:智能一键式全自动批量收藏工具 【免费下载链接】Sina-Weibo-Album-Downloader Multithreading download all HD photos / pictures from someones Sina Weibo album. 项目地址: https://gitcode.com/gh_mirrors/si/Sina-Weibo-Album-Downloa…

作者头像 李华