M1 Rover
组件和用品
| × | 1 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 8 | ||||
| × | 8 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
| ||||
| ||||
|
关于这个项目
图>
在构建了多个室内机器人之后,我决定构建一个能够穿越崎岖地形的室外机器人。我称之为“M1-Robot”。
M1-Robot 电机可以轻松驱动四个直流电机,使用 Arduino 驱动,因此它非常适合任何机器人项目,我认为这将为更强大的机器人打造梦幻般的心脏,因此我设计了越野四轮驱动 M1从头开始。
它不仅仅是一辆遥控车,它可以被编程为按照一组指令自动驾驶,甚至可以通过远程计算机进行控制,它可以像遥控车一样通过游戏控制器和自定义操纵杆使用。
第 1 步:设计
设计您自己的产品或原型很有趣,但是当您决定以实际尺寸制作时,它会变得更加复杂。所以我选择 Google Sketch-up 2017 作为强大且简单的设计工具,它允许您将模型的蓝图导出到激光切割机甚至 3D 打印机。
我花了前三个星期设计和建造机器人的外壳。
材料方面,给了我一张3mm的木板。
机器人的最后布线不太好,由于时间限制,包括将整个道路杀手塞入船体。
我认为我的机器人的一个恰当名称是 M1Rover。因为我打算开发一个版本的序列号,比如M2,M3等等。它设计在一个套件中,你要做的就是用一些螺丝把它组装起来。
第 2 步:组件和功能
⦁ 长达三个小时的运行时间!
⦁ 专为 Arduino Uno、Mega 和 Nano 设计。
⦁ 5V-9V 直流工作电压
⦁ 3mm厚的木质底盘
⦁ 68mm 直径轮子 L298N 双 H 桥电机/步进器
⦁ 9v 电池为直流电机供电
⦁ 9v 电池为 Arduino 供电
⦁ 前后LED灯7个
⦁ HC-06 蓝牙模块
⦁ Arduino 传感器扩展板 v5.0
⦁ 超声波换能器HC SR04
第 3 步:电机控制器 图>
H 桥通常用于控制电机速度和方向,但也可用于其他项目,例如驱动某些照明项目(如高功率 LED 阵列)的亮度。
⦁ 确保你把所有的理由都绑在一起; Arduino、电源和电机控制器。
⦁ 如果您不想控制 PWM 功能,则不需要 PWM 引脚。
第 4 步:组装底盘 图>
底盘已经用激光切割机切割成几个部分,正如我之前提到的,模型是在一个易于组装的套件中创建的,所以你所要做的就是按照下面的说明进行操作。
考虑到设计也很重要,当涉及到遥控车时,它应该包含前后灯。在M1-Robot的前面我放了4个白色LED,每个都连接220欧姆的电阻,在后面我放了2个红色的LED,每个都有220欧姆的电阻。这些 LED 可以由同一个应用程序控制
第 5 步:电路
电路有点棘手,因为当您决定同时控制多个电子部件时,您应该注意每个部件的顺序。
⦁ Arduino 传感器扩展板 5.0
⦁ Arduino Uno R3 L298N 双 H 桥电机/步进器
⦁ 9v 电池为直流电机供电
⦁ LED 灯 7(2 个后)和(4 个前)
⦁ HC-06 蓝牙模块
⦁ 超声波换能器HC SR04
⦁ 伺服电机9g
⦁ 有源蜂鸣器
⦁ 4 个带轮直流电机
第 6 步:软件
在编写M1-Robot的代码时我考虑了很多事情,通过GUI软件你可以得到更多关于机器人状态的信息。
入门套件的基本代码,可以通过蓝牙由手机或笔记本电脑控制:
int frontled =3; //led int reled =4; int outPin1 =5; //motor1 int outPin2 =6; //motor1 int outPin4 =11; //motor2 int outPin3 =12; //motor2 char bt =0; //BT int buzzerPin =2;const int pingPin =9; // 超声波传感器的触发引脚const int echoPin =8; // 超声波传感器的回波引脚/*----------------------------------------- -------------------------------------*/ void setup() { Serial.begin(9600); pinMode(outPin1,OUTPUT); pinMode(outPin2,OUTPUT); pinMode(outPin3,OUTPUT); pinMode(outPin4,OUTPUT); pinMode(前置,输出); pinMode (buzzerPin, OUTPUT);} void loop() { if (Serial.available()> 0) { bt =Serial.read();数字写入(前端,1);持续时间长,英寸,厘米; pinMode(pingPin,输出);数字写入(pingPin,低);延迟微秒(2);数字写入(pingPin,高);延迟微秒(10);数字写入(pingPin,低); pinMode(echoPin, INPUT);持续时间 =脉冲输入(echoPin,高);英寸 =微秒到英寸(持续时间); cm =microsecondsToCentimeters(duration); if (cm> 10 ){ // 到停止的距离 /*________________________________________________________________________*/ if(bt =='F') //向前移动 { digitalWrite(outPin1,HIGH);数字写入(outPin2,低);数字写入(outPin3,高);数字写入(outPin4,低); } else if (bt =='B') //向后移动 { digitalWrite(outPin1,LOW);数字写入(outPin2,高);数字写入(outPin3,低);数字写入(outPin4,高); } else if (bt =='S') //停止!! { digitalWrite(outPin1,LOW);数字写入(outPin2,低);数字写入(outPin3,低);数字写入(outPin4,低); } else if (bt =='R') //right { digitalWrite(outPin1,HIGH);数字写入(outPin2,低);数字写入(outPin3,低);数字写入(outPin4,低); } else if (bt =='L') //left { digitalWrite(outPin1,LOW);数字写入(outPin2,低);数字写入(outPin3,高);数字写入(outPin4,低); } else if (bt =='I') //向前右{ digitalWrite(outPin1,HIGH);数字写入(outPin2,低);数字写入(outPin3,低);数字写入(outPin4,高); } else if (bt =='G') //向前左{ digitalWrite(outPin1,LOW);数字写入(outPin2,高);数字写入(outPin3,高);数字写入(outPin4,低); } } else{ digitalWrite (buzzerPin, HIGH);延迟(500);数字写入(蜂鸣器引脚,低);延迟(500); } }}long microsecondsToInches(long microseconds) { return microseconds / 74 / 2;}long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2;}
Arduino代码兼容任何类型的控制器,因为所有的电子部件都是通过串口命令编程工作的,因此您可以使用蓝牙模块发送/接收器、PC、手机。
⦁ C# windows 应用程序(附截图)
第七步:打包
初学者
该 M1-Robot 套件包含基本组件,而顶板允许轻松安装任何传感、操作或计算机硬件。只需将传感器连接到车载和 Rover 电源即可开始使用。
探险家
Explorer 包支持基本的室内和室外自主功能,我使用通过 IP 地址连接到互联网的手机摄像头代替 IP 摄像头。
映射
Explorer 包支持基本的 GPS 跟踪,当然,当车辆在室外时,实时查看坐标路径非常酷。
操纵
用机械臂和两指50mm抓手与世界互动。
重要提示:
并非所有舵机都有完整的 180 度旋转。许多人没有。您可以编写一个测试来确定机械极限在哪里。使用servo.writeMicroseconds 而不是servo.write 我更喜欢这个,因为它可以让你使用1000-2000 作为基本范围。许多舵机将支持超出该范围,从 600 到 2400。
所以,尝试不同的值,看看你在哪里得到了告诉你已经达到极限的嗡嗡声。然后只在你写作时保持在这些限制内。您可以在使用servo.attach(pin, min, max)时设置这些限制
编辑:我应该说,如果你愿意,你可以在附件中设置最小和最大微秒,然后简单地使用servo.write。它使用 map() 将您传递的 0-180 度值更改为微秒值。
如果您将其保持在终点站,很快就会出现 - 它会拉动大电流并迅速升温 - 通过以这种方式加载伺服器很容易“烹饪”任何时间长度。
找到真正的运动范围并确保代码不会试图将其推过终点站,constrain() Arduino 函数对此很有用:
servo.write (constrain (angle, 10, 160)); // 将角度限制在 10..160 范围内
定制零件和外壳
m1rover_dxf_hackaday_4o7WTGHUGE.dxf示意图
制造工艺