如何通过遥控器操作nerf枪

电子说

1.4w人已加入

描述

第1步:项目介绍

遥控器

这个项目/instructables展示了如何通过遥控器操作nerf枪。 nerf枪放在支架上,部件是3D打印和激光切割。那样,nerf枪能够自立站立。

nerf枪旋转并在x轴和y轴上移动,这使得它能够向上,向下,向左和向右移动。然而,还存在一种尺寸z轴。这是“Fire”功能,可以让nerf枪射击。

nerf枪连接到蓝牙模块,与移动应用程序通信,因此可以控制通过应用程序的nerf枪。

第2步:第1步:设备

材料:

1 x Nerfgun炮塔

1 x Arduino Mega 2560板(通过USB连接到计算机)

1 x面包板

大量跳线

1 x电源

1 x继电器

2 x Pololu a4988

2 x Nema 17 hybrid步进电机2相

2 x超声波传感器HC-SR02

1 x HC-05蓝牙模块

1 x模拟操纵杆控制器突破

3 x 1k欧姆电阻器或一个1k电阻器和一个2k电阻器。

机械设备:

某种装配/固定,

4 x滚珠轴承

步骤3:Fablab

我们用fablab做了一些机械方法nerf枪的设备。目标是使nerfgun独立,这就是我们使用Fablab的原因。

在Fablab中,我们设计,3D打印和激光切割一些机械设备,这使得nerfgun现在可以自立,并与蓝牙通信一起工作,无需任何物理人体交互。

持有人/配件:

- 一种拟合

拟合是3D打印和制作,使其完美地适合nerfgun的侧面。

配件的轮廓/草图由3D扫描仪创建。之后,在最终打印之前,在 vxelements 中编辑了大纲,大约需要12个小时。

其余的机械设备:

- 两个齿轮。

其余设备均由木材制成。草图分别在Illustrator和AutoCAD中制作。

当最终的草图完成后,它被激光切割。

步骤4:步骤4:工作原理

第一个视频显示了nerf枪如何仅使用操纵杆工作。

第二个视频显示了如何使用与蓝牙模块通信的Android应用程序。

步骤5:引脚连接

2 x Nema 17:

sx = pin 2(步骤x轴)

dirx = pin 3 (方向x轴。

sy =针脚4(步骤y轴)

diry =针脚5(方向y轴)

超声波传感器

trigPin1 = 12

echoPin1 = 13

trigPin2 = 51

echoPin2 = 49

模拟操纵杆:

模拟x -axis = A0

模拟y轴= A1

开关=引脚6

继电器:

接力=第7针

蓝牙:

Bluetooth_RXD = Arduino_TXD

Bluetooth_TXD = Arduino_RX

步骤6:连接设备

遥控器

遥控器

将超声波传感器插入面包板。

1)连接超声波传感器上的 GND 连接到 GND Arduino引脚。

2)将 VCC 连接到 5V Arduino引脚。

3)将 trig 连接到 Arduino Board上的引脚51。 4)连接 echo 在 Arduino Board上固定49位。

模拟操纵杆: 1)连接《将》 VCC 和 GND 引脚分别连接到面包板上的正极和负极导轨。

2)将 V引脚连接到A1 在Arduino板上,以及Arduino板上的 H引脚到A0 。3)此外, A1引脚需要连接到 Nema 17 stepper

Pololu a4988:

1)将Nema 17连接到电机引脚在pololu上。

2)将Step引脚连接到Arduino引脚。

3)将Direction引脚连接到Arduino引脚。

4)将它分别连接到Arduino上的12V和GNd以及5V。

蓝牙: 1)分别连接 VCC 和 GND 引脚到面包板上的正负轨。

2)将蓝牙的RXD 引脚连接到 TXD Arduino 引脚(此处使用电阻以避免烧毁模块)

3)连接蓝牙的TXD 引脚连接到 RXD Arduino 引脚。

将Nerfgun连接到电路:

1)将正极和负极线连接到继电器。

2)将继电器连接到电源。

第7步:Fritzing

遥控器

遥控器

遥控器

步骤8:代码细分

解释了部分代码:

if(Serial.available() 》 0)

{

state = Serial.read(); //Read the incoming data and store it into variable Incoming_value

Serial.print(state); //Print Value of Incoming_value in Serial monitor

Serial.print(“ ”); //New line

}

此处它从蓝牙模块读取输入数据并将其保存在变量“状态”。

//Read the joystick.

joyx = analogRead(A0);

joyy = analogRead(A1);

notPressed = digitalRead(inPressed);

if ( notPressed == 0 || state == 8)

{

// Serial.print(notPressed);

digitalWrite(relay, HIGH);

}

else{

digitalWrite(relay, LOW);

}

这部分代码读取bluetoothmodule。如果按下操纵杆(notPressed == 0)并且蓝牙“开火”按钮是(状态== 8),继电器将激活并使nerf枪射击。否则它将保持不活动状态。

steppermotor根据操纵杆方向/位置移动。

if (joyx 《 550 && joyx 》 450 || joyy 《 550 && joyy 》 450 )

