CANBed to płytka rozwojowa Longan Labs przeznaczona do projektów z magistralą CAN-Bus. Łączy mikrokontroler zgodny z ekosystemem Arduino, kontroler CAN oraz transceiver warstwy fizycznej, więc w wielu prototypach zastępuje zestaw złożony z osobnej płytki Arduino i nakładki CAN. To wygodne rozwiązanie do szybkich testów w elektronice samochodowej, automatyce, robotyce i urządzeniach przemysłowych.
Co to jest CANBed?
Sercem CANBed V1 jest mikrokontroler ATmega32U4, znany m.in. z Arduino Leonardo. Układ pracuje z częstotliwością 16 MHz, ma 32 KB pamięci Flash, 2,5 KB SRAM oraz 1 KB EEPROM. Wbudowany kontroler USB pozwala programować płytkę bez dodatkowego konwertera USB-UART, bezpośrednio przez złącze micro-USB.
Komunikację CAN realizują dwa osobne układy. MCP2515 pełni rolę kontrolera CAN 2.0B i komunikuje się z mikrokontrolerem przez SPI. MCP2551 jest transceiverem, czyli układem warstwy fizycznej, który zamienia sygnały logiczne na różnicowe linie CAN_H i CAN_L. Taki podział jest typowy dla węzłów CAN opartych na mikrokontrolerach bez wbudowanego kontrolera CAN.
Magistrala CAN pracuje zwykle jako linia dwuprzewodowa z terminacją 120 Ω na obu końcach. CANBed ma na płytce rezystor terminujący, który można włączyć przełącznikiem, gdy moduł znajduje się na końcu szyny. To drobny element, ale w praktyce często decyduje o stabilności komunikacji.
Układ pinów CANBed v1
CANBed V1 wyprowadza najważniejsze linie ATmega32U4 oraz złącza potrzebne do pracy z magistralą CAN. Poniżej znajdują się elementy, które najczęściej wykorzystuje się podczas uruchamiania płytki.
18-pinowa listwa z interfejsami GPIO
Główna listwa udostępnia linie wejścia/wyjścia mikrokontrolera:
- Interfejs I²C (SCL i SDA), który może pracować również jako dwa piny cyfrowe
- Interfejs UART (Rx i Tx), również dostępny jako piny cyfrowe
- Cztery wejścia analogowe, które można wykorzystać także jako cyfrowe I/O
- Osiem cyfrowych pinów I/O
- Vin (5 V) oraz GND
Złącze micro-USB do programowania
Micro-USB służy do wgrywania szkiców z Arduino IDE, zasilania płytki podczas testów oraz komunikacji szeregowej z komputerem przy debugowaniu.
Złącze SPI — ICSP
Sześciopinowe złącze ICSP udostępnia magistralę SPI. Można go użyć do programowania mikrokontrolera zewnętrznym programatorem albo do obsługi narzędzi AVR, jeżeli projekt wymaga pracy poza Arduino IDE.
Wskaźnik CAN RX/TX
Diody RX i TX sygnalizują ruch na magistrali CAN. Podczas uruchamiania układu pozwalają szybko sprawdzić, czy moduł odbiera lub nadaje ramki.
9-pinowe złącze Sub-D (DB9)
Złącze DB9 umożliwia podłączenie przewodu CAN lub przewodu OBD-II. Domyślnie CANBed jest przygotowany pod układ wyprowadzeń OBD-II, ale na płytce można skonfigurować również wariant zgodny z CANopen.

Przełącznik rezystora terminującego 120 Ω
Rezystor 120 Ω należy włączyć wtedy, gdy CANBed jest jednym z dwóch skrajnych węzłów magistrali. Przy pracy na krótkim stanowisku testowym często wystarczą dwa takie zakończenia; przy dłuższej instalacji brak terminacji albo terminacja w złym miejscu powoduje odbicia sygnału i błędy ramek.
Złącza Grove (UART i I²C)
Dwa 4-pinowe złącza Grove upraszczają podłączanie czujników i modułów peryferyjnych. Jedno złącze obsługuje UART, drugie I²C.
Przycisk Reset
Przycisk resetu ponownie uruchamia ATmega32U4. Przydaje się przy testach firmware'u, zmianie konfiguracji i ponownym nawiązywaniu połączenia z portem szeregowym.
Cechy i specyfikacja
Cechy
- Płytka Arduino i interfejs CAN-Bus w jednym module
- Obsługa CAN V2.0B z szybkością do 1 Mb/s
- Kontroler MCP2515 połączony z mikrokontrolerem przez SPI
- Złącze 4-pinowe lub przemysłowe 9-pinowe złącze Sub-D (DB9)
- 18-pinowa listwa z liniami analogowymi, cyfrowymi, UART i I²C
- Możliwość wyboru układu wyprowadzeń CANopen albo OBD-II na złączu Sub-D
- Dwa 4-pinowe złącza kompatybilne z systemem Grove
- Interfejs SPI z częstotliwością do 10 MHz
- Obsługa ramek standardowych 11-bitowych i rozszerzonych 29-bitowych, w tym ramek danych i zdalnych
- Nie wymaga dodatkowej płytki mikrokontrolera
- Kompatybilność z Arduino IDE dzięki bootloaderowi Arduino Leonardo
- Zasilanie interfejsu CAN w zakresie 9–28 V
Specyfikacja

