
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:00

Saya telah belajar CAN selama tiga minggu, dan sekarang saya telah menyelesaikan beberapa aplikasi untuk mengesahkan hasil pembelajaran saya. Dalam tutorial ini, anda akan belajar bagaimana menggunakan Arduino untuk melaksanakan komunikasi CANBUS. Sekiranya anda mempunyai cadangan, selamat datang untuk meninggalkan mesej.
Bekalan:
Perkakasan:
- Maduino Zero CANBUS
- Modul Suhu & Kelembapan DHT11
- 1.3 "I2C OLED 128x64- Biru
- Kabel DB9 hingga DB9 (wanita ke wanita)
- Talian Dupont
Perisian:
Arduino IDE
Langkah 1: Apa itu CANBUS


Mengenai BOLEH
CAN (Controller Area Network) adalah rangkaian komunikasi bersiri yang dapat mewujudkan kawalan masa nyata yang diedarkan. Ia dikembangkan untuk industri automotif untuk menggantikan tali pendawaian kompleks dengan bas dua wayar.
Protokol CAN menentukan Lapisan Pautan Data dan sebahagian daripada Lapisan Fizikal dalam model OSI.
Protokol CAN diseragamkan ISO dengan ISO11898 dan ISO11519. ISO11898 adalah standard komunikasi berkelajuan tinggi CAN dengan kelajuan komunikasi 125kbps-1Mbps. ISO11519 adalah standard komunikasi berkelajuan rendah CAN dengan kelajuan komunikasi kurang dari 125kbps.
Di sini kita memberi tumpuan kepada CAN berkelajuan tinggi.
ISO-11898 menerangkan bagaimana maklumat dilalui antara peranti di rangkaian dan sesuai dengan model Open Systems Interconnection (OSI) yang ditakrifkan dari segi lapisan. Komunikasi sebenar antara peranti yang dihubungkan oleh medium fizikal ditentukan oleh lapisan fizikal model
- Setiap unit CAN yang disambungkan ke bas boleh dipanggil simpul. Semua unit CAN disambungkan ke bas yang dihentikan pada setiap hujungnya dengan perintang 120 Ω untuk membentuk rangkaian. Bas ini terdiri daripada laluan CAN_H dan CAN_L. Pengawal CAN menentukan tahap bas berdasarkan perbezaan tahap kuasa pada kedua-dua wayar. Tahap bas dibahagikan kepada tahap dominan dan resesif, yang mesti menjadi salah satu daripadanya. Pengirim menghantar mesej kepada penerima dengan membuat perubahan di tingkat bas. Apabila garis logik "dan" dijalankan di dalam bas, tahap yang dominan adalah "0" dan tahap resesif adalah "1".
- Dalam keadaan dominan, voltan CAN_H kira-kira 3.5V dan voltan CAN_L kira-kira 1.5V. Dalam keadaan resesif, voltan kedua-dua talian sekitar 2.5V.
- Isyaratnya adalah perbezaan itulah sebabnya DAPAT memperoleh kekebalan kebisingan dan toleransi kesalahannya. Isyarat pembezaan yang seimbang mengurangkan gandingan bunyi dan membolehkan kadar isyarat yang tinggi berbanding kabel pasangan berpusing. Arus di setiap garis isyarat sama tetapi ke arah yang berlawanan dan menghasilkan kesan pembatalan medan yang merupakan kunci kepada pelepasan bunyi rendah. Penggunaan penerima pembezaan seimbang dan pemasangan kabel berpasangan meningkatkan penolakan mod biasa dan kekebalan bunyi tinggi bas CAN.
DAPAT Pemancar
Transceiver CAN bertanggungjawab untuk penukaran antara tahap logik dan isyarat fizikal. Tukarkan isyarat logik ke tahap pembezaan atau isyarat fizikal ke tahap logik.
DAPAT Pengawal
CAN Controller adalah komponen inti CAN, yang menyedari semua fungsi lapisan pautan data dalam protokol CAN dan secara automatik dapat menyelesaikan protokol CAN.
MCU
MCU bertanggungjawab untuk kawalan litar fungsi dan pengawal CAN. Sebagai contoh, parameter pengawal CAN diinisialisasi semasa simpul dimulakan, bingkai CAN dibaca dan dihantar melalui pengawal CAN, dll.
Langkah 2: Mengenai Komunikasi CAN
Apabila bas tidak berfungsi, semua nod boleh mula menghantar mesej (kawalan multi-master). Node yang pertama kali memasuki bas mendapat hak untuk menghantar (mod CSMA / CA). Apabila berbilang nod mula dihantar pada masa yang sama, simpul yang menghantar mesej ID keutamaan tinggi mendapat hak untuk menghantar.
Dalam protokol CAN, semua mesej dihantar dalam format tetap. Apabila bas tidak berfungsi, semua unit yang disambungkan ke bas dapat mula menghantar mesej baru. Apabila lebih daripada dua sel mula menghantar mesej pada masa yang sama, keutamaan ditentukan berdasarkan pengecam. ID tidak mewakili alamat tujuan kiriman, melainkan keutamaan mesej yang memasuki bas. Apabila lebih daripada dua sel mula menghantar mesej pada masa yang sama, setiap bit ID tanpa faedah ditimbangtara satu demi satu. Unit yang memenangkan timbang tara dapat terus mengirim mesej, dan unit yang kehilangan timbang tara segera berhenti menghantar dan menerima pekerjaan.
Bas CAN adalah jenis bas yang disiarkan. Ini bermaksud bahawa semua nod dapat 'mendengar' semua penghantaran. semua node akan sentiasa mengambil semua lalu lintas. Perkakasan CAN menyediakan penapisan tempatan sehingga setiap nod hanya dapat bertindak balas terhadap mesej yang menarik.
Langkah 3: Bingkai

