20 Ocak 2017 Yazarı yhackup 84

Fiat Linea Direksiyon Tuşları ile Aux Modülü Kontrolü

Merhabalar,

Araç ile yolda giderken Aux kontrolu zor oluyor ya kumanda ile değiştireceksiniz ya üzerindeki tuşlarla her ikisi de sürüş güvenliğini tehlikeye atan unsurlar.  Bu sebeplerden dolayı Aux modülünü direksiyondan nasıl değiştiririz araştırdım ve yaptım.

Hatırlayacak olursak Daha önce Linea/Punto/Doblo Teyp’lerine aux bağlantısı hakkında Buradaki konuda fazlasıyla bilgi paylaşmıştım,  Daha sonra Aux aparatındaki şarkıların, aracın direksiyonun tuşlarından nasıl değiştirilileceği ile ilgili Buradaki konuda geniş bilgiye yer vermiştim.

Daha sonra araştırmalarım üzerine, Facebook gruplarındaki isminin açıklanmasını istemeyen değerli bir ustamdan Longue(Lineanın full donanımlı versiyonu) direksiyon tuşları buldum, Ve aracıma takarak 2 adet fazladan tuş kazanmış oldum.

Ve yeni kazandığım bu tuşları da Aux modülüne bağladım.

Biliyorsunuz Aux modülü teybe doğrudan bağlı olduğu için, teybi açtığınızda veya aracı çalıştırdığınızda Kullanmasanız dahi Aux modülü otomatik çalışıyor, kumandadan kapamak gerekiyor. Artık öyle değil.

Sağdaki Menü tuşu ile Aux modülü açılıp kapanıyor.

Şarkı değiştirme tuşları, Aux’un şarkılarını değiştiriyor, eğer Bluetooth’tan telefon veya tablet bağlı ise direksiyon tuşları telefonun şarkılarını değiştiriyor, telefonda youtube açık ise, youtube deki sıradaki şarkıya geçiyır vs vs,

Soldaki Windows tuşu ise Aux Modülü modları arasında geçiş yapıyor (FM, Aux, SD Kart, Flash Bellek, Bluetooth)

Zamanında Volvo Firması Emniyet kemerinin bugünki teknolojisini bularak bildiklerini tüm otomobil firmalarıyla paylaşarak insanlığın güvende olması için bir adım atmış bizimki o kadar olmasa da amaç fayda sağlamak…

Elimiz direksiyonda gözümüz yollarda olsun.

Çalışma videosu

2. Video

Bağlantı Şeması

Mantık Basit Direksiyondaki Sağda Solda bulunan 4’er tuş farklı dirençlerle birbirine bağlı,

Sırasıyla,

  • – Tuşu 0,01k
  • +Tuşu 0,52k
  • SRC Tuşu 1,50k
  • Windows Tuşu 4,20k  Bunları arduino ile Analog olarak okuyup,  digital pinlere sinyal gönderiyoruz Sinyalimiz ile bc548 tetikleyerek, Aux tuşlarımızı simule ediyoruz

Direksiyon  yuşları canbus vasıtası ile tek bir kabloda iletiliyor , 1 tane sağ tuşlar bir tane sol tuşlar için en kolay direksiyon altından alabilirsiniz renkleri

  • Kahverengi çizğili Mavi,
  • Kahverengi çizgili Beyaz


Ben Aux kontol etmeyi seçtim, sizler istediğiniz amaç uğruna kullanabilirsiniz (Cruise Control gibi).

Role Kartı Devresi,

Bu devre Aux modülüne giden akımı açıp kapamak için, ek olarak devre ile kullanmamdaki sebeb ise, Arduino ile doğrudan role kullanmaktan kaçınmak ,Role Arduino üzerinden fazla akım çekip arduinomuzu bozabilir.

Modül tuşlarının devresi,

Auxun tuşlarına Aşağıdaki gibi BC548 transistoru lehimliyorsunuz.

Arduino kodları, Arduinonuzu bilgisayarınıza atın ve arduino kartınıza yükleyin…

//*******  Güncelleme 01.09.2020  *******//
boolean Mode    = false;
boolean COpen   = false;
boolean Cup     = false;
boolean Cdown   = false;
boolean CResume = false;
boolean ANext   = false;
boolean APrev   = false;
boolean AMode   = false;
int OpenedTimeout = 0;

void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  Serial.begin(9600);
}