Pomysły na zastosowanie CANBed
Połączenie mikrokontrolera Arduino i gotowego interfejsu CAN sprawia, że CANBed dobrze nadaje się do szybkiego sprawdzania koncepcji oraz do stanowisk testowych.
- Nauka i eksperymenty z komunikacją CAN-Bus
- Prototypowanie urządzeń wyposażonych w interfejs CAN
- Odczyt danych diagnostycznych z pojazdów przez OBD-II
- Telemetria, rejestracja danych i testy układów pojazdu
- Sterowanie położeniem, napędami lub modułami w robotyce
- Dodanie kompletnego węzła CAN do większego prototypu elektroniki
Jak rozpocząć pracę z magistralą CAN?
Pierwsze uruchomienie sprowadza się do przygotowania Arduino IDE, zainstalowania biblioteki MCP2515 oraz wgrania przykładowego szkicu. Ważne jest też dobranie tej samej szybkości transmisji dla wszystkich węzłów na magistrali.
Konfiguracja Arduino IDE
W Arduino IDE wybierz płytkę Arduino Leonardo, ponieważ CANBed V1 korzysta z tego samego mikrokontrolera i bootloadera. Następnie wybierz port szeregowy, który pojawia się po podłączeniu modułu przewodem micro-USB.
Pobierz i zainstaluj bibliotekę
Zainstaluj bibliotekę obsługującą MCP2515/CAN, np. bibliotekę CANBed udostępnianą przez Longan Labs albo kompatybilną bibliotekę mcp_can. W Arduino IDE można dodać ją przez menedżer bibliotek lub przez opcję instalacji z archiwum ZIP.
Otwórz kod i wgraj go do płytki
Otwórz przykład wysyłania lub odbioru ramek, ustaw właściwą szybkość magistrali i upewnij się, że pin CS dla CANBed V1 jest ustawiony zgodnie z biblioteką. Po wgraniu programu diody RX/TX powinny reagować na aktywność na szynie.


CANBed — kod Arduino
Piny złącza OBD-II. Zwróć uwagę na numerację pinów w gnieździe pojazdu.

Żeńskie gniazdo OBD-II w samochodzie.




CANBed — najważniejsze funkcje API
Biblioteka dla MCP2515 udostępnia funkcje inicjalizacji magistrali, konfiguracji masek i filtrów, sprawdzania bufora odbiorczego oraz wysyłania i odbierania ramek. Poniżej omówienie tych elementów bez wchodzenia w szczegóły konkretnej wersji biblioteki.
Ustawianie szybkości transmisji
Podczas inicjalizacji należy wybrać szybkość magistrali, np. 125 kb/s, 250 kb/s, 500 kb/s albo 1 Mb/s. Wszystkie urządzenia podłączone do tej samej szyny muszą pracować z tą samą szybkością, inaczej nie będą poprawnie odbierać ramek.

Ustawienie maski odbiorczej i filtra


Parametr num wskazuje rejestr, który ma zostać użyty: 0 lub 1 dla maski oraz 0–5 dla filtra.
Parametr ext określa typ ramki. Wartość 0 dotyczy ramek standardowych, a wartość 1 ramek rozszerzonych.
Parametr ulData zawiera wartość maski albo filtra, czyli identyfikator lub zakres identyfikatorów, które mają zostać przepuszczone.
Maski i filtry pozwalają odbierać tylko te identyfikatory CAN, które są potrzebne aplikacji. W większej sieci ogranicza to liczbę ramek obsługiwanych przez mikrokontroler i upraszcza logikę programu.
CANBed — sprawdzenie odbioru
Funkcja sprawdzania odbioru informuje, czy w buforze MCP2515 czeka nowa ramka. Najczęściej wywołuje się ją w pętli programu przed próbą odczytu danych.

Odczyt identyfikatora CAN

CANBed — wysyłanie ramki
Parametr id jest identyfikatorem ramki CAN.
Parametr ext określa format ramki: 0 oznacza ramkę standardową, a 1 ramkę rozszerzoną.
Parametr len podaje długość pola danych w bajtach.
Parametr data_buf wskazuje bufor z bajtami, które mają zostać wysłane.
Funkcja wysyłająca przekazuje komplet pól do kontrolera MCP2515. To kontroler odpowiada za arbitraż, formatowanie ramki i fizyczne nadanie jej przez transceiver na magistralę.
CANBed — odbiór ramki

Parametr len zwraca długość odebranych danych.
Parametr buf wskazuje miejsce w pamięci, do którego biblioteka zapisuje odebrane bajty.
Po odczycie bufora program może sprawdzić identyfikator ramki, długość danych i samą zawartość wiadomości. Jeżeli wcześniej ustawiono maski i filtry, do aplikacji trafią tylko ramki spełniające te warunki.
Porównanie rodzin CANBed
Rodzina CANBed obejmuje kilka wersji różniących się mikrokontrolerem, obsługiwanym protokołem i zasobami sprzętowymi. CANBed V1 jest prostym wariantem AVR dla klasycznego CAN 2.0, natomiast nowsze wersje oferują m.in. rdzenie ARM lub RP2040 oraz obsługę CAN-FD. Wybór zależy od tego, czy projekt wymaga tylko podstawowej komunikacji CAN, czy także większej mocy obliczeniowej i nowszego standardu magistrali.

Podsumowanie
CANBed V1 to praktyczny moduł do nauki i prototypowania urządzeń z klasyczną magistralą CAN. ATmega32U4, MCP2515, MCP2551, wbudowana terminacja 120 Ω, DB9 oraz zgodność z Arduino IDE skracają czas od pierwszego szkicu do działającego stanowiska testowego. Gdy prototyp jest już sprawdzony, kolejnym krokiem bywa zaprojektowanie własnej płytki z interfejsem CAN, dobranie elementów pod realne środowisko pracy i przygotowanie dokumentacji produkcyjnej. W tym etapie pomagają nasze prototypy PCB oraz możliwości produkcyjne.
Projektujesz urządzenie z magistralą CAN? Zleć montaż PCB w OurPCB — wycena w 12 godzin roboczych.