Daftar Isi:
- Langkah 1: Sumber Daya yang Digunakan
- Langkah 2: BISA (Controller Area Network)
- Langkah 3: BISA - Fitur
- Langkah 4: Sirkuit Digunakan
- Langkah 5: Tegangan Saluran Transmisi (Deteksi Diferensial)
- Langkah 6: CAN Standar dan Format Bingkai
- Langkah 7: CAN Standards and Frames Format
- Langkah 8: CAN Standards and Frames Format
- Langkah 9: Empat Jenis Bingkai (frame)
- Langkah 10: Sirkuit - Detail Koneksi
- Langkah 11: Sirkuit - Pengambilan Data
- Langkah 12: Sirkuit - Pengambilan Data
- Langkah 13: Sirkuit - Pengambilan Data
- Langkah 14: Perpustakaan Arduino - BISA
- Langkah 15: Github
- Langkah 16: Kode Sumber Pemancar
- Langkah 17: Kode Sumber: Loop (), Mengirim Paket Standar CAN 2.0
- Langkah 18: Kode Sumber: Loop (), Mengirim Paket CAN 2.0 yang Diperpanjang
- Langkah 19: Kode Sumber Penerima
- Langkah 20: Kode Sumber: Loop (), Mendapatkan Paket dan Memeriksa Format
- Langkah 21: Sumber: Loop (), Periksa untuk Melihat Apakah Itu Paket Jarak Jauh
- Langkah 22: Kode Sumber: Loop (), Panjang Data yang Diminta atau Diterima
- Langkah 23: Kode Sumber: Loop (), Jika Data Diterima, Kemudian Dicetak
- Langkah 24: Unduh File
Video: Protokol CAN - Ya, Kita Bisa!: 24 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Subjek lain yang baru-baru ini disarankan oleh pengikut saluran YouTube saya adalah protokol CAN (Controller Area Network), yang akan kami fokuskan hari ini. Penting untuk dijelaskan bahwa CAN adalah protokol komunikasi serial simultan. Ini berarti sinkronisasi antara modul yang terhubung ke jaringan dilakukan dalam kaitannya dengan awal setiap pesan yang dikirim ke bus. Kami akan memulai dengan memperkenalkan konsep dasar protokol CAN dan melakukan perakitan sederhana dengan dua ESP32.
Di sirkuit kami, ESP dapat bertindak sebagai Master dan Slave. Anda dapat memiliki beberapa mikrokontroler yang mentransmisikan secara bersamaan, karena CAN menangani tabrakan semuanya secara otomatis. Kode sumber proyek ini sangat sederhana. Coba lihat!
Langkah 1: Sumber Daya yang Digunakan
- Dua modul ESP WROOM 32 NodeMcu
- Dua transceiver CAN dari WaveShare
- Jumper untuk koneksi
- Penganalisa logis untuk ditangkap
- Tiga kabel USB untuk ESP dan penganalisis
- 10 meter dari twisted pair untuk berfungsi sebagai bus
Langkah 2: BISA (Controller Area Network)
- Ini dikembangkan oleh Robert Bosch GmbH pada 1980-an untuk melayani industri otomotif.
- Ini telah menyebar luas selama bertahun-tahun karena kekokohan dan fleksibilitas implementasinya. Ini digunakan dengan peralatan militer, mesin pertanian, otomatisasi industri dan bangunan, robotika, dan peralatan medis.
Langkah 3: BISA - Fitur
- Komunikasi serial dua kabel
- Maksimum 8 byte informasi berguna per frame, dengan kemungkinan fragmentasi
- Alamat diarahkan ke pesan dan bukan ke node
- Menetapkan prioritas untuk pesan dan menyampaikan pesan "ditahan"
- Kemampuan efektif untuk mendeteksi dan memberi sinyal kesalahan
- Kemampuan multi-master (semua node dapat meminta akses bus)
- Kemampuan multicast (satu pesan untuk beberapa penerima sekaligus)
- Kecepatan transfer hingga 1Mbit / dtk pada bus 40 meter (pengurangan kecepatan dengan penambahan panjang busbar)
- Fleksibilitas konfigurasi dan pengenalan node baru (hingga 120 node per bus)
- Perangkat keras standar, biaya rendah, dan ketersediaan bagus
- Protokol yang diatur: ISO 11898
Langkah 4: Sirkuit Digunakan
Di sini, saya memiliki Transceiver. Ada satu di setiap sisi, dan mereka dihubungkan oleh sepasang kabel. Satu bertanggung jawab untuk mengirim dan yang lainnya untuk menerima data.
Langkah 5: Tegangan Saluran Transmisi (Deteksi Diferensial)
Dalam CAN, bit yang dominan adalah Nol.
Deteksi Diferensial Garis Mengurangi Sensitivitas Kebisingan (EFI)
Langkah 6: CAN Standar dan Format Bingkai
Format standar dengan pengidentifikasi 11-bit
Langkah 7: CAN Standards and Frames Format
Format yang diperluas dengan pengidentifikasi 29-bit
Langkah 8: CAN Standards and Frames Format
Penting untuk dicatat bahwa sebuah protokol sudah menghitung CRC dan mengirimkan sinyal ACK dan EOF, yang merupakan hal-hal yang sudah dilakukan oleh protokol CAN. Ini menjamin bahwa pesan yang dikirim tidak akan sampai dengan cara yang salah. Hal ini karena jika memberikan masalah pada CRC (Redundant Cyclic Check atau Redundancy Check) yang sama dengan digit cek informasi akan diidentifikasi oleh CRC.
Langkah 9: Empat Jenis Bingkai (frame)
Penting untuk dicatat bahwa sebuah protokol sudah menghitung CRC dan mengirimkan sinyal ACK dan EOF, yang merupakan hal-hal yang sudah dilakukan oleh protokol CAN. Ini menjamin bahwa pesan yang dikirim tidak akan sampai dengan cara yang salah. Hal ini karena jika memberikan masalah pada CRC (Redundant Cyclic Check atau Redundancy Check) yang sama dengan digit cek informasi akan diidentifikasi oleh CRC.
Empat jenis bingkai (frame)
Transmisi dan penerimaan data di CAN didasarkan pada empat jenis frame. Jenis bingkai akan diidentifikasi oleh variasi dalam bit kontrol atau bahkan oleh perubahan aturan penulisan bingkai untuk setiap kasus.
- Bingkai Data: Berisi data pemancar untuk penerima
- Bingkai Jarak Jauh: Ini adalah permintaan data dari salah satu node
- Bingkai Kesalahan: Ini adalah bingkai yang dikirim oleh salah satu node saat mengidentifikasi kesalahan di bus dan dapat dideteksi oleh semua node
- Overload Frame: Berfungsi untuk menunda trafik pada bus akibat kelebihan data atau delay pada satu atau lebih node.
Langkah 10: Sirkuit - Detail Koneksi
Langkah 11: Sirkuit - Pengambilan Data
Panjang gelombang diperoleh untuk CAN standar dengan ID 11-bit
Langkah 12: Sirkuit - Pengambilan Data
Panjang gelombang diperoleh untuk CAN yang diperluas dengan ID 29-bit
Langkah 13: Sirkuit - Pengambilan Data
Data diperoleh dengan penganalisis logika
Langkah 14: Perpustakaan Arduino - BISA
Saya tunjukkan di sini dua opsi di mana Anda dapat menginstal CAN Driver Library
Manajer Perpustakaan Arduino IDE
Langkah 15: Github
github.com/sandeepmistry/arduino-CAN
Langkah 16: Kode Sumber Pemancar
Kode Sumber: Termasuk dan Pengaturan ()
Kami akan menyertakan pustaka CAN, memulai serial untuk debugging, dan memulai bus CAN pada 500 kbps.
#include //Menyertakan biblioteca BISA membatalkan setup() { Serial.begin(9600); //inicia a serial para debug while (!Serial); Serial.println("Transmissor BISA"); // Inicia o barramento CAN a 500 kbps if (!CAN.begin(500E3)) { Serial.println("Falha ao iniciar o controlador CAN"); //caso não seja possível iniciar o controlador while (1); } }
Langkah 17: Kode Sumber: Loop (), Mengirim Paket Standar CAN 2.0
Menggunakan standar CAN 2.0, kami mengirim paket. ID 11-bit mengidentifikasi pesan. Blok data harus memiliki hingga 8 byte. Ini memulai paket dengan ID 18 dalam heksadesimal. Ini mengemas 5 byte dan menutup fungsinya.
void loop() { // Usando o CAN 2.0 padrão //Envia um pacote: o id tem 11 bits e identifica a mensagem (prioridade, evento) //o bloco de dados deve possuir até 8 byte Serial.println("Enviando pacote …"); BISA.beginPacket(0x12); //id 18 em heksadesimal CAN.write('h'); // byte CAN.write('e'); //2º byte CAN.write('l'); //3º byte CAN.write('l'); //4º byte CAN.write('o'); //5º byte CAN.endPacket(); //encerra o pacote para envio Serial.println("Enviado."); penundaan (1000);
Langkah 18: Kode Sumber: Loop (), Mengirim Paket CAN 2.0 yang Diperpanjang
Pada langkah ini, ID memiliki 29 bit. Itu mulai mengirim 24 bit ID dan, sekali lagi, mengemas 5 byte dan berhenti.
//Usando CAN 2.0 Estendido //Envia um pacote: o id tem 29 bits e identifica a mensagem (prioridade, evento) //o bloco de dados deve possuir até 8 bytes Serial.println("Enviando pacote estendido…"); BISA.beginExtendedPacket(0xabcdef); //id 11259375 desimal (abcdef em hexa) = 24 bit preenchidos até aqui CAN.write('w'); // byte CAN.write('o'); //2º byte CAN.write('r'); //3º byte CAN.write('l'); //4º byte CAN.write('d'); //5º byte CAN.endPacket(); //encerra o pacote para envio Serial.println("Enviado."); penundaan (1000); }
Langkah 19: Kode Sumber Penerima
Kode Sumber: Termasuk dan Pengaturan ()
Sekali lagi, kami akan menyertakan pustaka CAN, memulai serial untuk debug, dan memulai bus CAN pada 500 kbps. Jika terjadi kesalahan, kesalahan ini akan dicetak.
#include //Menyertakan biblioteca BISA membatalkan setup() { Serial.begin(9600); //inicia a serial para debug while (!Serial); Serial.println("Reseptor BISA"); // Inicia o barramento BISA 500 kbps if (!CAN.begin(500E3)) { Serial.println("Falha ao iniciar o controlador CAN"); //caso não seja possível iniciar o controlador while (1); } }
Langkah 20: Kode Sumber: Loop (), Mendapatkan Paket dan Memeriksa Format
Kami mencoba memeriksa ukuran paket yang diterima. Metode CAN.parsePacket () menunjukkan kepada saya ukuran paket ini. Jadi kalau ada paket, kita cek apakah diperpanjang atau tidak.
void loop() { // Verifikasi tenta tamanho melakukan recebido int packetSize = CAN.parsePacket(); if (ukuran paket) { // Se temos um pacote Serial.println("Recebido pacote. "); if (CAN.packetExtended()) { //memverifikasi estendido Serial.println("Estendido"); }
Langkah 21: Sumber: Loop (), Periksa untuk Melihat Apakah Itu Paket Jarak Jauh
Di sini, kami memeriksa apakah paket yang diterima adalah permintaan data. Dalam hal ini, tidak ada data.
if (CAN.packetRtr()) { //Verifikasi se o pacote é um pacote remoto (Requisição de dados), neste caso não há dados Serial.print("RTR "); }
Langkah 22: Kode Sumber: Loop (), Panjang Data yang Diminta atau Diterima
Jika paket yang diterima adalah permintaan, kami menunjukkan panjang yang diminta. Kami kemudian mendapatkan Kode Panjang Data (DLC), yang menunjukkan panjang data. Akhirnya, kami menunjukkan panjang yang diterima.
Serial.print("Pacote com id 0x"); Serial.print(BISA.packetId(), HEX); if (CAN.packetRtr()) { //se o pacote recebido é de requisição, indicamos o comprimento solicitado Serial.print(" e requsitou o comprimento "); Serial.println(CAN.packetDlc()); //obtem o DLC (Data Length Code, que indica o comprimento dos dados) } else { Serial.print(" e comprimento "); // dapatkan beberapa indikasi atau komprimento recebido Serial.println(packetSize);
Langkah 23: Kode Sumber: Loop (), Jika Data Diterima, Kemudian Dicetak
Kami mencetak (pada monitor serial) data, tetapi hanya jika paket yang diterima bukan merupakan permintaan.
//Imprime os dados somente se o pacote recebido não foi de requisição while (CAN.available()) { Serial.print((char)CAN.read()); } Serial.println(); } Serial.println(); } }
Langkah 24: Unduh File
SAYA TIDAK
Direkomendasikan:
Labu Halloween Dengan Mata Animatronik Bergerak - Labu Ini Bisa Memutar Mata!: 10 Langkah (dengan Gambar)
Labu Halloween Dengan Mata Animatronik Bergerak | Labu Ini Dapat Memutar Matanya!: Dalam Instruksi ini, Anda akan belajar cara membuat labu Halloween yang menakutkan semua orang saat matanya bergerak. Sesuaikan jarak pemicu sensor ultrasonik ke nilai yang tepat (langkah 9), dan labu Anda akan membatu siapa saja yang berani mengambil cand
Elektronik Miniatur Seberapa Kecil Anda Bisa Pergi?: 6 Langkah
Miniatur Elektronik Seberapa Kecil Bisa Anda Pergi?: beberapa waktu lalu saya mendapatkan sedikit cahaya (pada PCB coklat) dari salah satu teman saya itu adalah lampu sinyal isi ulang buatan sendiri dengan sirkuit pengisian built-in, baterai LiIon, sakelar DIP untuk mengubah warna pada LED RGB dan juga mengganti seluruh rangkaian tapi apa
Anak-anak Juga Bisa Membuat Cermin Infinity!: 8 Langkah (dengan Gambar)
Anak-Anak Juga Bisa Membuat Cermin Tanpa Batas!: Dream AcadeME adalah organisasi pendidikan alternatif nirlaba. Filosofi kami berfokus pada pembelajaran yang berpusat pada anak yang terhubung dengan STEAM (Sains, Teknologi, Teknik, Seni, dan Matematika), alam, dan konstruktivisme sosial, sebuah pendekatan di mana anak
Bagaimana Mendapatkan Musik Dari Hampir Semua Website (Haha) (Selama Anda Bisa Mendengarnya Anda Bisa Mendapatkannya Oke Baik Jika Itu Tertanam dalam Flash Anda Mungkin Tidak Bisa) DIEDIT!!!!! Info Tambahan: 4 Langkah
Cara Mendapatkan Musik Dari HAMPIR Website (Haha) (Selama Anda Bisa Mendengarnya Anda Bisa Mendapatkannya… Oke Baik Jika Tertanam di Flash Anda Mungkin Tidak Bisa) DIEDIT!!!!! Info Tambahan: jika Anda pernah pergi ke situs web dan memainkan lagu yang Anda sukai dan inginkan, maka inilah instruksi untuk Anda, bukan salah saya jika Anda mengacaukan sesuatu (satu-satunya cara itu akan terjadi adalah jika Anda mulai menghapus barang tanpa alasan ) sudah bisa mendapatkan musik untuk
COMBO USB DRIVE DENGAN ALTOID BISA: 6 Langkah
COMBO USB DRIVE DENGAN ALTOIDS CAN: Ini adalah instruksi pertama saya dan saya telah memutuskan untuk membuat gadget baru dengan ALTOIDS can. Yang ini adalah drive USB COMBO, yang dapat Anda kelompokkan semua flash drive lama Anda menjadi satu, drive bentuk asli dan khusus. Selamat menikmati dan berkomentar! Namun, saya brazi