Android Kontrollü Rc Tekne Yapımı

Android Kontrollü Rc Tekne Yapımı

10 4.350

Kendi Robotunu Yap projelerimizin bu bölümünde android cihazdan bluetooth üzerinden oyuncak teknemizi kontrol edeceğiz.Rc teknemizin elektronik devresini çıkaracağız.Kendi devre kartımızı yaparak teknemizi telefon veya tabletten kontrol edeceğiz.

Malzemeler:

  1. Arduino Uno
  2. L293D Motor Sürücü
  3. Hc-06 Bluetooth Modül
  4. Uzaktan Kumandalı Oyuncak Tekne

Elektronik Devre Şeması:

Motor Pinleri

L293 Pin 2 =arduino D5
L293 Pin 7 = arduino D6
L293 Pin 10 = arduino D10
L293 Pin 14  = arduino D9

Eğer daha fazla güç istiyorsanız L298 motor sürücü kartını kullanabilirsiniz.

L293D motor sürücü kanal başına maksimum 0.5A verecek ve bir süre sonra çok ısınacaktır. L298 sürücü kartında bir soğutucu vardır ve kanal başına 1A verir.

Yazılım Kısmı:

//L293 Bağlantı Pinleri
const int motorA1 = 5; // L293 Pin 2
const int motorA2 = 6; // L293 Pin 7
const int motorB1 = 10; // L293 Pin 10
const int motorB2 = 9; // L293 Pin 14
 
const int BTState = 2; //Bluetooth (HC-06 JY-MCU) State pin Arduino dijital pin 2
//Pil Seviyesi Hesaplamaları
const float maxBattery = 8.0;// Maksimum Pil Voltaj Değişimi!
int perVolt; // Yüzde değişkeni
float voltage = 0.0; // Akü voltajı Okuma
int level;
long previousMillis = -1000*10;// -1000*10=-10sec. İlk değeri oku. Eğer 0 ise o zaman 10 saniye sonra ilk değer alacak.
long interval = 1000*10; // Akü değeri okuma aralığı! (10*1000=10sec)
unsigned long currentMillis; //Yenilenme zamanı;
//Useful Variables
int state;
int vSpeed=200; // Standart hızı 200
 
void setup() {
 
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
Serial.begin(9600);
}
 
void loop() {
 
if(digitalRead(BTState)==LOW) { state='S'; } //Bağlantı sonlandığında veya bağlantı kesildiğinde tekneyi durdur
 
//Değişken verileri kaydet
if(Serial.available() > 0){
state = Serial.read();
}
// Gelen 4 verinin hız değiştirme durumları
if (state == '0'){
vSpeed=0;}
else if (state == '1'){
vSpeed=100;}
else if (state == '2'){
vSpeed=180;}
else if (state == '3'){
vSpeed=200;}
else if (state == '4'){
vSpeed=255;}
 
//İLERİ
if (state == 'F') {
analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0);
analogWrite(motorB1, vSpeed); analogWrite(motorB2, 0);
}
//İLERİ SOLA
else if (state == 'G') {
analogWrite(motorA1, 100); analogWrite(motorA2, 0);
analogWrite(motorB1, vSpeed); analogWrite(motorB2, 0);
}
//İLERİ SAĞA
else if (state == 'I') {
analogWrite(motorA1, vSpeed); analogWrite(motorA2, 0);
analogWrite(motorB1, 100); analogWrite(motorB2, 0);
}
// GERİYE
else if (state == 'B') {
analogWrite(motorA1, 0); analogWrite(motorA2, vSpeed);
analogWrite(motorB1, 0); analogWrite(motorB2, vSpeed);
}
//GERİYE SOLA
else if (state == 'H') {
analogWrite(motorA1, 0); analogWrite(motorA2, 100);
analogWrite(motorB1, 0); analogWrite(motorB2, vSpeed);
}
//GERİYE SAĞA
else if (state == 'J') {
analogWrite(motorA1, 0); analogWrite(motorA2, vSpeed);
analogWrite(motorB1, 0); analogWrite(motorB2, 100);
}
//SOLA
else if (state == 'L') {
analogWrite(motorA1, 0); analogWrite(motorA2, vSpeed);
analogWrite(motorB1, vSpeed);analogWrite(motorB2, 0);
}
//SAĞA
else if (state == 'R') {
analogWrite(motorA1, vSpeed);analogWrite(motorA2, 0);
analogWrite(motorB1, 0); analogWrite(motorB2, vSpeed);
}
 