Peranti CAN menghantar data ke seluruh rangkaian CAN dalam paket yang disebut bingkai. CAN mempunyai empat jenis bingkai:
- Bingkai data: bingkai yang mengandungi data nod untuk penghantaran
- Bingkai jarak jauh: bingkai yang meminta transmisi pengenal tertentu
- Rangka ralat: bingkai yang dihantar oleh sebarang nod yang mengesan kesalahan
- Overload frame: bingkai untuk menyuntikkan kelewatan antara data atau bingkai jarak jauh
Rangka data
Terdapat dua jenis bingkai data, standard dan diperluas.
Makna bidang bit Rajah adalah:
- SOF - Bit permulaan bingkai tunggal (SOF) yang dominan menandakan permulaan mesej, dan digunakan untuk menyegerakkan nod pada bas setelah terbiar.
- Pengecam-Pengecam Standard CAN 11-bit menetapkan keutamaan mesej. Semakin rendah nilai binari, semakin tinggi keutamaannya.
- RTR – Permintaan transmisi jarak jauh tunggal (RTR) bit
- IDE - Bit pelanjutan pengenal tunggal (IDE) yang dominan bermaksud pengecam CAN standard tanpa pelanjutan sedang dihantar.
- R0 – Bit terpelihara (untuk kemungkinan penggunaan oleh pindaan standard masa depan).
- DLC – Kod panjang data 4-bit (DLC) mengandungi jumlah bait data yang dihantar.
- Data – Hingga 64 bit data aplikasi dapat dikirimkan.
- CRC – Pemeriksaan redundansi siklik 16-bit (15 bit plus delimiter) (CRC) mengandungi checksum (jumlah bit yang dihantar) dari data aplikasi sebelumnya untuk pengesanan ralat.
- ACK – ACK adalah 2 bit, satu adalah bit pengakuan dan yang kedua adalah pembatas.
- EOF - Medan hujung bingkai (EOF), 7-bit ini menandakan akhir bingkai CAN (mesej) dan melumpuhkan pemprosesan bit, menunjukkan ralat pemadat ketika dominan. Apabila 5 bit tahap logik yang sama berlaku berturut-turut semasa operasi normal, sedikit tahap logik yang bertentangan dimasukkan ke dalam data.
- IFS – Ruang interframe 7-bit (IFS) ini mengandungi masa yang diperlukan oleh pengawal untuk memindahkan bingkai yang diterima dengan betul ke kedudukannya yang betul di kawasan penyangga mesej.
Timbang Tara
Dalam keadaan siaga bas, unit yang mula menghantar mesej terlebih dahulu mendapat penghantaran yang betul. Apabila beberapa unit mula menghantar pada masa yang sama, setiap unit penghantaran bermula pada bahagian pertama segmen timbang tara. Unit dengan jumlah keluaran berterusan yang dominan dapat terus dihantar.
Langkah 4: Kelajuan dan Jarak

