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.

Kullandığım gerçek cihazlar
| Parça | Bilgi |
|---|---|
| Araç | 2016 SEAT Ibiza 6J 1.2 Reference Plus |
| Multimedya cihazı | TS18 — UIS8581A işlemci, Android 10, 1600×720 ekran |
| CAN kutusu | Raise, VW Golf 7 (MQB) profili |
| Ön kamera | FVision USB kamera (kendi SD kartına kayıt yapıyor) |
| Telefon | iPhone — CarPlay ve internet paylaşımı |
| Bağlantı | Cihaza Wi-Fi üzerinden ADB ile geliştirme ve kurulum |
| Ambiyans | Temu'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.
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?
- 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.
- Aracın ayarlarını değiştirebiliyor. Fabrika uygulamasındaki her ayarın okuma ve yazma adresi tek tek doğrulandı.
- Her şey çevrimdışı. Türkiye haritası, adres arama ve rota hesaplama internetsiz çalışıyor.
- Tek dil, tek tasarım. Radyo, müzik, ayarlar, kamera, kilit ekranı aynı tasarım dilinde.
- 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.
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.

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ı.

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.

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.

Ç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.

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.

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.











Aynı ana ekran farklı temalarda:






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.

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


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

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.


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.


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ı.

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











#### 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.




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.
