CAN etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
CAN etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Mart 2013 Perşembe

Arduino ve CAN BUS


Elm ve OBD konusunda bahsetmiştim, araç bilgilerini okumanın başka bir yolu da, araç içinde dolaşan farklı canbus hatlarına girmektir. Bus sayısı, hızları, ve içerdiği bilgiler farklı olabiliyor ancak genelde tüm araçlarda CANBUS protokolü kullanılıyor.




Farklı hatlar, farklı bilgiler topluyor ve bu hatlar aynı zamanda, gateway ünitesi üzerinden birbirleri ile de haberleşiyor. 


gateway
OBD portundan alınan bilginin fazlasını, diğer hatlardan almak mümkün. VAG araçlarına ait canbus diagramı aşağıdaki gibi.





Burada şeması verilen devre, bir CAN kontrolcü ve mikrokontrolcüden oluşuyor.
CAN kontrolcü olarak Mikrochip firmasının MCP2515 entegresi, mikrokontrolcü olarak da, Arduino nano kartı kullandım. 




Arduino'nun (veya ATMEGA'nın) MCP2515 bağlantısı için SPI ve INT pinleri kullanılıyor. 
MCP2515'in RST ucu, arduino kartının reset ucuna bağlanacak. (hardware reset için)

Devre 3 modda çalışabiliyor.
  • mod-1 Sniffer
  • mod-2 OBD2 Reader
  • mod-3 Sender
Mod seçimi D6 ve D7 pinlerine bağlı switch ile yapılıyor. Şemada göstermedim ama D6 ve D7 pinleri 10k direnç ile şaseye çekilmeli.

anahtar "B" konumunda ise; devre, periyodik olarak, bazı OBD komutlarını gönderiyor ve bu komutların yanıtlarını alıyor. Bu, bağlantı testi için kullanılabilir. Aynı kodları veya daha fazlasını "C" konumunda da gönderebilirsiniz.

OBD için gönderilen komutlar:
ENGINE_COOLANT_TEMP  (0x05) 
ENGINE_RPM           (0x0C)  
VEHICLE_SPEED        (0x0D)  
INTAKE_AIR_TEMP      (0x0F)  
CONT_MODULE_VOLT     (0x42) 
AMBIENT_AIR_TEMP     (0x46)  
CATALYST_TEMP_B1S1   (0x3C)  

Switch "A" konumunda ise, canbus hattındaki data trafiği dinleniyor. Filtre veya mask tanımlanmamış ise, hat üzerindeki tüm datalar izlenebilir.
Switch "C" konumunda ise, yazılan komutu can hattına gönderiyor ve yanıtını bekliyor.

Hattan alınan tüm datalar, tanımlanmış bir formatta, arduino'nun seri çıkışına gönderiliyor.
PC arayüzü bu dataları alıp tabloya yazıyor. Bu arayüz üzerinden, hat hızı, maske ve filtre tanımlamak ve komut göndermek de mümkün.




Başta da dediğim gibi, araç içindeki tüm can hatları gateway'de birleşiyor ve gateway
bu hatlar üzerinde geçiş sağlıyor. OBD soketi üzerinden de bu hatlara geçiş olduğunu düşünüyorum ama bu konuda fazla deneme imkanım olmadı. Bazı markalarda, OBD soketinde, diagnostik hattının haricindeki hatlar da bulunabiliyor. Şayet yoksa, yapılması gereken, hattın geçtiği bir noktadan, paralel uç almak. 
Örneğin, vw grubunda, radyo soketindeki can hattına bağlanıp data akışını dinlemek ve
buradan bazı işlemler yapmak mümkün. (direksiyondaki butonları okumak, radyo veya yol bilgisayarı ekranına yazı yazmak gibi) Diğer bilgiler için başka hatlara bağlanmak gerekiyor.
Gateway soketinde araya girip 3 CAN hattından da uç almak en iyi çözüm bence.

Yukarıdaki şema için hex dosyasını ve PC yazılımını aşağıdaki linklerden indirebilirsiniz.

Win7 32/64bit uyumludur.


12 Aralık 2012 Çarşamba

ELM327 ile OBDII haberleşmesi


Araçların, arıza kodu, anlık veri vs. gibi bilgilerini aşağıdaki devre ile izleyebilir,
hataları silebilirsiniz.
Aşağıda, ELM327 devre şeması mevcut, yeni model araçlar, CAN protokolünü desteklediğinden, devrenin 
tamamını yapmanıza gerek yok. (ISO ve J1962 bağlantıları)
Ancak piyasada çok uygun fiyatlara (ELM entegresini orjinalinden daha ucuza) hazır devreler bulmak mümkün. Devreyle uğraşmak istemiyorsanız, hazır modüllerden birini alabilirsiniz. Bunlar RS232 kablolu veya bluetooth'lu olabilir.



Resimde görülen modül ve benzerlerini 15-20$ civarında bulabilirsiniz.
Devreyi yapmak isteyenler için de şema aşağıda. 




Bazı markalarda farklılık gösterse de genelde OBD2 soketi ve bağlantıları aşağıdaki gibidir.


ELM327 için PC ve Android tabanlı yazılımlar mevcut. Tablet PC veya cep telefonlarında
Torque pro yazılımı kullanabilirsiniz. PC için de Scan Master yazılımı oldukça başarılı.

Harici bir yazılımla kullanılabileceği gibi, kendi yazılımınızı geliştirmeniz (veya bir mikrokontrolcü ile ELM'den bilgi almanız) mümkün. Bir PIC ile araca ait bazı bilgileri okuyup bir ekrana yazdırabilirsiniz.

Her araçtan tüm veriler okunamayabiliyor ancak genel olarak temel anlık verileri almak mümkün.



torque pro uygulaması


scan master yazılımı

 
ELM327 üzerinden kendi kodunuzu yazarak, ihtiyacınız olan verileri alabilirsiniz.
Yazının sonraki bölümlerinde, OBD portuna bilgi gönderme ve okuma konusunda detaylı bilgi bulabilirsiniz.