I96-2 双摇杆 HC-SR04 扫描测试

拆掉其余 3 个 SG90 后的新方案:只保留 D11 底座舵机,让它带动 HC-SR04 左右扫描测距,串口输出角度和距离,浏览器雷达 UI 实时显示。

D11 舵机 + HC-SR04

舵机每转一个角度测一次距离,输出 A:角度,D:距离。雷达 UI 读取串口后,把角度和距离画成扫描点。

① 接线说明

器件引脚接到板上位置说明
舵机信号线P9 = D11原底座舵机口,不用改,舵机本来就接在这里。
舵机 +5V / GNDP9舵机供电和地线保持原接法。
HC-SR04 TrigP10 信号脚 = D10原大臂舵机口,现在空出来给 Trig 使用。
HC-SR04 EchoP11 信号脚 = D9原小臂舵机口,现在空出来给 Echo 使用。
HC-SR04 VCCP10 或 P11 的 +5V 脚两个口是同一路 5V,接哪个都可以。
HC-SR04 GNDP10 或 P11 的 GND 脚两个口是同一路 GND,接哪个都可以。
P12 / D5空着不接本次扫描测试用不到。
只用 1 个舵机,电流比 4 个舵机同时动作小很多,电脑 USB 口通常够用;如果仍然复位,改用独立 5V 电源给舵机和 HC-SR04 供电,并且必须共地。

② 固件代码

Arduino IDE 直接上传版本
// HC-SR04 + D11 舵机扫描测试固件
#include <Arduino.h>
#include <Servo.h>

const uint8_t PIN_SERVO = 11;
const uint8_t PIN_TRIG  = 10;
const uint8_t PIN_ECHO  = 9;

const int SCAN_MIN = 0;
const int SCAN_MAX = 180;
const int STEP_DEG = 2;
const int STEP_DELAY_MS = 30;

Servo scanServo;

long readDistanceCm() {
  digitalWrite(PIN_TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(PIN_TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(PIN_TRIG, LOW);

  long duration = pulseIn(PIN_ECHO, HIGH, 30000UL);
  if (duration == 0) return -1;
  return duration / 58;
}

void sweepStep(int angle) {
  scanServo.write(angle);
  delay(STEP_DELAY_MS);

  long distance = readDistanceCm();
  Serial.print("A:");
  Serial.print(angle);
  Serial.print(",D:");
  Serial.println(distance);
}

void setup() {
  scanServo.attach(PIN_SERVO);
  pinMode(PIN_TRIG, OUTPUT);
  pinMode(PIN_ECHO, INPUT);

  scanServo.write(90);
  Serial.begin(115200);
  Serial.println("BOOT: HC-SR04 scan test");
}

void loop() {
  for (int angle = SCAN_MIN; angle <= SCAN_MAX; angle += STEP_DEG) {
    sweepStep(angle);
  }

  for (int angle = SCAN_MAX; angle >= SCAN_MIN; angle -= STEP_DEG) {
    sweepStep(angle);
  }
}
核心逻辑:readDistanceCm() 按 HC-SR04 标准时序发 Trig 脉冲,用 pulseIn() 量 Echo 高电平时间换算成厘米;sweepStep() 让舵机转到某个角度后测一次距离;loop() 做 0°→180°→0° 往返扫描。

③ 数据流向

舵机转到角度 A
HC-SR04 测距离 D
串口打印 A:角度,D:距离
radar.html 读取串口
浏览器画雷达扫描图

④ 测试 UI

用 Chrome 或 Edge 桌面版打开 radar.html,点击“连接串口”,选择对应 COM 口。页面会读取固件输出的 A:角度,D:距离,绿色扫描线跟着舵机转,黄色亮点标出测到的障碍物位置。

注意:Web Serial API 主要支持桌面版 Chrome / Edge。测试时不要同时打开 Arduino IDE 串口监视器,否则串口会被占用,浏览器连不上。

⑤ 客户回复话术

可直接复制给客户

您好,这个是 I96-2 双摇杆板的 HC-SR04 扫描测试方案:只保留 D11 底座舵机,让舵机带着 HC-SR04 左右转动扫描。HC-SR04 的 Trig 接 P10 信号脚 D10,Echo 接 P11 信号脚 D9,VCC/GND 接 P10 或 P11 的 5V/GND。上传页面里的 Arduino 程序后,串口会输出 A:角度,D:距离;用 Chrome/Edge 打开雷达 UI,可以看到实时扫描图。测试时如果舵机动作导致复位,建议使用独立 5V 电源,并和主控 GND 共地。