우리는 귀하의 프라이버시를 소중히 여깁니다
"모든 쿠키 허용"을 클릭하면 사이트 탐색을 개선하고, 사이트 사용을 분석하며, 마케팅 및 성능 노력에 도움을 주기 위해 쿠키를 귀하의 장치에 저장하는 데 동의한 것으로 간주됩니다. 이 주제에 대한 추가 정보는 당사의 정책에서 확인할 수 있습니다. 개인정보 보호정책
Smart Display는 CANopen 및 Custom CAN ID를 비롯한 다양한 CAN 통신 프로토콜을 지원합니다. CANopen은 다양한 유형의 장치를 위한 통신 프로파일, 장치 프로파일 및 객체 모델을 정의하는 표준화된 통신 프로토콜로, CAN 버스상의 장치를 설정, 모니터링 및 제어하기 위한 표준화된 방식을 제공합니다. 반면, CAN 버스상의 장치에 기존 표준 프로토콜로 대응하기 어려운 특정 기능이나 요구 사항이 있는 경우에는 Custom CAN ID를 사용하여 애플리케이션 요구 사항에 맞게 CAN 통신을 정의할 수 있으며, 보다 유연한 설정이 가능합니다.
이 문서에서는 Arduino 보드, CAN 버스 모듈 및 센서를 사용하여 Custom CAN ID를 통해 7인치 Smart Display의 페이지를 전환하는 방법을 설명합니다. 프로젝트에 사용되는 하드웨어 구성 요소, Arduino 프로그램 컴파일 및 Custom CAN ID를 이용한 Smart Display 페이지 전환 구현 방법을 다룹니다.
이 예제를 통해 개발자는 Arduino 보드, CAN 버스 모듈 및 Smart Display 간의 Custom CAN ID 기반 통신과 제어 방식을 이해하고, 향후 Smart Display CAN 통신 애플리케이션 개발을 위한 참고 자료로 활용할 수 있습니다.

그림 1 시스템 블록 다이어그램
이 프로젝트에서는 Arduino Mega 2560을 호스트 컨트롤러로 사용하고, 프로그램 개발에는 Arduino IDE v2.0.4를 사용합니다. CAN 버스 인터페이스를 통해 Smart Display와 통신하기 위해 Arduino 호스트에 CAN 버스 실드를 연결합니다. 이 실드에는 MCP2515 CAN 컨트롤러와 MCP2551 CAN 트랜시버가 사용되며, Arduino 호스트와 Smart Display 간의 CAN 버스 통신을 지원합니다.
먼저 최신 버전의 Smart Display GUI Builder를 실행하고 새 프로젝트를 생성합니다. 프로젝트 이름을 입력하면 프로젝트 폴더가 자동으로 선택됩니다.
장치 유형을 선택합니다. 이 예제에서는 7인치 장치를 선택하고 통신 프로토콜로 "Custom CAN ID"를 선택합니다. 디스플레이 방향은 기본적으로 가로 모드로 설정됩니다. 다음으로 빈 UI 템플릿을 선택한 후 "Create" 버튼을 클릭하여 새 프로젝트를 생성합니다(그림 2).

그림 2
빈 프로젝트가 생성되면 그림 3과 같은 화면이 표시됩니다.

그림 3
이 예제에서는 두 번째 페이지가 필요합니다. "Page" 버튼을 클릭한 다음 플러스 버튼을 클릭하여 새 페이지를 추가합니다.

그림 4
배경 스타일은 "Resource" 패널에서 변경할 수 있습니다.

그림 5
인터페이스 오른쪽의 "background" 메뉴에서 원하는 배경 스타일을 선택합니다.

그림 6
레이아웃 설계와 앞의 단계를 완료하면 프로젝트를 빌드하고 업로드할 수 있습니다. "Device" 버튼을 클릭하고 "Device Property"를 선택합니다. 프로토콜과 보드레이트 설정을 확인하고 필요에 따라 조정합니다. GUI Builder의 보드레이트가 Arduino 프로그램에 설정된 보드레이트와 일치하는지 확인합니다. 설정을 완료한 후 "Connect to Device"를 클릭합니다. 장치가 정상적으로 연결되면 "Upload"를 클릭하여 프로젝트를 업로드합니다(그림 7).

그림 7
프로젝트 업로드가 완료되면 "OK"를 클릭합니다(그림 8).

그림 8
업로드가 완료되면 Smart Display에 시작 화면이 표시됩니다(그림 9).

그림 9
이후 시작 화면에서 프로젝트 화면으로 전환되며, 이를 통해 GUI Builder에서 프로젝트 빌드 및 업로드가 정상적으로 완료되었음을 확인할 수 있습니다(그림 10).

그림 10
Custom CAN ID 통신에는 mcp2515_can.h 라이브러리를 사용하며, SPI.h 라이브러리는 Serial Peripheral Interface(SPI) 통신에 사용합니다. mcp2515_can.h 라이브러리는 임베디드 시스템에서 일반적으로 사용되는 MCP2515 CAN(Controller Area Network) 컨트롤러와의 통신을 지원합니다.
이 라이브러리는 MCP2515 초기화, 비트레이트, 필터 및 마스크와 같은 CAN 통신 파라미터 설정, CAN 메시지 송수신 및 오류 확인 기능을 제공합니다. Arduino IDE 프로그램에서는 CAN ID, 제어 파라미터 및 관련 변수를 포함하여 CAN 통신에 필요한 설정을 그림 11의 코드에서 정의합니다. 또한 이 코드에서는 이후 프로그램에서 사용할 전역 변수, 상수 및 배열을 각각의 데이터 형식과 함께 초기화합니다.

그림 11
이 코드에는 프로그램 시작 시 한 번만 실행되는 setup() 함수가 포함되어 있습니다. Serial.begin()을 사용하여 시리얼 모니터와의 시리얼 통신을 초기화하고 보드레이트를 115200으로 설정합니다. pinMode()를 사용하여 내장 LED 핀을 출력으로 설정하고, 물리 버튼 핀을 입력으로 설정합니다. 그런 다음 while 루프를 사용하여 MCP2515 CAN 컨트롤러를 초기화하고, CAN.begin()에 CAN_250KBPS를 지정하여 CAN 비트레이트를 250 kbps로 설정합니다.

그림 12
changePageFunction() 함수는 MCP2515를 통해 CAN 명령을 전송하고, 특정 데이터 바이트가 포함된 CAN 메시지를 사용하여 Smart Display의 페이지를 전환합니다. 먼저 "device mode" 명령을 전송하여 Smart Display를 설정 모드로 전환한 다음, 원하는 페이지 번호가 포함된 "change page" 명령을 전송합니다. 마지막으로 "device mode" 명령을 다시 전송하여 Smart Display를 디스플레이 모드로 전환합니다.

그림 13
이 코드에는 setup() 함수가 완료된 후 반복적으로 실행되는 loop() 함수가 포함되어 있습니다.
프로그램은 analogRead()를 사용하여 물리 버튼의 전압 값을 읽고 buttonValue 변수에 저장합니다. buttonValue가 THRESHOLD 값보다 크면 물리 버튼이 눌린 것으로 판단합니다. 이 경우 프로그램은 nowPage 변수의 값을 1 증가시키고 sprintf()와 Serial.println()을 사용하여 현재 nowPage 값을 시리얼 모니터에 출력합니다.
다음으로 현재 nowPage 값을 changePageFunction()에 전달하여 지정된 디스플레이 페이지로 전환합니다. nowPage 값이 0이 아니면 digitalWrite()를 사용하여 13번 핀의 내장 LED를 켜고, 0이면 LED를 끕니다. lastDebounce 변수는 millis()를 사용하여 현재 시간으로 업데이트하여 가장 최근에 버튼을 누른 시간을 기록합니다. 프로그램은 while 루프에서 buttonValue를 계속 읽어 물리 버튼이 해제될 때까지 기다립니다.
마지막으로 루프 끝에서 delay(100)을 사용하여 100 ms의 지연 시간을 추가함으로써 CAN 버스 메시지가 적절한 시간 간격으로 전송되도록 합니다.

그림 14
자세한 내용은 Arduino 코드를 참조하십시오. 호스트와 Smart Display 간의 통신을 설정할 때는 관련 CAN 통신 설정이 올바르게 구성되어 있는지 확인해야 합니다. 호스트와 Smart Display 간의 통신에 대한 자세한 내용은 GUI Builder의 통신 로그를 참조하십시오.
Arduino IDE에서 프로그램 검증 및 업로드를 성공적으로 완료하면 물리 버튼을 사용하여 디스플레이 페이지를 전환할 수 있습니다. Smart Display에 첫 번째 페이지가 표시될 때는 LED가 꺼진 상태로 유지됩니다. 물리 버튼을 누르면 두 번째 페이지로 전환되면서 LED가 켜집니다(그림 15).

그림 15
이것으로 Custom CAN ID를 이용한 Smart Display 페이지 전환 예제가 완료됩니다.
프로그램, 데모 동영상 및 관련 자료를 다운로드하려면 GitHub 프로젝트 페이지를 참조하십시오. 실제 하드웨어 구성은 그림 16과 같습니다.

그림 16
이 예제에서는 Arduino 보드와 MCP2515 CAN 컨트롤러를 사용하여 Custom CAN ID를 통해 Smart Display의 페이지를 전환하는 방법을 설명했습니다. Arduino 호스트는 물리 버튼의 입력을 읽고 MCP2515를 통해 Smart Display로 CAN 명령을 전송하여 디스플레이 페이지를 전환합니다.
이 예제를 통해 개발자는 Arduino 호스트와 Smart Display 간의 Custom CAN ID 통신 및 기본적인 제어 방식을 이해하고, 향후 다른 Smart Display CAN 통신 애플리케이션을 개발할 때 참고 자료로 활용할 수 있습니다.
"모든 쿠키 허용"을 클릭하면 사이트 탐색을 개선하고, 사이트 사용을 분석하며, 마케팅 및 성능 노력에 도움을 주기 위해 쿠키를 귀하의 장치에 저장하는 데 동의한 것으로 간주됩니다. 이 주제에 대한 추가 정보는 당사의 정책에서 확인할 수 있습니다. 개인정보 보호정책