Projek Arduino Rocket Launcher



Dalam projek ini kita akan menciptakan timer penghitung mundur yang dapat diprogram yang akan kita gunakan untuk meluncurkan roket dengan menyala fuse saat countdown mencapai 0.



Komponen yang diperlukan :

1. Arduino board

2. Breadboard

3. Kabel  Jumper 

4. Four-digit, seven-segment serial display

5. Piezo buzzer

6. 2 momentary tactile four-pin pushbutton

7. 50k-ohm potentiometer

8. 3 LEDs (red, green, yellow)

9. 3 220-ohm resistors

Diperlukan librari SoftwareSerial


Kami akan menggunakan empat digit, seven segmen tampilan serial yang memiliki sirkuit terintegrasi built-in untuk mengontrol LED dan dapat dihubungkan ke Arduino hanya dengan tiga kabel. Saat memilih tampilan Anda, pastikan memiliki input RX sehingga Anda dapat mengontrolnya hanya dengan satu kabel.


Cara Kerja :

Anda dapat menggunakan pengatur waktu seperti ini untuk menyalakan apa pun yang membutuhkan daya, seperti motor servo, LED, atau alarm. Anda akan menggunakan potensiometer untuk memilih durasi hitungan mundur Anda (mulai dari 5 hingga 60 detik). Layar LED akan menampilkan angka sehingga Anda dapat melihat apa yang Anda atur hitungan mundurnya. Kami akan menyertakan dua tombol: tombol Lengan dan tombol Luncurkan. Setelah Anda memilih durasi hitung mundur, tekan tombol Lengan untuk menyiapkan penghitung waktu. Lampu LED merah menunjukkan bahwa itu bersenjata. (Tombol Lengan adalah fitur keamanan untuk mencegah Anda secara tidak sengaja mematikan peluncur.) Setelah Anda mempersenjatai roket, tekan tombol Luncurkan untuk memulai hitungan mundur. Lampu LED hijau menandakan bahwa itu sudah siap, dan hitungan mundur dimulai.

Saat penghitung waktu mundur, bel piezo berbunyi bip setiap detik. Saat penghitung mencapai lima detik, timer berbunyi semakin cepat hingga diluncurkan. Ketika pengatur waktu mencapai 0, daya dikirim melalui pin 7 ke output apa pun yang Anda miliki di sana-dalam hal ini, lampu LED kuning menyala. Anda dapat menghubungkan pengatur waktu ini ke bel, motor servo untuk membuka kunci pintu, atau bahkan sekering untuk menyalakan roket. Saya akan menunjukkan cara membuat pengapian sederhana sendiri untuk sekering nanti dalam proyek ini.


Cara membuat rangkaian :

1. Hubungkan pin RX display seven segmen ke pin 3 Arduino, sambungkan VCC ke +5V, dan sambungkan GND ke Arduino GND melalui breadbord, seperti yang ditunjukkan pada Gambar. Anda mungkin perlu melepas sebagian kabel untuk membuat sambungan.


2. Masukkan potensiometer ke breadboard dan hubungkan pin kiri ke +5V, pin tengah ke pin Arduino AO, dan pin kanan ke GND, seperti yang ditunjukkan pada Gambar.


3. Hubungkan kabel merah buzzer piezo ke pin 4 Arduino dan kabel hitam ke GND, seperti yang ditunjukkan pada Gambar.


4. Masukkan dua tombol tekan ke breadboard Anda, dengan pin A dan B di satu sisi break tengah dan pin D dan C di sisi lain, mengikuti konfigurasi pada Gambar.

5. Selanjutnya, kita akan menghubungkan tombol, seperti yang ditunjukkan pada Gambar. Untuk membuat tombol Arm, sambungkan pin C tombol tekan pertama ke GND dan pin D ke pin 5 Arduino. Untuk membuat tombol Launch, sambungkan pin C tombol tekan lainnya ke GND dan pin D ke pin Arduino 6.



6. Masukkan LED merah ke dalam breadbord dengan kaki negatif yang lebih pendek terhubung ke pin B dari tombol Lengan. Hubungkan kaki lainnya ke resistor 220-ohm, dan hubungkan sisi lain resistor ke +5V. Kemudian masukkan LED hijau dengan kaki negatif terhubung ke pin B dari tombol Launch, dan kaki positif terhubung ke +5V melalui resistor 220-ohm.

7. Hubungkan penyala. Kami menggunakan LED kuning sebagai indikator penyala kami untuk saat ini. Masukkan ke breadboard dengan kaki negatif terhubung ke GND dan kaki positif terhubung ke pin Arduino 7 melalui resistor 220-ohm.

Ketika hitungan mundur mencapai 0, pin 7 diatur ke TINGGI dan memicu penyala. Alih-alih benar-benar menyalakan sekring, kami menyalakan LED kuning untuk mewakili pengapian.

8. Konfirmasikan bahwa pengaturan Anda cocok dengan diagram sirkuit pada Gambar, dan unggah kode di "Sketsa".

Buat sekering kerja

Alih-alih menggunakan LED untuk menunjukkan pengapian, Anda dapat membuat sekering yang berfungsi menggunakan lampu seperti pada gambar sederhana. Pastikan untuk memakai pelindung mata saat membuat sekring. Instruksi ini untuk tujuan hiburan dan hanya boleh dilakukan oleh orang dewasa.

