查看: 2599|回复: 20

[教程] 【2018年社区第1帖】听说履带车又双叒来搞事情啦!!!

[复制链接]
本帖最后由 jarvis_chan 于 2018-1-14 22:01 编辑

【题外话】转眼在社区发帖已经度过了1个年头了,这应该是社区2018年的第一帖吧~在这里祝大家新年快乐!!!

听说社区最近特别流行履带车,那就随波逐流也来搞一发吧。但是传统的履带车玩起来又没有意思,又没有新奇的玩法呢?

正好看到小伙伴在玩 Makey Makey 水果钢琴,顿时天灵盖一亮,为何不搞一辆 Makey 履带车呢?然后给它配上一个超大的橡皮泥遥控器,一定很好玩,说干就干!

按照惯例,先来看一下效果:

铲车版:

smars-show-1.JPG

超声波版(这辆是 maker_王 做的哈,maker_王 还做了另一辆履带坦克车:http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=30284):

smars-show-2.JPG

英雄联盟:

smars-show-3.JPG

演示视频:




## 履带车制作过程

准备好履带车所需的材料。

电子元件

  • 电源开关
  • 7.4V 锂电池
  • 蓝牙模块
  • Arduino 电机驱动扩展板
  • Arduino Uno
  • N20 金属齿轮电机 * 2

3D 打印结构件

  • 履带 * 2
  • 连接器 * 2
  • 盖板 * 2
  • 底盘
  • 铲子
  • 主动轮 * 2
  • 从动轮 * 2

另外还需要:

  • M4*25 螺丝
  • M4 螺母 * 4

smars-1-materials.jpg

1、安装从动轮:准备好从动轮、底盘、M4螺丝和螺母,将从动轮安装到底盘上。

smars-2-slave-wheels.jpg

2、安装主动轮:准备好 N20 金属齿轮电机和主动轮,将主动轮安装到底盘上。

smars-3-master-wheels.jpg

3、安装电池:准备好锂电池和盖板,将锂电池安装到底盘上,同时将盖板嵌入卡槽,固定好 N20 电机。

smars-4-battery-materials.jpg

smars-5-battery.jpg

4、安装连接器:准备好连接器,安装到底盘卡槽上。

smars-6-connector-materials.jpg

smars-7-connector.jpg

5、安装电源开关:准备好电源开关(已焊接好),并与电源连接。

smars-8-power-materials.jpg

smars-9-power.jpg

6、安装 Arduino 控制器:准备好 Arduino Uno 和电机驱动扩展板,并将 Arduino Uno 嵌入底座卡槽中。

smars-10-arduino-materials.jpg

smars-11-arduino.JPG

7、连接电源:将电源与 Arduino 连接,注意断开电源开关。

smars-12-arduino-power.JPG

8、安装履带:准备好两条履带,并安装到轮子上。

smars-13-track-materials.JPG

smars-14-track.JPG

9、安装蓝牙模块:准备好蓝牙模块,并将蓝牙模块安装到扩展板相应位置。

smars-15-bt-materials.JPG

10、安装履带车铲子:准备好铲子,并将铲子嵌入到连接器相应位置。

smars-16-shovel-materials.JPG

smars-17-shovel.JPG

至此,履带车就安装完成啦。

## 橡皮遥控器制作过程

准备好所需的材料:

  • Arduino Uno
  • Makey 扩展板
  • 鳄鱼线 * 5
  • 蓝牙模块
  • 5 块橡皮泥

smars-18-makey-materials.JPG

smars-19-plasticine.JPG

利用鳄鱼线,将橡皮泥与 Makey 扩展板相连,并将蓝牙模块连接到 Makey 扩展板上。

smars-20-controller.JPG

## 程序与电路

程序比较简单,主要就是两个 Arduino 之间蓝牙通信。具体电路连接也不再赘述,直接看程序就好。

履带车程序:

[C++] 纯文本查看 复制代码
int E1 = 10;
int M1 = 12;
int E2 = 11;
int M2 = 13;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  motorInit();
}

void loop() {

//  test();

  if (Serial.available() > 0) {

    char cmd = Serial.read();

    if (cmd == 'D')
    {
      //      Serial.println("Down");
      moveBack();
    }

    if (cmd == 'U')
    {
      //      Serial.println("Up");
      moveForward();
    }

    if (cmd == 'L')
    {
      //      Serial.println("Left");
      turnLeft();
    }

    if (cmd == 'R')
    {
      //      Serial.println("Right");
      turnRight();
    }

    if (cmd == 'S')
    {
      stop();
    }
  }

}

