빠른 답변
MCP2515 CAN 버스 모듈을 Arduino와 함께 사용하려면 SPI 핀(CS, SCK, MOSI, MISO)을 연결하고 5V로 전원을 공급한 다음 MCP_CAN 라이브러리를 설치하고 간단한 스케치로 CAN 프레임을 송수신하세요. 모듈의 TJA1050 트랜시버가 물리적 CAN 신호를 처리하므로 CANH와 CANL을 버스에 연결하기만 하면 됩니다. 이 가이드에서는 배선, 라이브러리 설정 및 기본 송수신 예제를 설명합니다.
MCP2515를 Arduino에 배선하기
MCP2515 모듈은 SPI 통신을 사용하므로 Uno의 SPI 핀에 연결합니다: CS는 10번 핀(기본값), SCK는 13번, MOSI는 11번, MISO는 12번 핀에 연결합니다. 모듈에 5V와 GND로 전원을 공급합니다. CAN 버스 측면에서는 CANH와 CANL을 버스 라인에 연결합니다. 두 모듈로 테스트하는 경우 CANH는 CANH에, CANL은 CANL에 연결합니다. 반사를 방지하려면 버스 양 끝에 120옴 종단 저항을 추가하세요.
CAN 라이브러리 설치
가장 일반적인 라이브러리는 coryj Fowler의 MCP_CAN으로, Arduino 라이브러리 관리자에서 사용할 수 있습니다. 'MCP_CAN'을 검색하여 설치하세요. 설치 후 스케치에 라이브러리를 포함하고 올바른 SPI CS 핀과 보드 속도(일반적으로 자동차 OBD-II의 경우 500kbps)로 CAN 컨트롤러를 초기화합니다.
CAN 프레임 송수신
프레임을 보내려면 sendMsgBuf(id, ext, len, buf)를 사용하세요. 수신하려면 checkReceive()로 CAN_MSGAVAIL을 확인하고 readMsgBuf()로 읽습니다. MCP2515가 저수준 CAN 프로토콜을 처리하므로 코드는 메시지 ID와 데이터 바이트만 처리하면 됩니다. CAN은 브로드캐스트 방식이므로 모든 노드가 모든 메시지를 보며, 소프트웨어에서 ID로 필터링합니다.
단계별 설정
- 하드웨어 연결: MCP2515 모듈을 Arduino에 배선: VCC를 5V에, GND를 GND에, CS를 10번 핀에, SCK를 13번 핀에, MOSI를 11번 핀에, MISO를 12번 핀에 연결합니다. CANH와 CANL을 버스에 연결합니다. MOSI와 MISO를 바꾸지 않았는지 다시 확인하세요. 이는 흔한 실수입니다.
- MCP_CAN 라이브러리 설치: Arduino 라이브러리 관리자를 열고 'MCP_CAN'을 검색한 후 최신 버전을 설치하세요. #include 로 스케치에 포함시킵니다. 라이브러리가 검색되지 않으면 철자와 인터넷 연결을 확인하세요.
- CAN 컨트롤러 초기화: CS 핀으로 MCP_CAN 객체를 생성합니다(예: MCP_CAN CAN0(10)). setup()에서 CAN0.begin(CAN_500KBPS)를 호출하고 반환 값을 확인합니다. begin() 호출이 성공하면 CAN_OK(0)를 반환합니다. 그렇지 않으면 배선과 보드 속도를 확인하세요.
- CAN 메시지 보내기: 데이터 버퍼를 준비하고 CAN0.sendMsgBuf(0x123, 0, 8, data);를 호출합니다. 여기서 0x123는 메시지 ID이고 8는 데이터 길이입니다. ID가 버스의 다른 노드와 충돌하지 않도록 하세요.
- CAN 메시지 수신: loop()에서 CAN0.checkReceive() == CAN_MSGAVAIL로 메시지가 있는지 확인한 다음 CAN0.readMsgBuf(&len, buf)로 읽습니다. 메시지가 보이지 않으면 버스에 적절한 종단이 있고 모든 노드가 동일한 보드 속도를 공유하는지 확인하세요.
제품 정보
- MCP2515 CAN 버스 모듈 TJA1050 수신기 SPI 모듈: 자동차 OBDII/CAN 버스 모니터링 및 제어에 이상적입니다. 이 모듈은 자동차 진단에 바로 사용할 수 있으므로 차량의 OBD-II 포트에 연결하거나 모니터링 및 제어를 위한 맞춤형 CAN 노드를 구축할 수 있습니다.

