电路

如何建立一个互联网控制的火星漫游者:4个步骤(图片)

Norwegian - Æ Ø Å (Letters you dont have)

Norwegian - Æ Ø Å (Letters you dont have)

目录:

Anonim

这个Instructable将解释构建一个互联网控制的全地形机器人所需要知道的一切。这个恰好是在火星好奇号火星车上建模的。这个机器人可以从任何支持互联网的设备进行控制,这样你就可以在地球的另一边控制这个东西(如果它只有互联网,你可以控制火星)。这个项目全部由惊人的Electric Imp(SD卡大小的设备,允许您连接到互联网)和Arduino提供支持。
该项目由Dundee产品设计研究工作室的Michael Shorter,Tom Metcalfe,Jon Rogers和Ali Napier创建。

你需要什么:
6WD Wild Thumper Arduino底盘 - http://robosavvy.com/store/product_info.php/products_id/1167?osCsid=5e99bbe12a25938cbf4267ea6bc497ea
Wild Thumper Arduino控制器 - http://robosavvy.com/store/product_info.php/products_id/1168
LiPo电池 - 7.2V 5000mah
3毫米亚克力
5毫米亚克力
直径10厘米的排水管
35毫米直径的管道
铝棒
电气进出口
Electric Imp分线板
一些跨接电缆
滑板握把胶带

供应:

第1步:构建流动站

随附的Adobe Illustrator文件允许您激光切割所需的所有部件。总共有三个文件。所有3mm厚部件的一个文件,一个用于5mm厚的部件,一个用于夹持带部件。
希望下面的图片能够很好地了解如何将Wild Thumper 6WD的新底盘粘在一起。
Electric Imp到Arduino的接线很简单:
Imp引脚1 - Arduino引脚10
Imp引脚2 - Arduino引脚9
Imp引脚8 - Arduino引脚12
Imp引脚9 - Arduino引脚2
根据您的分线板和接地,Electric Imp还需要5V或3.3V电压。
我决定将拨动开关与电池一致,以便于打开和关闭。

第2步:Web方面的事情

这是给你的一些代码……
Squirrel for imp(改编自我无法找到的在线资源……):
================================================
server.show(“”);
//流动站的遥控器
ledState < - 0;
功能闪烁()
{
//改变状态
ledState = ledState?0:1;
server.log(“ledState val:”+ ledState);
//将状态反映到引脚
hardware.pin9.write(ledState);
}
// LED控制通道的输入类
class inputHTTP扩展了InputPort
{
name =“power control”
type =“number”
功能集(httpVal)
{
server.log(“Received val:”+ httpVal);
if(httpVal == 1){
hardware.pin9.write(1);
imp.sleep(0.1);
hardware.pin9.write(0);
}
else if(httpVal == 2){
hardware.pin8.write(1);
imp.sleep(0.1);
hardware.pin8.write(0);
}
否则if(httpVal == 3){
hardware.pin2.write(1);
imp.sleep(0.1);
hardware.pin2.write(0);
}
否则if(httpVal == 4){
hardware.pin1.write(1);
imp.sleep(0.1);
hardware.pin1.write(0);
}
其他{
;
}
}
}
function watchdog(){
imp.wakeup(60,看门狗);
的server.log(httpVal);
}
//每隔60秒开始看门狗
//看门狗();
//将引脚配置为开漏输出,内部上拉
hardware.pin9.configure(DIGITAL_OUT_OD_PULLUP);
hardware.pin8.configure(DIGITAL_OUT_OD_PULLUP);
hardware.pin2.configure(DIGITAL_OUT_OD_PULLUP);
hardware.pin1.configure(DIGITAL_OUT_OD_PULLUP);
//向服务器注册
imp.configure(“Rover的Reomote Control”,inputHTTP(),);
================================================