void motorInit()
{
  pinMode(M1, OUTPUT);
  pinMode(M2, OUTPUT);
  pinMode(E1, OUTPUT);
  pinMode(E2, OUTPUT);
}

void moveForward()
{
  digitalWrite(M1, HIGH);
  digitalWrite(M2, HIGH);
  analogWrite(E1, 255);   //PWM调速
  analogWrite(E2, 255);   //PWM调速
}

void moveBack()
{
  digitalWrite(M1, LOW);
  digitalWrite(M2, LOW);
  analogWrite(E1, 255);   //PWM调速
  analogWrite(E2, 255);   //PWM调速
}

void turnLeft()
{
  digitalWrite(M1, LOW);
  digitalWrite(M2, HIGH);
  analogWrite(E1, 160);   //PWM调速
  analogWrite(E2, 160);   //PWM调速
}

void turnRight()
{
  digitalWrite(M1, HIGH);
  digitalWrite(M2, LOW);
  analogWrite(E1, 160);   //PWM调速
  analogWrite(E2, 160);   //PWM调速
}

void stop()
{
  digitalWrite(M1, HIGH);
  digitalWrite(M2, HIGH);
  analogWrite(E1, 0);   //PWM调速
  analogWrite(E2, 0);   //PWM调速
}

void test()
{
  moveForward();
  delay(3000);

  moveBack();
  delay(3000);

  turnLeft();
  delay(3000);

  turnRight();
  delay(3000);
}


橡皮泥遥控器程序:

[C++] 纯文本查看 复制代码
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

int InData1 = 0, InData2 = 0, InData3 = 0, InData4 = 0, InData5 = 0, InData0 = 0;  //触摸输入值暂存

int TouchSensitivity = 30; //触摸灵敏度。0~1023,越大越不灵敏

void setup()
{
  for (int i = A0; i <= A5; i++)
  {
    pinMode(i, INPUT);                        //A0~A5端设置为输入
  }

  for (int i = 6; i <= 12; i++)
  {
    pinMode(i, OUTPUT);                        //A0~A5端设置为输入
  }

  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }

  mySerial.begin(9600);
  
//  mySerial.println("Hello, world?");

  TIMSK0 &= !(1 << TOIE0);
}

void loop()
{
  // UsbKeyboard.update();
  //读取所有引脚电压值,并且由于上拉电阻原因,
  //默认所有引脚为最高电平1023,通过触摸拉低引脚电平。
  //所以数值由1024-analogRead(A0);
  InData0 = 1024 - analogRead(A0);
  InData1 = 1024 - analogRead(A1);
  InData2 = 1024 - analogRead(A2);
  InData3 = 1024 - analogRead(A3);
  InData4 = 1024 - analogRead(A4);
  InData5 = 1024 - analogRead(A5);

  //按照各种可能触发键盘事件
  if (InData0 >= TouchSensitivity)
  {
    digitalWrite(6, HIGH);
    mySerial.println("D");
//    mySerial.write('D');
  } else {
    digitalWrite(6, LOW);
//    mySerial.println("S");
  }

  if (InData1 >= TouchSensitivity)
  {
    digitalWrite(7, HIGH);
    mySerial.println("L");
  } else {
    digitalWrite(7, LOW);
//    mySerial.println("S");
  }

  if (InData2 >= TouchSensitivity)
  {
    digitalWrite(8, HIGH);
    mySerial.println("R");
  } else {
    digitalWrite(8, LOW);
//    mySerial.println("S");
  }

  if (InData3 >= TouchSensitivity)
  {
    digitalWrite(9, HIGH);
    mySerial.println("U");
  } else {
    digitalWrite(9, LOW);
//    mySerial.println("S");
  }

  if (InData4 >= TouchSensitivity)
  {
    digitalWrite(10, HIGH);
  } else {
    digitalWrite(10, LOW);
//    mySerial.println("S");
  }

  if (InData5 >= TouchSensitivity)
  {
    digitalWrite(11, HIGH);
  } else {
    digitalWrite(11, LOW);
//    mySerial.println("S");
  }

  if((InData0 < TouchSensitivity) && (InData1 < TouchSensitivity) && (InData2 < TouchSensitivity) && (InData3 < TouchSensitivity) && (InData4 < TouchSensitivity) && (InData5 < TouchSensitivity))
  {
    mySerial.println("S");
  }

  delay(100);
}


## 附件

3D 打印结构件下载地址:

