Haberler

CAN-BUS’a Giriş ve Arduino ile Nasıl Kullanılır[2025]

03/01/2024 tarihinde güncellendi

CAN-BUS hakkında hiç duydunuz ama tam olarak ne işe yaradığını bilmiyor musunuz? Endişelenmeyin! Bugün CAN-BUS hakkında her şeyi tartışacağız. Umarım bu blog sayesinde daha iyi bir anlayışa sahip olursunuz:

  • CAN-BUS’a Giriş
  • CAN protokolü neden kullanılır
  • CAN-BUS ve OBD2
  • Seeed’in CAN-BUS ürünleri (Güncellendi)
  • CAN-BUS Projeleri (Güncellendi)
  • Arduino ile CAN-BUS’a başlamak

CAN-BUS’a Giriş

CAN-BUS Nedir?

CAN, Controller Area Network anlamına gelir, bu, mikrodenetleyicilerin ve cihazların bir araç içinde birbirleriyle iletişim kurmasını sağlar ve bu, kontrol ve veri toplama için bir ana bilgisayar gerektirmeden gerçekleşir. Bu cihazlara Elektronik Kontrol Üniteleri (ECU) denir ve araçtaki tüm parçalar arasında iletişimi sağlar.

Günümüzde modern bir araçta 70’e kadar ECU bulabilirsiniz; örneğin, motor kontrol ünitesi, hava yastıkları, ses sistemi vb. CAN, endüstriyel ve otomotiv uygulamaları için tasarlanmış bir seri iletişim bus’udur. Örneğin, araçlarda, tarım ekipmanlarında, endüstriyel ortamlarda vb. bulunur.

CAN-BUS Nasıl Çalışır?

Yakıt seviyesi, kapı sensörleri, kilometre sayacı ve bir aracın birçok parçası bir şekilde birbirleriyle iletişim kurmak zorundadır ve CAN BUS bunu sağlamak için kullanılır. “Düğümler” olarak adlandırılan bu CAN uyumlu bileşenler, veri akışını yöneten merkezi bir yönlendirici olmaksızın, 3 telli bakır kablo ile bağlanır. Her düğüm, diğer tüm düğümlerin mesajlarını duyabilir.

Her düğümün bir kimliği vardır; daha yüksek öncelikli kimliklere sahip olanlar, diğerlerinin “dinlediği” sırada “konuşma” önceliğine sahip olabilir. Bu, aynı anda iki düğümün konuşmamasını sağlamak içindir. CAN-BUS’un en büyük avantajı, bileşenleri bağlayabilmek ve sinyal yönlendirmesi hakkında endişelenmemektir.

Neden UART, SPI ve I2C yerine CAN protokolü kullanmalıyız?

UART, SPI ve I2C gibi diğer iletişim protokolleriyle karşılaştırıldığında, CAN protokolü kullanmak çok daha güvenilirdir çünkü bunlar, bir araçtaki gaz kelebeği pozisyonu gibi hayati verileri iletmek için kullanılan standart otomotiv iletişim protokolleridir. İletişim hatası veya veri kaybı meydana gelirse, bu kritik arızalara yol açabilir.

Bir araçta, güvenlik ve güvenilirlik en değerli iki özelliktir. Bu nedenle, CAN-BUS araç kullanımı için ideal protokoldür.

CAN bus standardı, aşağıdaki temel avantajlar nedeniyle neredeyse tüm araçlarda ve birçok makinede kullanılmaktadır:

Düşük Maliyet

  • Analog ve dijital sinyalleri birleştiren çoklu kablolama ile paylaşılan bir ortamda iletim sağladığı için, gerekli kablo miktarını, hataları ve ağırlığı azaltır.
  • Bir ekipman eklerken veya azaltırken, kolayca çalıştırılabilir ve sistemin büyük ölçekli bir dönüşümünü gerçekleştirmeye gerek kalmaz; bu da çok fazla iş gücü ve maliyet tasarrufu sağlar.

Merkezi

  • CAN-BUS, ağa bağlı elektronik cihazlar üzerinde merkezi kontrolü desteklediğinden, merkezi teşhis, veri kaydı ve yapılandırma sağlar.
  • Hata yönetimi de CAN protokolüne entegre edilmiştir; düğümler, kendi hata sayacını korurken iletimdeki hataları kontrol edebilir. Örneğin, protokol, bit hatası, onay hatası, biçim hatası, CRC hatası gibi farklı hata tespit yeteneklerini destekler.

Esnek

  • Her CAN bağlantılı ECU, iletilen tüm mesajları alabilir; ayrıca bu mesajların kendisiyle ilgili olup olmadığına karar verebilir ve buna göre hareket edebilir.
  • CAN protokolü, bus üzerindeki düğümlerin tanımlayıcı bilgisi olmayan mesaj tabanlı bir iletişim protokolüdür.
  • Yukarıdaki özelliklerle, düğümler kolayca eklenebilir, çıkarılabilir ve değiştirilebilir.
  • Yeni elektronik cihazların CAN-BUS ağına entegre edilmesi, başlangıç seviyesindeki kullanıcılar için önemli bir programlama yükü olmaksızın kolay olacaktır.

Sağlam

  • Bir iletişim protokolü seçerken, dayanıklılık ve güvenilirlik çok önemlidir. İletişim protokolünüzün kendini sürdürebilir ve uzun süre bakım gerektirmeden dayanıklı olmasını istersiniz.
  • CAN BUS ile sistem, elektriksel bozulmalara ve elektromanyetik parazitlere karşı dayanıklıdır; bu da güvenlik açısından kritik uygulamalar (örneğin, araçlar) için idealdir.

Verimli

  • CAN mesaj çerçeveleri, ID’ye göre önceliklendirilir; en yüksek öncelik, bus erişimi alacak ve çerçeveler kesilmeyecek şekilde ayarlanır.
  • Flash programlama, daha az ve basit kablolama ile birlikte zaman tasarrufu sağlar.

CAN’ın Rolü

Aracınızda CAN yoksa ne olur?

Ref: Volkspage

CAN protokolü olmadan, araçlardaki elektronik modüller, birbirleriyle doğrudan, nokta-nokta analog sinyal hatları kullanarak iletişim kurmak zorunda kalacaklardır. Bu, yalnızca zaman alıcı değil, aynı zamanda yukarıdaki resimde görüldüğü gibi her modülün iletişim için doğrudan bir hat gerektirmesi nedeniyle karmaşık bir kablolama gerektirir. Ayrıca, cihazlar arasında güvenilir olmayan iletişim olabilir. Aşırı kablolar ek ekipman gerektirebilir ve bu da maliyet sorunları yaratır.

Aracınızda CAN varsa ne olur?

Ref: Volkspage

CAN protokolü ile, tüm bu kablolara olan ihtiyacı ortadan kaldırarak, elektronik cihazların birbirleriyle iletişim kurmasını sağlar; bu, yukarıdaki resimde görüldüğü gibi her düğümü ana gösterge paneline bağlayan tek bir çoklu kablo ile gerçekleşir.

Çoklu kablo ve mimari, sinyallerin birleştirilmesini ve tüm ağ üzerinden yalnızca tek bir kablo ile iletilmesini sağlar; bu, araçlardaki her elektronik modülün sensörlerden ve aktüatörlerden veri almasını garanti eder. Bu, kullanıcının aracındaki herhangi bir sayıda ECU’yu iki telli bus üzerinden bağlamasına olanak tanır.

Ayrıca, yalnızca yazılım aracılığıyla birkaç özelliğin eklenmesine olanak tanır. Dahası, bir ECU, başka bir ECU’dan veri kullanabilir; bu da birden fazla cihazda aynı sensörlerin kurulmasına olan ihtiyacı ortadan kaldırır.


