M1 Rover:专为复杂地形设计的户外自主机器人
核心组件与物料清单
| 组件 | 数量 | 备注 |
|---|---|---|
| SparkFun 双 H 桥电机驱动板 (L298) | 1 | 控制 4 路直流电机 |
| 直流电机 (通用) | 4 | 驱动四轮驱动底盘 |
| Arduino UNO R3 | 1 | 主控制器 |
| LED (通用) | 8 | 前灯 4 白、后灯 2 红、其余 2 备用 |
| 电阻 220 Ω | 8 | LED 限流 |
| 舵机 Tower Pro MG996R | 1 | 超声波传感器云台/机械臂 |
| 超声波测距模块 HC-SR04 | 1 | 避障与测距 |
软件与在线工具
- Arduino IDE — 固件编写与上传
- Microsoft Visual Studio 2015 — 上位机 C# 监控界面开发
- Windows 10 IoT Core — 可选的边缘计算部署
项目背景与设计理念
在完成数款室内机器人后,作者决定挑战户外复杂地形,诞生了 M1 Rover。它不仅是一款四驱遥控车,更支持:
- 自主导航:按预设指令自动巡航
- 远程遥控:游戏手柄 / 自定义摇杆 / 蓝牙手机 App
- 模块化扩展:预留传感器、摄像头、机械臂安装位
第一步:机械结构设计
使用 Google SketchUp 2017 建模,三周完成船体设计。关键决策:
- 材料:3 mm 激光切割木板,轻量且易加工
- 采用「套件化」结构,仅需螺丝即可组装
- 命名为 M1,规划后续迭代 M2、M3……

第二步:核心功能清单
- 续航 ≤ 3 小时(9 V 电池供电)
- 兼容 Arduino Uno / Mega / Nano
- 工作电压 5 V – 9 V DC
- 68 mm 直径越野轮 + L298N 双 H 桥
- 前 4 白 LED + 后 2 红 LED(各串联 220 Ω)
- HC-06 蓝牙模块、Arduino Sensor Shield v5.0
- HC-SR04 超声波、舵机云台
第三步:电机驱动电路
L298N 采用 H 桥拓扑,实现正反转与 PWM 调速。关键布线要点:
- 所有模块共地(Arduino、电池、驱动板)
- 若不需要调速,PWM 引脚可悬空
- 四路电机并联两两桥接,实现四驱同步

第四步:底盘组装
激光切割件按编号拼装,前后灯组预埋线槽。组装顺序:
- 底盘主框架 → 电机支架 → 轮子
- 上层甲板 → 电池仓 → 控制器固定柱
- 前灯组(4 白 LED) / 后灯组(2 红 LED)
第五步:完整电路原理图
核心连接拓扑:
Arduino Uno R3
├─ Sensor Shield v5.0
│ ├─ L298N (D5,D6,D11,D12)
│ ├─ HC-SR04 (D8 Trig, D9 Echo)
│ ├─ HC-06 BT (D0 Rx, D1 Tx)
│ ├─ Servo (D3)
│ ├─ Buzzer (D2)
│ ├─ Front LED ×4 (D4)
│ └─ Rear LED ×2 (D7)
├─ 9 V 电池 → L298N VS
└─ 9 V 电池 → Arduino Vin


第六步:固件与上位机
Arduino 端通过串口协议解析指令,兼容蓝牙/有线/PC 多种控制源。核心逻辑:
- 指令字符:F 前进、B 后退、L 左转、R 右转、S 停止、I 前右、G 前左
- 超声波测距 < 10 cm 触发蜂鸣器报警并强制停车
- 前/后灯随运动状态自动点亮
// 关键片段:指令解析与避障
void loop() {
if (Serial.available()) {
char cmd = Serial.read();
long cm = readUltrasonic();
if (cm > 10) {
switch(cmd) {
case 'F': setMotor(HIGH,LOW,HIGH,LOW); break;
case 'B': setMotor(LOW,HIGH,LOW,HIGH); break;
case 'L': setMotor(LOW,LOW,HIGH,LOW); break;
case 'R': setMotor(HIGH,LOW,LOW,LOW); break;
case 'I': setMotor(HIGH,LOW,LOW,HIGH); break;
case 'G': setMotor(LOW,HIGH,HIGH,LOW); break;
default: setMotor(LOW,LOW,LOW,LOW);
}
} else {
beepAlarm(); // 障碍物过近
}
}
}
上位机:C# WinForms 程序,提供虚拟摇杆、实时测距显示、灯光开关、日志记录。
第七步:产品化套件规划
| 套件版本 | 核心差异 |
|---|---|
| STARTER | 基础底盘+电机+驱动+UNO,预留传感器安装孔 |
| EXPLORER | 增加手机 IP 摄像头、蓝牙遥控、自主避障 |
| MAPPING | 集成 GPS 模块,实时轨迹记录与导出 |
| MANIPULATION | 加装 2 自由度机械臂 + 50 mm 两指夹爪 |
舵机保护提示:并非所有舵机都能转 180°。建议用servo.writeMicroseconds(1000~2000)实测机械极限,并在代码中用constrain(angle, min, max)限制范围,防止堵转烧毁。
可下载资源
- DXF 激光切割图纸:
m1rover_dxf_hackaday_4o7WTGHUGE.dxf - 原理图 PNG:见 Schematics 章节
制造工艺
- Raspoulette:太阳能自主鸡舍门控制系统原型
- 树莓派 2 运行 Windows IoT Core 打造 Rover 机器人:从入门到进阶指南
- Simple Pi Robot:用树莓派打造 2WD 自主巡航车
- Arduino UNO + MAX7219 自制《UFO攻击》复古射击游戏机
- 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
- Arduino 通用双极性步进电机控制库——精准控制转速、角度、圈数与方向
- MyRiver:基于 Arduino MKR FOX 1200 的河流水质远程监测系统
- DIY 钢铁侠人偶:Arduino 控制超声波触发音效与灯光
- DIY 吉他高速拨片与踏板 - 3D 打印电机驱动拨片制作指南
- 线性电机原理与演进:从电能到精密直线运动的技术演变
- 伺服电机深度解析:工作原理、分类与核心价值
- 磁阻电机:类型、运行原理与应用