资讯动态

50元预算DIY桌面机器人:从零搭建可编程蓝牙遥控小车

发布时间:2026/8/21 5:02:42 来源:尧图企业网站定制
这次我们来看一个低成本桌面轮式机器人的 DIY 项目。核心目标很明确用大约 50 元的预算从零开始搭建一个能跑、能遥控、具备基础扩展能力的桌面级机器人小车。这不仅仅是买套件组装而是涉及结构设计、主控选择、电机驱动、电源管理和基础编程的完整实践。对于嵌入式初学者、电子爱好者或想带孩子体验创客乐趣的家长来说这个项目门槛不高但涵盖的知识点很全。它不追求复杂的 SLAM 或视觉识别而是聚焦于让轮子先可靠地转起来并搭建一个可后续升级的硬件平台。本文将带你从物料清单开始一步步完成机械组装、电路连接、程序烧录和遥控测试最终让你获得一个完全由自己“手搓”出来的可编程机器人底盘。1. 核心能力速览能力项说明项目类型桌面轮式机器人 DIY两轮差分驱动底盘核心功能前进/后退/转向遥控、可编程控制、基础扩展接口主控芯片常见 8位/32位单片机如 STC89C52、STM32F103、Arduino Nano驱动方案L298N 或 TB6612 电机驱动模块动力系统N20 微型减速电机带编码器可选电源系统18650 锂电池组或 9V 电池配合降压模块控制方式蓝牙HC-05/06遥控或红外遥控后续可扩展 WiFi车身结构亚克力板激光切割或 3D 打印成本极低编程环境Arduino IDE、Keil 等依赖主控选择总成本估算核心控制在 50 元人民币左右视具体物料渠道浮动适合场景嵌入式学习、电子DIY入门、创客教育、机器人底盘验证2. 适用场景与使用边界这个项目最适合以下几类人嵌入式/单片机初学者想通过一个完整项目实践 GPIO 控制、PWM 调速、串口通信等核心技能。电子DIY爱好者享受从画图、切割到焊接、调试的全过程乐趣。教育工作者或家长寻找一个安全、低成本、效果直观的 STEM 教学或亲子活动项目。机器人算法验证者需要一个稳定、廉价的差分驱动底盘来测试巡线、避障等基础算法。它能解决什么问题理论与实践结合将枯燥的单片机引脚定义转化为能让小车跑起来的实际代码。建立系统观理解一个最小机器人系统所需的电源管理、信号控制、机械结构等模块如何协同工作。提供可扩展平台完成基础底盘后可以方便地加装超声波传感器、红外探头、摄像头等升级功能。它的局限性是什么性能有限N20 电机扭矩小不适合负重或复杂地形。功能基础初始版本仅实现遥控移动智能功能需额外开发。精度一般除非使用带编码器的电机并进行闭环控制否则直线行走和转角精度不高。安全与合规边界使用锂电池时必须注意充电安全防止短路建议使用带保护板的电池。小型电机和齿轮箱运行时避免手指或衣物被卷入。本项目为学习与实验目的设计不应用于可能造成人身伤害或财产损失的场合。3. 环境准备与前置条件在开始采购和焊接前请确保你已准备好以下软硬件环境1. 硬件工作台一个宽敞、明亮、静电防护良好的桌面。必备工具电烙铁、焊锡丝、松香、吸锡器、万用表、螺丝刀套装、镊子、剥线钳。可选但推荐一台 3D 打印机用于打印车架或 access to 激光切割服务用于切割亚克力板。2. 软件与开发环境电路设计可选可以使用立创 EDA 等免费工具绘制简单的电源分配板原理图但本项目直接使用杜邦线连接模块也可行。结构设计使用 Fusion 360、SolidWorks 或简单的 Inkscape 设计车架图纸。编程环境如果主控选用Arduino Nano/Uno安装 Arduino IDE。如果主控选用STC89C52安装 Keil C51 和 STC-ISP 下载软件。如果主控选用STM32F103C8T6安装 Arduino IDE 并配置 STM32 支持或安装 Keil MDK。手机APP蓝牙遥控在手机应用商店搜索“蓝牙串口”或“Arduino Bluetooth Controller”提前安装好。3. 核心物料清单预算约50元以下是基于常见电商平台散件价格的估算清单购买时请注意选择兼容的电压和接口。物料名称规格/型号数量预估单价元备注主控板Arduino Nano 兼容版18-12核心控制器易编程电机驱动L298N 模块15-7驱动两个直流电机直流电机N20 减速电机6V24-6 *2提供动力注意转速和扭矩车轮65mm 塑料轮21.5-2 *2匹配电机轴径通常为3mm电源18650 电池*224-6 *2或使用 9V 方块电池电池盒/支架18650 双节电池盒12-3带开关为佳电压降压模块LM2596 或 MP158412-3将电池电压降至 5V 给主控供电蓝牙模块HC-05 或 HC-0618-10用于手机遥控车架材料3mm 亚克力板或 3D 打印耗材1套5-10结构主体万向轮/牛眼轮小型万向轮11-2用于支撑与转向连接线杜邦线公对公、公对母1包2-3用于模块间连接紧固件M3螺丝螺母套装1套2-3用于固定各部件总计~50元价格随渠道和选择浮动4. 机械结构组装车架是机器人的骨骼其稳定性和电机安装精度直接影响运动性能。设计要点尺寸根据车轮和电池尺寸设计通常成品长约15-20cm宽约10-15cm。电机固定设计精准的安装孔位确保两个驱动轮轴线平行否则小车会跑偏。重心将较重的电池布置在车体中部或靠近驱动轴的位置降低重心提高稳定性。万向轮在车架前部或后部中心位置设计一个万向轮安装点形成“两驱一万向”的经典结构。制作方法二选一方案A3D 打印使用建模软件如 Fusion 360设计车架导出 STL 文件。用 3D 打印机使用 PLA 材料打印。建议填充率 20%-30%确保强度。// 这是一个极简的 OpenSCAD 示例用于生成一个底板 difference(){ cube([150, 100, 3], centertrue); // 底板 // 在这里添加电机座、电池盒等安装孔 translate([60, 35, 0]) cylinder(h5, d3, centertrue); // 示例安装孔 }方案B亚克力板激光切割使用矢量绘图软件如 Inkscape绘制车架图纸包含所有切割和雕刻线。将图纸交给激光切割服务商或使用自有设备切割 3mm 厚亚克力板。亚克力板强度高、美观但脆性大钻孔和安装时需小心。组装步骤将两个 N20 电机用螺丝固定在车架两侧的电机座上。将车轮紧紧压入电机轴通常是 D 型轴注意方向。在车架预留位置安装万向轮。将电池盒、主控板、驱动板等用螺丝或尼龙柱固定在车架平台上。布局时考虑走线方便。5. 电路连接与焊接这是将各个电子模块“编织”成神经网络的关键一步。请务必在断电状态下操作并对照原理图或下表逐一连接。核心连接逻辑电源流电池 - 降压模块 - 为各模块提供稳定电压。控制流主控板接收指令 - 电机驱动板 - 电机。信号流蓝牙模块 - 主控板串口。以下以 Arduino Nano L298N HC-05 为例给出接线表从 (From)连接到 (To)线缆类型功能说明电池正极 ()L298N 模块12V输入口红线为电机驱动供电电池正极 ()降压模块IN红线可并联为降压模块供电电池负极 (-)L298N 模块GND黑线电源地电池负极 (-)降压模块IN-黑线可并联电源地降压模块OUT(5V)Arduino NanoVIN或5V红线为 Arduino 供电降压模块OUT-(GND)Arduino NanoGND黑线共地Arduino NanoGNDL298N 模块GND杜邦线黑必须共地Arduino D5L298NIN1杜邦线控制电机A方向Arduino D6L298NIN2杜邦线控制电机A方向Arduino D9L298NENA杜邦线控制电机A速度 (PWM)Arduino D7L298NIN3杜邦线控制电机B方向Arduino D8L298NIN4杜邦线控制电机B方向Arduino D10L298NENB杜邦线控制电机B速度 (PWM)L298NOUT1左侧电机 线1导线驱动电机AL298NOUT2左侧电机 线2导线驱动电机AL298NOUT3右侧电机 线1导线驱动电机BL298NOUT4右侧电机 线2导线驱动电机BArduinoRX(D0)HC-05TXD杜邦线串口接收数据ArduinoTX(D1)HC-05RXD杜邦线串口发送数据Arduino5VHC-05VCC杜邦线红为蓝牙模块供电ArduinoGNDHC-05GND杜邦线黑共地接线检查清单[ ] 电源极性是否正确正负极切勿接反[ ] 所有GND是否已连接到一起共地是电路正常工作的基础[ ] 电机驱动板的使能引脚ENA, ENB是否接到了 Arduino 的 PWM 引脚带~标识[ ] 蓝牙模块的 TX/RX 是否与 Arduino 的 RX/TX交叉连接TX接RXRX接TX[ ] 所有接线是否牢固有无虚焊或松动6. 程序烧录与基础驱动测试硬件连接好后我们先不着急做遥控而是写一个简单的测试程序确保两个电机能按预期正反转。1. Arduino 基础电机驱动测试程序打开 Arduino IDE新建一个项目复制以下代码。这段代码让小车依次执行前进2秒 - 停止1秒 - 后退2秒 - 停止1秒 - 左转2秒 - 右转2秒 - 停止。// 引脚定义 const int IN1 5; // 左电机方向1 const int IN2 6; // 左电机方向2 const int ENA 9; // 左电机速度 (PWM) const int IN3 7; // 右电机方向1 const int IN4 8; // 右电机方向2 const int ENB 10; // 右电机速度 (PWM) void setup() { // 初始化所有电机控制引脚为输出模式 pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENB, OUTPUT); // 初始状态停止所有电机 stopMotors(); delay(1000); // 上电等待 } void loop() { // 测试前进 moveForward(150); // 速度值 0-255 delay(2000); stopMotors(); delay(1000); // 测试后退 moveBackward(150); delay(2000); stopMotors(); delay(1000); // 测试左转原地 turnLeft(150); delay(2000); stopMotors(); delay(1000); // 测试右转原地 turnRight(150); delay(2000); stopMotors(); delay(1000); // 循环结束长时间停止 while(1){ stopMotors(); } } // 功能函数定义 void moveForward(int speed) { // 左电机前进 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, speed); // 右电机前进 digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENB, speed); } void moveBackward(int speed) { // 左电机后退 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); analogWrite(ENA, speed); // 右电机后退 digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENB, speed); } void turnLeft(int speed) { // 左电机后退右电机前进 - 原地左转 digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); analogWrite(ENA, speed); digitalWrite(IN3, HIGH); digitalWrite(IN4, LOW); analogWrite(ENB, speed); } void turnRight(int speed) { // 左电机前进右电机后退 - 原地右转 digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW); analogWrite(ENA, speed); digitalWrite(IN3, LOW); digitalWrite(IN4, HIGH); analogWrite(ENB, speed); } void stopMotors() { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); analogWrite(ENA, 0); digitalWrite(IN3, LOW); digitalWrite(IN4, LOW); analogWrite(ENB, 0); }2. 烧录与测试步骤用 USB 数据线连接 Arduino Nano 和电脑。在 Arduino IDE 中选择正确的板卡类型Arduino Nano和处理器ATmega328P (Old Bootloader)或根据你的版本选择。选择正确的端口COMxx 或 /dev/ttyUSBx。点击“上传”按钮将程序烧录到 Arduino。烧录成功后将小车放在空旷地面打开电池开关。观察小车是否按“前进-后退-左转-右转”的顺序运动。3. 问题排查小车不动首先检查电池是否有电开关是否打开。然后用万用表测量 Arduino 的 5V 和 GND 之间是否有电压。接着检查 L298N 模块上的电源指示灯是否亮起。只有一个轮子转检查不转的电机对应的接线IN1/IN2/ENA 或 IN3/IN4/ENB是否松动程序中的引脚定义是否与实际接线一致。转动方向相反交换该电机连接 L298NOUT1和OUT2的两根线即可。运动不规律检查所有GND是否都已可靠连接。共地不良是导致信号紊乱最常见的原因。7. 蓝牙遥控功能集成基础驱动测试通过后我们引入蓝牙模块实现用手机遥控。1. 蓝牙模块HC-05配置通常只需一次大多数 HC-05 模块出厂设置即可使用但为了确保可靠可以将其进入 AT 模式进行基础检查。需要将 HC-05 的EN或KEY引脚接高电平3.3V或5V然后通过 USB 转 TTL 模块连接电脑用串口助手波特率 38400发送 AT 指令查询版本和地址。# 示例 AT 指令 AT # 测试连接应返回 OK ATNAME? # 查询模块名称可改为自定义名 ATNAMEMyRobot ATPSWD? # 查询配对密码默认为 1234 ATUART? # 查询串口参数应与 Arduino 设置匹配如 9600,0,0配置完成后断开EN引脚连接使其进入正常工作模式。2. Arduino 蓝牙遥控程序以下程序实现通过手机蓝牙串口 APP 发送单个字符来控制小车。‘F’前进‘B’后退‘L’左转‘R’右转‘S’停止‘0’-‘9’控制速度等级映射到 PWM 值// 引脚定义 (与之前相同) const int IN1 5; const int IN2 6; const int ENA 9; const int IN3 7; const int IN4 8; const int ENB 10; int motorSpeed 150; // 默认速度 void setup() { // 初始化电机引脚 pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(ENA, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); pinMode(ENB, OUTPUT); stopMotors(); // 初始停止 // 初始化串口通信用于蓝牙 Serial.begin(9600); // 波特率需与 HC-05 模块匹配 Serial.println(Bluetooth Robot Ready!); } void loop() { // 检查串口是否有数据 if (Serial.available() 0) { char command Serial.read(); // 读取一个字符 Serial.print(Received: ); Serial.println(command); switch(command) { case F: moveForward(motorSpeed); Serial.println(Moving Forward); break; case B: moveBackward(motorSpeed); Serial.println(Moving Backward); break; case L: turnLeft(motorSpeed); Serial.println(Turning Left); break; case R: turnRight(motorSpeed); Serial.println(Turning Right); break; case S: stopMotors(); Serial.println(Stopped); break; case 0...9: // 将字符0-9映射为速度 0-255 motorSpeed map(command - 0, 0, 9, 0, 255); Serial.print(Speed set to: ); Serial.println(motorSpeed); break; default: // 忽略未知指令 break; } } // 可以添加一小段延时防止过于频繁的循环 delay(10); } // 电机控制函数 (与之前相同此处省略以节省篇幅) void moveForward(int speed) { ... } void moveBackward(int speed) { ... } void turnLeft(int speed) { ... } void turnRight(int speed) { ... } void stopMotors() { ... }3. 手机端连接与测试将新程序上传到 Arduino。打开手机蓝牙搜索名为 “HC-05” 或你自定义名称的设备。点击配对输入密码默认为1234。打开手机上的蓝牙串口 APP。在 APP 内连接已配对的蓝牙模块。连接成功后APP 通常会显示一个简单的键盘或按钮界面。尝试按下F、B、L、R、S等按键观察小车反应。同时可以在电脑的 Arduino IDE 串口监视器波特率 9600中查看收到的指令和反馈。8. 系统调试与性能优化完成基本遥控后可以进行一些调试和优化让小车运行更可靠、更“聪明”。1. 电源系统观察电压监测电机启动瞬间电流较大可能导致 Arduino 重启。可以用万用表监测 Arduino 的 5V 引脚电压在电机启停时是否出现大幅跌落。如果跌落严重说明电池电量不足或降压模块带载能力不够。解决方案确保电池电量充足选用输出电流更大的降压模块如 3A在 Arduino 的电源输入处并联一个较大容量的电容如 1000uF以缓冲瞬时电流。2. 运动性能调优直线跑偏由于两个电机特性不可能完全一致即使 PWM 值相同转速也有细微差别导致跑偏。解决方案在程序中为两个电机设置不同的速度补偿值。例如如果小车总是向右偏可以略微调低右电机的速度或调高左电机的速度。void moveForward(int speed) { int leftSpeed speed; int rightSpeed speed * 0.95; // 右电机补偿系数 analogWrite(ENA, leftSpeed); analogWrite(ENB, rightSpeed); // ... 方向控制代码不变 }启动/停止抖动PWM 速度从 0 突变到设定值或反之可能导致机械冲击。解决方案加入速度渐变软启动/软停止。void softStart(int targetSpeed, int duration) { for (int s 0; s targetSpeed; s) { analogWrite(ENA, s); analogWrite(ENB, s); delay(duration / targetSpeed); } }3. 扩展接口预留在车架上预留安装孔和电路接口为后续升级做准备超声波传感器用于避障。需要 1个 Trig 引脚和 1个 Echo 引脚。红外巡线传感器需要数字输入引脚。舵机云台用于安装摄像头或传感器需要 PWM 引脚。WS2812 LED 灯带用于状态指示或炫酷效果需要 1个数字引脚。蜂鸣器用于提示音需要 1个数字引脚。可以在 Arduino 的剩余数字引脚D2, D3, D4, D11, D12, D13 等和模拟引脚A0-A7上焊接排针方便后续插接传感器。9. 常见问题与排查方法在制作和调试过程中你可能会遇到以下问题问题现象可能原因排查方式解决方案上电后毫无反应1. 电池没电或开关损坏。2. 电源线未接通或反接。3. 降压模块故障。1. 用万用表测电池电压。2. 检查所有电源通路是否导通。3. 测降压模块输入输出电压。1. 充电或更换电池。2. 重新焊接或连接。3. 更换模块。Arduino 程序无法上传1. 驱动未安装。2. 板卡或端口选错。3. bootloader 问题。1. 检查设备管理器。2. 确认 Arduino 型号和 COM 口。3. 尝试按复位键后立即上传。1. 安装 CH340 或 CP2102 驱动。2. 重新选择。3. 使用正确的 bootloader 选项。电机不转但驱动板指示灯亮1. 电机线未接好。2. 程序引脚定义错误。3. 使能引脚ENA/ENB未使能。1. 检查电机接线。2. 核对代码与接线表。3. 检查程序是否设置了正确的 PWM 输出。1. 重新连接。2. 修改代码。3. 确保analogWrite函数被调用。蓝牙无法连接手机1. 蓝牙模块未正确供电。2. TX/RX 接反。3. 波特率不匹配。4. 模块处于 AT 模式。1. 测 VCC 电压。2. 检查是否交叉连接。3. 检查代码与模块波特率。4. 检查EN/KEY引脚状态。1. 确保供电 5V。2. 交换 TX/RX 线。3. 统一为 9600 或 38400。4. 将EN/KEY引脚悬空或接地。小车运动时 Arduino 重启电机启动电流过大导致系统电压瞬间跌落。监测 Arduino 5V 引脚在电机启动时的电压。1. 电池并联大电容。2. 使用动力型电池。3. 电机电源与逻辑电源分开供电。遥控指令反应迟钝或丢失1. 蓝牙连接不稳定。2. 串口缓冲区溢出。3. 手机 APP 发送频率过高。1. 拉近手机与小车距离。2. 在代码中及时处理串口数据。3. 降低 APP 发送频率。1. 确保无遮挡。2. 优化代码及时Serial.read()。3. 使用带延时的按钮或摇杆。10. 项目总结与进阶方向至此一个成本约 50 元、功能完整的桌面轮式机器人小车就成功“手搓”出来了。这个项目的价值不在于做出了多炫酷的产品而在于你完整地走通了从设计、采购、组装、编程到调试的全流程这是任何现成套件都无法替代的经验。最值得尝试的下一步扩展自动避障加装一个 HC-SR04 超声波传感器编写程序让小车在前进时自动探测并避开障碍物。巡线行驶使用 3-5 个 TCRT5000 红外巡线模块让小车能沿着地面的黑色轨迹自动行走。手机姿态遥控利用手机加速度计编写 APP通过手机倾斜角度来控制小车速度和方向体验更直观的控制。WiFi 与摄像头将主控换成 ESP32-CAM实现 WiFi 遥控和第一人称视角FPV视频传输成本会略有上升但可玩性大增。PID 速度控制如果使用了带编码器的电机可以尝试编写 PID 算法让两个轮子的转速更精确实现更稳定的直线和定速控制。这个小小的机器人底盘是一个绝佳的实验平台。当你成功让它动起来的那一刻关于电源、信号、控制、编程的抽象知识就都变成了具体的经验。建议保存好这个项目的电路图和源代码它将成为你未来更复杂项目最可靠的起点。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价