Arduino ve android kontrollü kendi oyuncak arabamizi yapalim

 

image

Yaklaşık 1 saat içinde kendi kumandalı arabanı yapmak istermisin.

Gerekli malzemeler:
– 1 Adet arduino uno
– 1 adet android telefon veya tablet
– 1 adet hc-05 veya hc-06 bluetooth modulu
– 1 adet 12v servo motor metal dişli kullandım
– 1 adet arduino l298 motor surucu devresi
– 1 adet 12 v lipo pil yuksek amper daha iyi
– 1 adet mini on/off anahtar 
– baglantı kabloları
– Robot şasesi
– 2 adet 2500 rpm 12v dc motor
– 2 adet uygun tekerlek
– on direksiyon sistemi oyuncak arabadan söküldü.

Robot bağlantı resimleri:

image

image

image

image

image

image

image

image

image

Robotun app inventor  programlaması:
Tasarım:
Önce yeni bir proje açalım.bluetooth bağlantilarini listemek icin bir adet buton ve liste kutusu ekliyoruz. Şimdi sira y ekseninindeki değişikliği göstermek için 2 adet label ekleyelim.y eksenini direksiyon sistemi için kullanacağız.ileri,geri yönleri için ve fren yapmak için buton koyalım.Arabamıza gaz vermek için slider koyalım ve ismine hiz adi verelim.bluetooth ile haberleşme belirli periyotlarda yapabilmek için timer ekleyeceğiz.tabiki eksen kontrolü için Accelerometter sensorunden yararlanacağız.bizim için y eksenindeki değişikliğe bakmamız yeterli olacaktır.

image

image

Kod:
Butonların click olaylarına bluetooth ile geri,ileri ve fren yazılarını göndereceğiz.bu text değerleri arduino kodlarıyla kontrol etmek için kullanacağız.

image

Timer döngüsü içerisinde bluetooth kontrol etmemiz gerekiyor.

image

Eski değerleri kontrol etmek için global değişkenler tanımladım.

image

Kodun tamamlanmış hali aşağıda ;

image

Şimdi build ederek apk dosyamızı hazırlıyoruz ve android cihazımıza yüklüyoruz.

Robotun arduino kodları:
String readString;
#include <Servo.h> //servo kütüphanesi çağırıyoruz

// Motor pin bağlantıları eski l298 motor sürücüye göre
int pwm_a = 3;
int pwm_b = 11;
int dir_a = 12;
int dir_b = 13;
int yon=88;a

// rgb led yakmak için
const int kirmizi = 18;//analog a4
const int yesil = 17;//analog  a3
const int mavi = 16;//analog a2
Servo _direksiyon; // servo motoru kontrol etmek için servo tanımladık
int eskidegersofor=0;
int deger=1;
int solhiz=70;
int saghiz=70;

