项目背景

无线遥控技术在人们日常生活中的使用范围非常广泛。相较于传统的有线控制,无线遥控十分便捷,尤其是在远距离控制场景中,例如拆弹机器人进行拆弹作业、卫星变轨、好奇号火星探索器等。作为一名创客老师,本着“自己动手,丰衣足食”的创客精神,使用无线遥控技术,就开始构思设计一个遥控车。

项目分析

在设计之初,我希望设计的是一款能够多向运动的遥控车,同时可以使用常见的手柄来控制。

考虑到遥控车的移动需要比较灵活来应对复杂的地形,选择使用麦克纳姆轮,遥控车可以实现竖直运动、水平运动、斜向运动、角旋转、中心旋转、边旋转等。

遥控车使用Arduino作为主控板,使用PCA9685模块来作为电机驱动,HC-05模块来进行蓝牙通讯。使用4路直流电机作为动力输出。遥控手柄使用PS2手柄来控制小车的运动。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(1)

硬件设计

为了保证电机运动的稳定性,需要设计稳压电路,采用5V 2A的稳压输出。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(2)

Arduino中常用的马达驱动无法精确控制电机运动,而PCA9685模块,主要起到精确控制电机运动的作用,采用I2C通讯,只需要几根I2C线就可以控制16路PWM,周期和占空比都可控。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(3)

电机这里使用的是TT马达。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(4)

使用HC-05蓝牙模块进行通讯。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(5)

使用PS2手柄来发送运动指令。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(6)

Arduino与PCA9685模块通过I2C进行通讯。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(7)

硬件准备

Arduino主控板*1

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(8)

PCA9685集成电路板*1

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(9)

PS2手柄蓝牙接收器*1

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(10)

PS2手柄*1

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(11)

TT马达*4

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(12)

麦克纳姆轮*4和车架*1

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(13)

18650电池盒*1

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(14)

18650电池*2

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(15)

模型搭建

Step 1、先将TT马达安装在底座上。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(16)

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(17)

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(18)

Step 2、安装麦克纳姆轮

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(19)

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(20)

Step 3、安装Arduino底座

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(21)

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(22)

Step 4、安装Arduino

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(23)

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(24)

Step 5、安装PCA9685集成电路板

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(25)

Step 6、安装蓝牙接收器,并接线

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(26)

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(27)

Step 7、将电池盒中安上电池,底部贴上双面胶,粘在底板上

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(28)

程序编写

全向麦轮控制原理

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(29)

编程软件使用Mixly,项目使用的是1.2.5版本,加载MotorShield拓展库。拓展库地址:

链接:

https:///s/1ZpXFBouasjTgFojlXRJqPA

提取码:mld4

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(30)

先编写各个方向的运动程序。需要编写的运动程序有:

1. 前进(moveForward)

2. 后退(moveBackward)

3. 左转(moveLeft)

4. 右转(moveRight)

5. 45°方向移动(move45)

6. 135°方向移动(move135)

7. 顺时针旋转(turnAroundCW)

8. 逆时针旋转(turnAroundCCW)

9. 停止(moveStop)

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(31)

手柄按键与运动方向的对应关系,如下图所示。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(32)

参考程序如下:

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(33)

参考C 代码:

