Mundarija:
- 1 -qadam: Ishlatilgan manbalar
- 2 -qadam: CAN (Controller Area Network)
- 3 -qadam: CAN - Xususiyatlar
- 4 -qadam: O'chirish davri
- 5 -qadam: uzatish liniyasi kuchlanishlari (differentsial aniqlash)
- 6 -qadam: CAN standartlari va ramkalar formati
- 7 -qadam: CAN standartlari va ramkalar formati
- 8 -qadam: standartlar va ramkalar formati
- 9 -qadam: To'rt turdagi ramkalar (ramkalar)
- 10 -qadam: O'chirish - ulanish tafsilotlari
- 11 -qadam: O'chirish - ma'lumotlarni yozib olish
- 12 -qadam: O'chirish - ma'lumotlarni yozib olish
- 13 -qadam: O'chirish - ma'lumotlarni yozib olish
- 14 -qadam: Arduino kutubxonasi - CAN
- 15 -qadam: Github
- 16 -qadam: Transmitterning manba kodi
- 17 -qadam: Manba kodi: Loop (), standart CAN 2.0 paketini yuborish
- 18 -qadam: Manba kodi: Loop (), kengaytirilgan CAN 2.0 paketini yuborish
- 19 -qadam: Qabul qiluvchining manba kodi
- 20 -qadam: Manba kodi: Loop (), paketni olish va formatini tekshirish
- 21 -qadam: Manba: Loop (), bu masofaviy paket ekanligini tekshiradi
- 22 -qadam: Manba kodi: Loop (), Ma'lumot uzunligi so'ralgan yoki qabul qilingan
- 23 -qadam: Manba kodi: Loop (), agar ma'lumotlar qabul qilinsa, u keyin chop etiladi
- 24 -qadam: Fayllarni yuklab oling
Video: CAN protokoli - Ha, qila olamiz !: 24 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Yaqinda mening YouTube kanalim izdoshlari taklif qilgan yana bir mavzu CAN (Controller Area Network) protokoli edi, biz bugun bunga e'tibor qaratamiz. CAN bir vaqtning o'zida ketma -ket aloqa protokoli ekanligini tushuntirish muhimdir. Bu shuni anglatadiki, tarmoqqa ulangan modullar orasidagi sinxronizatsiya avtobusga yuborilgan har bir xabarning boshiga nisbatan amalga oshiriladi. Biz CAN protokolining asosiy tushunchalarini tanishtirishdan boshlaymiz va ikkita ESP32 bilan oddiy yig'ilishni amalga oshiramiz.
Bizning davrimizda ESPlar xo'jayin va qul vazifasini bajarishi mumkin. Sizda bir vaqtning o'zida bir nechta mikrokontroller uzatilishi mumkin, chunki CAN avtomatik ravishda hamma narsaning to'qnashuvi bilan shug'ullanadi. Loyihaning manba kodi juda oddiy. Tekshirib ko'r!
1 -qadam: Ishlatilgan manbalar
- ESP WROOM 32 ning ikkita moduli NodeMcu
- WaveShare -dan ikkita CAN translyatori
- Ulanish uchun o'tish moslamalari
- Qo'lga olish uchun mantiqiy analizator
- ESP va analizator uchun uchta USB kabel
- 10 metrli o'ralgan juftlik avtobus vazifasini bajaradi
2 -qadam: CAN (Controller Area Network)
- U Robert Bosch GmbH tomonidan 1980 -yillarda avtomobilsozlik sanoatiga xizmat ko'rsatish uchun ishlab chiqilgan.
- Ko'p yillar davomida uning mustahkamligi va amalga oshirish moslashuvchanligi tufayli keng tarqaldi. U harbiy texnika, qishloq xo'jaligi texnikasi, sanoat va binolarni avtomatlashtirish, robototexnika va tibbiy asbob -uskunalarda qo'llaniladi.
3 -qadam: CAN - Xususiyatlar
- Ikki simli ketma-ket aloqa
- Har bir kvadrat uchun maksimal 8 bayt foydali ma'lumot, bo'linishi mumkin
- Manzil tugunga emas, balki xabarga yo'naltirilgan
- Xabarlarga ustuvorlik berish va "kutish" xabarlarini o'tkazish
- Xatolarni aniqlash va signal berishning samarali qobiliyati
- Multi-master qobiliyati (barcha tugunlar avtobusga kirishni talab qilishi mumkin)
- Multicast qobiliyati (bir vaqtning o'zida bir nechta qabul qiluvchilar uchun bitta xabar)
- 40 metrli avtobusda 1 Mbit / s gacha uzatish tezligi (avtobus uzunligi oshishi bilan tezlikni pasaytirish)
- Konfiguratsiya moslashuvchanligi va yangi tugunlarni joriy etish (bitta avtobusda 120 ta tugunga qadar)
- Standart uskunalar, arzon narx va yaxshi mavjudlik
- Tartibga solingan protokol: ISO 11898
4 -qadam: O'chirish davri
Mana, menda uzatuvchi. Har bir tomonda bittasi bor va ular bir juft simlar bilan bog'langan. Ulardan biri ma'lumotlarni yuborish uchun, ikkinchisi esa ma'lumotlarni qabul qilish uchun javobgardir.
5 -qadam: uzatish liniyasi kuchlanishlari (differentsial aniqlash)
CAN -da dominant bit Zero hisoblanadi.
Chiziqni differentsial aniqlash shovqin sezuvchanligini pasaytiradi (EFI)
6 -qadam: CAN standartlari va ramkalar formati
11-bitli identifikatorli standart format
7 -qadam: CAN standartlari va ramkalar formati
29-bitli identifikatorli kengaytirilgan format
8 -qadam: standartlar va ramkalar formati
Shuni ta'kidlash kerakki, protokol allaqachon CRCni hisoblab chiqadi va ACK va EOF signallarini yuboradi, bular allaqachon CAN protokoli orqali amalga oshiriladi. Bu yuborilgan xabar noto'g'ri kelmasligini kafolatlaydi. Buning sababi shundaki, agar u axborotni tekshirish raqamiga teng bo'lgan CRC (ortiqcha tsiklli tekshirish yoki ortiqcha tekshirish) da muammo tug'dirsa, u CRC tomonidan aniqlanadi.
9 -qadam: To'rt turdagi ramkalar (ramkalar)
Shuni ta'kidlash kerakki, protokol allaqachon CRCni hisoblab chiqadi va ACK va EOF signallarini yuboradi, bular allaqachon CAN protokoli orqali amalga oshiriladi. Bu yuborilgan xabar noto'g'ri kelmasligini kafolatlaydi. Buning sababi shundaki, agar u axborotni tekshirish raqami bilan bir xil bo'lgan CRCda (keraksiz tsikl tekshiruvi yoki ortiqcha tekshirish) muammo tug'dirsa, u CRC tomonidan aniqlanadi.
To'rt turdagi ramkalar (ramkalar)
CAN -da ma'lumotlarni uzatish va qabul qilish to'rt turdagi kadrlarga asoslangan. Ramka turlari boshqaruv bitlarining o'zgarishi yoki hatto har bir holat uchun ramka yozish qoidalarining o'zgarishi bilan aniqlanadi.
- Ma'lumotlar doirasi: qabul qiluvchilar uchun uzatuvchi ma'lumotlarini o'z ichiga oladi.
- Masofaviy ramka: Bu tugunlardan birining ma'lumotlarini so'rash
- Xatolik ramkasi: bu avtobusdagi xatoni aniqlashda har qanday tugun tomonidan yuboriladigan ramka va uni barcha tugunlar aniqlay oladi.
- Haddan tashqari yuklanish ramkasi: Ma'lumotlarning haddan tashqari yuklanishi yoki bir yoki bir nechta tugunlarda kechikish tufayli avtobusda trafikni kechiktirishga xizmat qiladi.
10 -qadam: O'chirish - ulanish tafsilotlari
11 -qadam: O'chirish - ma'lumotlarni yozib olish
11-bitli identifikatorli standart CAN uchun olingan to'lqin uzunligi
12 -qadam: O'chirish - ma'lumotlarni yozib olish
29-bitli identifikatorli kengaytirilgan CAN uchun olingan to'lqin uzunligi
13 -qadam: O'chirish - ma'lumotlarni yozib olish
Mantiq analizatori tomonidan olingan ma'lumotlar
14 -qadam: Arduino kutubxonasi - CAN
Men bu erda CAN haydovchilar kutubxonasini o'rnatishingiz mumkin bo'lgan ikkita variantni ko'rsataman
Arduino IDE kutubxona menejeri
15 -qadam: Github
github.com/sandeepmistry/arduino-CAN
16 -qadam: Transmitterning manba kodi
Manba kodi: o'z ichiga oladi va sozlash ()
Biz CAN kutubxonasini o'z ichiga olamiz, disk raskadrovka uchun serialni ishga tushiramiz va CAN avtobusini 500 kbit / s tezlikda ishga tushiramiz.
#include // Inclui a biblioteca CAN sozlamalarini bekor qilishi mumkin () {Serial.begin (9600); // inicia ketma -ket para disk raskadrovka paytida (! Serial); Serial.println ("Transmissor CAN"); // Inarmiya yoki barramento 500 kbit/ s CAN bo'lsa, (! CAN.begin (500E3)) {Serial.println ("Falha ao iniciar o controlador CAN"); // caso não seja possibel invisier iniórérétérét la (1); }}
17 -qadam: Manba kodi: Loop (), standart CAN 2.0 paketini yuborish
Standart CAN 2.0 yordamida biz paketni yuboramiz. 11-bitli identifikator xabarni aniqlaydi. Ma'lumotlar bloki 8 baytgacha bo'lishi kerak. U ID 18 bilan paketni o'n oltilikda boshlaydi. U 5 baytni o'z ichiga oladi va funktsiyani yopadi.
void loop () {// Usando o CAN 2.0 padrão // Envia um pacote: u bir vaqtning o'zida 11 bitli identifikator (oldindan belgilash, voqea) // u 8 ta bayt Serial.println ("Enviando pacote") … "); CAN.beginPacket (0x12); // id 18 em o'n oltilik CAN.write ('h'); // 1º bayt CAN.write ('e'); // 2º bayt CAN.write ('l'); // 3º bayt CAN.write ('l'); // 4º bayt CAN.write ('o'); // 5º bayt CAN.endPacket (); // Serial.println ("Enviado.") encio yoki pacote uchun; kechikish (1000);
18 -qadam: Manba kodi: Loop (), kengaytirilgan CAN 2.0 paketini yuborish
Ushbu bosqichda identifikator 29 bitga ega. U 24 bitli identifikatorni yuborishni boshlaydi va yana 5 baytni yig'adi va chiqadi.
// Usando CAN 2.0 ni tanlashi mumkin // Envia um pacote: u 29 bitli identifikatorni tanlashda (oldindan belgilashda, hodisada) // 8 baytda Serial.println ("Enviando pacote estendido…") yozilgan; CAN.beginExtendedPacket (0xabcdef); // id 11259375 kasr (abcdef em hexa) = 24 bit oldindan yozilgan CAN.write ('w'); // 1º bayt CAN.write ('o'); // 2º bayt CAN.write ('r'); // 3º bayt CAN.write ('l'); // 4º bayt CAN.write ('d'); // 5º bayt CAN.endPacket (); // Serial.println ("Enviado") uchun encio o pacote; kechikish (1000); }
19 -qadam: Qabul qiluvchining manba kodi
Manba kodi: o'z ichiga oladi va sozlash ()
Shunga qaramay, biz CAN kutubxonasini o'z ichiga olamiz, disk raskadrovka uchun serialni ishga tushiramiz va CAN avtobusini 500 kbit / s tezlikda ishga tushiramiz. Agar xato yuz bersa, bu xato chop etiladi.
#include // Inclui a biblioteca CAN sozlamalarini bekor qilishi mumkin () {Serial.begin (9600); // inicia ketma -ket para disk raskadrovka paytida (! Serial); Serial.println ("Retseptor CAN"); // Inarmiya yoki barramento 500 kbit/ s CAN bo'lsa, (! CAN.begin (500E3)) {Serial.println ("Falha ao iniciar o controlador CAN"); // caso não seja possibel invisier iniórérétérét la (1); }}
20 -qadam: Manba kodi: Loop (), paketni olish va formatini tekshirish
Qabul qilingan paket hajmini tekshirishga harakat qildik. CAN.parsePacket () usuli menga bu paketning hajmini ko'rsatadi. Agar bizda paket bo'lsa, biz uning uzaytirilganligini tekshiramiz.
void loop () {// Ta'kidlash joizki, paketlarSiz = CAN.parsePacket (); if (packetSize) {// Maqsad Serial.println ("Recebido pacote."); agar (CAN.packetExtended ()) {// verifica se o pacote yoki estendido Serial.println ("Estendido"); }
21 -qadam: Manba: Loop (), bu masofaviy paket ekanligini tekshiradi
Bu erda biz qabul qilingan paket ma'lumot so'rovi ekanligini tekshiramiz. Bunday holda, ma'lumotlar yo'q.
if (CAN.packetRtr ()) {// Verifica se pacote é um pacote remoto (Requisição de dados), nesto não há dados Serial.print ("RTR"); }
22 -qadam: Manba kodi: Loop (), Ma'lumot uzunligi so'ralgan yoki qabul qilingan
Agar qabul qilingan paket so'rov bo'lsa, biz so'ralgan uzunlikni ko'rsatamiz. Keyin biz ma'lumotlarning uzunligini ko'rsatadigan ma'lumotlar uzunligi kodini (DLC) olamiz. Nihoyat, biz qabul qilingan uzunlikni ko'rsatamiz.
Serial.print ("Pacote com id 0x"); Serial.print (CAN.packetId (), HEX); if (CAN.packetRtr ()) {// se o pacote recebido é de recvisidão, indicamos complicito quloch Serial.print ("re requsitou o compimento"); Serial.println (CAN.packetDlc ()); // DLC (Data Length Code, que indica o compimento dos dados)} else {Serial.print ("e compimento"); // ko'rsatuvlar Serial.println (packetSize);
23 -qadam: Manba kodi: Loop (), agar ma'lumotlar qabul qilinsa, u keyin chop etiladi
Biz ma'lumotlarni (ketma -ket monitorda) chop etamiz, lekin faqat qabul qilingan paket so'rov bo'lmasa.
// Imkoniyatlarni o'chirib tashlamang, chunki (CAN.available ()) {Serial.print ((char) CAN.read ()); } Serial.println (); } Serial.println (); }}
24 -qadam: Fayllarni yuklab oling
INO
Tavsiya:
LED snapper: Ehtimol, siz qila oladigan sinov uskunalarining eng asosiy qismi: 3 qadam
LED snapper: Ehtimol, siz qila oladigan sinov uskunalarining eng asosiy qismi: sizga LED snapperini tanishtirishga ruxsat bering. Elektronika loyihalarini tuzatishda sizga yordam beradigan oddiy, ammo juda foydali test uskunalari. LED Snapper - bu ochiq manbali bosilgan elektron karta, bu sizga osongina qo'shish imkonini beradi
Siz bolalar bilan qila oladigan biologik parchalanish tajribasi !: 8 qadam
Siz bolalar bilan qila oladigan biologik parchalanish tajribasi !: Shubhasiz, qaynayotgan suv kompostlash sharoitiga yoki biodegradatsiyaning sekin, tabiiy jarayoniga o'xshamaydi. Biroq, issiqlik ishlatilganda, ba'zi materiallarning boshqalarga qaraganda qanday parchalanishini simulyatsiya qilishingiz mumkin
Mobil telefonlarni zaryad qila oladigan DIY quyosh batareyasi: 10 qadam
Mobil telefonlarni zaryad qila oladigan DIY quyosh batareyasi: falokat paytida elektr taqchilligiga javoban biz bir necha kun oldin kinetik energiya ishlab chiqarish bo'yicha o'quv qo'llanmasini ishga tushirdik. Ammo etarli kinetik energiyani olishning iloji yo'q. Elektr energiyasini olish uchun qanday usuldan foydalanamiz? Hozirgi vaqtda kinetikadan tashqari
KIndle teginish bilan buni qila olasizmi ?: 15 qadam (rasmlar bilan)
KIndle Touch bilan shunday qila olasizmi ?: Men hech kim nima uchun elektron o'quvchiga ega bo'lishni xohlashini hech qachon tushuna olmaganman. Keyin mening voyaga etgan bolalarim menga Kindle Touch -ni berishdi va men buni aqlli telefon yoki iPad boshqa odamlar uchun nima qilishini topdim. Bir kun u mening qarishimni o'rnini bosadi
Haqiqatan ham qila olmaydigan kompyuterda bir nechta qattiq disklar yoki optik disklar: 8 qadam
Haqiqatan ham qila olmaydigan kompyuterda bir nechta qattiq disklar yoki optik drayvlar: BIRINChI EVARS Shunday qilib, men ko'p yillar mobaynida trolling va o'qiganimdan so'ng, buni o'zim qilishga jur'at etdim. Xulosa qilib aytganda, men sizga IDE -ga qanday uskuna o'rnatishni ko'rsataman (bu holda ikkita IDE qattiq disk va ikkita IDE optik disklari)