void setup()
{
Serial.begin(9600);
//pinMode(led,OUTPUT);
pinMode(pwm_a, OUTPUT);
pinMode(pwm_b, OUTPUT);
pinMode(dir_a, OUTPUT);
pinMode(dir_b, OUTPUT);

pinMode(kirmizi, OUTPUT);
pinMode(yesil, OUTPUT);
pinMode(mavi, OUTPUT);

analogWrite(pwm_a, 0);
analogWrite(pwm_b, 0);

_direksiyon.attach(10);
motor(0,0);
sofor(90);
}
void loop()
{
while(Serial.available())
{
delay(3);
char c=Serial.read();
readString+=c;
}
if(readString.length()>0)
{
Serial.println(readString);
String gelen=readString;
int deger=gelen.toInt();
Serial.println(deger);
//robot ileri yönde hareket etsin ************************************
if(readString==”ileri”)
{rgb_led(0,0,255);
sofor(90);
if ((saghiz<0) || (solhiz<0))
{
solhiz=solhiz*-1;
saghiz=saghiz*-1;
}
motor(solhiz, saghiz);
Serial.println(“ileri”);
}
//robot geri yönde hareket etsin ************************************
if(readString==”geri”)
{rgb_led(255,255,0);
sofor(88);
if ((saghiz>0) || (solhiz>0))
{
solhiz=solhiz*-1;
saghiz=saghiz*-1;
}
motor(solhiz, saghiz);
Serial.println(“geri”);
}
//robot fren yapsın ************************************
if(readString==”fren”)
{rgb_led(255,0,0);
solhiz=0;
saghiz=0;
motor(solhiz, saghiz);
Serial.println(“fren”);
}

//robot direksiyon sistemi ************************************
if((readString!=”ileri”)&&(readString!=”geri”)&&(readString!=”fren”)&&(deger<100))
{
rgb_led(255,0,255);
if ((deger>-11)&&(deger<0)) yon=80;//sola
//yon=yon+deger;
else if ((deger>0)&&(deger<11)) yon=96;/sağa
else yon=88;//düz
sofor(yon);
motor(solhiz, saghiz);
Serial.println(“yonnn”);
}
//robot gaz verme işlemi
if((readString!=”ileri”)&&(readString!=”geri”)&&(readString!=”fren”)&&(deger>99)&&(deger<301))
{

rgb_led(250,155,155);
solhiz=deger-100;
saghiz=deger-100;
sofor(yon);
motor(solhiz, saghiz);
Serial.println(“hiz”);
}
readString=””;
}

}
//direksiyondan kullanılan servo ayarları
void sofor(int deger)
{
if (deger>eskidegersofor)
{
for (int i=eskidegersofor;i<=deger;i++)
{
_direksiyon.write(i);
delay(15);
}
}
else
{
for (int i=eskidegersofor;i>=deger;i–)
{
_direksiyon.write(i);
delay(15);
}
}
eskidegersofor=deger;
}

////////////////////motor ayarı yapılıyor –> 0 – ileri –> 1 – geri  /////////////////////
void motor(int solmotor, int sagmotor)
{
digitalWrite(dir_b, LOW);
digitalWrite(dir_a, LOW);
if (sagmotor<0)
{
digitalWrite(dir_b, HIGH);
sagmotor*=-1;
}
if (solmotor < 0)
{
digitalWrite(dir_a, HIGH);
solmotor*=-1;
}
analogWrite(pwm_a, solmotor);
analogWrite(pwm_b, sagmotor);
}

void rgb_led(int r,int g,int b)
{
analogWrite(kirmizi, r);
analogWrite(yesil, g);
analogWrite(mavi, b);
}

 

Arduino kodumuzu robotumuza atarken bluetooth cihazımızı ( 5v kablosunu çıkaralım) devre dışı bırakmayı unutmayın.

Herkese iyi çalışmalar…

Arduino ve android kontrollü kendi oyuncak arabamizi yapalim” için 6 yorum

  • Mayıs 9, 2015 tarihinde, saat 5:09 am
    Permalink

    Klavyede “print screen” diye bi tuş var.
    Bil istedim.

    Yanıtla
    • Mayıs 9, 2015 tarihinde, saat 5:33 am
      Permalink

      Yorumun için teşekkürler.bu yazıyı telefonu yeni aldığım için oradan yazdım.pcde güncellediğim zaman dikkate alırım.?

      Yanıtla
  • Ekim 2, 2015 tarihinde, saat 7:27 pm
    Permalink

    Kardeşim bu kullandığın mıt app tam olarak ne oluyor ne işe yarıyor bununla ilgili bilgilendirme yapar mısın?

    Yanıtla
    • Ekim 24, 2015 tarihinde, saat 10:43 am
      Permalink

      google tarafında desteklenen bir proje.program blokları sayesinde java bilgisine ihtiyaç duyulmadan basit ve orta seviyeli çok azda ileridüzey android uygulama yazma imkanı tanıyan ve bu uygulamayı mağazaya gönderme imkanı tanıyan, internet tabanlı programdır.kesinlikle google chrome da açman gerekiyor.çalışmalarında başarılar dilerim.

      Yanıtla
  • Temmuz 19, 2016 tarihinde, saat 10:04 pm
    Permalink

    Hocam androidden kontrol ederken ileri ve geri için buton yerine direkt pwm kontrol edecek şekilde silder koymak mümkün mü?

    Yanıtla
    • Kasım 13, 2017 tarihinde, saat 8:13 am
      Permalink

      Siteyi yenilediğim için ancak şimdi vakit bulup cevap verebildim. Slider koyarak pwm yapabilirsiniz.

      Yanıtla

selçuk için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir