CANBUS (ControllerArea Network) adalah protokol komunikasi yang dirancang untuk memungkinkan
mikrokontroler dan perangkat lain berkomunikasi satu sama lain tanpa memerlukan
host komputer. Dalam otomotif modern, CANBUS digunakan untuk menghubungkan
berbagai sistem, seperti sistem kontrol mesin, sistem rem anti-lock (ABS) dan
sensor-sensor kendaraan. CANBUS sangat penting karena memungkinkan transfer
data yang cepat dan andal dalam lingkungan menantang seperti mobil.
Arduino Nano adalah salah satu platform mikrokontroler terkecil, dapat digunakan untuk
proyek-proyek yang membutuhkan CANBUS, seperti memonitor sensor, mengendalikan
perangkat atau mengimplementasikan solusi kustom di kendaraan. CANBUS adalah
protokol komunikasi yang pertama kali dikembangkan oleh Bosch pada tahun 1986
untuk industri otomotif. Sebelum CANBUS, sistem elektronik di dalam mobil harus
dihubungkan satu per satu, yang dapat menyebabkan kompleksitas dan peningkatan biaya
kabel. Dengan CANBUS, semua modul di dalam kendaraan dapat berkomunikasi
melalui dua kabel saja, yaitu CAN High dan CAN Low.
Kelebihan CANBUS
dalam Otomotif
1. Protokol CANBUS memungkinkan komunikasi berkecepatan tinggi antara
modul elektronik. Kecepatan ini diperlukan untuk menjaga responsivitas sistem
kritis seperti kontrol mesin dan sistem rem.
2. CANBUS dirancang untuk bekerja di lingkungan yang keras, termasuk suhu tinggi,
getaran, dan interferensi elektromagnetik yang sering terjadi di dalam
kendaraan.
3. Dengan hanya menggunakan dua kabel untuk menghubungkan semua modul,
CANBUS sangat mengurangi jumlah kabel yang dibutuhkan dalam kendaraan.
4. CANBUS memiliki sistem error checking yang canggih, sehingga memungkinkan
mendeteksi dan mengoreksi kesalahan komunikasi.
Perangkat Keras
yang Diperlukan
1. Arduino Nano
Mikrokontroler ini
akan berfungsi sebagai pusat pengolahan data dan komunikasi dengan sistem
CANBUS kendaraan.
2. MCP2515 CAN
Module
Modul ini
berfungsi sebagai antarmuka antara Arduino dan jaringan CANBUS. MCP2515 adalah
chip yang digunakan untuk menangani komunikasi CAN dan terhubung ke Arduino
melalui SPI (Serial Peripheral Interface).
3. Transceiver
CANBUS
Biasanya, chip
transceiver seperti TJA1050 digunakan untuk mengubah sinyal digital dari
Arduino menjadi sinyal diferensial yang dapat dikirim melalui jaringan CANBUS.
4. Resistor
Terminator
Untuk setiap ujung
dari jaringan CANBUS, diperlukan resistor 120 ohm untuk menjaga integritas
sinyal.
5. Kabel CANBUS
Anda memerlukan
dua kabel utama, yaitu CAN_H (CAN High) dan CAN_L (CAN Low), digunakan
untuk menghubungkan berbagai node di dalam jaringan CAN.
6. Sumber Daya
Listrik
Catu daya untuk
Arduino Nano dan modul CAN. Biasanya, tegangan 5V digunakan untuk Arduino Nano,
sedangkan beberapa modul CAN membutuhkan 3.3V atau 5V tergantung pada modelnya.
Diagram Rangkaian
Sebelum memulai
dengan kode, pastikan Anda telah menghubungkan komponen dengan benar. Berikut
ini diagram rangkaian yang perlu Anda ikuti:
1. Hubungkan pin
VCC dan GND dari MCP2515 ke 5V dan GND dari Arduino Nano.
2. Hubungkan pin
SCK, MOSI, MISO, dan CS dari MCP2515 ke pin D13, D11, D12, dan D10 dari
Arduino Nano.
3. Hubungkan CAN_H
dan CAN_L dari MCP2515 ke jaringan CANBUS.
4. Pastikan
resistor terminator 120 ohm terpasang di kedua ujung jaringan CANBUS.
Instalasi
Perangkat Lunak
Setelah perangkat
keras siap, langkah berikutnya adalah menginstal perangkat lunak yang
diperlukan untuk mengontrol CANBUS menggunakan Arduino Nano.
1. Arduino IDE
Pastikan Anda
memiliki Arduino IDE terbaru yang diinstal di komputer Anda. Arduino IDE
digunakan untuk menulis, mengompilasi dan mengunggah kode ke Arduino Nano.
2. Library MCP2515
Untuk
berkomunikasi dengan modul MCP2515, Anda perlu menginstal library CAN khusus.
Salah satu library yang umum digunakan adalah “MCP_CAN” yang dapat
diunduh melalui Arduino IDE. Berikut ini cara menginstal library yang Anda perlukan:• Buka Arduino
IDE.
• Pergi ke menu
Tools > Manage Libraries.
• Cari
“MCP_CAN” dan instal library tersebut.
3. Library SPI
Komunikasi antara
Arduino Nano dan MCP2515 dilakukan melalui SPI, jadi pastikan Anda juga
memiliki library SPI yang sudah terinstal. Biasanya, library ini sudah otomatis
terinstal bersama Arduino IDE.
Kode Arduino untuk
Komunikasi CANBUS
Sekarang saatnya
menulis kode untuk berkomunikasi dengan jaringan CANBUS. Berikut ini contoh
kode sederhana yang mengirimkan dan menerima pesan CANBUS menggunakan Arduino
Nano dan MCP2515.
Mengirim Data
Melalui CANBUS
Kode ini akan
mengirimkan pesan sederhana melalui jaringan CANBUS setiap satu detik.
#include
<SPI.h>
#include
<mcp_can.h>
const int
SPI_CS_PIN = 10;
MCP_CAN
CAN(SPI_CS_PIN); // Set CS pin
void setup() {
Serial.begin(115200);
// Inisialisasi MCP2515
if (CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ)
== CAN_OK) {
Serial.println(“CANBUS Inisialisasi
Berhasil!”);
} else {
Serial.println(“CANBUS Inisialisasi
Gagal!”);
while (1);
}
CAN.setMode(MCP_NORMAL); // Mode Operasi
Normal
}
void loop() {
unsigned char message[8] = {0xFF, 0x00, 0xAA,
0xBB, 0xCC, 0xDD, 0xEE, 0xFF}; // Pesan data
CAN.sendMsgBuf(0x100, 0, 8, message); //
Kirim pesan dengan ID 0x100
Serial.println(“Pesan CAN
Terkirim!”);
delay(1000); // Jeda 1 detik
}
Penjelasan Kode:
– MCP_CAN
CAN(SPI_CS_PIN); mendefinisikan modul CAN dan mengatur pin CS (chip select)
untuk SPI.
– CAN.begin(); menginisialisasi modul MCP2515 dengan baud rate 500 kbps dan frekuensi kristal
8 MHz.
–
CAN.sendMsgBuf(); mengirimkan pesan dengan ID 0x100, panjang data 8 byte, dan
isi pesan yang ditentukan.
Menerima Data dari
CANBUS
Untuk menerima
pesan dari jaringan CANBUS, berikut adalah kode yang dapat Anda gunakan:
#include
<SPI.h>
#include
<mcp_can.h>
const int
SPI_CS_PIN = 10;
MCP_CAN
CAN(SPI_CS_PIN);
void setup() {
Serial.begin(115200);
// Inisialisasi MCP2515
if (CAN.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ)
== CAN_OK) {
Serial.println(“CANBUS Inisialisasi
Berhasil!”);
} else {
Serial.println(“CANBUS Inisialisasi
Gagal!”);
while (1);
}
CAN.setMode(MCP_NORMAL); // Mode Operasi
Normal
}
void loop() {
unsigned char len = 0;
unsigned char buf[8];
// Cek apakah ada pesan yang diterima
if (CAN_MSGAVAIL == CAN.checkReceive()) {
CAN.readMsgBuf(&len, buf); // Baca
pesan
unsigned long canId = CAN.getCanId(); //
Dapatkan CAN ID
Serial.print(“Pesan CAN diterima
dengan ID: “);
Serial.println(canId, HEX);
for (int i = 0; i < len; i++) {
Serial.print(buf[i], HEX);
Serial.print(“t”);
}
Serial.println();
}
}
Penjelasan Kode:
•
CAN.checkReceive(); mengecek apakah ada pesan CANBUS yang diterima.
•
CAN.readMsgBuf(); membaca pesan yang diterima dan menyimpannya ke buffer.
• CAN.getCanId(); mendapatkan ID dari pesan yang diterima untuk membantu mengidentifikasi asal
data.
Implementasi dalam
Otomotif
1. Memonitor
Sensor Kendaraan
Anda dapat menggunakan Arduino Nano untuk membaca data dari berbagai sensor dalam
kendaraan, seperti sensor suhu, tekanan ban, atau sensor posisi throttle dan
menampilkannya di layar.
2. Kontrol
Perangkat
Arduino Nano dapat
digunakan untuk mengontrol perangkat seperti lampu, sistem pendingin, atau
bahkan sistem infotainment kendaraan melalui CANBUS.
3. Diagnostik
Kendaraan
CANBUS adalah
bagian penting dalam sistem On-Board Diagnostics (OBD-II). Anda dapat memonitor
dan menganalisis kesalahan atau parameter sistem mesin dengan mengakses
jaringan CANBUS kendaraan.
4. Modifikasi
Kendaraan
Penggemar otomotif
sering menggunakan Arduino untuk memodifikasi perilaku kendaraan, seperti
mengatur ulang pengaturan transmisi atau menambah fitur-fitur kustom seperti
pengendalian jarak jauh.
Siap Untuk Membuat Proyek Impianmu
Menjadi Kenyataan?
Klik di sini untuk chat langsung via
WhatsApp dan dapatkan dukungan langsung dari tim ahli kami!
Terimakasih telah membaca di Aopok.com, semoga bermanfaat dan lihat juga di situs berkualitas dan paling populer Piool.com, peluang bisnis online Topbisnisonline.com dan join di komunitas Topoin.com.