byte GetButton(int x)
{
  if (x > 820 && x < 850)
    return 0;
  else if (x > 710 && x < 750)
    return 1;
  else if (x > 600 && x < 650)
    return 2;
  else if (x > 490 && x < 550 )
    return 3;
  else return -1;
}


void Set(int pin, boolean statu) {
  if (statu) {
    digitalWrite(pin, HIGH);
    digitalWrite(12, HIGH);
  } else {
    digitalWrite(pin, LOW);
    digitalWrite(12, LOW);
  }
}


void BasiliTutAcilsin() {
  OpenedTimeout++;
  if (OpenedTimeout > 7) {
    if (Mode) {
      Mode = false;
      Set(6, false);
      OpenedTimeout = 0;
      delay(500);
    } else {
      Mode = true;
      Set(6, true);
      OpenedTimeout = 0;
      delay(500);
    }
  }
}


void loop()
{
  delay(50);
  int value   = analogRead(A0);
  int value2  = analogRead(A1);

  byte LB = GetButton(value);
  byte RB = GetButton(value2);


  switch (RB) {
    case 0:
      Set(3, true);
      break;
    default:
      Set(3, false);
  }


  switch (LB) {
    case 0:
      BasiliTutAcilsin();
      break;
    case 1:
      break;
    case 2: ANext = true;
      break;
    case 3: APrev = true;
      break;
    default:
      ANext  = false;
      APrev = false;
      OpenedTimeout = 0;
      break;
  }
  Set(2 , APrev);
  Set(4, ANext);
  Serial.println(OpenedTimeout);
}
//*******  Güncelleme 01.09.2020  *******//

 

 

Malzemeler,

  • Arduino Uno / Pro / Pro mini / Nano hiç farketmez hepsi aynı ()
  • 4 Adet 1k Direnç
  • 12v to 5v Regülator Kartı.  Link

Role Kartı için,

  • 1 Adet 1k Direnç
  • 1N4007 Diyot
  • BC548 Transistor
  • 5v Role

Yeteri kadar kablo , makaron vs vs…

 

 

Güncelleme…!

Her şey iyi güzel ama , eğer aracınızın orjinal teybini söküp, başka bir teyp takmış iseniz ne olacak ?

 

E onu da hallederiz 🙂

Takipçilerimizden Turgut MIZRAP yukarıda benim yazdığım kodları ve Arduino’yu, kendine göre uyarlayarak ve tesisatı gerçekleştirerek direksiyondan bu teybi kontrol etmeyi başardı, aşağıdaki videoyu izleyebilirsiniz.

 

Sistem ile ilgili bazı ekran görüntüleri…

 

 

 

Bu iş için güncellenen yeni arduino kodları.

 

boolean Mode    = false;
boolean COpen   = false;
boolean Vup     = false;
boolean Vdown   = false;
boolean CResume = false;
boolean ANext   = false;
boolean APrev   = false;
boolean AMode   = false;
void setup()
{
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(12, OUTPUT);
}
byte GetButton(int x)
{
  int Result = -1;
  if (x > 710 && x < 870) Result = 1; else if (x > 600 && x < 700) Result = 2; else if (x > 490 && x < 550 )
    Result = 3;
  else
    Result = -1;
  return Result;
}
void Set(int pin, boolean statu) {
  if (statu) {
    digitalWrite(pin, HIGH);
  } else {
    digitalWrite(pin, LOW);
  }
}
void loop()
{
  int value   = analogRead(A0);
  int value2  = analogRead(A1);
  byte LB = GetButton(value);
  byte RB = GetButton(value2);
  switch (LB) {
    case 1: Mode = true;
      break;
    case 2: Vup = true;
      break;
    case 3: Vdown = true;
      break;
    default:
      Mode = false;
      Vup = false;
      Vdown = false;
  }
  if (Mode) {
    Set(12, true);
  } else {
    Set(12, false);
  }
  if (Vup) {
    Set(3, true);
    Set(12, false);
  } else {
    Set(3, false);
  }
  if (Vdown) {
    Set(4, true);
  } else {
    Set(4, false);
  }
  switch (RB) {
    case 1: AMode = true;
      break;
    case 2: ANext = true;
      break;
    case 3: APrev = true;
      break;
    default:
      AMode = false;
      ANext = false;
      APrev = false;
  }
  if (AMode) {
    Set(9, true);
  } else {
    Set(9, false);
  }
  if (ANext) {
    Set(6, true);
    Set(9, false);
  } else {
    Set(6, false);
  }
  if (APrev) {
    Set(7, true);
  } else {
    Set(7, false);
  }
}