游乐游手机版
首页/AI热点日报/热点详情

树莓派Pico红外线接收模块详细使用教程

类型:热点整理2026-07-21
在树莓派Pico上使用HX1838红外接收模块,需将pico_ir库上传至根目录,模块VCC接VSYS、GND接GND、S接GP28。编程时先添加库路径,通过read_code函数读取并显示红外遥控器按键编码,还可使用send_code转发信号。代码可判断特定编码执行其他操作。

本文将详细介绍如何在 树莓派 Pico 开发板 上使用 红外线接收模块(HX1838 型号),结合开源的 pico_ir 库,轻松捕获红外遥控器发射的信号。按照本教程的步骤操作,你即可快速掌握红外信号的读取与转发方法。

一、前期准备:下载并上传 pico_ir 库文件

  • 下载完整的 pico_ir 库压缩包,解压后得到名为 pico_ir 的文件夹。
  • 将整个 pico_ir 文件夹上传至树莓派 Pico 的 根目录。建议使用 Thonny 的 File 功能框 完成上传操作。

小提示: 上传前请确保 Pico 已通过 USB 线连接至电脑,且 Thonny 能够正常识别设备。

二、硬件接线说明

红外线接收模块(HX1838)共有三个引脚,按下表连接树莓派 Pico:

  • 模块 + 引脚 → 树莓派 Pico 的 VSYS
  • 模块 – 引脚 → 树莓派 Pico 的 GND
  • 模块 S 引脚 → 树莓派 Pico 的 GP28

三、编程实现

3.1 导入 pico_ir 库的注意事项

由于 pico_ir 库存放于 Pico 根目录的 pico_ir 文件夹内,无法直接使用常规的 import pico_ir 方式导入。必须在代码开头添加以下两行,以指定库的路径:

import sys
sys.path.append('pico_ir')

注意: 如果缺少这两行代码,运行时将提示 找不到 pico_ir 模块

3.2 完整代码示例

以下代码可实现读取红外遥控器按键编码,并在 Shell 窗口中显示。请将代码保存为 main.py,并上传至 Pico 的根目录。

import utime
import sys
sys.path.append('pico_ir')
from machine import Pin
from pico_ir import read_code, send_code, validate_code, InvalidCodeException

pin_in = Pin(28, Pin.IN, Pin.PULL_UP)
pin_out = Pin(21, mode=Pin.OUT)

while True:
    out = read_code(pin_in)
    # ignore random signals 
    if out:
        try:
            validate_code(out)
            print(out)
            utime.sleep_ms(100)
            send_code(pin_out, out)
        except InvalidCodeException:
            print("InvalidCodeException:" + out)

四、运行效果展示

运行上述代码后,将红外遥控器对准 HX1838 接收头按下任意按键,Thonny 的 Shell 窗口 将显示对应的按键编码(例如:0xFF00FF00)。

效果截图:

若希望在接收到特定按键编码后执行其他操作(如点亮 LED、控制电机等),可在代码中加入 if 判断语句,并编写相应的处理逻辑。例如:

if out == "0xFF00FF00":
    # 执行自定义操作
    print("电源键按下!")

五、常见问题及解决方法

问题1:运行后出现 ImportError: no module named 'pico_ir' 错误

原因: 未正确添加库路径,或 pico_ir 文件夹未上传至根目录。

解决办法: 请确认代码开头已添加 sys.path.append('pico_ir'),并检查 pico_ir 文件夹是否位于 Pico 的根目录(可通过 Thonny 的文件管理器查看)。

问题2:按下遥控器按键后,Shell 无任何输出

原因: 硬件连接有误,或遥控器协议不兼容(常见为 NEC 协议)。

解决办法: 检查接线是否正确:+ 脚接 VSYS,– 脚接 GND,S 脚接 GP28。若遥控器非标准 NEC 协议,可尝试更换遥控器。此外,可调整 pin_in 的上拉电阻设置(例如改为 Pin.IN, Pin.PULL_DOWN)。

问题3:Shell 频繁输出 InvalidCodeException 异常

原因: 接收到的红外信号不完整或存在干扰(如环境光、其他红外设备)。

解决办法: 代码中已通过 validate_code 过滤无效信号,属正常现象。若频繁出现,可尝试在接收时增加 utime.sleep_ms(10) 延时,或改善接收模块与遥控器之间的直线距离。

六、扩展提示与进阶建议

  • 提示: 如需发送红外信号(如复制遥控器功能),代码中已包含 send_code 函数,但需额外连接红外发射模块(接 GP21)。
  • 本教程使用 GP28 作为接收引脚,你也可以更换为其他可用 GPIO,记得同步修改代码中的 Pin(28)
  • 若发现接收距离较短,可为红外接收模块的 VSYS 引脚提供 3.3V 供电(或 5V 供电,但需注意 Pico 的 GPIO 耐压)—— 使用 VSYS 是兼顾稳定性与便捷性的推荐方案。

完成以上步骤后,你已掌握了在树莓派 Pico 上使用 HX1838 红外接收模块的基础方法。现在可以动手尝试开发更多有趣的红外控制项目了!

来源:https://m.elecfans.com/article/2327849.html

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。