KAmodRPi RS485 CAN HAT – nakładka na Raspberry Pi z interfejsem CAN/RS485

W artykule prezentujemy nakładkę na Raspberry Pi KAmodRPi RS485 CAN HAT wyprodukowaną przez firmę Kamami.pl. Nakładka umożliwia komunikację za pomocą interfejsów CAN oraz RS485. W tekście zaprezentujemy także prosty przykład komunikacji za pomocą nakładki.

Magistrala CAN

CAN (Controller Area Network) to szeregowa magistrala komunikacyjna opracowana przez firmę Bosch w latach 80. XX wieku. Powstała z myślą o sprawnej współpracy układów elektronicznych w samochodach, a także ograniczeniu okablowania wewnątrz pojazdu. Magistrala wykorzystuje dwuprzewodową skrętkę i pracuje z maksymalną prędkością transmisji 1 Mb/s na dystansie do 40 m. Wraz ze zwiększaniem dystansu spada maksymalna prędkość transmisji (np. 250 kbit/s na 250 m).

Standard szybko zdobył sobie popularność i zaczęto go stosować również w samolotach, statkach, maszynach rolniczych, a także w automatyce przemysłowej, sieciach sensorowych itp. W 1991 Bosch opublikował specyfikację standardu CAN 2.0A oraz 2.0B, które są w praktyce używane po dziś dzień.

Dużą ilość informacji o standardzie CAN znajdą Państwo w artykule: Interfejs komunikacyjny CAN: podstawy.

Interfejs RS-485

Standard RS-485 (nazywany także EIA-485) to standard transmisji danych przeznaczony do linii transmisyjnych. Standard opisuje tylko wymagania elektryczne komunikacji. Powstał w latach 80. i został opublikowany przez organizację EIA. Sprawdza się głównie w aplikacjach przemysłowych, medycznych oraz użytkowych. Działa na zasadzie transmisji half-duplex, co oznacza, że nadawanie i odbiór danych odbywają się naprzemiennie.

Nakładka KAmodRPi RS485 CAN HAT

Nakładka KAmodRPi RS485 CAN HAT umożliwia komunikację minikomputera Raspberry Pi za pomocą interfejsów CAN oraz RS485. Obsługa interfejsu CAN realizowana jest przez układ MCP2515 i MCP2551, natomiast RS485 przez układ ST3485. Sygnały magistral wyprowadzone są na złącza goldpin oraz szybkozłącza. Moduł jest kompatybilny z płytkami Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+/3A+/400/4B. Wraz z modułem dostarczany jest zestaw śrubek oraz dystansów umożliwiający przykręcenie nakładki na malinkę.

Rys. 1. Nakładka KAmodRPi RS485 CAN HAT

Nakładka zawiera także diody sygnalizujące stan obu magistral, a także rezystory terminujące, które można dołączyć do magistrali za pomocą zworek. Możliwy jest także wybór trybu pracy AUTO, korzystający z automatycznej detekcji kierunku transmisji lub trybu DIR CTRL oznaczającą manualny wybór kierunku. Zmiany można dokonać za pomocą lutowanych zworek, a domyślnie wybrany jest tryb manualny.

Rys. 2. Położenie zworek wyboru trybu na płytce

Moduł ma wymiary 65 x 30 mm, co odpowiada wymiarowo komputerowi Raspberry Pi Zero.

Przykład użycia

Aby dołączyć płytkę do Raspberry Pi wystarczy nałożyć moduł na złącze rozszerzeń komputera.

Rys. 3. Moduł KAmodRPi RS485 CAN HAT dołączony do Raspberry Pi

W celach testowych połączyłem ze sobą dwie nakładki współpracujące z komputerami Raspberry Pi 3B+ oraz 3A+. Jako, że magistralę CAN wyprowadzono m.in. na złącza szpilkowe, do komunikacji wykorzystam zwykłe przewody żeńsko-żeńskie. Dwoma przewodami połączono wyprowadzenia L i H obu modułów.

Poniżej zaprezentowano połączony układ testowy.

Rys. 4. Dwa połączone moduły CAN pod kontrolą komputerów Raspberry Pi

Do prezentacji działania płytki wykorzystam kody przykładowe przygotowane dla podobnej płytki przez firmę Waveshare. Kody są dostępne na stronie https://www.waveshare.com/wiki/RS485_CAN_HAT.

Do wypakowania archiwum typu 7z w systemie Linux służy pakiet p7zip, który można standardowo zainstalować narzędziem apt-get. Polecenie służące do wypakowania archiwum to

Archiwum zawiera kody w języku Python, a także C z wykorzystaniem biblioteki WiringPi. W przypadku, gdy chcemy korzystać z języka Python, należy doinstalować bibliotekę python-can.

Aby móc korzystać z interfejsu CAN oraz sterownika układu MCP2515 należy zmodyfikować plik konfiguracyjny config.txt.

W tym pliku należy odkomentować linijkę

Oraz dodać na końcu linijkę:

Po zapisaniu pliku należy zrestartować malinkę. Teraz można sprawdzić czy kontroler został prawidłowo zainicjalizowany za pomocą polecenia

Po prawidłowej inicjalizacji odpowiedź powinna wyglądać następująco

Rys. 5. Odpowiedź polecenia po prawidłowej inicjalizacji sterownika CAN

Uruchomienie przykładów

W tym momencie można już uruchomić przykładowe programy. Na jednym komputerze uruchomimy nadawanie danych za pomocą interfejsu CAN, natomiast drugie urządzenie otrzyma zadanie odbioru oraz wyświetlenia danych.

Aby uruchomić odbiornik należy wykonać polecenia:

Aby na drugim komputerze uruchomić wysyłkę danych należy wykonać polecenia:

Praca programów wygląda następująco:

Rys. 6. Wysyłanie danych przez magistralę CAN

Rys. 7. Odbiór danych przez magistralę CAN

Przykładowe kody omówiono dokładnie w dokumencie User Manual na stronie https://www.waveshare.com/wiki/RS485_CAN_HAT. W dokumencie zawarto także opisy kodów w języku Python oraz skryptów do obsługi transmisji RS485. Dodatkowo polecamy także dokumentację socketów dla magistrali CAN w systemie Linux (https://www.waveshare.com/wiki/RS485_CAN_HAT).

Podsumowanie

Moduł KAmodRPi RS485 CAN HAT umożliwia poszerzenie możliwości Raspberry Pi o obsługę interfejsów CAN i RS485. Są to szeregowe magistrale komunikacyjne szeroko stosowane w przemyśle, motoryzacji, statkach, samolotach itd. Nakładka umożliwia więc testowanie urządzeń automotive opartych o popularną platformę Raspberry Pi.

Moduł KAmodRPi RS485 CAN HAT jest dostępny w ofercie sklepu Kamami.pl. Firma jest także autoryzowanym dystrybutorem komputerów Raspberry Pi w Polsce.

O autorze