Kanályzer - DIY CANBus monitor

Jedná se o jednoduchý interface mezi sběrnicí CAN a USB (případně RS232), kde jediné dva použité HW komponenty jsou CAN modul s MCP2515 a libovolné Arduino s ATMega328p.


Interface vznikl dle návodu a s využitím zdrojového kódu z https://github.com/nopnop2002/Arduino-CANBus-Monitor 

Využívám ho při základním servisním testování CAN sběrnice a komunikace po ní - na přehled, zda zařízení má chuť komunikovat, bohatě postačuje. Uvítal bych sice ještě možnost analýzy protokolu CANopen, ale to už po této jednoduché konstrukci nemůžu chtít.

Moji variantu jsem umístil do krabičkyx Fischer Elektronik AKG 55 24 50 (protože jsem ji měl doma a líbí se mi), ten CAN modul se vedle Arduina vešel jen taktak, za cenu přibroušení nepodstatných částí desek - výsledek je ale rozumně malý a kompaktní. Celé jsem to posadil na čínskou "papírovou" univerzálku, která je tam hlavně proto, aby to v té krabičce drželo (on se tenhle materiál snad ani k ničemu jinému nehodí).

Na CAN konektor jsem přišrouboval kabely s malými krokodýlky na konci, vytiskl jednoduchá čela, a to bylo všechno.

Ke stažení celý projekt včetně knihoven a obslužného SW pro Windows: USB_CAN.zip 


Potřebný HW:

Kanályzer - vnitřní provedení

Arduino (UNO nebo lépe Nano 3.0, resp. jakékoli jejich klony s Atmega328P s USB konektory dle libosti a preferencí): https://www.aliexpress.com/item/1005004904865598.html, https://www.laskakit.cz/arduino-nano-r3--atmega328p-klon--nepripajene-piny/

Modul s MCP2515: https://www.aliexpress.com/item/1005006309138796.html, https://www.laskakit.cz/mcp2515-can-bus-modul-tja1050--8mhz--spi/

Potřebný SW:

FW - zdroj (*.ino) přiložený ke stažení v archivu výše, originál je tady: https://github.com/nopnop2002/Arduino-CANBus-Monitor

Samozřejmě potřebujete i Arduino IDE.V něm doinstalovat knihovnu pro MCP (lze doinstalovat přímo z Arduino IDE, odkaz jen pro úplnost, kdyby se nedařila automatická instalace z IDE): https://github.com/coryjfowler/MCP_CAN_lib

SW pro Windows - opět v archivu výše, případně na: https://github.com/SeeedDocument/USB-CAN_Analyzer/tree/master/res

V archivu mám i verzi 8.00a, které vznikla z původní verze 8.00, ve které jsem upravil fonty z toho čínského Arialu na něco koukatelnějšího (pokud neznáte ResourceHacker, tak doporučuji - aplikace na podobné drobnosti k nezaplacení). Pokud byste s ní někdo měl jakékoli problémy, zkuste použít originál (tj. verzi bez "a" ve jméně).

HW propojení modulů dle tabulky, schéma netřeba:

Modul MCP2515 Arduino Nano
VCC VIN
GND GND
CS D10
SO D12
SI D11
SCK D13
INTZ D2

Víc drátování tam není - CAN se připojuje na šroubovací svorky, podle potřeby lze doplnit jumper na terminaci, celé se to napájí z USB.

Jak to rozhýbat:

Nainstalovat Arduino IDE, vybrat v Board manageru správnou desku (vybrat Nano, i kdybych to chtěl rozběhat na UNO nebo jeho klonu, je tam drobný rozdíl a hodí se to.) V Arduino IDE v Library manageru přidat knihovnu mcp_can.

Připojit Arduino, nechat Windows nainstalovat ovladače pro COM port, v Arduino IDE vybrat stejný port (pokud je vidět ve správci zařízení ve Win, ale v Arduino IDE ne, tak vystoupit/nastoupit z/do IDE).

Otevřít adresář s rozbaleným zdrojákem (zaarchivovaná verze viz příloha ARD_USBCAN.ino, jinak ke stažení na výše zmíněném githubu).

V Arduino IDE vybrat Upload. Pokud je všechno OK, přeloží a nahraje se kód. Pokud to failne na nahrávání, vybrat variantu procesoru Atmega328 (Old bootloader). (Tady je ten rozdíl - ve verzi pro UNO se se starým bootloaderem vůbec nepočítá, ale čínské klony ho s oblibou používají dodnes.) Zkusit nahrát znovu. Pokud to failne i teď, pozvat si někoho zkušenějšího, ať to rozhejbe, ale zvládají to i děti na prvním stupni ZŠ, tak si můžete někde třeba nějaké půjčit :)

Provoz:

Pokud nahrání proběhlo úspěšně, všechno zavřít, spustit  soft pro Windows - USBCAN V8.00 (resp 8.00a) je aktuálně poslední verze, předchozí verze mají každá jiný ksicht, ta V8 je asi nejchytřejší. Stačí pouze spustit, neinstaluje se.

COM Configure:
COM: Vybrat COM, na kterém sedí náš USBCAN HW.
COM bps: 115200 (jiná rychlost není podporovaná)

CAN Configure:
Mode: Normal mode
Type: Standard frame (USBCAN podporuje i Extended, ale pro nás není potřeba)
CAN bps: 1Mbps

Filter ID a Mask ID nechat nulové (pokud nevím, co dělám), klik na Set and Start.

Pokud je na CAN nějaký provoz, ukáže se veškerý provoz pro všechny ID v okně vpravo dole (a pokud jsem si je omezil filtrem a maskou, pak se ukážou jen ty, co prolezou. Překvapivě.).

V Reply to si mohu nadefinovat automatickou odpověď:
Tlačítko Add vpravo nahoře vygeneruje prázdnou větu, v ní přepíšu Receive ID na ID zprávy, na kterou chci odpovídat, vyplním nenulové Reply ID, do Data si zapíšu, co chci posílat (defaultně je tam předvyplněný řetězec).

Zakliknu checkbox na Auto Answer, při příchodu zprávy s daným ID se odešle moje právě definovaná zpráva zpět.

V okně More frames to send si mohu nadefinovat další zprávy k odeslání, včetně intervalu, v jakém se budou ze seznamu postupně odesílat. Zaškrtnout checkbox Sequence a Cycle , následně tlačítko Send selected frame a už se můžu kochat, jak se mi generuje odchozí provoz.

Experimentům se meze nekladou, není tam co rozbít (jo, ale třeba na CANbusu v autě bych to zkoušel jen hoooodně opatrně, tam už JE co rozbít.)


Komentáře:


Vložit komentář





8p6kuJ