CAN-BUS Kablolama Sırası

  • CAN protokolü, yukarıda gösterildiği gibi iki yönlü veri iletimi için iki tel içerir:
    • CAN_H (CAN Yüksek)
    • CAN_L (CAN Düşük)
  • Kablolar, diferansiyel hat olarak işlev görür; bu, CAN sinyalinin 0 veya 1’in, iki tel arasındaki potansiyel farkı ile temsil edilebileceği anlamına gelir.
  • CAN bus boşta olduğunda, her iki hat da 2.5V taşır. Veri bitleri iletildiğinde, CAN yüksek hattı 3.75V’a çıkar ve CAN düşük hattı 1.25V’a düşer; böylece hatlar arasında 2.5V’luk bir diferansiyel oluşturur.
  • CAN sonlandırması için, yukarıdaki resimden görebileceğiniz gibi, genellikle CAN ağının iki ucunda tek bir 120 Ohm kullanılır.

CAN Protokol Hızı ve Menzili

  • CAN protokolünün iletişim hızları 10kbps ile 1Mbps arasında değişir.
    • Hız, kullanılan kablonun uzunluğuna da bağlıdır. Kısa olduğunda, iletişim hızı daha hızlıdır; uzun olduğunda ise iletişim hızı daha yavaştır.
    • Örneğin, 40 metrede hız 1Mbps olacaktır. 1000 metrede hız 50kbps olabilir.
  • Düğüm mesafesinin genellikle 0.3 metreden / 1 fitten fazla olmaması önerilir.

CAN Mesajı

  • CAN protokolünün nasıl çalıştığını tam olarak anlamak için, ağ üzerinden gönderilen çerçevelere bakalım.
  • CAN mesajı birçok segment içerir. 2 ana segment, tanımlayıcı ve veri, veriyi iletenler olacaktır.
  • Tanımlayıcı, bir CAN ağındaki CAN cihazlarını tanımlamak için kullanılırken, veri, bir cihazdan diğerine gönderilmesi gereken sensör veya kontrol verisi olacaktır.
  • Tanımlayıcı veya CAN ID, kullanılan CAN protokolünün türüne bağlı olarak 11 veya 29 bit uzunluğundadır.
    • Standart CAN = 11 bit
    • Genişletilmiş CAN = 29 bit
  • Veri ise 0 ile 8 bayt arasında olabilir.

CAN-BUS ve OBD2

CAN-BUS ile ilgili OBD2 gibi diğer “üst katman protokolleri” ile karşılaşacağınızdan eminim, AMA bunlar aynı değildir!

“`html

  • CAN standardı, 8 bayttan daha büyük mesajların nasıl işleneceğini veya ham verilerin nasıl çözüleceğini belirtmez. Bu nedenle, belirli bir ağın ECU’ları arasında verilerin nasıl iletileceğini daha fazla belirlemek için standartlaştırılmış bir dizi protokol geliştirilmiştir ve OBD2 bunlardan biridir.
  • OBD, araç içi teşhis anlamına gelir ve aracınızın yerleşik kendi kendine teşhis sistemidir. OBD2, teşhis verilerini aracınıza iletmek ve almak için (birçok) farklı bus sistemlerinden birini kullanabilir.
  • İkisi arasındaki farkı belirtmek için kullanacağım basit bir benzetme OBD2’nin, CAN’i bir iletişim cihazı (telefon gibi) olarak kullanarak bir araçla ve onun sağlık durumu ile konuştuğumuz bir dil gibi olduğunu söylemektir.
  • OBD2 hakkında daha fazla bilgi okumak için OBD ile ilgili Wiki Sayfası’na göz atabilirsiniz.

Seeed’in CAN-BUS ürünlerini keşfedin!

Seeed’de, projeniz için çeşitli CAN-BUS ürünleri sunuyoruz! Aşağıda gösterildiği gibi:

Yeni Çıktı! Seeed Studio CAN Bus Breakout Board for XIAO and QT Py ($9.95)

  • Kesintisiz XIAO Uyumluluğu: Seeed Studio Xiao geliştirme kartı ile kesintisiz çalışacak şekilde tasarlanmıştır.
  • Verimli İletişim: Yerleşik MCP2515 çipi, CAN Bus iletişimini güvenilir bir şekilde kontrol ve yönetim sağlar. Entegre SN65HVD230 çipi, CAN Bus üzerinden doğru sinyal dönüşümü ve sağlam iletişim sağlar.
  • Terminal Bağlantısı: CANH ve CANL hatları, CAN Bus’a kolay bağlantı sağlamak için 3 pinli bir terminal üzerinden erişilebilir.
  • Komple Tasarım: Geniş bir uygulama yelpazesi için uygun, kompakt bir form faktörü ile tasarlanmıştır.

Wio ESP32 CAN Geliştirme Kiti($29.90)

  • Üstün RF performansı:  Güçlü ESP32-C3 SoC ve 100m üzerindeki WiFi/Bluetooth bağlantısını destekleyen U.FL anten. Ayrıca, 10 km’lik uzun mesafe iletim aralığına sahip Küresel Uzun Menzil frekans planını destekler (açık alanlarda ideal değer)
  • 2 Bağımsız CAN FD Arayüzü: CAN FD, CAN2.0 iletişimini destekler
  • Çeşitli sensörlerle yüksek genişletilebilirlik: Grove modülleri için zengin arayüzlere tam GPIO’lar çıkartılmıştır, GPS, çevresel algılama vb.
  • Endüstriyel standartları destekler: -40 ℃ ~ 85℃ arasında geniş bir çalışma sıcaklığı, -116.5 dBm ~ -136 dBm arasında yüksek hassasiyet ve 3.3V’da +20.8dBm’a kadar güç çıkışı sağlar.

Grove – GD32E103 Tabanlı CAN BUS Modülü($4.90)

Bu Grove – GD32E103 Tabanlı CAN BUS Modülü, tamamen yeni bir tasarım benimsemekte olup, maliyet etkin ve yüksek performanslı GD32E103 mikrodenetleyicisini ana kontrol olarak kullanmakta ve CAN FD’ye seri port işlevini tamamlamak için yazdığımız bir yazılım ile işbirliği yapmaktadır.

“`

  • CAN iletişimini destekler: 5Mb/s’ye kadar CAN FD uygular
  • Programlaması kolay: Basit seri port programlaması sağlayan AT komutunu destekler
  • Grove ekosistemi: 20mm x 40mm x 10mm küçük boyut, tak ve çalıştır için 4 pinli Grove konektörü, Arduino ile uyumlu

CANBed DUAL($14.90)

  • Yüksek Performans: 264KB SRAM ve 2MB yerleşik Flash bellek ile güçlendirilmiştir
  • İki CAN protokolünü destekler: CAN-FD ve CAN 2.0
  • Sağlam CAN denetleyici: GD32E103CBT6, çift çekirdekli ARM Cortex M0+ işlemci, 133 MHz’ye kadar esnek saat hızı
  • Birden fazla arayüz: Bir I2C, Bir UART, Bir 2×3 Pin SPI Arayüzü

Wio-E5 CAN Geliştirme Kiti($39.90)

  • Çeşitli iletişim yöntemlerini destekler: CAN FD, CAN 2.0 ve RS485
  • Çeşitli sensörlerle yüksek genişletilebilirlik: RS-485, GPS, çevresel algılama vb. için zengin arayüzlere tam GPIO’lar
  • Yüksek uyumluluk: 10 km’ye kadar uzun mesafe ile uzun menzilli global frekans planını destekler (açık alanda ideal değer)
  • Kullanımı kolay: Daha iyi dış mekan dağıtımı için kullanıcı dostu su geçirmez kasa & güneş enerjisi şarj arayüzü sağlanmıştır ve harici güç kaynağı olmadığında geçici kullanım sağlar
  • Endüstriyel standartları destekler: -40 ℃ ~ 85℃ geniş çalışma sıcaklığı, -116.5 dBm ~ -136 dBm arasında yüksek hassasiyet ve 3.3V’da +20.8dBm’a kadar güç çıkışı

CAN-BUS Shield V2 ($24.50)

  • Yüksek performanslı IC’ler: bağımsız MCP2515 CAN-BUS denetleyici ve yüksek hızlı MCP2551 CAN alıcı
  • Endüstriyel standartları destekler: 9 pinli sub-D konektör sağlar
  • Orta iletişim hızı: 1 Mb/s’ye kadar CAN V2.0B uygular
  • Uzun seyahat mesafesi: Standart (11 bit) ve genişletilmiş (29 bit) veri ve uzaktan çerçeveler
  • Öncelikli mesaj depolama ile iki alım tamponu

CANBed – Arduino CAN-BUS Geliştirme Kiti (Atmega32U4 ile MCP2515 ve MCP2551) ($24.90)

  • Geliştirilmiş MCU Performansı: ATmega32U4, kartta Arduino Leonardo bootloader ile
  • Arduino ile uyumlu: CAN-BUS shield ve Arduino geliştirme kartını tek bir kartta birleştirir
  • Yüksek Hız: 1 Mb/s’ye kadar CAN V2.0B uygular
  • Pinlerde Zengin Kaynaklar: Dijital pinler, analog pinler, UART ve I2C arayüzünü içeren 18 pin
  • Kullanımı Kolay: Kontrol için başka bir MCU gerektirmez ve Arduino IDE ile uyumludur

CANBed FD – Arduino CAN-FD Geliştirme Kiti ($17.90)

  • Kompakt boyut tasarımı: 56x41mm genel boyut
  • İki CAN protokolünü destekler: CAN-FD ve CAN 2.0
  • Yüksek performanslı CAN Bus çipi: MCP2517FD CAN denetleyici ve MCP2542 (MCP2557) CAN alıcı
  • Esnek CAN Arayüzü: Endüstriyel standart 9 pinli sub-D konektör veya 4 pinli terminal, Grove ekosistemi ile uyumlu 2 x 4-Pin Grove konektörleri
  • Geniş güç girişi 7-28V aralığında ve stabil 5V/1A çıkış

CANBed M4 Geliştirme Kartı ATSAME51G19A MCU ve MCP2542FD CAN Alıcı ile($19.90)

  • İki CAN protokolünü destekler: CAN-FD ve CAN2.0
  • Güçlü MCU: ATSAME51G19A 32bit Cortex M4 çekirdeği, 120MHz’ye kadar saat hızı
  • Endüstriyel standart 9 pinli sub-D konektör veya 4 pinli terminal konektörü
  • Sub-D konektörde OBD-II ve CAN standart pin çıkışı seçilebilir
  • Grove ekosistemi ile uyumlu 2×4-pin konektör

CANBed – Arduino CAN-Bus RP2040 geliştirme kartı($15.90)

  • Güçlü MCU: 264KB SRAM ve 2MB yerleşik Flash bellek ile güçlendirilmiştir
  • Yüksek Performans: MCP2515 CAN denetleyici ve MCP2551 CAN alıcı, 133MHz’de CAN2.0 protokollerinde çalışır. 1 Mb/s’ye kadar CAN V2.0B uygular
  • Endüstriyel standart 9 pin sub-D konektör veya 4PIN Terminal.
  • Sub-D konektörde OBD-II ve CAN standart pin çıkışı seçilebilir
  • Seeedstudio’dan Grove sistemi ile uyumlu 2x4Pin Konektör

CAN-BUS Projeleri

Volkswagen CAN-BUS Oyun

Silas Parker’dan ilham almıştır

Gerçek bir gösterge paneli ile PC’nizde bir araba/kamyon simülatörü oynamak ister misiniz? CAN-BUS shield ile bunu yapabilirsiniz! Bu projede, bir Arduino Uno ve bir Seeed CAN Bus Shield ile VW Polo 6R gösterge panelini CAN Bus üzerinden kontrol etmeye çalışıyorum.

“`html

Gerekli Olanlar:

İlgileniyor musunuz? Tam öğreticiye SeeedStudio Topluluğu’ndan ulaşabilirsiniz!

Araç Hackleme

Modern araçlar, bir CAN-BUS Kontrol Alanı Ağı ile donatılmıştır. Aracınızdaki çeşitli cihazlardan bataryaya giden milyonlarca kablo yerine, daha akıllı bir sistem kullanmaktadır. Her düğümden (örneğin, pencerelerinizi veya elektrikli kapı kilitlerinizi kontrol eden anahtar podu) CAN üzerinden bir mesaj yayınlar. TIPM geçerli bir mesaj algıladığında, kapıları kilitlemek, ışıkları açmak gibi uygun şekilde tepki verir. CAN-BUS shield ile artık aracınızı hackleyebilirsiniz!

Ne gerekiyor?

İlgileniyor musunuz? Tam öğreticiye mvilijoen2’nin Instructables’ında ulaşabilirsiniz!

Seeed Studio CAN-BUS V2.0 Hackleme – Başlarken

Bu öğretici, Arduino ile ilgili temel bilgileri olan yeni başlayanlar için tasarlanmıştır. Bu öğreticide, aracınızdan bazı CAN-BUS verilerini nasıl alacağınızı öğreneceksiniz.

Gerekli Olanlar:

İlgileniyor musunuz? Tam öğreticiye mvilijoen2’nin Instructables’ında ulaşabilirsiniz!

CAN Bus Dinleme – Arduino ile Hackleme!

Bu video, Arduino Uno + SeeedStudio CAN Bus Shield V2 ile Renault Megane 3 aracına bağlanacak ve aracın CAN bus’ı üzerinden geçen veri/mesajları analiz edecektir (dinleme). Araçlarınızda CAN Bus Protokolü kullanıyorsanız, aynı işlemlerle aracınızı dinleyebilirsiniz.

Gerekli Olanlar:

İlgileniyor musunuz? Tam öğreticiye Bugra’nın Youtube’unda ulaşabilirsiniz!

Araç GUI Can Bus Ekranı

Bu proje, Can Bus’ı kullanarak sensör değerlerini okumak ve özelleştirilebilir GUI ile ekrana seri olarak iletişim kurmak için tasarlanmıştır.

Gerekli Olanlar:

İlgileniyor musunuz? Tam öğreticiye Kenliao’nun Hackster’ında ulaşabilirsiniz!


Arduino ile CAN-BUS’a Başlarken

CAN-BUS ile başlamak oldukça tatmin edici olabilir. Aynı zamanda zorlayıcı da olabilir, ancak bu kılavuz size adım adım başlamak için rehberlik edecektir!

“`

Neye ihtiyacınız var?

Talimatlar

Adım 1: Donanım Bağlantısı

  • Öncelikle, her bir CAN-BUS shield’ı Seeeduino V4.2’ye bağlayın ve 2 jumper kablo ile 2 CAN-BUS shield’ı aşağıda gösterildiği gibi birbirine bağlayın. (CAN_H’i CAN_H’e ve CAN_L’i CAN_L’e bağlayın)

Adım 2: Yazılımı Kurma

  • CAN-BUS için kütüphaneyi buradan indirin ve indirme tamamlandıktan sonra Arduino IDE’ye yükleyin.
  • Arduino kütüphanesini nasıl yükleyeceğinizi bilmiyorsanız, buradaki talimatları takip edebilirsiniz.
  • Node’lardan biri (bir node, Seeeduino + CAN_BUS Shield demektir) master olarak görev yapar ve diğeri slaver olarak görev yapar. Master, sürekli olarak slaver’a veri gönderecektir.
  • Aşağıda gösterildiği gibi gönderilen örneği açın (Dosya > Örnekler > CAN_BUS_Shield-master >send) ve bunu master‘a yükleyin:
  • Bundan sonra, receive_check örneğini açın (Dosya > Örnekler > CAN_BUS_Shield-master > receive_check) ve bunu slaver‘a yükleyin, aşağıda gösterildiği gibi