#include <Wire.h> #include <PS2X_lib.h> #include <Adafruit_MS_PWMServoDriver.h> #include "QGPMaker_MotorShield.h" #include "QGPMaker_Encoder.h" QGPMaker_MotorShield AFMS = QGPMaker_MotorShield(); PS2X ps2x; QGPMaker_DCMotor *DCMotor_1 = AFMS.getMotor(1); QGPMaker_DCMotor *DCMotor_2 = AFMS.getMotor(2); QGPMaker_DCMotor *DCMotor_3 = AFMS.getMotor(3); QGPMaker_DCMotor *DCMotor_4 = AFMS.getMotor(4); void moveForward() { DCMotor_1->setSpeed(200); DCMotor_1->run(FORWARD); DCMotor_2->setSpeed(200); DCMotor_2->run(FORWARD); DCMotor_3->setSpeed(200); DCMotor_3->run(FORWARD); DCMotor_4->setSpeed(200); DCMotor_4->run(FORWARD); } void move45() { DCMotor_1->setSpeed(200); DCMotor_1->run(FORWARD); DCMotor_3->setSpeed(200); DCMotor_3->run(FORWARD); DCMotor_2->setSpeed(0); DCMotor_2->run(RELEASE); DCMotor_4->setSpeed(0); DCMotor_4->run(RELEASE); } void move135() { DCMotor_2->setSpeed(200); DCMotor_2->run(FORWARD); DCMotor_4->setSpeed(200); DCMotor_4->run(FORWARD); DCMotor_1->setSpeed(0); DCMotor_1->run(RELEASE); DCMotor_3->setSpeed(0); DCMotor_3->run(RELEASE); } void moveBackward() { DCMotor_1->setSpeed(200); DCMotor_1->run(BACKWARD); DCMotor_2->setSpeed(200); DCMotor_2->run(BACKWARD); DCMotor_3->setSpeed(200); DCMotor_3->run(BACKWARD); DCMotor_4->setSpeed(200); DCMotor_4->run(BACKWARD); } void turnAroundCW() { DCMotor_1->setSpeed(200); DCMotor_1->run(FORWARD); DCMotor_2->setSpeed(200); DCMotor_2->run(BACKWARD); DCMotor_3->setSpeed(200); DCMotor_3->run(BACKWARD); DCMotor_4->setSpeed(200); DCMotor_4->run(FORWARD); } void turnAroundCCW() { DCMotor_1->setSpeed(200); DCMotor_1->run(BACKWARD); DCMotor_2->setSpeed(200); DCMotor_2->run(FORWARD); DCMotor_3->setSpeed(200); DCMotor_3->run(FORWARD); DCMotor_4->setSpeed(200); DCMotor_4->run(BACKWARD); } void moveLeft() { DCMotor_1->setSpeed(200); DCMotor_1->run(BACKWARD); DCMotor_2->setSpeed(200); DCMotor_2->run(FORWARD); DCMotor_3->setSpeed(200); DCMotor_3->run(BACKWARD); DCMotor_4->setSpeed(200); DCMotor_4->run(FORWARD); } void moveRight() { DCMotor_1->setSpeed(200); DCMotor_1->run(FORWARD); DCMotor_2->setSpeed(200); DCMotor_2->run(BACKWARD); DCMotor_3->setSpeed(200); DCMotor_3->run(FORWARD); DCMotor_4->setSpeed(200); DCMotor_4->run(BACKWARD); } void moveStop() { DCMotor_1->setSpeed(0); DCMotor_1->run(RELEASE); DCMotor_2->setSpeed(0); DCMotor_2->run(RELEASE); DCMotor_3->setSpeed(0); DCMotor_3->run(RELEASE); DCMotor_4->setSpeed(0); DCMotor_4->run(RELEASE); } void setup() { AFMS.begin(50); int error = 0; do { error = ps2x.config_gamepad(13, 11, 10, 12, true, true); if (error == 0) { break; } else { delay(100); } } while (1); for (size_t i = 0; i < 50; i ) { ps2x.read_gamepad(false, 0); delay(10); } } void loop() { ps2x.read_gamepad(false, 0); delay(3); if (ps2x.Button(PSB_PAD_UP)) { moveForward(); } if (ps2x.Button(PSB_PAD_DOWN)) { moveBackward(); } if (ps2x.Button(PSB_PAD_LEFT)) { moveLeft(); } if (ps2x.Button(PSB_PAD_RIGHT)) { moveRight(); } if (ps2x.Button(PSB_CROSS)) { moveStop(); } if (ps2x.Button(PSB_CIRCLE)) { turnAroundCW(); } if (ps2x.Button(PSB_TRIANGLE)) { move45(); } if (ps2x.Button(PSB_SQUARE)) { turnAroundCCW(); } }

参考程序链接:

链接:

https:///s/1JzGkEWGkdWmkXn1dES2s7g

提取码:aq8n

常见问题

问:遥控车,无法前进、后退。

答:遥控车接线错误,参考接线图如下,将旋转错误的引脚反接到另一端。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(34)

问:遥控车无法左移、右移。

答:在安装时,需要注意麦克纳姆轮的安装顺序,参考下图修改麦克纳姆轮的安装。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(35)

外观设计与安装

麦克纳姆轮小车的整体功能已经完毕,裸露的电线和主板,并不美观,对于一个作品来说,美的外观也是重要的。先对麦克纳姆轮小车的车壳进行3D建模。使用Rhino 7 来进行建模。Rhino是是美国Robert McNeel & Assoc.开发的PC上强大的专业3D造型软件,它可以广泛地应用于三维动画制作、工业制造、科学研究以及机械设计等领域。建模完成导出stl格式。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(36)

打开FlashPrint软件,使用的是闪铸的打印机,因此使用了FlashPrint软件,导入stl文件,进行切片。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(37)

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(38)

放入到打印机中,进行打印。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(39)

3D打印之后,模型就已经具备了,接下来需要对模型进行吸塑,制作外壳,吸塑使用的是iForm桌面式智能真空成型机。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(40)

取一张1.0mm的HIPS,放入到吸塑机当中。旋转把手,将HIPS耗材放入到上下夹板 当中。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(41)

抬升把手到顶部,将模型放入到吸塑平台当中,并设置吸塑参数为HIPS、1.0mm、 175℃、吹气开,对耗材进行加热。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(42)

等待加热完毕,下压把手,进行吸塑,吸塑结束后,系统会自动进行冷却并吹塑。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(43)

取出模型,模型的细节也被很好地吸塑出来。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(44)

裁剪多余的耗材,将小车外壳裁剪下来。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(45)

对小车外壳进行彩绘。在HIPS耗材上进行彩绘,丙烯颜料无法良好地附着在耗材上,需要先使用油漆进行预处理,再使用丙烯颜料绘制,这里使用了黄色油漆,并在油漆上有黑色丙烯颜料绘制。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(46)

最后在外壳底部粘上双面胶,将外壳与车架粘在一起。别忘了打开电池开关,和手柄开关。就可以愉快地试验了。

iForm造物课程麦克纳姆轮小车(iForm造物课程麦克纳姆轮小车)(47)

结束语

整个作品通过Arduino、3D打印、iForm吸塑机来实现,将创客领域常用的工具结合在一起。Arduino造就了作品的灵魂,3D打印赋予作品更多外延的结构,而iForm吸塑机对模型更加便捷地翻模制作、二次加工。

,