链接: https://pan.baidu.com/s/1dE24aQl 密码: 9rye





本帖被以下淘专辑推荐:

jarvis_chan  版主
 楼主|

发表于 2018-1-1 00:04:39

2018年第一沙发!
回复 支持 反对

使用道具 举报

安卓机器人  高级技匠

发表于 2018-1-1 00:12:38

好鼓好鼓
回复 支持 反对

使用道具 举报

maker_王  初级技匠

发表于 2018-1-1 10:42:49

新年好呀
回复 支持 反对

使用道具 举报

Rockets  NPC

发表于 2018-1-1 16:01:06

鼓捣车间出品果然不同反响。
回复 支持 反对

使用道具 举报

Ash  管理员

发表于 2018-1-2 10:51:13

厉害了~ 好棒的教程
回复 支持 反对

使用道具 举报

Johnny-xu  见习技师

发表于 2018-1-4 13:58:13

捣鼓车间真厉害,
回复 支持 反对

使用道具 举报

gray6666  中级技匠

发表于 2018-1-4 16:51:56

橡皮泥遥控器,个性
回复 支持 反对

使用道具 举报

gray6666  中级技匠

发表于 2018-1-4 16:53:27

为啥马达一个前,一个后?改成双前驱动力是不是会增大?
回复 支持 反对

使用道具 举报

super-power  中级技师

发表于 2018-1-4 22:54:43

好厉害啊,我最关心履带是怎么弄出来的。楼主详细说一下吧。
回复 支持 反对

使用道具 举报

rzyzzxw  版主

发表于 2018-1-5 07:41:59

super-power 发表于 2018-1-4 22:54
好厉害啊,我最关心履带是怎么弄出来的。楼主详细说一下吧。

厉害厉害还好玩。
回复 支持 反对

使用道具 举报

jarvis_chan  版主
 楼主|

发表于 2018-1-5 11:39:51

Rockets 发表于 2018-1-1 16:01
鼓捣车间出品果然不同反响。

哈哈哈哈哈哈哈
回复 支持 反对

使用道具 举报

jarvis_chan  版主
 楼主|

发表于 2018-1-5 11:40:40

gray6666 发表于 2018-1-4 16:53
为啥马达一个前,一个后?改成双前驱动力是不是会增大?

一前一后可以错开,可以减少车身宽度,不然车子太大了
回复 支持 反对

使用道具 举报

jarvis_chan  版主
 楼主|

发表于 2018-1-5 11:42:00

super-power 发表于 2018-1-4 22:54
好厉害啊,我最关心履带是怎么弄出来的。楼主详细说一下吧。

履带是用打印耗材穿到孔里连接的,你打印两个试试就知道了
回复 支持 反对

使用道具 举报

jarvis_chan  版主
 楼主|

发表于 2018-1-5 11:42:43

Johnny-xu 发表于 2018-1-4 13:58
捣鼓车间真厉害,

欢迎来捣鼓车间玩耍
回复 支持 反对

使用道具 举报

gray6666  中级技匠

发表于 2018-1-5 14:06:35

jarvis_chan 发表于 2018-1-5 11:42
履带是用打印耗材穿到孔里连接的,你打印两个试试就知道了

试了,俺的机器大不了履带
回复 支持 反对

使用道具 举报

super-power  中级技师

发表于 2018-1-5 16:34:36

jarvis_chan 发表于 2018-1-5 11:42
履带是用打印耗材穿到孔里连接的,你打印两个试试就知道了

我以为履带是软的。
回复 支持 反对

使用道具 举报

gray6666  中级技匠

发表于 2018-1-24 16:52:57

你好,能给个您的电池详细参数或是高清图或是淘宝地址吗?我最近一直在模仿研究但是电池总是弄不好。
回复 支持 反对

使用道具 举报

jarvis_chan  版主
 楼主|

发表于 2018-1-25 10:20:00

gray6666 发表于 2018-1-24 16:52
你好,能给个您的电池详细参数或是高清图或是淘宝地址吗?我最近一直在模仿研究但是电池总是弄不好。 ...

7.4v 锂电池,链接已私信发您
回复 支持 反对

使用道具 举报

gray6666  中级技匠

发表于 2018-1-25 14:02:30

jarvis_chan 发表于 2018-1-25 10:20
7.4v 锂电池,链接已私信发您

已收到,谢谢
回复 支持 反对

使用道具 举报

myrazhang  见习技师

发表于 2018-1-25 18:07:46

好棒的教程,感谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2016 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail