Kısa özet

Arabam 2016 model bir SEAT Ibiza 6J 1.2 Reference Plus. Fabrika radyosunu çıkarıp yerine piyasada çok yaygın olan TS18 Android multimedya cihazını taktırdım. Cihaz çalışıyordu ama arayüzü dağınıktı: Çince menüler, her iş için ayrı bir uygulama, aracı tanımayan ekranlar. Ben de bu cihaza, aracın kendisiyle konuşan, SEAT'in kendi ekranlarını andıran tek parça bir sistem yazdım: Ibiza Drive.

Sistem aracın CAN hattından gelen verileri okuyor (hız, ışıklar, kapılar, sinyaller, bakım zamanı, şasi numarası, yol bilgisayarı), aracın ayarlarını değiştirebiliyor (ESC, kilitleme, silecek, kış lastiği uyarısı, gösterge dili…) ve radyo, müzik, çevrimdışı navigasyon, kamera ile telefonu tek bir ana ekranda topluyor.

Fikir, tasarım kararları, araç içindeki bütün testler benden; kod, protokol çözümleme ve problem çözme gücü yapay zekâdan.

Ibiza Drive ana ekranı: araç, canlı harita, medya kartı ve kısayollar tek ekranda.
Ibiza Drive ana ekranı: araç, canlı harita, medya kartı ve kısayollar tek ekranda.

Kullandığım gerçek cihazlar

ParçaBilgi
Araç2016 SEAT Ibiza 6J 1.2 Reference Plus
Multimedya cihazıTS18 — UIS8581A işlemci, Android 10, 1600×720 ekran
CAN kutusuRaise, VW Golf 7 (MQB) profili
Ön kameraFVision USB kamera (kendi SD kartına kayıt yapıyor)
TelefoniPhone — CarPlay ve internet paylaşımı
BağlantıCihaza Wi-Fi üzerinden ADB ile geliştirme ve kurulum
AmbiyansTemu'dan aldığım çok ucuz, Bluetooth kontrollü 4 parça ayak altı LED; gücünü multimedyanın USB çıkışından alıyor

Başlangıçta ne vardı?

TS18'in kendi arayüzü: radyo, müzik, Bluetooth, araç ayarları, ses ayarları için ayrı ayrı uygulamalar. Her biri farklı görünüyor, çoğunda yarım Türkçe. Araç ayarları menüsü Golf 7 için yazılmış, benim arabamda olmayan onlarca seçenekle doluydu. Göstergede radyo frekansı görünüyordu ama cihazın kendi müzik uygulaması bile şarkı adını gösteremiyordu.

Kısacası donanım iyiydi, yazılım katmanı arabaya ait değildi.

Önce cihazı temizledim

  • Kullanmadığım 12 fabrika uygulamasını devre dışı bıraktım (geri açmak için bir betik de yazıldı).
  • Açılıştaki eski SEAT logosunu ve eklediğim videoyu kendi açılış logomla değiştirdim; bunu cihazın kendi (OEM) logo aracıyla yaptım, bölümlere elle yazmadan.
  • Bu ekranda iyi çalışmayan Chrome'u kaldırdım, yerine Opera kurdum.
  • Launcher'ı cihazın varsayılan ana ekranı yaptım; Android'in üst çubuğu gizli, yerine kendi hızlı panelim geliyor.
Yeni açılış videosu: cihaz açılırken artık SEAT logosu geliyor

Yapay zekâ ile teknik ortaklık

Bu projede kodun tamamını yapay zekâ ile yazdım: Claude Code. İş bölümümüz netti:

  • Ben: ne istediğimi söyledim, her ekranı arabada denedim, ekran görüntüsü aldım, "bu yazı sığmamış, bu tuş yolcu tarafında kalmış, bu uyarı yanlış hızda çıkıyor" diye geri bildirim verdim.
  • Yapay zekâ: cihazın fabrika uygulamalarını tersine mühendislikle okudu, CAN kutusunun protokolünü çıkardı, Kotlin/Jetpack Compose ile uygulamayı yazdı, araca kurdu, logları okuyup sorunları buldu.

En verimli kısmı paralel çalışmaydı: aynı anda bir yardımcı ajan radyo ekranını, biri harita altlığının hızını, biri kilit ekranını, biri kamera uygulamasını, biri de araç ayarlarının fabrika koduyla birebir aynı olup olmadığını denetliyordu.

Bir kural koydum: deneme-yanılma yok. Bir protokol lazımsa önce fabrika uygulamasının kodu okunacak, oradaki davranış birebir kopyalanacak.

Neden yenilikçi?

  1. Araçla gerçekten konuşuyor. Hız, ışık, kapı, sinyal, bakım günü, yağ bakımı, şasi numarası CAN hattından canlı geliyor.
  2. Aracın ayarlarını değiştirebiliyor. Fabrika uygulamasındaki her ayarın okuma ve yazma adresi tek tek doğrulandı.
  3. Her şey çevrimdışı. Türkiye haritası, adres arama ve rota hesaplama internetsiz çalışıyor.
  4. Tek dil, tek tasarım. Radyo, müzik, ayarlar, kamera, kilit ekranı aynı tasarım dilinde.
  5. Sürücü odaklı. Sürüş sırasında kullanılan tuşlar şoför tarafında (solda).

Projenin can alıcı noktası: CAN hattını çözmek

Cihazın aracı anlaması CAN kutusu sayesinde. Kutu, arabanın verisini cihazın işlemcisine (MCU) kendi formatında iletiyor; Android tarafı da bunu "TWUtil" denen bir kanal üzerinden alıyor. Hiçbir dokümantasyon yok.

Yöntem şuydu: cihazdaki fabrika uygulamalarını (araç ayarları, CarInfoService, radyo, müzik, geri kamera) açıp kodlarını okumak, hangi mesajın ne anlama geldiğini oradan çıkarmak, sonra seyir halindeki arabadan canlı kayıt alıp doğrulamak.

Bu sayede şunları çözdük:

  • Ayar sayfaları (0x40/0x41): her sayfanın hangi baytı hangi ayar, araç hangisini destekliyor.
  • Yol bilgisayarı (0x50): menzil, ortalama tüketim, ortalama hız, sürüş süresi.
  • Bakım (0x63): muayene ve yağ bakımına kalan gün/km.
  • Işık kelimesi, şasi numarası (VIN), kapılar, sinyaller, dış sıcaklık.

Bir de gerçek bir hata yakaladık: kış lastiği uyarısı arabada 10 km/h'ye kurulu kalmıştı ve gösterge her kalkışta uyarı veriyordu. Uygulama bu geçersiz değeri görünce uyarıyı fabrika ayarına çekti, ayar ekranı da artık gerçek km/h değerini gösteriyor.

Uygulamada yaptığım bölümler

Ana ekran

Araç görseli, anlık hız (hıza göre yeşilden sarıya, turuncuya, kırmızıya ve mora dönen koyu tonlu bir çubuk), canlı harita, çalan medya ve kısayollar.

Hız arttıkça renk değiştiren hız çubuğu.

Göstergeye benzer ikaz lambaları

Kısa far, uzun far, sis lambaları, sinyaller, 4'lüler ve açık kapı, aracın ekranda canlı gösteriliyor.

Park → kısa far → uzun far → sisler → 4'lüler: her lamba açıldığında ikonu beliriyor.
4'lüler yandığında ikaz lambaları.
Kapı açıkken ikaz.
Kapı açıkken ikaz.

Hızlı panel

Android'in üst menüsünün yerine: parlaklık, ses, Wi-Fi, Bluetooth, ekolayzer, ekran koruyucu, ekran görüntüsü, bellek temizleme, ESC, ön kamera, araç ayarları, telefon ekranı.

Hızlı panel. ESC durumu doğrudan araçtan okunuyor.
Hızlı panel. ESC durumu doğrudan araçtan okunuyor.

Radyo

Büyük frekans, istasyon adı ve logosu (RDS), ince ayar şeridi, 6 favori, tarama sonrası tüm istasyonların listesi. Oynat/ileri/geri tuşları şoför tarafında.

Radyo ekranı: tuşlar solda, bulunan istasyonlar sağda.
Radyo ekranı: tuşlar solda, bulunan istasyonlar sağda.

Müzik

Kapak görselli çalar, favoriler, sürükleyerek sıralama, karışık/tekrar, Müzik klasöründeki alt klasörlerden çalma listeleri. Direksiyondaki ileri/geri tuşları müziği değiştiriyor, göstergede parça sırası ve süre görünüyor.

Müzik ekranı.
Müzik ekranı.

Çevrimdışı navigasyon

Türkiye haritası cihazda. Adres arama, rota hesaplama (açık kaynak BRouter motoru), dönüş talimatları, rotadan çıkınca yeniden hesaplama. Rota başlayınca harita araca yakınlaşıyor ve gidiş yönüne dönüyor; ana ekrandaki küçük harita da rotayı takip ediyor.

Çevrimdışı harita ve arama.
Çevrimdışı harita ve arama.

Araç ayarları

Fabrika cihazındaki araç menüsü Golf 7 için yazılmıştı; arabamda olmayan park sensörü, ACC, sürüş profili gibi onlarca seçenek görünüyordu ve çoğuna basınca hiçbir şey olmuyordu. Kendi menümde kural basit: araç bir özelliği desteklemiyorsa o seçenek hiç görünmüyor. Bunu, CAN kutusunun her sayfa için gönderdiği "desteklenen özellikler" bitlerini okuyarak yapıyoruz. Gündüz farı gibi bu kutuyla çalışmayan seçenekleri de denedikten sonra tamamen kaldırdım.

Her ayarın okuma ve yazma adresi, fabrika uygulamasının koduyla tek tek karşılaştırıldı; yani ekranda gördüğüm değer arabada gerçekten kayıtlı olan değer.

Araç
Araç
Modüller arasında geçerken araç görseli ilgili bölgeye dönüyor: lastiklere yakınlaşıyor, silecekte arkaya dönüyor

Modüller ve içlerinde neler var:

  • Sürüş verileri: "Başlangıçtan", "Uzun süreli" ve "Yakıt alımından" hafızaları. Ortalama tüketim (l/100 km), ortalama hız, mesafe, sürüş süresi, kalan menzil ve akü voltajı. Hafızaları buradan sıfırlayabiliyorum; yol yapılmamışsa uydurma değer yerine "—" görünüyor.
  • Bakım: Şasi numarası (VIN), muayene/servise ve yağ değişimine kalan gün ve kilometre doğrudan araçtan okunuyor. Altında kendi bakım geçmişimi tuttuğum bir kayıt listesi var.
  • Işıklar: Şerit değiştirirken 3 kez yanan konfor sinyali açılıp kapatılabiliyor.
  • Açma ve kilitleme: Kapı kilidi açıldığında tüm kapılar mı, sadece sürücü kapısı mı, yoksa aracın o tarafı mı açılsın; sürüşte otomatik kilitleme açık/kapalı.
  • Silecekler: Geri vitese takınca arka silecek çalışsın mı.
  • ESC: ESC açık, ASR kapalı veya Sport modu.
  • Sürücü yardımı: Uzun yolda yorgunluk algılama uyarısı.
  • Lastikler: Kış lastiği hız uyarısı açılıp kapatılabiliyor, uyarı hızı 30–240 km/h arasında 10'ar 10'ar ayarlanıyor. Lastik basınçlarını kontrol edip doğru basınca getirdikten sonra lastik basıncı sistemi buradan sıfırlanıyor.
  • Çok fonksiyonlu gösterge: Gösterge dili (Türkçe / English / Deutsch), gösterge aydınlatması yüzdesi ve göstergedeki bilgisayarda hangi sayfaların görüneceği: anlık ve ortalama tüketim, yolculuk süresi, yol mesafesi, ortalama hız, dijital hız göstergesi, yağ sıcaklığı ve hız uyarısı. İstemediğimi gizleyebiliyorum.
  • Birimler: Mesafe km/mil, hız km/h / mph, sıcaklık °C / °F.
  • Tema: Altı tema (SEAT Sport, CUPRA Bakır, CUPRA Petrol, Grafit, Amber Gece, Gündüz); ayrıca sürüş verilerindeki dönen tekerlek ve ana ekrandaki hız ışık çubuğu açılıp kapatılabiliyor.
Sürüş verileri
Sürüş verileri
Araç hareket ederken tekerler dönüyor, yol akıyor
Bakım: muayene ve yağ bakımına kalan gün/km araçtan okunuyor (şasi numarası gizlendi)
Bakım: muayene ve yağ bakımına kalan gün/km araçtan okunuyor (şasi numarası gizlendi)
Işıklar
Işıklar
Açma ve kilitleme ayarları
Açma ve kilitleme ayarları
Silecekler
Silecekler
ESC modu
ESC modu
Sürücü yardımı
Sürücü yardımı
Kış lastiği uyarısı, uyarı hızı ve lastik basıncı sıfırlama
Kış lastiği uyarısı, uyarı hızı ve lastik basıncı sıfırlama
Çok fonksiyonlu gösterge: dil, aydınlatma ve göstergede görünecek bilgiler
Çok fonksiyonlu gösterge: dil, aydınlatma ve göstergede görünecek bilgiler
Birimler
Birimler
Tema seçimi
Tema seçimi

Aynı ana ekran farklı temalarda:

SEAT Sport teması
SEAT Sport teması
CUPRA Bakır teması
CUPRA Bakır teması
CUPRA Petrol teması
CUPRA Petrol teması
Grafit teması
Grafit teması
Amber Gece teması
Amber Gece teması
Gündüz teması
Gündüz teması

Ambiyans

Arabada fabrika ambiyans aydınlatması yoktu. Temu'dan çok ucuza, dört ayak boşluğu için Bluetooth kontrollü LED seti aldım; gücünü multimedyanın USB çıkışından alıyor, yani kontak kapanınca kendiliğinden sönüyor. Launcher'daki Ambiyans ekranında hazır renklerden birini ya da kendi rengimi seçip parlaklığı ayarlayabiliyorum; ekrandaki çizim de ışığın arabada nereye vurduğunu (sadece ayak altlarını) gösteriyor.

Ambiyans: renk, parlaklık ve efektler
Ambiyans: renk, parlaklık ve efektler

Ses

10 bantlı ekolayzer ve hazır profiller, balans/fader, bas, efektler.

Ekolayzer.
Ekolayzer.
Balans: dinleme noktasını arabanın üzerinde seçiyorsunuz.
Balans: dinleme noktasını arabanın üzerinde seçiyorsunuz.

Kamera

Ön kamerayı kendi uygulamamız gösteriyor. Kayıtlar listesinden kayıtları cihazın hafızasına alabiliyorsunuz.

Ön kamera canlı görüntü.
Ön kamera canlı görüntü.

Kilit ekranı ve uygulamalar

Neredeyse tamamen siyah bir bekleme ekranı: saat, tarih, dış sıcaklık ve çalan medya. Uygulamalar ekranında istemediğim uygulamaları "Diğer"e gizleyebiliyorum.

Kilit / ekran koruyucu.
Kilit / ekran koruyucu.
Uygulamalar.
Uygulamalar.

Araç kaydı: yolculuklar ve bakım telefonumda

Cihaz açıkken launcher arabanın GPS izini ve araç bilgilerini kaydediyor: şasi numarası, menzil, muayeneye ve yağ bakımına kalan gün/km, ortalama tüketim. Arabada internet yok; kayıtlar cihazda birikiyor, telefonun internet paylaşımı açıldığı an gönderiliyor. Gittikleri yer kendi Google hesabım. Arada kiralık bir sunucu yok, aylık ücret yok; hepsi Google Apps Script ile çalışıyor.

Veriler iki ayrı tabloda duruyor:

  • Konum: yolculuklar ve konum geçmişi. Bu tablo her zaman bende kalıyor.
  • Araç geçmişi: bakım kayıtları ve araç bilgileri. Arabayı satarken yeni sahibine devredilebilir.

Launcher'da Araç menüsüne yeni bir Araç Kaydı bölümü geldi. Konum takibi ve bakım eşleşmesi ayrı ayrı açılıp kapatılabiliyor; gönderilmeyi bekleyen kayıt sayısı ve son gönderim zamanı görünüyor. Arabayı satarken tek tuşla cihazdaki bütün kayıtlar siliniyor.

Araç menüsündeki yeni Araç Kaydı bölümü, kutucukta iki anahtarın durumu.
Araç menüsündeki yeni Araç Kaydı bölümü, kutucukta iki anahtarın durumu.
Araç Kaydı ekranı: sürücü tarafında anahtarlar ve düğmeler, sağda bağlantı bilgileri (blog için gizlendi) ve kuyruk durumu.
Araç Kaydı ekranı: sürücü tarafında anahtarlar ve düğmeler, sağda bağlantı bilgileri (blog için gizlendi) ve kuyruk durumu.

Bu ekranda arabanın resmi de işin bir parçası: farlarda ışık yakar gibi, aracın kendi gövde hatları üzerinde dijital izler akıyor ve çatıdan buluta veri çıkıyor. Yeşil akış konum, kırmızı akış bakım. Aracın hatları, arabanın fotoğrafından görüntü işlemeyle çıkarıldı.

Gövde hatlarında akan izler ve buluta giden veri.
Araç Kaydı ekranının tamamı, animasyon çalışırken (bağlantı bilgileri bulanıklaştırıldı).
Konum takibi kapatılınca yeşil akış griye dönüyor; bakım eşleşmesi çalışmaya devam ediyor.
Konum takibi kapatılınca yeşil akış griye dönüyor; bakım eşleşmesi çalışmaya devam ediyor.

Telefonda ise koyu temalı, uygulama gibi açılan bir sayfa var. Safari'de açıp ana ekrana ekliyorum.

Sayfa şifreyle açılıyor; cihaz 180 gün hatırlanıyor, şifre sayfadan değiştirilebiliyor.
Sayfa şifreyle açılıyor; cihaz 180 gün hatırlanıyor, şifre sayfadan değiştirilebiliyor.
Tam ekran harita: hıza göre renklenen iz, aracın son konumu ve yönü. Üstte aracın son veri gönderdiği saat; araç o an bağlıysa "Canlı" yazıyor.
Tam ekran harita: hıza göre renklenen iz, aracın son konumu ve yönü. Üstte aracın son veri gönderdiği saat; araç o an bağlıysa "Canlı" yazıyor.
Yolculuklar: nereden nereye, saat, süre, mesafe, ortalama ve en yüksek hız.
Yolculuklar: nereden nereye, saat, süre, mesafe, ortalama ve en yüksek hız.
Bir yolculuğa dokununca harita sadece o yolculuğu, başlangıç ve bitişiyle gösteriyor.
Bir yolculuğa dokununca harita sadece o yolculuğu, başlangıç ve bitişiyle gösteriyor.
Belirli bir gün ve saat aralığını haritada görmek için seçici.
Belirli bir gün ve saat aralığını haritada görmek için seçici.
Araç bilgileri: muayene ve yağ bakımına kalan süre, ortalama tüketimler, depo, şasi numarası.
Araç bilgileri: muayene ve yağ bakımına kalan süre, ortalama tüketimler, depo, şasi numarası.
Bakım geçmişi. Telefondan eklenen kayıt arabaya, arabada eklenen telefona geçiyor; silinenler de iki tarafta siliniyor.
Bakım geçmişi. Telefondan eklenen kayıt arabaya, arabada eklenen telefona geçiyor; silinenler de iki tarafta siliniyor.
Telefondan bakım kaydı ekleme. "Bakım raporu" düğmesi bakım durumunu ve bütün geçmişi PDF olarak doğrudan telefona indiriyor.
Telefondan bakım kaydı ekleme. "Bakım raporu" düğmesi bakım durumunu ve bütün geçmişi PDF olarak doğrudan telefona indiriyor.
Bakım Geçmişi Belgesi: telefondan PDF olarak iniyor; bakım durumu, yasal tarihler, son yapılan işlemler ve tüm kayıtlar (örnek veri)
Bakım Geçmişi Belgesi: telefondan PDF olarak iniyor; bakım durumu, yasal tarihler, son yapılan işlemler ve tüm kayıtlar (örnek veri)
Arabada konum takibi ya da bakım eşleşmesi kapatılırsa sayfa bunu uyarıyla söylüyor.
Arabada konum takibi ya da bakım eşleşmesi kapatılırsa sayfa bunu uyarıyla söylüyor.
Aynı sayfa bilgisayarda: solda panel, sağda harita.
Aynı sayfa bilgisayarda: solda panel, sağda harita.

#### Kasko, trafik sigortası ve muayene tarihleri

Bakımın yanına bir de yenileme tarihlerini ekledim: kasko, trafik sigortası ve muayene. Tarihleri ister telefondan ister arabadan giriyorum; bakım kayıtları gibi iki taraf da aynı listeyi görüyor.

Bitişe 7 gün kala hatırlatma geliyor:

  • Arabada, ana ekranda günde bir kez bir hatırlatma penceresi açılıyor.
  • Telefondaki sayfada araç kartının altında uyarı çıkıyor.
  • Google tarafı her gün kontrol ediyor ve 7, 3, 1 gün kala, bittiği gün ve süresi geçtiğinde e-posta atıyor.

Bakım kaydı eklerken sık yapılan işlemler hazır liste olarak geliyor; listede olmayan bir iş için "Diğer" seçip kendim yazabiliyorum. Telefondaki "Bakım raporu" düğmesi, tüm bakım geçmişini "Bakım Geçmişi Belgesi" adıyla servis belgesi düzeninde bir PDF olarak indiriyor. Belge, yetkili servis belgesi gibi davranmıyor; açıkça benim kendi tuttuğum kayıt olduğunu söylüyor.

Arabada ana ekranda çıkan hatırlatma: yaklaşan tarih ve kalan gün
Arabada ana ekranda çıkan hatırlatma: yaklaşan tarih ve kalan gün
Bakım sekmesindeki tarihler: kalan gün sayısıyla, yaklaşan tarih sarı
Bakım sekmesindeki tarihler: kalan gün sayısıyla, yaklaşan tarih sarı
Tarih girme: bitiş tarihi ve not; bitişe 7 gün kala araçta ve e-postada hatırlatılıyor
Tarih girme: bitiş tarihi ve not; bitişe 7 gün kala araçta ve e-postada hatırlatılıyor
Yaklaşan tarih araç kartının altında uyarı olarak görünüyor
Yaklaşan tarih araç kartının altında uyarı olarak görünüyor

Gizlilik tarafında kurallar basit: konum yalnızca benim Google hesabımdaki tabloya gidiyor; araç veriyi gizli bir anahtarla gönderiyor, anahtarı olmayan bir istek reddediliyor; sayfayı görmek için şifre gerekiyor.

Durum (27 Eylül 2026): Google tarafı yayında. Bütün akış emülatörde uçtan uca denendi: kayıtların birikmesi, internet gelince gönderilmesi, aynı kaydın iki kez yazılmaması, bakımın iki yönlü eşleşmesi, anahtarların siteye bildirilmesi. Araca kurulum bir sonraki oturumda yapılacak; şasi numarası, menzil ve bakım günleri gibi CAN hattından gelen bilgiler de o zaman gerçek arabada görülecek. Telefon ekran görüntüleri örnek veriyle alındı.

Gerçek araç testleri

Bu projenin en uzun kısmı masa başında değil, arabanın içinde geçti. Laptop yan koltukta, telefonun internet paylaşımıyla cihaza kablosuz ADB üzerinden bağlı; yapay zekâ yeni sürümü kuruyor, ben arabada deniyor, o da logları canlı okuyordu. Hiçbir şeyi "çalışıyor" saymadım; her özelliği gözümle gördükten sonra kabul ettim.

Tek tek denediklerimiz:

  • Işıklar: Far anahtarını kapalı → park → kısa far → park → kapalı çevirip ekrandaki ikonların anında değişip değişmediğine baktık; uzun farı yakıp söndürdük, sis lambalarını denedik. Açılışta ikonun geç gelmesi gibi küçük bir sorunu da bu sırada yakaladık.
  • Kapılar ve bagaj: Dört kapıyı ve bagajı tek tek açıp kapattık; ekrandaki kapı ikazının doğru kapıyı gösterip göstermediğini kontrol ettik.
  • Sinyaller ve 4'lüler: Sol, sağ sinyal ve 4'lüleri yakıp ikazların ve kilit ekranındaki animasyonun doğru yanıp söndüğünü gördük.
  • Hız: Duran araçta GPS'in uydurduğu hızı ayıkladık, hareket halinde CAN'dan gelen gerçek hızla karşılaştırdık; hız çubuğunun rengini yeşil → sarı → turuncu → kırmızı → mor diye yeniden ayarladık.
  • Araç ayarları: Her ayarı değiştirip göstergede ve arabanın davranışında karşılığını gördük: ESC modu, konfor sinyali, kilitleme, arka silecek, gösterge dili (bir ara gösterge Almancaya dönmüştü, dil seçimini o yüzden ekledik).
  • CAN kutusu profili: Kutunun profilini "2016 SEAT"e çevirip denedik; kutu güncelleme yaptı ama hız, ayar sayfaları ve dış sıcaklık gelmedi. Golf 7 profiline geri döndük; en çok veri o profilde geliyor.
  • Radyo: Tarama, istasyon listesi, favoriler, sinyal hassasiyeti (DX/LOC), direksiyon tuşuyla istasyon değiştirme.
  • Müzik: Önce hoparlörden hiç ses gelmedi; fabrika müzik uygulamasının ses yolu birebir kopyalanınca çözüldü. Göstergede radyo yazısının kalması, direksiyon tuşlarının müzik yerine radyoyu değiştirmesi gibi sorunlar da tek tek düzeldi.
  • Kamera: Ön kameranın görüntüsünü, menülerini ve kayıtları cihaza alma özelliğini denedik.
  • Gece sürüşü: Seyir halindeyken canlı CAN kayıtları aldık; hangi verinin geldiği, hangisinin hiç gelmediği bu kayıtlardan çıktı.

Bu testlerde gerçek hatalar da yakaladık:

  • Kış lastiği uyarısı arabada 10 km/h'ye kurulu kalmıştı, gösterge her kalkışta uyarı veriyordu. Uygulama bu geçersiz değeri görünce uyarıyı kapattı, ayar ekranı da artık gerçek km/h değerini gösteriyor.
  • Hızlı paneldeki ESC düğmesi ters değer gönderiyordu; artık durumu araçtan okuyup doğru değeri yazıyor.
  • Yol bilgisayarı sıfır geldiğinde yakıtı %0 gösteren bir okuma hatası vardı; düzeltildi.

Dürüst olmak gerekirse çözülemeyen şeyler de var. Göstergede şarkı adı çıkmıyor; bunu fabrikanın kendi müzik uygulamasıyla da denedik, o da gösteremedi. Sebep CAN kutusunun bu araç profilinde müzikte sadece parça sırası ve süre göndermesi. Motor devri de kutudan gelmiyor. Bunları "çalışıyor" gibi göstermek yerine olduğu gibi yazmayı tercih ediyorum.

