Introduction: Voice Activated Rocket Launcher
This project combines an Emic 2 text- to- Speech module, a ultrasonic Ping))) distance sensor, the MAKE compressed air rocket launcher, and an Arduino Uno.
This project could be used for security, pranks, and many more fun things.
Step 1: Materials
- Arduino Uno R3 (x1)
- Breadboard (x1)
- Emic 2 (Rev. A) Text- to – Speech module (x1)
- PING))) Ultrasonic Distance Sensor (x1)
- Jumper Wires
- NPN transistor (MP 2222A) (x1)
- 100 Ohm resistor (x1)
- 8 AA battery holder (x1)
- AA batteries (x8)
- 9V battery clip (x1)
- Compressed Air Rocket Launcher (from Makershed) (x1)
- Bicycle pump (x1)
- Paper rocket
Step 2: Emic 2 Connections
1) Place the Emic 2 on the breadboard, and connect the anode and cathode of the 8 Ohm speaker to ( SP--) and (SP+) pins on the Emic 2.
Your connections should look something like in the picture.
Step 3: Ping))) Connections
The connections with the Emic 2 and Ping))) should look something like in the picture.
Step 4: Transistor Connections
The transistor connections (without Emic 2 and Ping))) ) should look like this picture.
Step 5: Code for Arduino
Step 6: How to Use This Device
1) Pump your launcher to the desired psi, then load the rocket
2) Equip the Arduino with power and once you walk in front of the distance sensor, it will speak the desired text before launching the rocket.
Please use this device for good, not evil if you have any questions email me at ardendiak@gmail.com
Thank you for reading
Arden Diakhate- Palme
4 Discussions
4 years ago
I think I would call it Proximity activated rocket launcher. However, I like it because it shows how to get the emic2 to announce what it is reading from a sensor. Not caring too much about the rocket.
4 years ago
if you need data for the four pin sensor, its here
https://www.instructables.com/id/Easy-ultrasonic-4-pin-sensor-monitoring-hc-sr04/
4 years ago
could you change the code for the four pin ultrasonic sensor ? Please ?
7 years ago on Introduction
There was a problem and the code for this project was not attached. I am attaching it in this comment:
/*
This program is based off the demonstration of the Emic 2 module by
Joe Grand [www.grandideastudio.com]
*/
#include
#define rxPin 2 // Serial input (connects to Emic 2 SOUT)
#define txPin 3 // Serial output (connects to Emic 2 SIN)
// set up a new serial port
SoftwareSerial emicSerial = SoftwareSerial(rxPin, txPin);
const int pingPin = 7;
long int duration, distanceInches, distanceCm;
byte LimitCm= 30;
byte ledPin = 12;
long microsecondsToInches(long microseconds)
{
return microseconds / 74 / 2;
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
void setup() // Set up code called once on start-up
{
// define pin modes
pinMode(rxPin, INPUT);
pinMode(txPin, OUTPUT);
pinMode(ledPin,OUTPUT);
// set the data rate for the SoftwareSerial port
emicSerial.begin(9600);
/*
When the Emic 2 powers on, it takes about 3 seconds for it to successfully
intialize. It then sends a ":" character to indicate it's ready to accept
commands. If the Emic 2 is already initialized, a CR will also cause it
to send a ":"
*/
emicSerial.print('\n'); // Send a CR in case the system is already up
while (emicSerial.read() != ':'); // When the Emic 2 has initialized and is ready, it will send a single ':' character, so wait here until we receive it
delay(10); // Short delay
emicSerial.flush(); // Flush the receive buffer
}
void loop() // Main code, to run repeatedly
{
//check distance with Ping)))
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
distanceInches = microsecondsToInches(duration);
distanceCm = microsecondsToCentimeters(duration);
check();
delay(100);
}
void check()
{
if (distanceCm > 30)
{
emicSerial.print('S');
emicSerial.print();
emicSerial.print('\n');
while (emicSerial.read() != ':');
}
if (distanceCm < 30)
{
emicSerial.print('S');
emicSerial.print("object detected. Fire.");
emicSerial.print('\n');
while (emicSerial.read() != ':');
digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);
}
}