You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:树莓派3中用Python 3检测键盘按键控制机器人前进

树莓派3上用Python检测键盘按键(控制机器人)的可行方案

我太懂你这种踩坑的感受了——普通Linux桌面的方案放到树莓派上经常掉链子,毕竟它的嵌入式环境权限、硬件交互逻辑都有点不一样。针对你的需求(检测上箭头控制机器人前进),我给你两个经过实测的方案,都是树莓派专属的:

方案一:用evdev直接读取输入设备(最可靠)

evdev是直接和Linux输入子系统交互的库,完全适配树莓派的环境,能精准捕获按键事件,包括箭头键这种特殊按键。

步骤1:安装依赖

先在终端里装库:

sudo apt-get update && sudo apt-get install python3-evdev
# 或者用pip安装
pip3 install evdev

步骤2:找到你的键盘设备路径

树莓派会把键盘识别为/dev/input/eventX的设备,你需要找到对应的那个:

  1. 先列出所有输入设备:
    ls /dev/input/
    
  2. 然后用这个命令查看设备详情,找到带“Keyboard”字样的条目,记下它的eventX编号(比如event0):
    cat /proc/bus/input/devices
    
  3. 也可以用evdev自带的测试工具确认:
    sudo python3 -m evdev.evtest
    
    选对应的设备,按下上箭头,看输出里的key code 103就是上箭头的标识。

步骤3:编写检测代码

下面是示例代码,按下上箭头时触发机器人前进的逻辑,记得把/dev/input/event0换成你找到的设备路径:

from evdev import InputDevice, ecodes, list_devices

# 替换成你的键盘设备路径
keyboard = InputDevice('/dev/input/event0')

# 机器人前进的逻辑,替换成你自己的GPIO控制代码
def robot_forward():
    print("机器人前进中...")
    # 比如:GPIO.output(IN1, GPIO.HIGH)
    # GPIO.output(IN2, GPIO.LOW)
    # ...

# 监听按键事件
for event in keyboard.read_loop():
    # 只处理按键按下事件
    if event.type == ecodes.EV_KEY and event.value == 1:
        if event.code == ecodes.KEY_UP:
            robot_forward()

权限注意事项

  • 运行代码时需要加sudo,因为访问/dev/input设备需要root权限:
    sudo python3 your_script.py
    
  • 如果不想每次用sudo,可以把当前用户加入input组,之后重启或重新登录就生效:
    sudo usermod -aG input pi
    

方案二:用pynput(更简洁,适合简单场景)

如果evdev配置起来觉得麻烦,pynput是个更上层的库,封装了输入设备的操作,在树莓派上也能跑,但需要额外装X11依赖(因为它依赖Xlib)。

步骤1:安装依赖

sudo apt-get install python3-xlib
pip3 install pynput

步骤2:编写检测代码

这个代码更简洁,不需要找设备路径:

from pynput import keyboard

def robot_forward():
    print("机器人前进中...")
    # 替换成你的机器人控制逻辑

def on_press(key):
    try:
        # 检测上箭头按键
        if key == keyboard.Key.up:
            robot_forward()
    except AttributeError:
        # 处理普通字符按键,这里我们不需要,直接忽略
        pass

# 启动监听
with keyboard.Listener(on_press=on_press) as listener:
    listener.join()

测试小技巧

  1. 先单独跑按键检测代码,确认按下上箭头时能打印出消息,再接入机器人的GPIO控制逻辑;
  2. 如果是无线键盘,注意要确保键盘和树莓派连接稳定,有时候无线设备的事件延迟会导致检测不灵敏。

内容的提问来源于stack exchange,提问作者Sam Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:48:22