Sonuç: fikirden çalışan ürüne

Başladığımda elimde çalışan ama arabaya ait olmayan bir Android ekranı vardı: her iş için ayrı bir uygulama, Golf 7'ye göre yazılmış menüler, göstergede takılı kalan radyo yazısı, hiç sesi çıkmayan bir müzik çalar. Bugün aynı ekran, arabanın kendisini tanıyan tek parça bir sistem:

  • Aracın hızını, ışıklarını, kapılarını, sinyallerini, dış sıcaklığını, şasi numarasını ve bakım zamanını CAN hattından canlı okuyor.
  • ESC'den kilitlemeye, silecekten kış lastiği uyarısına, gösterge dilinden birimlere kadar aracın ayarlarını değiştirebiliyor; aracın desteklemediği hiçbir seçeneği göstermiyor.
  • Radyo, müzik, çevrimdışı navigasyon, ön kamera, ambiyans ve telefonu tek ana ekranda, tek tasarım dilinde topluyor.
  • İnternet olmadan harita, adres arama ve rota hesaplama yapabiliyor.
  • Direksiyon tuşları, gösterge ve cihaz birbirini anlıyor.

Donanıma dokunmadım. Aynı cihaz, aynı CAN kutusu, aynı kablolar; değişen yalnızca üstündeki yazılım katmanı. Aracın kendi fabrika uygulamalarını okuyup onların nasıl konuştuğunu birebir kopyalamak, bu yüzden bu projenin en kritik kararıydı: sistem, arabanın beklediği dili konuşuyor.

Her şey kusursuz değil. Göstergede şarkı adını gösteremedim; CAN kutusunun kendisi bunu desteklemiyor ve bunu fabrika uygulamasıyla da kanıtladık. Motor devri de gelmiyor. Ama bunlar tahmin değil, ölçülmüş sınırlar; neyin neden olmadığını biliyorum.

Verimlilik üzerine

Bu proje bana, bir aracı "eski" yapan şeyin çoğu zaman motoru ya da kasası değil, içindeki yazılım olduğunu gösterdi. On yıllık bir arabanın ekran deneyimini yenilemek için yeni bir araç ya da fabrika çıkışlı pahalı bir multimedya sistemi almak gerekmiyor. Doğru donanım zaten yerinde duruyordu; eksik olan, onu arabayla konuşturan bir katmandı.

Daha önce böyle bir işi yapmak bir ekip gerektirirdi: gömülü sistemleri bilen biri, CAN protokollerinden anlayan biri, Android uygulaması yazan biri, arayüz tasarlayan biri ve saatlerce test eden biri. Hiç dokümanı olmayan bir CAN kutusunun dilini çözmek, fabrika uygulamalarını tersine mühendislikle okumak, onlarca ekranı tutarlı bir tasarımla yazmak, arabada denemek ve bulunan her hatayı düzeltmek bireysel bir kullanıcının tek başına altından kalkabileceği bir iş değildi.

Yapay zekâ bu eşiği indirdi. Benim rolüm değişti: kod yazmak yerine ne istediğimi net anlatmak, arabada oturup denemek, gördüğümü tarif etmek ve "bu olmadı" demek. Yapay zekâ ise protokolü çözdü, kodu yazdı, cihaza kurdu, logları okudu ve aynı anda birden fazla işi paralel yürüttü. Bir gece içinde radyo ekranı, harita altlığı, kilit ekranı, kamera ve araç ayarları denetimi aynı anda ilerleyebildi.

Asıl kazanç da burada: daha az kaynakla, daha az atıkla, var olanı değerlendirerek gerçekten kullanılabilir bir sonuç üretmek. Televizyonumda denediğim yaklaşım arabamda da işe yaradı; sıradaki cihazın ne olacağını merak ediyorum.