1. Dengan menggunakan bor hobi, berikan tekanan ringan ke bagian atas selubung kaca pada lampu untuk memotongnya.

2. Potong di dekat ujung selubung kaca dan bagian atasnya akan mudah lepas.

3. Sekarang potong kepala korek api kayu (pastikan Anda tidak menyalakannya!) dan masukkan kepala korek api dengan hati-hati ke dalam bola lampu yang terbuka, berhati-hatilah agar tidak merusak filamennya.

4. Terakhir, sambungkan kabel bohlam ke kabel pengapian Anda. Ketika daya dikirim ke bohlam, filamen akan memanas dan menyalakan kepala korek api (Gambar), menciptakan energi yang cukup untuk menyalakan sekering.

Sketch program arduino :
Sketsa pertama mendefinisikan setiap komponen dan koneksinya ke Arduino. Pustaka SoftwareSerial mengontrol tampilan LED serial empat digit tujuh segmen, sedangkan input analog dari potensiometer mengubah waktu yang ditampilkan dari 5 menjadi 60 detik. Saat ditekan, tombol Arm berfungsi sebagai sakelar digital dan fitur pengaman untuk memungkinkan tombol Launch ditekan. Jika tombol Lengan ditekan selama hitungan mundur, hitungan mundur dibatalkan dan tampilan diatur ulang.

Nada memerintahkan dalam sketsa pulsa bel piezo tepat waktu ke hitungan mundur untuk membuat bip. Ketika hitungan mundur mencapai 0, pin penyala (dalam hal ini, terhubung ke LED) diatur ke TINGGI dan menyalakan LED.


#define FuseTIME 1500 // Duration of fuse current in ms
#include <SoftwareSerial.h> // Call the SoftwareSerial library

#define Fuse 7 // Pin connected to fuse (your LED or igniter)
#define GoButt 6 // Pin connected to Launch button
#define ArmButt 5 // Pin connected to Arm button
#define BuzzPin 4 // Pin connected to piezo buzzer
#define TXdata 3 // Pin connected to RX of display
#define RXdata 2 // Not used
#define SetPot 0 // Analog pin connected to potentiometer

SoftwareSerial mySerialPort(RXdata, TXdata);

void setup() {
pinMode(TXdata, OUTPUT);
pinMode(RXdata, INPUT);
pinMode(Fuse, OUTPUT);
pinMode(ArmButt, INPUT); // Set Arm button pin to input
pinMode(GoButt, INPUT); // Set Launch button pin to input
digitalWrite(Fuse, LOW); // Open igniter circuit
digitalWrite(ArmButt, HIGH); // Turn on resistor
digitalWrite(GoButt, HIGH); // Turn on resistor
mySerialPort.begin(9600);
delay(10); // Wait for serial display startup
mySerialPort.print("v"); // Reset the serial display
mySerialPort.print("z"); // Brightness
mySerialPort.write(0x40); // 3/4 intensity
mySerialPort.print("w"); // Decimal point control
mySerialPort.write(0x10); // Turn on colon in serial display
}
int DownCntr; // Countdown (1/10 seconds)
int Go = 0; // Stopped
void loop() {
if (!digitalRead(GoButt) || !digitalRead(ArmButt)) {
Go = 0; // Abort the countdown
tone(BuzzPin, 440, 1500);
delay(1500);
}
if (Go == 0) {
WaitARM();
WaitGO();
}

ShowTimer();
if (DownCntr > 50) {
if (DownCntr % 10 == 0)tone(BuzzPin, 1000, 50); // One beep/sec
}
else if (DownCntr % 2 == 0)tone(BuzzPin, 1000, 50); // Beep faster
if (DownCntr == 0) {
tone(BuzzPin, 440, FuseTIME); // Launch tone
digitalWrite(Fuse, HIGH); // Close the fuse circuit
delay(FuseTIME);
digitalWrite(Fuse, LOW); // Open the fuse circuit
Go = 0;
}
while (millis() % 100); // Wait 50 ms
delay(50);
DownCntr--;
}
void WaitGO() {
ShowTimer();
while (digitalRead(GoButt));
Go = 1;

delay(20);
while (!digitalRead(GoButt)); // Debounce Launch button
}
void ReadTimer() {
DownCntr = map(analogRead(SetPot), 0, 1023, 5, 60);
DownCntr *= 10;
}
void ShowTimer() {
String seconds = String (DownCntr, DEC);
while (seconds.length() < 3)seconds = "0" + seconds; // Format to
// 3 numbers
mySerialPort.print(seconds); // Write to serial display
mySerialPort.print(" "); // Last digit off
}
void WaitARM() {
while (digitalRead(ArmButt) == 1) {
ReadTimer();
delay(50);
ReadTimer();
ShowTimer();
delay(150);
}
Go = 0;
ShowTimer();
tone(BuzzPin, 2000, 150);
delay(200);
tone(BuzzPin, 2000, 150);
delay(200);
tone(BuzzPin, 2000, 150);
delay(20);
while (!digitalRead(ArmButt)); // Debounce Arm button
}


Demikianlah projek arduino Rocket Launcher, selamat mencoba dan semoga bermanfaat.