Bas CAN adalah bas yang menghubungkan beberapa unit pada masa yang sama. Secara teorinya tidak ada had jumlah unit yang dapat dihubungkan. Namun, dalam praktiknya, jumlah unit yang dapat dihubungkan dibatasi oleh kelewatan masa di dalam bas dan beban elektrik. Kurangkan kelajuan komunikasi, tingkatkan jumlah unit yang dapat dihubungkan, dan tingkatkan kelajuan komunikasi, jumlah unit yang dapat dihubungkan berkurang.
Jarak komunikasi secara terbalik berkaitan dengan kecepatan komunikasi, dan semakin jauh jarak komunikasi, semakin kecil kecepatan komunikasi. Jarak yang lebih panjang boleh menjadi 1km atau lebih, tetapi kelajuannya kurang dari 40kps.
Langkah 5: Perkakasan

Modul Maduino Zero CAN-BUS adalah alat yang dikembangkan oleh Makerfabs untuk komunikasi CANbus - berdasarkan Arduino, dengan pengawal CAN dan transceiver CAN, untuk membuat port CAN-siap yang boleh digunakan.
- MCP2515 adalah pengawal CAN yang berdiri sendiri yang melaksanakan spesifikasi CAN. Ia mampu menghantar dan menerima kedua-dua data standard dan diperpanjang dan bingkai jarak jauh.
- Antara muka MAX3051 antara pengawal protokol CAN dan wayar fizikal garis bus dalam rangkaian kawasan pengawal (CAN). MAX3051 menyediakan keupayaan penghantaran berbeza ke bas dan keupayaan penerimaan pembezaan ke pengawal CAN.
Langkah 6: Sambungan

