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…

About mehmetakifsonmez

Tokat Teknik ve Endüstri Meslek Lisesi - Bilişim Teknolojileri Alanı Şefi
Bu yazı Android programlama, Ardunio, Programlama Dilleri, Robotik ve Programlama, Robotlarım içinde yayınlandı ve , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

5 Responses to Arduino ve android kontrollü kendi oyuncak arabamizi yapalim

  1. Hızır dedi ki:

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

    Liked by 1 kişi

  2. Çelik dedi ki:

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

    Beğen

    • mehmetakifsonmez dedi ki:

      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.

      Beğen

  3. selçuk dedi ki:

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

    Beğen

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s