CANBed to opracowana przez firmę Longan Labs płytka rozwojowa, która łączy mikrokontroler kompatybilny z Arduino z gotowym interfejsem magistrali CAN-Bus. Dzięki temu jeden moduł zastępuje zestaw „płytka Arduino + osobny shield CAN”, co upraszcza prototypowanie systemów motoryzacyjnych i przemysłowych. W tym przewodniku omawiamy budowę CANBed, rozkład wyprowadzeń, specyfikację oraz sposób uruchomienia pierwszej komunikacji po magistrali CAN.
Co to jest CANBed?
Sercem płytki CANBed jest mikrokontroler ATmega32U4 — ten sam układ, który napędza Arduino Leonardo. Jego kluczową zaletą jest wbudowany sprzętowy interfejs USB, dzięki czemu płytka programuje się bezpośrednio przez port micro-USB, bez dodatkowego konwertera.
Za obsługę magistrali CAN odpowiadają dwa wyspecjalizowane układy. MCP2515 to samodzielny kontroler CAN komunikujący się z mikrokontrolerem przez interfejs SPI; obsługuje CAN 2.0B i zwalnia procesor z obsługi protokołu. MCP2551 (transceiver) stanowi warstwę fizyczną — zamienia logiczne sygnały TX/RX na różnicowe poziomy CAN_H i CAN_L na magistrali. Taki podział (kontroler + transceiver) to standardowa, sprawdzona topologia węzła CAN.
Magistrala CAN ma topologię liniową: wszystkie węzły podłączone są do wspólnej, dwuprzewodowej szyny zakończonej z obu stron rezystorami 120 Ω. CANBed ma taki rezystor terminujący wbudowany i włączany przełącznikiem, co ułatwia poprawne zakończenie magistrali.
Układ pinów CANBed v1
Płytka CANBed v1 udostępnia wyprowadzenia mikrokontrolera oraz złącza interfejsowe magistrali. Poniżej najważniejsze grupy wyprowadzeń i elementów.
18-pinowy header z interfejsami GPIO
Główna listwa udostępnia linie wejścia/wyjścia ATmega32U4:
- Interfejs I²C (SCL i SDA), który pełni też rolę dwóch pinów cyfrowych
- Interfejs UART (Rx i Tx), który również pełni rolę dwóch pinów cyfrowych
- Cztery wejścia analogowe (mogą służyć jako cyfrowe I/O)
- Osiem cyfrowych pinów I/O
- Vin (5 V) oraz GND
Złącze micro-USB do programowania
Port micro-USB służy zarówno do wgrywania szkiców z Arduino IDE, jak i do komunikacji szeregowej z komputerem podczas debugowania.
Złącze SPI — ICSP
Sześciopinowe złącze ICSP udostępnia magistralę SPI i pozwala wgrać bootloader lub programować mikrokontroler zewnętrznym programatorem.
Wskaźnik CAN RX/TX
Diody LED sygnalizują aktywność na magistrali — odbiór (RX) i nadawanie (TX) ramek, co ułatwia szybką diagnostykę komunikacji.
9-pinowe złącze Sub-D (DB9)
Standardowe przemysłowe złącze DB9 umożliwia podłączenie do magistrali CAN lub interfejsu OBD-II pojazdu; rozkład wyprowadzeń można wybrać zgodnie ze standardem CAN albo OBD-II.

Przełącznik rezystora terminującego 120 Ω
Wbudowany rezystor 120 Ω można załączyć przełącznikiem, gdy CANBed znajduje się na końcu magistrali. Poprawne zakończenie po obu stronach szyny jest kluczowe dla integralności sygnału różnicowego.
Złącza Grove (UART i I²C)
Dwa 4-pinowe złącza w standardzie Grove pozwalają dołączać moduły i czujniki bez lutowania.
Przycisk Reset
Przycisk resetu ponownie uruchamia mikrokontroler — przydatny przy programowaniu i debugowaniu.
Cechy i specyfikacja
Cechy
- Płyta rozwojowa Arduino i shield magistrali CAN w jednym module
- Obsługa CAN V2.0B z prędkością do 1 Mbps
- Kontroler MCP2515 z interfejsem SPI
- Złącze 4-pinowe lub 9-pinowe przemysłowe Sub-D (DB9)
- 18-pinowy header z pinami analogowymi, cyfrowymi oraz interfejsami UART i I²C
- Wybór rozkładu wyprowadzeń CAN lub OBD-II na złączu Sub-D
- Dwa 4-pinowe złącza kompatybilne z systemem Grove
- Interfejs SPI o częstotliwości do 10 MHz
- Ramki standardowe 11-bitowe i rozszerzone 29-bitowe (dane oraz zdalne)
- Nie wymaga dodatkowego mikrokontrolera do sterowania
- Kompatybilność z Arduino IDE
- Napięcie zasilania 9–28 V
Specyfikacja