Sambungkan modul DHT11 ke modul CAN-BUS Maduino Zero dengan wayar untuk digunakan sebagai instrumen untuk menyokong komunikasi CAN. Begitu juga, sambungkan paparan ke modul untuk menerima data dan memaparkannya.
Hubungan antara Maduino Zero CANBUS dan DHT11 :
Maduino Zero CANBUS - DHT11
3v3 ------ VCC GND ------ GND D10 ------ DATA
Hubungan antara Maduino Zero CANBUS dan OLED:
Maduino Zero CANBUS - OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
Gunakan kabel DB9 untuk menyambungkan dua modul Maduino Zero CANBUS.
Langkah 7: Kod
MAX3051 menyelesaikan penukaran tahap pembezaan kepada isyarat logik. MCP2515 melengkapkan fungsi CAN seperti pengekodan dan penyahkodan data. MCU hanya perlu memulakan pengawal dan menghantar dan menerima data.
- Github:
- Setelah dipasang Arduino, tidak ada pakej untuk menyokong papan (Arduino zero) yang diperlukan untuk dipasang.
- Pilih alat -> Papan -> Pengurus Papan, cari "Arduino zero" dan pasang "Arduino SAMD Boards".
- Pilih Tools -> Board -> Arduino Zero (Native USB Port), pilih Tools -> Port -> com…
- Setelah mendapat program dari GitHub, anda perlu memastikan bahawa semua fail ada di dalam direktori projek, yang berisi fail perpustakaan yang mendukung CANBUS.
- Pasang perpustakaan sensor DHT oleh Adafruit, yang digunakan untuk menggerakkan DHT11 untuk mendapatkan suhu dan kelembapan.
- Gunakan alamat yang berbeza untuk menghantar suhu dan kelembapan secara berasingan dalam kod Test_DHT11.ino.
CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);
kelewatan (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); kelewatan (500);
"0x10" adalah ID pesan, "0" adalah bingkai standar rata-rata, "stmp1.length ()" adalah panjang pesan, "stmp_send1" adalah data yang dikirim.
- Dalam kod Test_OLED.ino, semua mesej di CANBUS diterima dengan pertanyaan dan maklumat yang diperlukan dipaparkan di OLED.
- Muat naik program Maduino-CANbus-RS485 / Test_DHT11_OLED / Test_DHT11 / Test_DHT11.ino ke modul yang disambungkan ke sensor, dan Muat naik program Maduino-CANbus RS485 / Test_DHT11_OLED / Test_OLED / Test_OLED.ino ke modul lain yang bersambung ke OLED.
Langkah 8: Tunjukkan


Kuasa pada dua modul, suhu dan kelembapan akan ditunjukkan pada paparan.
Disyorkan:
Panduan Ringkas untuk Fotografi: 4 Langkah

Panduan Mudah untuk Fotografi: Hari ini kita akan membincangkan beberapa tetapan utama pada kamera dslr yang harus anda ketahui. Sekiranya anda mengetahui ini, anda boleh mengambil gambar kami ke tahap seterusnya dengan menggunakan mod manual
"Robot Kit" ringkas untuk Kelab, Ruang Makmal Guru dan lain-lain: 18 Langkah

"Robot Kit" ringkas untuk Kelab, Ruang Makmal Guru dan lain-lain: Ideanya adalah untuk membina sebuah kit yang kecil namun boleh dikembangkan untuk ahli-ahli kami " Pertubuhan Seni Robotik TN Tengah ". Kami merancang bengkel di sekitar kit, terutamanya untuk pertandingan, seperti garis berikut dan perjalanan cepat. Kami telah menggabungkan Arduino
Tutorial: Cara Membuat Sensor Suhu Ringkas dengan Menggunakan DS18B20 dan Arduino UNO: 3 Langkah

Tutorial: Cara Membuat Sensor Suhu Ringkas dengan Menggunakan DS18B20 dan Arduino UNO: Penerangan: Tutorial ini akan menunjukkan kepada anda beberapa langkah mudah mengenai cara menjadikan sensor suhu berfungsi. Hanya memerlukan beberapa minit untuk memperbaikinya dalam projek anda. Semoga berjaya ! Termometer digital DS18B20 menyediakan suhu Celsius 9-bit hingga 12-bit
Headmount untuk Kamera Ringkas: 4 Langkah

Headmount untuk Kamera Ringkas: Ini adalah kit kamera terpasang di kepala yang paling murah yang dapat saya dapatkan. Kacamata kimpalan ($ 3- $ 5), sehelai pita regangan, ($ 1- $ 2). Itu sahaja. Potong lubang di pita dan pasangkan di kepala anda. Jalur getah mungkin juga berlaku. Ini adalah
Papan Komputer Ringkas dan Mudah untuk Pangkuan Anda: 4 Langkah

Sokongan Laptop Ringkas dan Mudah untuk Pangkuan Anda: Saya melihat-lihat banyak kedai untuk komputer riba yang mengalir udara ke komputer riba, tetapi tempat yang sebenarnya boleh saya gunakan di pangkuan saya. Tidak menemui apa-apa yang saya mahukan, jadi saya memutuskan untuk membuat sendiri