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

如何用电脑键盘(W/A/S/D)通过蓝牙控制ESP32小车?

可行实现方法

方案1:Python(键盘监听)+蓝牙串口通信

利用你熟悉的Python keyboard库监听键盘输入,通过蓝牙串口把控制指令发送给Arduino,Arduino端解析指令执行对应动作。

步骤:

  1. 给Arduino搭配蓝牙模块(如HC-05),完成串口通信接线(蓝牙TX接Arduino RX,蓝牙RX接Arduino TX,注意电平转换)。
  2. 电脑连接蓝牙模块对应的串口(可在设备管理器中查看COM口编号)。
  3. Python端代码示例:
import keyboard
import serial
import time

# 替换为你的蓝牙串口COM口和波特率
ser = serial.Serial('COM3', 9600, timeout=1)
time.sleep(2)  # 预留蓝牙连接时间

def send_command(cmd):
    ser.write(cmd.encode())

while True:
    if keyboard.is_pressed('w'):
        send_command('F')  # 发送前进指令
    elif keyboard.is_pressed('s'):
        send_command('B')  # 发送后退指令
    elif keyboard.is_pressed('a'):
        send_command('L')  # 发送左转指令
    elif keyboard.is_pressed('d'):
        send_command('R')  # 发送右转指令
    else:
        send_command('S')  # 发送停止指令
    time.sleep(0.1)  # 避免指令发送过于频繁
  1. Arduino端代码示例:
#include <SoftwareSerial.h>

// 定义蓝牙串口引脚(RX接蓝牙TX,TX接蓝牙RX)
SoftwareSerial btSerial(10, 11);
char receivedCmd;

void setup() {
  // 初始化电机驱动引脚(根据你的硬件修改)
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  
  btSerial.begin(9600);
}

void loop() {
  if (btSerial.available() > 0) {
    receivedCmd = btSerial.read();
    switch(receivedCmd) {
      case 'F':
        Forward();
        break;
      case 'B':
        Backward();
        break;
      case 'L':
        Left();
        break;
      case 'R':
        Right();
        break;
      case 'S':
        Stop();
        break;
    }
  }
}

// 电机控制函数(根据你的驱动电路调整逻辑)
void Forward() {
  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
}

void Backward() {
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
}

void Left() {
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, LOW);
}

void Right() {
  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
}

void Stop() {
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
}

方案2:Processing软件监听键盘+蓝牙通信

如果你不想用Python,Processing是Arduino官方配套工具,内置键盘监听功能,可直接与蓝牙串口通信。

Processing端代码示例:

import processing.serial.*;

Serial btSerial;

void setup() {
  // 打印所有可用串口,选择蓝牙模块对应的端口
  println(Serial.list());
  btSerial = new Serial(this, Serial.list()[0], 9600);
}

void draw() {
  if (keyPressed) {
    switch(key) {
      case 'w':
        btSerial.write('F');
        break;
      case 's':
        btSerial.write('B');
        break;
      case 'a':
        btSerial.write('L');
        break;
      case 'd':
        btSerial.write('R');
        break;
    }
  } else {
    btSerial.write('S');
  }
}

Arduino端代码与方案1完全一致,无需修改。

注意事项

  • 蓝牙模块的波特率需与代码设置一致(默认多为9600)。
  • 电机驱动部分需根据你使用的硬件(如L298N、L293D)调整引脚和逻辑。
  • 测试时可先通过串口监视器验证指令传输是否正常,再连接电机。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:17:02