Arduino代码(谢谢Chris Martin!)……
================================================
/*
AnalogReadSerial
读取引脚0上的模拟输入,将结果打印到串行监视器。
将电位器的中心引脚连接到引脚A0,将外部引脚连接到+ 5V并接地。
此示例代码位于公共域中。
*/
int pinf = 2;
int pinl = 12;
int pinr = 10;
int pinb = 9;
#define LmotorA 3 //左电机H桥,输入A.
#define LmotorB 11 //左电机H桥,输入B.
#define RmotorA 5 //右马达H桥,输入A.
#define RmotorB 6 //右马达H桥,输入B.
#define v 255
#包括
// Servo myservo;
// int led = 12;
int pos = 0;
//当您按下重置时,安装例程会运行一次:
void setup(){
//myservo.attach(9);
// pinMode(led,OUTPUT);
pinMode(PINF,INPUT); //以每秒9600位初始化串行通信:
pinMode(pinl,INPUT);
pinMode(pinr,INPUT);
pinMode(PINB,INPUT);
Serial.begin(9600);
digitalWrite(PINF,LOW);
digitalWrite(pinl,LOW);
digitalWrite(pinr,LOW);
digitalWrite(PINB,LOW);
//288000
//这在串行监视器上是不同的,不确定它是向上还是向下
// Serial.begin(14400);
}
int lls = 0;
int rls = 0;
int al = 0;
//循环例程一次又一次地运行:
void loop(){
//读取模拟引脚0上的输入:
int sensorValue1 = digitalRead(pinf);
int sensorValue2 = digitalRead(pinl);
int sensorValue3 = digitalRead(pinr);
int sensorValue4 = digitalRead(pinb);
//打印出你读过的值:
Serial.print(sensorValue1);
Serial.print(“:”);
Serial.print(sensorValue2);
Serial.print(“:”);
Serial.print(sensorValue3);
Serial.print(“:”);
Serial.println(sensorValue4);
延迟(25); //延迟读取之间的稳定性
if(sensorValue1 == 1){
analogWrite(RmotorA,0);
analogWrite(RmotorB,120);
analogWrite(LmotorA,0);
analogWrite(LmotorB,120);
延迟(500);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
// myservo.write(10);
//延迟(500);
}
其他{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
if(sensorValue2 == 1){
// digitalWrite(led,HIGH);
analogWrite(RmotorA,0);
analogWrite(RmotorB,250);
analogWrite(LmotorA,250);
analogWrite(LmotorB,0);
延迟(100);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
// myservo.write(10);
//延迟(500);
}
其他
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
if(sensorValue4 == 1){
// digitalWrite(led,HIGH);
analogWrite(RmotorA,250);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,250);
延迟(100);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
// myservo.write(10);
//延迟(500);
}
其他
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
if(sensorValue3 == 1){
// digitalWrite(led,HIGH);
analogWrite(RmotorA,120);
analogWrite(RmotorB,0);
analogWrite(LmotorA,120);
analogWrite(LmotorB,0);
延迟(500);
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
// myservo.write(10);
//延迟(500);
}
其他
{
analogWrite(RmotorA,0);
analogWrite(RmotorB,0);
analogWrite(LmotorA,0);
analogWrite(LmotorB,0);
}
}
================================================

现在为用户界面。解压缩附加的文件夹;所需的所有代码都应该在那里。您需要做的就是将您独特的Electric Imp API粘贴到相应空间的index.html文件中。我在文件中标记了这个。

第3步:让我们给它一些视觉效果

我决定把一个旧的iPhone放在显示火星镜头的头部单元中。这可能是任何东西,甚至是摄像机,所以你可以通过Skype或Facetime看到你在哪里开车……

第4步:让我们开始流浪!

这是一个微型火星探测器的快速视频,在2013年SWSW的NASA活动中闲逛!

来自迈克尔的SXSW漫游车在Vimeo上更短。

这个项目的优点在于可以轻松调整代码以更改机器人的行为或界面。
请享用!
中号

入围决赛
遥控比赛