Pomysły na zastosowanie CANBed
Dzięki połączeniu Arduino i sprzętowego CAN w jednym module CANBed sprawdza się w wielu projektach:
- Nauka i eksperymenty z komunikacją CAN-Bus
- Budowa prototypów urządzeń z interfejsem CAN
- Odczyt danych diagnostycznych z pojazdów przez OBD-II (car hacking, tuning)
- Systemy kontroli dynamiki i telemetrii pojazdu
- Systemy sterowania położeniem (np. w robotyce)
- Dodanie magistrali CAN i mikrokontrolera do innych produktów
Jak rozpocząć pracę z magistralą CAN?
Uruchomienie pierwszej komunikacji sprowadza się do trzech kroków: konfiguracji środowiska, instalacji biblioteki i wgrania szkicu.
Konfiguracja Arduino IDE
W Arduino IDE wybierz płytkę zgodną z Arduino Leonardo (ponieważ CANBed używa ATmega32U4) oraz właściwy port szeregowy odpowiadający podłączonemu modułowi micro-USB.
Pobierz i zainstaluj bibliotekę
Pobierz bibliotekę obsługi MCP2515/CAN (np. CANBed lub mcp_can) i zainstaluj ją przez menedżera bibliotek lub dodając archiwum ZIP. Biblioteka udostępnia funkcje inicjalizacji, wysyłania i odbioru ramek.
Otwórz kod i wgraj go do płytki
Otwórz przykładowy szkic z biblioteki, ustaw szybkość transmisji odpowiadającą Twojej magistrali i wgraj kod do płytki. Diody RX/TX potwierdzą aktywność na szynie.


CANBed-Kod Arduino
Piny złącza OBD. Zwróć uwagę na numery pinów

Żeńskie złącze OBD-II w pojeździe




CANBed — najważniejsze funkcje API
Biblioteka udostępnia komplet funkcji pozwalających skonfigurować kontroler i obsłużyć ruch na magistrali. Poniżej krótkie omówienie kluczowych z nich.
Ustawianie szybkości transmisji
Funkcja inicjalizacji ustawia prędkość magistrali (np. 125 kbps, 250 kbps, 500 kbps lub 1 Mbps). Wszystkie węzły na tej samej szynie muszą mieć identyczną szybkość transmisji.

Ustawienie maski odbiorczej i filtra


pokazuje, który rejestr ma być użyty (0 lub 1 dla maski i 0-5 dla filtra).
pokazuje status ramki. 0 oznacza standardową ramkę dla maski lub filtra, natomiast 1 oznacza ramkę rozszerzoną.
reprezentuje zawartość w masce lub filtrze.
Maski i filtry pozwalają węzłowi odbierać tylko interesujące go identyfikatory ramek, odciążając mikrokontroler od przetwarzania całego ruchu na magistrali.
CANBed — sprawdzenie odbioru
Funkcja sprawdza, czy w buforze odbiorczym czeka nowa ramka, zanim spróbujemy ją odczytać.

Uzyskaj identyfikator CAN

CANBed-Wyślij ramkę
jest identyfikatorem ramki
oznacza status ramki (0 - ramka standardowa, 1 - ramka rozszerzona)
pokazuje długość ramki
jest treścią wiadomości
Funkcja wysyłania kompletuje powyższe pola i przekazuje ramkę do kontrolera MCP2515, który nadaje ją na magistralę.
CANBed — odbiór ramki

pokazuje długość danych
jest miejscem zapisu danych
Funkcja odbioru kopiuje dane z bufora kontrolera do tablicy w pamięci mikrokontrolera wraz z informacją o długości ramki, dzięki czemu można je dalej przetwarzać w programie.
Porównanie rodzin CANBed
Pod marką CANBed dostępnych jest kilka wariantów różniących się mikrokontrolerem, obudową i sposobem wyprowadzenia magistrali — od kompaktowych modułów po wersje z gniazdem DB9 i wersje oparte na nowszych rdzeniach. Wybór zależy od wymaganej mocy obliczeniowej, dostępnych interfejsów oraz formy mechanicznej docelowego urządzenia.

Podsumowanie
CANBed to wygodny moduł łączący Arduino z gotowym węzłem CAN opartym na sprawdzonej parze MCP2515 + MCP2551. Wbudowany rezystor terminujący, złącze DB9 i kompatybilność z Arduino IDE skracają drogę od pomysłu do działającego prototypu systemu motoryzacyjnego lub przemysłowego. Po sprawdzeniu koncepcji na płytce deweloperskiej kolejnym krokiem bywa zaprojektowanie własnej płytki z interfejsem CAN dla produkcji seryjnej — w tym pomaga usługa prototypowania PCB oraz nasze możliwości produkcyjne.
Projektujesz urządzenie z magistralą CAN? Zleć montaż PCB w OurPCB — wycena w 12 godzin roboczych.