Adım 3: Sonuçları Görüntüleme

  • Arduino IDE’nin Seri Monitörünü açın (slaver), master’dan gönderilen verileri alacaksınız. Aşağıda nasıl görüneceğine dair bir fotoğraf var:

Adım 4: API’ler (Uygulama Programı Arayüzü)

Bu yazılımın API’leri için:

Baud Hızını Ayarlayın
  • Bu fonksiyon, CAN Bus sisteminin baud hızını başlatmak için kullanılır. Mevcut baud hızları aşağıda listelenmiştir:
#define CAN_5KBPS    1
#define CAN_10KBPS   2
#define CAN_20KBPS   3
#define CAN_25KBPS   4
#define CAN_31K25BPS 5
#define CAN_33KBPS   6
#define CAN_40KBPS   7
#define CAN_50KBPS   8
#define CAN_80KBPS   9
#define CAN_83K3BPS  10
#define CAN_95KBPS   11
#define CAN_100KBPS  12
#define CAN_125KBPS  13
#define CAN_200KBPS  14
#define CAN_250KBPS  15
#define CAN_500KBPS  16
#define CAN_666kbps  17
#define CAN_1000KBPS 18
Alım Maskesini ve Filtreyi Ayarlayın
  • Kontrolcü çipinde, hedef cihazdan veri almanızı garanti eden 2 alım maskesi kaydı ve 5 filtre kaydı bulunmaktadır. Özellikle birçok node’dan oluşan büyük bir ağda faydalıdır.
  • Bu maske ve filtre kayıtlarını kullanmanız için size iki fonksiyon sağlıyoruz. Bunlar:

Maske

init_Mask(unsigned char num, unsigned char ext, unsigned char ulData);

Filtre

init_Filt(unsigned char num, unsigned char ext, unsigned char ulData);
  • num hangi kaydın kullanılacağını temsil eder. Maske için 0 veya 1, filtre için 0’dan 5’e kadar doldurabilirsiniz.
  • ext çerçevenin durumunu temsil eder. 0, standart bir çerçeve için bir maske veya filtre olduğunu belirtir. 1, genişletilmiş bir çerçeve içindir.
  • ulData, filtrenin maske içeriğini temsil eder.
Alımı Kontrol Et
  • MCP2515, alınan bir çerçeveyi kontrol etmek için yazılımın kontrol ettiği bir anket modunda veya bir çerçevenin alındığını veya iletimin tamamlandığını bildirmek için ek pinler kullanarak çalışabilir.
  • Alınan çerçeveleri kontrol etmek için aşağıdaki fonksiyonu kullanın:
INT8U MCP_CAN::checkReceive(void);

Fonksiyon, bir çerçeve geldiğinde 1, hiçbir şey gelmediğinde 0 döndürecektir.

CAN ID’sini Al
  • Bazı veriler geldiğinde, “gönder” node’unun CAN ID’sini almak için aşağıdaki fonksiyonu kullanabilirsiniz.
INT32U MCP_CAN::getCanId(void)
Veri Gönder
CAN.sendMsgBuf(INT8U id, INT8U ext, INT8U len, data_buf);

Bu, veriyi bus’a göndermek için bir fonksiyondur. İçinde:

  • id verinin nereden geldiğini temsil eder.
  • ext çerçevenin durumunu temsil eder. ‘0’ standart çerçeve anlamına gelir. ‘1’ genişletilmiş çerçeve anlamına gelir.
  • len bu çerçevenin uzunluğunu temsil eder.
  • data_buf bu mesajın içeriğidir.

Örneğin, ‘gönder’ örneğinde, şunları yapıyoruz:

unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};
CAN.sendMsgBuf(0x00, 0, 8, stmp); //stmp mesajını bus'a gönder ve diğer cihazlara bunun 0x00'dan gelen standart bir çerçeve olduğunu bildir.
Veri Al
  • Aşağıdaki fonksiyon, ‘al’ node’unda veri almak için kullanılır:
CAN.readMsgBuf(unsigned char len, unsigned char buf);

Maskelerin ve filtrelerin ayarlandığı durumlarda, bu fonksiyon yalnızca maske ve filtre gereksinimlerini karşılayan çerçeveleri alabilir.

  • len veri uzunluğunu temsil eder.
  • buf veriyi sakladığınız yerdir.
Yeni Bir BaudRate Oluştur

Birçok sık kullanılan baud hızını sağladık, aşağıda gösterildiği gibi:

#define CAN_5KBPS    1
#define CAN_10KBPS   2
#define CAN_20KBPS   3
#define CAN_25KBPS   4
#define CAN_31KBPS   5
#define CAN_33KBPS   6
#define CAN_40KBPS   7
#define CAN_50KBPS   8
#define CAN_80KBPS   9
#define CAN_83KBPS   10
#define CAN_95KBPS   11
#define CAN_100KBPS  12
#define CAN_125KBPS  13
#define CAN_200KBPS  14
#define CAN_250KBPS  15
#define CAN_500KBPS  16
#define CAN_666KBPS  17
#define CAN_1000KBPS 18

Yine de istediğiniz hızı bulabilirsiniz. Burada, ihtiyaç duyduğunuz baud hızını hesaplamanıza yardımcı olacak bir yazılım sağlıyoruz.

Yazılımı indirmek için buraya tıklayın, Çince, ancak kullanımı kolay. İşte daha kolay kullanım için çevrilmiş arayüz:

  • Yazılımı açın, yapmanız gereken şey istediğiniz baud hızını ayarlamak, ardından bazı basit ayarlar yapmak ve ardından hesapla’ya tıklamaktır.
  • Sonra bazı veriler, cfg1, cfg2 ve cfg3 alacaksınız.
  • Kütüphaneye bazı kodlar eklemeniz gerekecek.
  • mcp_can_dfs.h dosyasını açın, yaklaşık 272. satıra aşağıdaki kodu eklemeniz gerekiyor
#define MCP_16MHz_xxxkBPS_CFG1 (cfg1)    // xxx, ihtiyaç duyduğunuz baud hızıdır
#define MCP_16MHz_xxxkBPS_CFG2 (cfg2)
#define MCP_16MHz_xxxkBPS_CFG3 (cfg2)
  • Sonra yaklaşık 390. satıra gidelim, aşağıdaki kodu ekleyin:
#define CAN_xxxKBPS NUM       // xxx, ihtiyaç duyduğunuz baud hızıdır ve NUM bir sayıdır, diğer hızlardan farklı olmalıdır.
  • mcp_can.cpp dosyasını açın, mcp2515_configRate fonksiyonuna gidin (yaklaşık 190. satırda), ardından aşağıdaki kodu ekleyin:
case (CAN_xxxKBPS):
    cfg1 = MCP_16MHz_xxxkBPS_CFG1;
    cfg2 = MCP_16MHz_xxxkBPS_CFG2;
    cfg3 = MCP_16MHz_xxxkBPS_CFG3;
    break;

Hepsi bu kadar! Artık ihtiyaç duyduğunuz baud hızını kullanabilirsiniz!

Artık CAN-BUS’u Arduino ile CAN-BUS shield kullanarak nasıl arayüzleştireceğinizi öğrendiğinize göre, işte başlamanız için bazı CAN-BUS projeleri!


Özet

CAN protokolü hakkında temel bilgilere sahip olduğunuzda, bunu kullanmanın bir yolu, aracınızdan geçen veri/mesajları analiz etmek ve aracınızı hacklemek olacaktır!

Bu kılavuzda CAN protokolü hakkında daha fazla bilgi edinmenizi umuyorum! CAN BUS ile ilgili herhangi bir sorunuz varsa, lütfen aşağıdaki yorum bölümünde bir yorum bırakmaktan çekinmeyin.

Daha fazla CAN-BUS ürünüyle ilgileniyor musunuz? Tüm CAN-BUS ürünlerimizi buradan kontrol edebilirsiniz!

Leave a Reply

Your email address will not be published. Required fields are marked *