
很多刚接触 Arduino 或者 Micro:bit 的初学者第一步都会纠结同一个问题我该选哪块开发板买 Arduino Uno 怕没有图形化编程买 Micro:bit 又担心扩展性不够最后买回来一堆模块反而不知道怎么拼成一台能跑的小车。如果你也正卡在这个阶段ProtoBot 这类开源机器人套件值得认真了解一下。ProtoBot 的核心卖点不是“能跑”而是“兼容”和“可改装”。它可以同时支持 Arduino 和 Micro:bit 两种主控板底盘、电机、传感器、扩展接口全部模块化几分钟就能从零组装成一台基础小车再根据你的想法换成循迹、避障、机械爪、绘图仪等形态。今天这篇文章就来完整拆解 ProtoBot 的五分钟速通玩法把 20 种改装方案按照基础驱动、传感互动、机械改造、创意展示四个方向梳理清楚并给出 Arduino 和 Micro:bit 双平台的控制代码示例最后聊一聊中文硬字幕的显示思路和常见问题。无论你是给学生上创客课的老师还是第一次玩开源硬件的爱好者这篇教程都可以直接照着做。1. 背景与核心概念1.1 什么是 ProtoBotProtoBot 是一个模块化开源教育机器人底盘方案。它通常包含底盘车架、左右直流电机、万向轮或后轮、电池盒、电机驱动板、传感器扩展接口、螺丝铜柱固定套件等部件并预留了兼容 Arduino Uno/Mega 和 Micro:bit 的安装孔位。之所以强调“开源”是因为它的结构件图纸、固件示例、接线定义基本都是公开的你可以根据自己手头的开发板类型自由选择驱动方案。从产品定位上看ProtoBot 解决的是初学者“买了开发板不知道做什么”和“做了小车不知道怎么加传感器”两个典型痛点。它把机器人最底层的运动平台标准化让你把精力集中在编程和功能扩展上而不是把时间花在研究轮子结构、电机接线这些重复性工作上。1.2 它解决什么问题如果你自己网购散件拼小车通常需要面对以下问题底盘孔位不统一Arduino 装不上Micro:bit 也装不上。电机驱动模块接线复杂新手容易把电源和信号线接错。两个电机转速不一致小车跑偏程序里还不知道怎么校准。想加传感器但底盘上没有合适的固定位置。玩腻了基础车型想改造成机械臂或绘图仪却发现结构件不够用。ProtoBot 这类模块化底盘把这些问题提前解决了。它的孔位和支架设计已经考虑到主流开发板尺寸电机驱动接口也做了防呆处理扩展板周边留有标准传感器安装位让你从“能跑”到“能玩花样”的跨越变得非常平滑。1.3 常见应用场景ProtoBot 的常见玩法大致可以分成以下四类教育实训场景学校社团课、创客夏令营、信息科技课程用来讲解编程逻辑、传感器原理和机器人控制。竞赛基础平台在巡线竞速、避障任务、迷宫求解等比赛中作为运动底盘。个人学习项目用 Arduino 练习 PWM 调速、中断、串口通信用 Micro:bit 练习无线遥控和蓝牙。二次开发原型作为 Python、ROS、ESP32 等更高阶方案的硬件载体验证算法和结构设计。在正式动手之前你需要先理解 ProtoBot 的双主控兼容机制这一点决定了后续所有改装方案放在哪个平台上实现。2. 环境准备与硬件选型2.1 硬件清单建议一个完整的 ProtoBot 快速上手套装通常包含以下部件部件数量作用亚克力或 ABS 底盘车架1整机承载平台直流减速电机2驱动左右轮万向轮/牛眼轮1作为从动支撑电机驱动板如 TB6612/L298N/RZ78991控制电机正反转和速度电池盒1为电机和主控供电超声波传感器模块1避障测距2 路循迹传感器1巡线检测万能支架、铜柱、螺丝若干固定主控和传感器Arduino Uno 或 Micro:bit1主控板不同版本的 ProtoBot 套件配置会有所差别但结构大同小异。如果你手头已经有 Arduino 或 Micro:bit购买裸底盘套装更划算。2.2 软件环境准备Arduino 平台推荐安装Arduino IDE 2.x 或 1.8.x开发板管理器中的 Arduino AVR Boards如果后续使用 ESP32 主控还需要在“开发板管理器”中搜索安装 esp32 支持包国内网络环境下建议配合开源镜像站加速下载Micro:bit 平台推荐使用MakeCode 在线编辑器适合零基础图形化编程Mu Python 编辑器适合书写 MicroPython 代码如果只做无线遥控场景也可以直接用 MakeCode 的 radio 积木本文涉及的示例代码会同时给出 Arduino C 和 MakeCode 思路你可以根据自己的学习目标选择一条主线。2.3 版本与兼容性说明ProtoBot 官方并未固定绑定某个版本的 Arduino 或 Micro:bit因此版本不需要刻意追求最新。Arduino Uno 是最稳定的入门选择Micro:bit V2 在性能上比 V1 更强但对于 ProtoBot 这类简单的电机控制项目V1 也完全够用。需要特别提醒的是Micro:bit 的 IO 口驱动能力很弱不能直接把电机接在 Micro:bit 上跑必须通过电机驱动板扩展。后面接线章节会详细说明这一点。3. 核心原理拆解双主控兼容是怎么实现的3.1 为什么一块底盘能兼容 Arduino 和 Micro:bitProtoBot 的兼容设计主要体现在三个方面第一安装孔位统一。底盘上预留了 Arduino Uno、Micro:bit 以及常见扩展板的螺丝孔通过铜柱调整离地高度避免元件短路或顶到轮子。第二接线端子标准化。电机驱动板的输入侧引出 VIN、GND、左轮 PWM、右轮 PWM 等排针Arduino 和 Micro:bit 都能通过杜邦线连接。Micro:bit 只需要通过鳄鱼夹或者金手指转接板引出引脚就能和驱动板对接。第三逻辑接口低电平友好。直流电机驱动板通常只需要 3.3V 或 5V 逻辑电平Micro:bit 的 3.3V GPIO 和 Arduino 的 5V GPIO 都可以稳定驱动。3.2 直流电机与 PWM 调速要理解 ProtoBot 的控制逻辑绕不开 PWM 调速。直流电机的速度可以通过改变输入电压平均值来控制也就是 PWM 占空比。占空比越大平均电压越高电机转速越快。Arduino 上对应的函数是 analogWrite()Micro:bit 的 MakeCode 里也有模拟写入引脚积木。比如让左轮 70% 速度前进// Arduino 示例让左轮以 70% 占空比正转 int leftPWM 5; // 左轮 PWM 引脚 int leftIN1 6; // 左轮方向引脚 IN1 int leftIN2 7; // 左轮方向引脚 IN2 void setup() { pinMode(leftPWM, OUTPUT); pinMode(leftIN1, OUTPUT); pinMode(leftIN2, OUTPUT); } void loop() { digitalWrite(leftIN1, HIGH); digitalWrite(leftIN2, LOW); analogWrite(leftPWM, 180); // 180/255 ≈ 70% }如果把 IN1 和 IN2 的状态互换电机就会反转。如果两者同为 HIGH 或同为 LOW电机进入刹车或滑行状态。所有的差速转弯逻辑本质上都是在控制左右两个电机的转速差。3.3 传感器扩展接口ProtoBot 扩展板常见的传感器接口形式有2.54mm 排针式直接插杜邦线兼容性最好。PH2.0 防反插座适合教学场景不容易接反。Grove 四线接口包含 VCC、GND、信号线部分套件会集成。在整个改装过程中你需要养成一个习惯每次接线前先确认模块的 VCC 电压范围。超声波传感器一般支持 5V但很多舵机、OLED 屏、数字传感器在 3.3V 下也能工作。电源选择错误是硬件项目最容易被烧毁的原因。4. 五分钟速通从拆箱到跑起来4.1 创建项目结构与接线规划为了方便理解我们先规划一台标准两轮差速小车主控板选择 Arduino Uno电机驱动板选择常见的 TB6612。接线表如下TB6612 引脚Arduino Uno 引脚PWMA5AIN16AIN27PWMB10BIN18BIN29STBY3.3V 或 5VVM电池正极电源输入VCC5VGNDGND这里需要注意的是TB6612 的逻辑电源 VCC 接 5V电机电源 VM 接电池盒正极GND 需要和 Arduino 的 GND 共地。如果你的套件使用 L298N 驱动板接线方式略有不同但核心思路一样。4.2 编写基础运动控制代码先实现一个能让小车前进、后退、左转、右转、停止的完整代码。这份代码可以作为后续所有改装项目的地基。// 文件路径ProtoBot_BaseMotion/ProtoBot_BaseMotion.ino // 功能ProtoBot 两轮差速基础运动控制 // 主控Arduino Uno // 驱动板TB6612 #define PWMA 5 #define AIN1 6 #define AIN2 7 #define PWMB 10 #define BIN1 8 #define BIN2 9 void setup() { pinMode(PWMA, OUTPUT); pinMode(AIN1, OUTPUT); pinMode(AIN2, OUTPUT); pinMode(PWMB, OUTPUT); pinMode(BIN1, OUTPUT); pinMode(BIN2, OUTPUT); digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); digitalWrite(BIN1, LOW); digitalWrite(BIN2, LOW); } void motorStop() { digitalWrite(AIN1, LOW); digitalWrite(AIN2, LOW); digitalWrite(BIN1, LOW); digitalWrite(BIN2, LOW); } void motorForward(int speedVal) { digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, speedVal); digitalWrite(BIN1, HIGH); digitalWrite(BIN2, LOW); analogWrite(PWMB, speedVal); } void motorBackward(int speedVal) { digitalWrite(AIN1, LOW); digitalWrite(AIN2, HIGH); analogWrite(PWMA, speedVal); digitalWrite(BIN1, LOW); digitalWrite(BIN2, HIGH); analogWrite(PWMB, speedVal); } void motorTurnLeft(int speedVal) { digitalWrite(AIN1, LOW); digitalWrite(AIN2, HIGH); analogWrite(PWMA, speedVal); digitalWrite(BIN1, HIGH); digitalWrite(BIN2, LOW); analogWrite(PWMB, speedVal); } void motorTurnRight(int speedVal) { digitalWrite(AIN1, HIGH); digitalWrite(AIN2, LOW); analogWrite(PWMA, speedVal); digitalWrite(BIN1, LOW); digitalWrite(BIN2, HIGH); analogWrite(PWMB, speedVal); } void loop() { motorForward(180); delay(2000); motorTurnLeft(150); delay(1000); motorTurnRight(150); delay(1000); motorBackward(120); delay(2000); motorStop(); delay(1000); }4.3 编写 Micro:bit 版本的控制代码Micro:bit 的 MakeCode 图形化编程不用写大段代码核心逻辑可以通过积木拖拽实现。如果切成 JavaScript 代码大概是这样的// MakeCode JavaScript 思路示意 // 引脚定义部分请根据你的扩展板实际接线修改 let speed 150; input.onButtonPressed(Button.A, function () { pins.digitalWritePin(DigitalPin.P0, 1); pins.digitalWritePin(DigitalPin.P8, 0); pins.analogWritePin(AnalogPin.P1, speed); })这里只是演示思路。MakeCode 中真正控制直流电机需要通过扩展板上已经定义好的电机驱动代码块或者配合第三方扩展库来实现。如果你用 Micro:bit 扩展板通常在 MakeCode 扩展库中能找到对应积木比如“前进 50% 速度”“左转”“停止”等指令。4.4 上电调试与跑偏校准第一次上电前先不要放地上把小车举起来空转确认轮子转动方向符合预期按下“前进”按钮时两个轮子应该同时向前转。如果某个轮子反转交换该电机连接到驱动板的 AIN1/AIN2 两针位置即可。如果小车前进时向右跑偏说明左侧电机转速高于右侧可以在程序里降低左轮 PWM 或提高右轮 PWM。这组校准逻辑可以写成参数int leftOffset 0; int rightOffset 0; 在运动函数里实际输出 speedVal leftOffset。4.5 运行验证把代码烧录进 Arduino 后上电就能看到小车按照“前进-左转-右转-后退-停止”的顺序运动。如果你把 delay 时间改短小车就会呈现连续差速转向的效果。这个流程跑通后意味着你已经掌握了 ProtoBot 的所有底层运动能力接下来就可以往 20 种改装方案方向延伸。5. 20 种改装方案全解析5.1 基础驱动类方案 1-5方案 1经典双轮差速小车这是 ProtoBot 的出厂形态左右两轮差速转向前万向轮支撑。代码就是第 4 节的完整示例适合入门演示。方案 2循迹小车在底盘前部安装 2 路灰度传感器中间夹一条黑线。传感器输出数字电平检测到黑线时对应引脚变 LOW或根据模块判断方式而定。控制逻辑很简单如果左传感器压线说明车偏右需要左转回正如果右传感器压线说明车偏左需要右转回正。// Arduino 循迹核心逻辑 int sensorLeft 11; int sensorRight 12; void setup() { pinMode(sensorLeft, INPUT); pinMode(sensorRight, INPUT); } void loop() { int L digitalRead(sensorLeft); int R digitalRead(sensorRight); if (L LOW R HIGH) { motorTurnLeft(150); } else if (L HIGH R LOW) { motorTurnRight(150); } else { motorForward(160); } }方案 3超声波避障小车在车头安装 HC-SR04 超声波模块不断测量前方距离小于阈值时先停车然后再根据左右测距结果选择转弯方向或者直接固定向一侧转弯。超声波模块 Trig 脚触发测距Echo 脚接收回波距离计算公式为distance duration * 0.034 / 2。方案 4红外遥控小车用红外接收头接收遥控器信号根据键值对应“前进”“后退”“左转”“右转”“停止”动作。Arduino 侧需要 IRremote 库Micro:bit 侧需要通过扩展板外接红外接收模块。方案 5手机蓝牙遥控小车最稳妥的方案是使用 HC-05 或 HC-08 蓝牙串口模块连接 Arduino 的软串口手机端用蓝牙串口 App 发送字符指令。Micro:bit V2 自带蓝牙能力在 MakeCode 里启用 Bluetooth UART 服务也可以实现类似效果。5.2 传感互动类方案 6-10方案 6寻光小车在车头左右两侧安装两个光敏电阻或环境光传感器。比较两侧光强度输出较大的那一侧说明光源更近控制电机向该方向转动。这个项目适合讲模拟量读取和阈值判断。方案 7跟随小车在超声波前先通过人体红外传感器检测是否有人或者通过两个超声波探头做双路测距判断人所在的方向。逻辑比避障更复杂但整体框架一致。方案 8声控小车用声音传感器检测拍手信号每拍一次手小车切换一个运动状态前进、停止、后退、左转、右转循环。核心是消抖处理检测到声音后延时 200ms防止同一个拍手信号被重复读取。方案 9测距显示小车在底盘上固定 OLED 显示屏超声波测距结果实时显示在屏幕上。这个项目可以作为传感器数据可视化入门后面讲解中文硬字幕时会再次用到。方案 10温湿度监测小车把 DHT11 温湿度传感器装在车顶小车可以边移动边采集环境数据通过串口打印或 OLED 显示。改装的要点是固定传感器的位置远离电机驱动板发热区。5.3 机械改造类方案 11-15方案 11舵机云台改装在车头安装一个 SG90 舵机云台把超声波模块固定在舵机上用舵机左右扫描代替固定方向测距。这个方案让避障机器人能判断“前方哪个方向更开阔”避障效果比固定探头的版本好很多。// Arduino 舵机扫描配合超声波避障思路 #include Servo.h Servo myServo; int pos 90; void setup() { myServo.attach(3); } void loop() { for (pos 40; pos 140; pos) { myServo.write(pos); delay(15); } for (pos 140; pos 40; pos--) { myServo.write(pos); delay(15); } }方案 12机械爪小车在底盘前部改装机械爪模块配合一个舵机控制夹爪开合。小车可以完成“移动到目标物、夹起、运回”的简单任务。机械爪需要额外的供电舵机瞬时电流较大建议从电池盒单独取电不要全部从 Arduino 的 5V 引脚取电。方案 13绘图小车把底盘末端的万向轮替换成可安装画笔的支架通过控制左右轮速差画出设定的图形。固定半径转一圈需要校准左右轮速度和时间适合进阶学习。方案 14推土铲小车在车头安装伺服电机驱动的铲斗遇到障碍物时通过舵机把铲斗抬起。这个方案对机械结构强度有一定要求亚克力底盘需要增加加固支架。方案 15六足式模块过渡改装严格来说这不是真正的六足机器人而是把 ProtoBot 底盘和舵机驱动模块组合成的半机械结构用来验证多舵机控制时序和步态算法。这个项目可以让你从轮式机器人过渡到足式机器人控制拓展空间很大。5.4 创意展示类方案 16-20方案 16RGB 氛围灯小车在底盘四周安装 WS2812 RGB 灯带根据小车运动状态切换灯光颜色。前进时显示绿色遇到障碍物时显示红色闪烁转弯时显示蓝色。WS2812 需要严格的时序控制Arduino 上用 Adafruit Neopixel 库Micro:bit 上也有对应的 NeoPixel 扩展库。方案 17MP3 音乐小车在 Arduino 上接 DFPlayer Mini MP3 模块预先在 TF 卡中放置音频文件。小车启动时播放提示音到达目标位置播放成功音效。这个方案对语言类项目特别友好可以配合语音播报传感器数值。方案 18OLED 仪表盘小车在底盘安装 OLED 屏以类似汽车仪表盘的方式显示当前状态速度、转向方向、剩余电压、前方障碍距离。这个方案的重点不是功能而是 UI 排布和刷新效率。方案 19无线遥控编队小车两台或多台 ProtoBot 分别使用 Micro:bit radio 通信。一台作为控制端发送方向指令其余小车作为执行端接收指令并同步运动。这个方案非常适合课堂分组教学能直观讲解无线通信和“广播-接收”模型。方案 20迷你智能配送车综合前面多个方案寻迹传感器判断路径机械爪或者平台装载轻质货物到达站点后用舵机打开舱门OLED 屏显示任务状态。这种综合项目可以用来检验前面 19 个方案的学习成果。6. 中文硬字幕与屏幕显示方案6.1 为什么做中文显示是“硬字幕”ProtoBot 本身不发声也不显示字幕所谓“中文硬字幕”是指用 OLED 屏或 LCD 屏在机器人上进行中文信息显示和视频中通过后期软件添加的字幕不一样它是硬件实时渲染出来的。在比赛中机器人屏幕上的中文提示可以作为状态展示在演示场景中屏幕上的中文反馈远比串口监视器里的英文输出更直观。6.2 Arduino 侧的中文显示方案Arduino Uno 自带内存只有 2KB直接显示中文字库几乎不可能。常见做法是使用 OLED 屏幕驱动库 U8g2开启 UTF-8 字体支持后中文字符会被动态读取生成。这里需要选择带中文字体的 OLED 模块或者使用 U8g2 库中包含的特定中文字库。// Arduino OLED 中文显示示例 // 库U8g2屏幕为 I2C 接口 SSD1306 128x64 #include U8g2lib.h #include Wire.h // 根据屏幕初始化构造函数 U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset*/ U8X8_PIN_NONE); void setup() { u8g2.begin(); } void loop() { u8g2.clearBuffer(); u8g2.setFontDirection(0); u8g2.setFont(u8g2_font_wqy12_t_gb2312); u8g2.drawUTF8(10, 20, 你好 ProtoBot); u8g2.setFont(u8g2_font_wqy12_t_gb2312); u8g2.drawUTF8(10, 40, 前方 15 厘米); u8g2.sendBuffer(); delay(500); }需要说明的是U8g2 对 UTF-8 中文的支持依赖具体的字体枚举值不同版本的 U8g2 库支持的字体集合不一样。如果编译报错提示字体未定义请进入 U8g2 库的 fonts 目录确认当前安装版本支持的字体名称。6.3 Micro:bit 侧的中文显示思路Micro:bit 板载 5x5 LED 点阵直接显示中文笔画太多效果很差。更实用的方案是外接 OLED 屏通过 I2C 把中文编码发给屏幕控制芯片。在 MakeCode 中可以使用第三方的 OLED 扩展库其中部分扩展库不支持中文需要选择支持 UTF-8 字符串渲染的 OLED 中文扩展。如果使用 MicroPython 写 Micro:bit也可以借助 ssd1306 库配合自建小字库显示简单中文。另一个思路是把中文点阵取模后通过图形数组显示在板载 LED 上每次只能显示一个字的一小块做成滚动效果。这种玩法视觉效果很有趣但更偏向基础编程教学实用性不如 OLED。6.4 字模工具与离线字库如果你不想依赖库的函数生成中文可以自己制作字模使用 PCtoLCD2002 或 LCD Image Creator 工具。设置取模方式逐行式、逆向、纵向取模等。生成十六进制数组后在 Arduino 中按像素数组写入 OLED。这种方式的最大优势是没有库依赖可以离线运行但一个 16x16 中文字符需要 32 字节Uno 上存储几个字还好存储大量文字就需要外挂 Flash 芯片了。7. 常见问题与排查思路问题现象常见原因解决思路上电后电机不转电机电源未接或者驱动板上 STBY 脚为低电平检查 VM 电源接线确认 STBY 接高电平小车只能前进不能后退程序控制方向引脚未切换检查 IN1/IN2 电平组合确认代码里确实先拉低再拉高车轮反转电机线接反交换该电机的 IN1/IN2 两根线Micro:bit 插上后无反应金手指方向不对引脚未接触重新插拔检查扩展板指示灯超声波测距一直显示 0Echo 引脚未接或测距周期太短连续测距之间加 100ms 延时烧录程序时提示端口被占用串口被串口监视器占用关闭监视器窗口重新烧录中文 OLED 显示乱码库字体不支持 UTF-8更换支持中文的字体枚举小车跑偏严重左右电机转速不一致程序里增加左右轮速度补偿参数舵机抖动供电不足舵机单独供电共地连接电机发热电压过高或 PWM 一直大占空比工作检查电池电压降低 PWM增加散热排查硬件问题时推荐顺序是先查电源再查接线最后查逻辑。先用万用表测量各模块 VCC 是否有电再用 LED 或杜邦线短接信号引脚看模块反应最后通过串口打印调试信息。8. 最佳实践与工程建议8.1 供电设计ProtoBot 上电瞬间电机电流会增大如果直接从 Arduino 的 5V 引脚给传感器供电容易造成电压跌落导致主控复位。建议供电方案如下电机由电池盒直接供电。传感器统一从电池通过稳压模块或者扩展板的 5V 输出取电。Arduino 或 Micro:bit 独立供电或者通过扩展板的稳压电源供电。任何模块接线前先确认正负极避免反接烧毁。8.2 程序架构当项目从基础运动扩展到多个传感器之后建议把代码拆成多文件模块motion.h运动控制函数声明。sensor.h传感器读取函数声明。config.h引脚定义和调校参数。main.ino主流程。例如把电机控制函数放到单独文件以后每次改装就不用重新修改基础运动逻辑只需要在主流程中调用。8.3 结构加固与走线亚克力底盘虽然平整但长时间跑动容易出现螺丝松动。建议在固定孔位加尼龙垫片铜柱之间加螺丝胶。走线要尽量贴近底盘用扎带或者理线架固定避免转动时卷入轮子和万向轮。8.4 代码版本管理虽然 Arduino 项目看起来很简单但建议从第一天就使用 Git 管理。每次改装对应一个分支或者文件夹比如ProtoBot_BaseProtoBot_LineFollowerProtoBot_ObstacleAvoidProtoBot_ArmClaw这样当某次改装把代码改坏时可以快速回退到上一个能跑的版本。8.5 安全与实践意识在调试带轮子的机器人时养成“先停后查”的习惯任何异常动作先拔电源再检查接线。带激光模块或机械爪的项目运行前要提醒周围人保持距离。做足部改装时舵机运动速度快注意不要把手伸到夹爪运动范围里。9. 下一步学习路线ProtoBot 的最大价值在于给你提供了一个稳定、可重复、可扩展的运动平台。当你跑通了 20 种改装方案里的任意几个就算真正理解了传感器、执行器、主控板、电源和底盘结构之间的协作关系。接下来可以往三个方向深入换更强的开发板用 ESP32 替换 Arduino配合 Micro-ROS 做机器人操作系统入门。引入无线通信先尝试 Micro:bit 的 radio再过渡到蓝牙、Wi-Fi构建多机器人协同系统。做更复杂的机械结构把机械爪、舵机云台和视觉传感器组合做一个可以自主抓取物体的桌面级机器人原型。网上关于 Arduino 和 Micro:bit 的安装包、扩展库和镜像站地址非常多版本更新也频繁关键是先跑通自己手头这套硬件。最后提醒一句不要囤积教程而不动手ProtoBot 这种套件的正确打开方式是把本文收藏好然后拿出螺丝刀和电脑先把第一个“前进-左转-右转”程序跑起来再说。后续遇到任何接线报错、代码编译问题都可以回到第 7 节的排查表格里按顺序对照处理。