第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蓝牙模块
机械设备:
某种装配/固定,
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。
-
遥控器
+关注
关注
18文章
839浏览量
66303
发布评论请先 登录
相关推荐
评论