CAN 통신 모듈 MCP2515


1. CAN 통신 이란?

CAN (Controller Area Network)은 차량 내부를 포함한 많은 장치들 간에 통신하기 위해 사용되는 통신 프로토콜입니다. 주로 자동차 및 산업 자동화 분야에서 널리 사용됩니다.

CAN 통신은 다중 마스터 및 다중 슬레이브 구조로 이루어져 있습니다. 이 구조에서는 여러 장치들이 동시에 통신 버스를 공유하며, 각 장치는 식별 가능한 고유한 주소를 가지고 있습니다.

CAN 통신의 특징은 다음과 같습니다.

1.1 신뢰성

CAN은 신뢰성이 높은 통신을 제공합니다. 에러 검출 및 재전송 기능을 내장하고 있어 통신 중 발생할 수 있는 오류를 감지하고 복구할 수 있습니다.

1.2 우선순위 기반 통신

CAN은 우선순위 기반 통신을 지원합니다. 각 메시지에는 우선순위가 할당되며, 우선순위가 높은 메시지가 우선적으로 전송됩니다. 이를 통해 중요한 메시지에 대한 신속한 응답이 가능합니다.

1.3 멀티캐스팅 및 브로드캐스팅

CAN은 멀티캐스팅과 브로드캐스팅을 지원합니다. 하나의 메시지를 여러 개의 수신 장치에 동시에 전송하거나, 모든 장치에게 메시지를 전송할 수 있습니다.

1.4 실시간 통신

CAN은 실시간 통신을 지원하여 시간적으로 정확한 데이터 전송이 가능합니다. 이는 자동차의 제어 시스템 등 실시간 반응이 필요한 응용 분야에서 중요한 요소입니다.


CAN은 자동차에서는 엔진 제어, 브레이크 시스템, 에어백, 차량 네트워크 등 다양한 시스템 간의 통신에 사용되며, 산업 자동화 분야에서는 제어 시스템과 센서들 사이의 통신에 활용됩니다.


2. MCP2515 모듈 연결

아두이노에서 MCP2515 라이브러리로 adafruit mcp2515 라이브러리를 사용하기 때문에 여기에 맞는 핀 연결을 해야 합니다.

CAN 통신이기 때문에 주는쪽과 받는쪽 2개 연결이 필요하며 따라서 아두이노 2개와 CAN 통신 모듈 2개가 필요 합니다.

아두이노 우노를 기준으로 연결하겠습니다.

MCP2515모듈 = 아두이노 우노

INT = 6번핀

SCK = 13번핀

SI = 11번핀

SO = 12번핀

CS = 5번핀( 다른 핀 연결하면  CS핀 코드 변경 필요)

GND = GND

VCC = 5V


위와 같이 연결하고 CAN 통신 모듈 끼리 H와 L을 각각 연결해주면 됩니다.



여기에서 중요한 것이 CAN 통신의 경우 120옴의 종단 저항이 반드시 필요한데 이미 CAN 모듈에 적용되어 있습니다. 점퍼를 통해서 활성화 할 수 있는데 모듈 둘 다 종단 저항 옵션을 점퍼를 이용해서 활성화 해주세요.



3. 프로그램 테스트


우선 아두이노 IDE를 실행하고 라이브러리를 설치해야 합니다.


adafruit mcp2515 를 검색해서 관련 라이브러리까지 전부 설치해줍니다.




이후에 예제 코드를 두 개 각각 여시면 됩니다.
하나는 Receiver 예제를 열고 다른 하나는 Sender 예제를 열어서 각각의 아두이노에 넣어 줍니다.

그러면 통신이 잘 될 경우 아래와 같이 시리얼 통신 창에서 통신 되는 것을 확인할 수 있습니다.



참 쉽죠~ :)

통신 프로토콜은 아두이노 예제 코드를 참조하면 되고 좀 더 깊이 공부하고 싶은 분들은 마이크로칩스 MCP2515의 데이터시트를 보고 각각의 기능들을 확인하면 됩니다.

끝 :)