Hayatımıza giren yeni teknolojiler ile beraber her türlü aktiviteyi telefonlardan gerçekleştirmeye başlıyoruz. Uzaktan kumandalı arabalar oynamak için en çok tercih edilen oyuncaktır. Bizler kendi uzaktan kumandalı arabamızı Arduino UNO ile yapacağız. Araç kontrolü kumanda yerine telefonu kullanarak yapılacak. Kullanılacak malzemeler aşağıda verilmiştir.
Arduino UNO
L298N
9V Pil
HC-06 veya HC-05
2 adet DC Motor
2WD Robot Araba Kiti
Jumper Kablolar
Robotun montajı yapılarak devre aşağıdaki gibi kurulup aracın üzerine sabitleniyor.
Kurulum gerçekleştirildikten sonra telefona uygulama indirilmesi gerekmektedir. "Arduino Car" uygulamasını indirerek bluetooth bağlantısını sağlıyoruz. Eşleşme işlemini gerçekleştirirken Bluetooth modülünün ismi şeklinde görünür.
Göründüğü üzere eşleşme için gerekli olan pin 0000 veya 1234 olur. Açıklama kısmında belirtiliyor. Pini girdikten sonra eşleşme işlemi gerçekleşmiş olur. HC-06' yı telefona tanımladıktan sonra uygulama üzerinde bağlantı kurulacaktır.
Bluetooth bağlantısı uygulama üzerinden sağlanmadığı için uygulamaya girildiğinde Bluetooth işareti yanıp sönmektedir. Üzerine tıklayıp bağlanmak istediğimiz cihazı, eşleştirilen cihazlar arasında bulup eşleşmeyi gerçekleştiriyoruz. Eşleşme gerçekleştiği için artık Bluetooth işareti yanıp sönmüyor.
Tüm bağlantılar gerçekleştikten sonra artık kodlama işlemine geçebiliriz. Bluetooth modülünün TX ve RX pinlerinin Arduino üzerinde hangi pinlere bağlandığını belirtiyoruz.
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(8, 9);
DC motorların bağlı olduğu pinler tanımlanır. Durum konumunu "String" olarak tanımlıyoruz.
void setup() içerisinde pinMode'larını tanımlayıp haberleşmeyi ve bluetoothu başlatıyoruz.
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
bluetooth.begin(9600);
void loop içerisinde available() fonksiyonunu kullanarak porta girilen değerin olup olmadığını sonsuz döngü içerisinde kontrol edilmektedir.
while (bluetooth.available() > 0) {
char harf = bluetooth.read();
if (harf != "\n") {
state += String(harf);
}
İleri, geri, sağ, sol ve durduğu durumun hareketlerini DC motorların kontrolünü sağlayarak gerçekleştiriyoruz.
if (state == "F") { //ileri
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
else if (state == "G") { //geri
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
Kodların tamamı aşağıda verilmiştir.
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(8, 9);
#define IN1 5
#define IN2 6
#define IN3 11
#define IN4 12
String state = "";
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
Serial.begin(9600);
bluetooth.begin(9600);
}
void loop() {
while (bluetooth.available() > 0) {
char harf = bluetooth.read();
if (harf != "\n") {
state += String(harf);
}
}
if (state != "")
{
Serial.println("Bluetooth gelen veri:" + String(state));
state = state[0];
}
if (state == "F") { //ileri
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
else if (state == "G") { //geri
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
else if (state == "R") { //sag
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
else if (state == "L") { //sol
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
else if (state == "S") {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
state = "";
}
Comments