Arduino Bluetooth Kontrollü Robot Araba Yapımı
Yamanbilimci Android Uygulama Arduino Bluetooth Kontrollü Robot Araba Yapımı
Çocukların ilgisini çeken uzaktan kumandalı oyuncak arabalar RC (Radyo Frekanslı Kumanda Kontrol) ile çalışmaktadır. Çoğunlukla Çin Malı olan bu oyuncakların nasıl çalıştığını çocuklar genelde bilmezler. Meraklı çocuklar bu arabaların içini açıp bakarlar ama karmaşık elektronik devresinden de hiçbir şey anlamazlar. Genelde kumandaları veya arabanın kendisi bozulur. Bozuk oyuncaklar sepetindeki, ömürlerini tamamlamayı beklerler. Beklerken de genelde pilleri akar ve oldukça zararlı kimyasallar yayarlar.
Son zamanlarda tüm dünyada yaygınlaşmaya başlayan kendin yap(DIY) projeleri ve MAKER, STEM projeleri; öğren, tasarla, oyna, geliştir, mantığıyla çocukların dünyasına girmeye başladı. Bu kapsamda çok çeşitli eğitim ve oyun kitleri piyasada görülmeye başlasa da ucuz Çin Malı hazır oyuncakların yerini alması uzun sürecek gibi gözüküyor.
Yamanbilimci olarak bu alanda yaptığım projelerimden biri olan Android Uygulama ile cep telefonundan bluetooth bağlantısı ile kontrol edilebilen Arduino Robot Araba yapımını paylaşacağım. Bu çeşit projelerin….
A)Gerekli Malzemeler:
1. Arduino Uno
2. L298N Motor Sürücü
3. HC-06 Bluetooth Modülü
4. Robot Tekerlek Seti(2 adet)
5. Robot Araba Şasesi
6. Yeteri Kadar M3 Vida
7. Batarya
8. Yeteri Kadar Kablo
9. Buzzer
B)Devre şemasını resimde olduğu gibi bağlıyoruz.
C)Robot motorlarını ve devrelerimizi robot şasesine yerleştiriyoruz.
D)Arduino Robot Kodlarını Yüklüyoruz
#define light_FR 14 //LED Front Right pin A0 for Arduino Uno
#define light_FL 15 //LED Front Left pin A1 for Arduino Uno
#define light_BR 16 //LED Back Right pin A2 for Arduino Uno
#define light_BL 17 //LED Back Left pin A3 for Arduino Uno
#define horn_Buzz 18 //Horn Buzzer pin A4 for Arduino Uno
#define ENA_m1 5 // Enable/speed motor Front Right
#define ENB_m1 6 // Enable/speed motor Back Right
#define IN_11 2 // L298N #1 in 1 motor Front Right
#define IN_12 3 // L298N #1 in 2 motor Front Right
#define IN_13 4 // L298N #1 in 3 motor Back Right
#define IN_14 7 // L298N #1 in 4 motor Back Right
int command; //Int to store app command state.
int speedCar = 100; // 50 – 255.
int speed_Coeff = 4;
boolean lightFront = false;
boolean lightBack = false;
boolean horn = false;
void setup() {
pinMode(light_FR, OUTPUT);
pinMode(light_FL, OUTPUT);
pinMode(light_BR, OUTPUT);
pinMode(light_BL, OUTPUT);
pinMode(horn_Buzz, OUTPUT);
pinMode(ENA_m1, OUTPUT);
pinMode(ENB_m1, OUTPUT);
pinMode(IN_11, OUTPUT);
pinMode(IN_12, OUTPUT);
pinMode(IN_13, OUTPUT);
pinMode(IN_14, OUTPUT);
Serial.begin(38400);
}
void goAhead(){
digitalWrite(IN_11, HIGH);
digitalWrite(IN_12, LOW);
analogWrite(ENA_m1, speedCar);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, HIGH);
analogWrite(ENB_m1, speedCar);
}
void goBack(){
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, HIGH);
analogWrite(ENA_m1, speedCar);
digitalWrite(IN_13, HIGH);
digitalWrite(IN_14, LOW);
analogWrite(ENB_m1, speedCar);
}
void goRight(){
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, HIGH);
analogWrite(ENA_m1, speedCar);
digitalWrite(IN_13, HIGH);
digitalWrite(IN_14, LOW);
analogWrite(ENB_m1, speedCar);
}
void goLeft(){
digitalWrite(IN_11, HIGH);
digitalWrite(IN_12, LOW);
analogWrite(ENA_m1, speedCar);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, HIGH);
analogWrite(ENB_m1, speedCar);
}
void goAheadRight(){
digitalWrite(IN_11, HIGH);
digitalWrite(IN_12, LOW);
analogWrite(ENA_m1, speedCar/speed_Coeff);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, HIGH);
analogWrite(ENB_m1, speedCar/speed_Coeff);
}
void goAheadLeft(){
digitalWrite(IN_11, HIGH);
digitalWrite(IN_12, LOW);
analogWrite(ENA_m1, speedCar);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, HIGH);
analogWrite(ENB_m1, speedCar);
}
void goBackRight(){
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, HIGH);
analogWrite(ENA_m1, speedCar/speed_Coeff);
digitalWrite(IN_13, HIGH);
digitalWrite(IN_14, LOW);
analogWrite(ENB_m1, speedCar/speed_Coeff);
}
void goBackLeft(){
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, HIGH);
analogWrite(ENA_m1, speedCar);
digitalWrite(IN_13, HIGH);
digitalWrite(IN_14, LOW);
analogWrite(ENB_m1, speedCar);
}
void stopRobot(){
digitalWrite(IN_11, LOW);
digitalWrite(IN_12, LOW);
analogWrite(ENA_m1, speedCar);
digitalWrite(IN_13, LOW);
digitalWrite(IN_14, LOW);
analogWrite(ENB_m1, speedCar);
}
void loop(){
if (Serial.available() > 0) {
command = Serial.read();
stopRobot(); //Initialize with motors stopped.
if (lightFront) {digitalWrite(light_FR, HIGH); digitalWrite(light_FL, HIGH);}
if (!lightFront) {digitalWrite(light_FR, LOW); digitalWrite(light_FL, LOW);}
if (lightBack) {digitalWrite(light_BR, HIGH); digitalWrite(light_BL, HIGH);}
if (!lightBack) {digitalWrite(light_BR, LOW); digitalWrite(light_BL, LOW);}
if (horn) {digitalWrite(horn_Buzz, HIGH);}
if (!horn) {digitalWrite(horn_Buzz, LOW);}
switch (command) {
case ‘F’:goAhead();break;
case ‘B’:goBack();break;
case ‘L’:goLeft();break;
case ‘R’:goRight();break;
case ‘I’:goAheadRight();break;
case ‘G’:goAheadLeft();break;
case ‘J’:goBackRight();break;
case ‘H’:goBackLeft();break;
case ‘0’:speedCar = 100;break;
case ‘1’:speedCar = 115;break;
case ‘2’:speedCar = 130;break;
case ‘3’:speedCar = 145;break;
case ‘4’:speedCar = 160;break;
case ‘5’:speedCar = 175;break;
case ‘6’:speedCar = 190;break;
case ‘7’:speedCar = 205;break;
case ‘8’:speedCar = 220;break;
case ‘9’:speedCar = 235;break;
case ‘q’:speedCar = 255;break;
case ‘W’:lightFront = true;break;
case ‘w’:lightFront = false;break;
case ‘U’:lightBack = true;break;
case ‘u’:lightBack = false;break;
case ‘V’:horn = true;break;
case ‘v’:horn = false;break;
}
}
}
E)App Marketten Yapboz Robot Kontrol Uygulamasını Cep Telefonumuza İndiriyoruz
F)Artık telefonumuz ile robotun bağlantısını yapmak kaldı.