{

digitalWrite(dirx, LOW);

digitalWrite(diry,LOW);

digitalWrite(sx, LOW);

digitalWrite(sy, LOW);

// digitalWrite(relay, LOW);

当操纵杆处于此位置时,轴不会移动,继电器将保持不活动状态。

//The x, axis will start and move to the left

if (joyx 》 550 || state == 1 )

{

digitalWrite(dirx, LOW);

digitalWrite(sx, HIGH);

delay (fart);

digitalWrite(sx, LOW);

delay(fart);

curstepx++;

} //The axis will start moving right.

if (joyx 《 450 || state == 2)

{

digitalWrite(dirx, HIGH);

digitalWrite(sx, HIGH);

delay (fart);

digitalWrite(sx, LOW);

delay(fart);

curstepx--;

} // The y-axis will start moving.

if (joyy 》 550 || state == 4)

{

digitalWrite(diry, LOW);

digitalWrite(sy, HIGH);

delay (fart);

digitalWrite(sy, LOW);

delay(fart);

curstepy++;

} // The y-axis will start moving up or down.

if (joyy 《 450 || state == 5)

{

digitalWrite(diry, HIGH);

digitalWrite(sy, HIGH);

delay (fart);

digitalWrite(sy, LOW);

delay(fart);

curstepy--;

}

根据操纵杆的位置/方向,电机将向上,向下,向右或向左移动。该代码还显示,根据Android应用程序的输入,电机将根据该移动。

这是传感器的代码。

// long duration1, distance1;

// digitalWrite(trigPin1, LOW); // Added this line

// delayMicroseconds(2); // Added this line

// digitalWrite(trigPin1, HIGH);

// delayMicroseconds(10); // Added this line

// digitalWrite(trigPin1, LOW);

// duration1 = pulseIn(echoPin1, HIGH);

// distance1 = (duration1/2) / 29.1;

////

//// if (distance1 《 10 || distance1 《= 0){

//// Serial.println(“SHOOT!”);

//// digitalWrite(relay, HIGH);

//// delay(1000);

//// digitalWrite(relay, LOW);

////

//// }

// Serial.print(“Sensor1 ”);

// Serial.print(distance1);

// Serial.println(“cm”);

这是第一个放置的传感器在nerf枪枪管。传感器测量距离,如果物体在10厘米以内,它将激活继电器并使枪射向目标。

传感器2的代码:

//long duration2, distance2;

// digitalWrite(trigPin2, LOW); // Added this line

// delayMicroseconds(2); // Added this line

// digitalWrite(trigPin2, HIGH);

// delayMicroseconds(10); // Added this line

// digitalWrite(trigPin2, LOW);

// duration2 = pulseIn(echoPin2, HIGH);

// distance2= (duration2/2) / 29.1; // if (distance2 《= 10 ){

// Serial.println(“BEHIND ME!”);

// for (i = 0; i 《 100; i++) {

// digitalWrite(dirx, LOW);

// digitalWrite(sx, HIGH);

// delay (fart);

// digitalWrite(sx, LOW);

// delay(fart);

// curstepx++;}

//

// }

//

// }

//

// else {

// Serial.print(“Sensor2 ”);

// Serial.print(distance2);

// Serial.println(“cm”);

// }

这部分基本上像部件一样工作对于传感器1.唯一的区别是,它不会激活继电器。当对象在10厘米范围内时,它会做出反应。

请注意,代码的某些部分无法正常工作,这就是为什么它们被作为注释放置的原因。我们仍在尝试调试程序并解决错误。它可能与导线的连接方式有关,如果导线有点不稳定,则会导致错误并使硬件失效。或者如果代码不正确,它还会导致硬件的工作方式与最初计划/思考的不同。

步骤9:蓝牙模块通信

我们使用了HC-05蓝牙模块,可以使用我们的手机来控制nerf枪。

HC-05模块是蓝牙SPP(串行端口协议)模块,这意味着它通过串行通信与Arduino通信。

det数据引脚的电压电平为3.3V。 Arduino TX(具有5V输出)和蓝牙模块RX(仅支持3.3V)之间的线路需要通过电阻连接,以免烧毁蓝牙模块。但是蓝牙模块TX引脚和Arduino RX引脚之间的线路可以直接连接,因为Arduino接受来自蓝牙模块的3.3V信号为高逻辑。

上传代码时,您必须拔掉TX和RX线,因为上传Arduino时使用串行通信,因此引脚RX和TX正忙。

然后你必须激活蓝牙,你的手机才能找到HC-05蓝牙模块。

步骤10:移动应用程序

遥控器

遥控器

Android应用程序旨在将串行数据发送到Arduino蓝牙模块在应用程序上按下按钮。

该应用程序是在MIT App Inventor中制作的,它由六个按钮组成。

1) 选择蓝牙: 在手机上激活蓝牙,它会找到HC-05蓝牙模块。将手机连接到模块,连接完成后,按钮下方的文字会显示“已连接”。

2) 左键: 只要“Left”《,就会向“1”整数《按下/em》按钮。它会使nerf枪在x轴上向左旋转。第二个你停止按下按钮,整数“0”被发送到Arduino Board。

3)右键: 只要按下“Right”按钮,就会向“2”整数。它会使nerf枪在x轴上向右旋转。第二个你停止按下按钮,整数“0”被发送到Arduino Board。

4)消防按钮: 只要按下“Fire”按钮,就会向“8”整数。它会导致nerf枪射击/射击某物。第二个你停止按下按钮,整数“0”被发送到Arduino Board。

5)向上按钮: 只要按下“向上”按钮,就会向“4”整数。它会使nerf枪向上移动 - 在y轴上。第二个你停止按下按钮,整数“0”被发送到Arduino Board。

6)向下按钮: 只要按下“向下”按钮,就会向“5”整数。这将导致nerf枪向下移动 - 在y轴上。第二个你停止按下按钮,整数“0”被发送到Arduino Board。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分