//DUR
else if (state == 'S'){
analogWrite(motorA1, 0); analogWrite(motorA2, 0);
analogWrite(motorB1, 0); analogWrite(motorB2, 0);
}
//BATARYA VOLTAJ OKUMA
currentMillis = millis();
if(currentMillis - (previousMillis) > (interval)) {
previousMillis = currentMillis;
//Read voltage from analog pin A0 and make calibration:
voltage = (analogRead(A0)*5.015 / 1024.0)*11.132;
//Calculate percentage...
perVolt = (voltage*100)/ maxBattery;
if (perVolt<=75) { level=0; } else if (perVolt>75 && perVolt<=80) { level=1; } else if (perVolt>80 && perVolt<=85) { level=2; } else if (perVolt>85 && perVolt<=90) { level=3; } else if (perVolt>90 && perVolt<=95) { level=4; } else if (perVolt>95) { level=5; }
Serial.println(level);
}
 
}

Android Bluetooth Tekne Kontrol:

Android uygulamasını aşağıdaki linkten indirelim.

Android Kontrol

Eğer android sürümü desteklemezse aşağıdaki uygulamayı indirebilirsiniz.

Android Rc Car

Bütün bağlantıları yapıyoruz ve yazılımımızı yüklüyoruz.Kontrol kartımız hazır.Teknemize yerleştirebiliriz.

Kendi Robotunu Yap projelerimizin bu bölümünde de android kontrollü rc teknemizi tamamladık.Bluetooth kontrol mesafesinin maksimum 15-20 metre olduğunu unutmayalım.

 

Bunlar da İlgini Çekebilir

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  1. beyti

    Proje malzemeleri set halinde satılıyor olsaydı çok işimizi kolaylaştırırdı. Mümkün mü acaba ?

  2. Ahmet Muhammed BAYAT

    bunun menzili kısa sanırım bluetooth olduğu için nrf ile olan versiyonu var mı ? yada nrf24l01+pa modeli ile sanırım daha çok menzili olur cevep verirseniz çok sevinirim

  3. ugur

    hocam bluetooth konrollu araba yaptım ,araba bluettothtan bağlanıyorum çalışıyor bir süre sonrasında l298n tepki vermiyor araba çalışmıyor ,yardımcı olabilmisin sorun pillerden mi motor sürücüden mı bilemedim

    1. Sezgin GÜL

      Muhtemelen enerji düzensizliği vardır devrede. Pilin gerilim ve akım değerini uygun seçmelisin

  4. samet

    tekneye nasıl baglandıgı resimleri yok bite toplam ne kadar geliyor

    1. samet

      tekneye kartların nasıl baglıgı hakkında detaylı bilgi yokmu ? motorun felan

  5. Hasan

    Merhablar Sezgin Bey,

    Kodunuzu inceledim fakat aklıma bir yer takıldı.

    ileri sağ kodunuzuda : analogWrite(motorB2, 200); yerine analogWrite(motorB2, 0);
    olması gerekmiyor mu. değilse neden.

    Teşekkürler

    1. Sezgin GÜL

      Merhabalar Hasan Bey ,
      İleri sağ komutu yanlış yazılmış dediğiniz doğru kod düzeltildi . Teşekkürler.

  6. Mesut Turan

    Harika bir proje olmuş. Paylaşım için teşekkürler. Teknenin batma ihtimali göz önüne alınmış mı 🙂

    1. Sezgin GÜL

      Fırtınaya yakalanmadığı sürece batmaz herhalde 🙂