Isi kandungan:
- Langkah 1: Sumber yang Digunakan
- Langkah 2: CAN (Rangkaian Kawasan Pengawal)
- Langkah 3: CAN - Ciri
- Langkah 4: Litar Digunakan
- Langkah 5: Voltan Saluran Penghantaran (Pengesanan Pembezaan)
- Langkah 6: Bentuk Piawaian dan Bingkai CAN
- Langkah 7: Bentuk Piawaian dan Bingkai CAN
- Langkah 8: Bentuk Piawaian dan Bingkai CAN
- Langkah 9: Empat Jenis Bingkai (bingkai)
- Langkah 10: Litar - Perincian Sambungan
- Langkah 11: Litar - Tangkap Data
- Langkah 12: Litar - Tangkap Data
- Langkah 13: Litar - Tangkap Data
- Langkah 14: Perpustakaan Arduino - BOLEH
- Langkah 15: Github
- Langkah 16: Kod Sumber Pemancar
- Langkah 17: Kod Sumber: Gelung (), Menghantar Paket CAN 2.0 Standard
- Langkah 18: Kod Sumber: Gelung (), Menghantar Pakej CAN 2.0 yang Diperpanjang
- Langkah 19: Kod Sumber Penerima
- Langkah 20: Kod Sumber: Gelung (), Mendapatkan Pakej dan Memeriksa Format
- Langkah 21: Sumber: Gelung (), Periksa untuk Melihat Adakah Itu Pakej Jauh
- Langkah 22: Kod Sumber: Gelung (), Panjang Data Diminta atau Diterima
- Langkah 23: Kod Sumber: Gelung (), Sekiranya Data Diterima, Ia Kemudian Mencetak
- Langkah 24: Muat turun Fail
Video: CAN Protocol - Ya, Kita Boleh !: 24 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Subjek lain yang baru-baru ini dicadangkan oleh pengikut saluran YouTube saya ialah protokol CAN (Controller Area Network), yang akan kami fokuskan hari ini. Penting untuk menjelaskan bahawa CAN adalah protokol komunikasi bersiri serentak. Ini bermaksud penyegerakan antara modul yang disambungkan ke rangkaian dilakukan berkaitan dengan permulaan setiap mesej yang dihantar ke bas. Kami akan memulakan dengan memperkenalkan konsep asas protokol CAN dan melakukan pemasangan sederhana dengan dua ESP32.
Di litar kami, ESP boleh bertindak sebagai Master dan Slave. Anda boleh menghantar beberapa mikrokontroler secara serentak, kerana CAN dapat menangani perlanggaran semuanya secara automatik. Kod sumber projek ini sangat mudah. Lihatlah!
Langkah 1: Sumber yang Digunakan
- Dua modul ESP WROOM 32 NodeMcu
- Dua transceiver CAN dari WaveShare
- Pelompat untuk sambungan
- Penganalisis logik untuk tangkapan
- Tiga kabel USB untuk ESP dan penganalisis
- Pasangan berpusing 10 meter untuk dijadikan bas
Langkah 2: CAN (Rangkaian Kawasan Pengawal)
- Ia dikembangkan oleh Robert Bosch GmbH pada tahun 1980-an untuk melayani industri automotif.
- Ini telah meluas selama bertahun-tahun kerana ketahanan dan kelenturan pelaksanaannya. Ia digunakan dengan peralatan ketenteraan, mesin pertanian, automasi industri dan bangunan, robotik, dan peralatan perubatan.
Langkah 3: CAN - Ciri
- Komunikasi bersiri dua wayar
- Maksimum 8 bait maklumat berguna setiap bingkai, dengan kemungkinan pemecahan
- Alamat diarahkan ke mesej dan bukan ke nod
- Menetapkan keutamaan kepada mesej dan menyampaikan mesej "ditahan"
- Keupayaan berkesan untuk mengesan dan memberi isyarat kesalahan
- Keupayaan berbilang master (semua nod boleh meminta akses bas)
- Keupayaan multicast (satu mesej untuk beberapa penerima pada masa yang sama)
- Harga pindahan hingga 1Mbit / s pada bas 40 meter (pengurangan kadar dengan peningkatan panjang bar)
- Fleksibiliti konfigurasi dan pengenalan nod baru (sehingga 120 nod setiap bas)
- Perkakasan standard, kos rendah, dan ketersediaan yang baik
- Protokol terkawal: ISO 11898
Langkah 4: Litar Digunakan
Di sini, saya mempunyai Transceiver. Terdapat satu di setiap sisi, dan mereka dihubungkan dengan sepasang wayar. Yang satu bertanggungjawab untuk menghantar dan yang lain untuk menerima data.
Langkah 5: Voltan Saluran Penghantaran (Pengesanan Pembezaan)
Dalam CAN, bit yang dominan adalah Zero.
Pengesanan Pembezaan Garis Mengurangkan Sensitiviti Bising (EFI)
Langkah 6: Bentuk Piawaian dan Bingkai CAN
Format standard dengan pengecam 11-bit
Langkah 7: Bentuk Piawaian dan Bingkai CAN
Format lanjutan dengan pengecam 29-bit
Langkah 8: Bentuk Piawaian dan Bingkai CAN
Penting untuk diperhatikan bahawa protokol sudah menghitung CRC dan menghantar isyarat ACK dan EOF, yang merupakan perkara yang sudah dilakukan oleh protokol CAN. Ini menjamin bahawa mesej yang dihantar tidak akan sampai dengan cara yang salah. Ini kerana jika ia memberikan masalah pada CRC (Redundant Cyclic Check atau Redundancy Check), yang sama dengan digit cek maklumat, ia akan dikenal pasti oleh CRC.
Langkah 9: Empat Jenis Bingkai (bingkai)
Penting untuk diperhatikan bahawa protokol sudah menghitung CRC dan menghantar isyarat ACK dan EOF, yang merupakan perkara yang sudah dilakukan oleh protokol CAN. Ini menjamin bahawa mesej yang dihantar tidak akan sampai dengan cara yang salah. Ini kerana jika ia memberikan masalah pada CRC (Redundant Cyclic Check atau Redundancy Check), yang sama dengan digit maklumat, ia akan dikenal pasti oleh CRC.
Empat jenis bingkai (bingkai)
Penghantaran dan penerimaan data dalam CAN didasarkan pada empat jenis bingkai. Jenis bingkai akan dikenal pasti oleh variasi dalam bit kawalan atau bahkan dengan perubahan dalam peraturan penulisan bingkai untuk setiap kes.
- Bingkai Data: Mengandungi data pemancar untuk penerima
- Remote Frame: Ini adalah permintaan data dari salah satu nod
- Rangka Kesalahan: Ini adalah bingkai yang dikirim oleh salah satu node ketika mengenal pasti kesalahan dalam bas dan dapat dikesan oleh semua nod
- Overload Frame: Berfungsi untuk melambatkan lalu lintas di bas kerana data yang berlebihan atau kelewatan pada satu atau lebih nod.
Langkah 10: Litar - Perincian Sambungan
Langkah 11: Litar - Tangkap Data
Panjang gelombang yang diperoleh untuk CAN standard dengan ID 11-bit
Langkah 12: Litar - Tangkap Data
Panjang gelombang yang diperoleh untuk CAN yang diperpanjang dengan ID 29-bit
Langkah 13: Litar - Tangkap Data
Data yang diperoleh oleh penganalisis logik
Langkah 14: Perpustakaan Arduino - BOLEH
Saya menunjukkan di sini dua pilihan di mana anda boleh memasang Perpustakaan Pemandu CAN
Pengurus Perpustakaan Arduino IDE
Langkah 15: Github
github.com/sandeepmistry/arduino-CAN
Langkah 16: Kod Sumber Pemancar
Kod Sumber: Termasuk dan Persediaan ()
Kami akan memasukkan pustaka CAN, memulakan siri untuk debug, dan memulakan bas CAN pada 500 kbps.
#include // Inclui a biblioteca BOLEH membatalkan penyediaan () {Serial.begin (9600); // inicia siri untuk debug sementara (! Serial); Serial.println ("Transmissor CAN"); // Inicia o barramento DAPAT 500 kbps jika (! CAN.begin (500E3)) {Serial.println ("Falha ao iniciar o controlador CAN"); // caso não seja possível iniciar o controlador sementara (1); }}
Langkah 17: Kod Sumber: Gelung (), Menghantar Paket CAN 2.0 Standard
Dengan menggunakan standard CAN 2.0, kami menghantar pakej. ID 11-bit mengenal pasti mesej. Blok data mesti mempunyai 8 bait. Ia memulakan paket dengan ID 18 dalam heksadesimal. Ini mengemas 5 bait dan menutup fungsinya.
gelung void () {// Usando o CAN 2.0 padrão // Envia um pacote: o id tem 11 bit e identifica a mensagem (prioridade, evento) // o bloco de dados deve possuir até 8 bytes Serial.println ("Enviando pacote … "); CAN.beginPacket (0x12); // id 18 em heksadesimal CAN.write ('h'); // 1º bait CAN.write ('e'); // 2º bait CAN.write ('l'); // 3º bait CAN.write ('l'); // 4º bait CAN.write ('o'); // 5º bait CAN.endPacket (); // encerra o pacote para envio Serial.println ("Enviado."); kelewatan (1000);
Langkah 18: Kod Sumber: Gelung (), Menghantar Pakej CAN 2.0 yang Diperpanjang
Dalam langkah ini, ID mempunyai 29 bit. Ia mula menghantar 24 bit ID dan, sekali lagi, mengemas 5 bait 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 byte Serial.println ("Enviando pacote estendido…"); CAN.beginExtendedPacket (0xabcdef); // id 11259375 perpuluhan (abcdef em hexa) = 24 bit preenchidos até aqui CAN.write ('w'); // 1º bait CAN.write ('o'); // 2º bait CAN.write ('r'); // 3º bait CAN.write ('l'); // 4º bait CAN.write ('d'); // 5º bait CAN.endPacket (); // encerra o pacote para envio Serial.println ("Enviado."); kelewatan (1000); }
Langkah 19: Kod Sumber Penerima
Kod Sumber: Termasuk dan Persediaan ()
Sekali lagi, kami akan memasukkan pustaka CAN, memulakan siri untuk debug, dan memulakan bas CAN pada 500 kbps. Sekiranya ralat berlaku, ralat ini akan dicetak.
#include // Inclui a biblioteca BOLEH membatalkan penyediaan () {Serial.begin (9600); // inicia siri untuk debug sementara (! Serial); Serial.println ("Reseptor BOLEH"); // Inicia o barramento DAPAT 500 kbps jika (! CAN.begin (500E3)) {Serial.println ("Falha ao iniciar o controlador CAN"); // caso não seja possível iniciar o controlador sementara (1); }}
Langkah 20: Kod Sumber: Gelung (), Mendapatkan Pakej dan Memeriksa Format
Kami cuba memeriksa ukuran paket yang diterima. Kaedah CAN.parsePacket () menunjukkan kepada saya saiz pakej ini. Oleh itu, jika kita mempunyai pakej, kita akan memeriksa sama ada ia diperluaskan atau tidak.
gelung kosong () {// Tenta verificar o tamanho do acote recebido int packetSize = CAN.parsePacket (); if (packetSize) {// Se temos um pacote Serial.println ("Recebido pacote."); jika (CAN.packetExtended ()) {// verifica se o pacote é estendido Serial.println ("Estendido"); }
Langkah 21: Sumber: Gelung (), Periksa untuk Melihat Adakah Itu Pakej Jauh
Di sini, kami memeriksa apakah paket yang diterima adalah permintaan data. Dalam kes ini, tidak ada data.
jika (CAN.packetRtr ()) {// Verifica se o pacote é um pacote remoto (Requisição de dados), neste caso não há dados Serial.print ("RTR"); }
Langkah 22: Kod Sumber: Gelung (), Panjang Data Diminta atau Diterima
Sekiranya paket yang diterima adalah permintaan, kami menunjukkan panjang yang diminta. Kami kemudian memperoleh Kod Panjang Data (DLC), yang menunjukkan panjang data. Akhirnya, kami menunjukkan tempoh yang diterima.
Serial.print ("Pacote com id 0x"); Serial.print (CAN.packetId (), HEX); sekiranya (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 (Kod Panjang Data, que indica o comprimento dos dados)} yang lain {Serial.print ("e comprimento"); // aqui somente indica o comprimento recebido Serial.println (packetSize);
Langkah 23: Kod Sumber: Gelung (), Sekiranya Data Diterima, Ia Kemudian Mencetak
Kami mencetak (pada monitor bersiri) data, tetapi hanya jika paket yang diterima bukan permintaan.
// Imprime os dados somente se o pacote recebido não foi de requisição sementara (CAN.available ()) {Serial.print ((char) CAN.read ()); } Bersiri.println (); } Bersiri.println (); }}
Langkah 24: Muat turun Fail
INO
Disyorkan:
GRaCE- Kacamata yang boleh dilepas dan boleh klip Glowing: 5 Langkah
GRaCE- Glowing Removable and Clipable Eyewear: GRaCe (atau Glowing Removable and Clipable Eyewear) adalah prototaip yang saya buat untuk mereka yang sangat aktif dengan tangan mereka di dalam persekitaran yang gelap, seperti menara komputer atau objek dengan sedikit cahaya sekitar dalam. GRaCE dirancang dengan
Memotong dan Menyambungkan Semula Jalur Cahaya Phillips Hue (Bagi Kita Yang Tidak Terampil Dengan Pematerian): 6 Langkah
Memotong dan Menyambungkan Semula Jalur Cahaya Phillips Hue (Bagi Kita Yang Tidak Terampil Dengan Pematerian): Sekiranya anda mahir dengan pematerian, ada tulisan yang baik di sini oleh 'ruedli' mengenai cara melakukan ini tanpa memotong pembalut solder pada separuh Langkah-langkah ini adalah untuk kita yang sudah biasa, tetapi tidak mahir dengan pematerian. Saya telah melakukan penjualan asas
Projek Rumah Kaca (RAS): Pantau Elemen-elemen untuk Beraksi di Perkebunan Kita: 18 Langkah (dengan Gambar)
Projek Rumah Kaca (RAS): Pantau Elemen-elemen untuk Beraksi di Perkebunan Kita: Projek ini mencadangkan untuk memantau suhu udara, cahaya dan kelembapan, serta suhu dan kelembapan kebun. Ia juga mencadangkan untuk mengukur langkah-langkah ini yang sangat mudah dibaca di laman web Actoborad.comUntuk melakukan, kami menyambungkan 4 sensor ke N
Cara Mendapatkan Muzik Dari Laman Web HANYA (Haha) (Selagi Anda Boleh Mendengarnya, Anda Boleh Mendapatkannya Ok Baiklah Jika Ia Dimasukkan dalam Kilat Anda Mungkin Tidak Mampu) DIEDIT !!!!! Maklumat Tambahan: 4 Langkah
Cara Mendapatkan Muzik Dari Laman Web HANYA (Haha) (Selagi Anda Boleh Mendengarnya, Anda Boleh Mendapatkannya … Ok Baiklah Jika Ia Dimasukkan dalam Kilat Anda Mungkin Tidak Mampu) DIEDIT !!!!! Maklumat Tambahan: jika anda pernah pergi ke laman web dan memainkan lagu yang anda suka dan mahukannya, inilah petunjuk untuk tidak salah saya sekiranya anda mengacaukan sesuatu (satu-satunya cara ia akan berlaku adalah jika anda mula menghapus barang tanpa sebab ) Saya dapat mendapatkan muzik untuk
Craigslist: Panduan untuk Selebihnya Kita !: 11 Langkah
Craigslist: Panduan … untuk Selebihnya Kita !: Ini Musim Panas! Yang bermaksud ini adalah masa terbaik untuk membuang semua sampah di rumah anda. Tetapi adakah Amazon dan Ebay menyulitkan anda? Adakah anda tidak suka menghantar barang, membayar peratusan kepada syarikat, atau tidak dapat bertemu dengan penduduk tempatan, kemudian Craigslist