솔루션 호스트와 Smart Display 간 CANopen 통신 (버튼 및 인디케이터 제어)

호스트와 Smart Display 간 CANopen 통신 (버튼 및 인디케이터 제어)

Jul 25, 2023

소개

호스트와 Smart Display 간 CANopen 통신

Smart Display를 제어하려면 시스템 인터페이스와 통신 프로토콜이 필요합니다. 이 글에서는 호스트 제어 관점에서 Arduino를 활용한 실제 예제를 통해 HOST가 명령을 전송하여 Smart Display의 Indicator 색상을 변경하는 방법을 설명합니다. 이 예제에서는 UI에 터치 버튼을 배치하고 Arduino에 물리 버튼을 연결합니다. 물리 버튼 또는 터치 버튼을 누르면 화면의 Indicator 색상이 변경되고 외부 LED가 켜지거나 꺼집니다.

이 애플리케이션에서는 Arduino 개발 보드를 사용하여 3.5인치 CAN Smart Display를 제어하는 방법을 설명합니다. 물리 버튼, 터치 버튼, 화면의 Indicator 및 보드의 LED를 프로그래밍하여 제어하는 방법과 Smart Display가 HOST로부터 명령을 수신하는 방법을 다룹니다. 본 예제에서는 CAN Bus Shield가 장착된 Arduino Mega 2560을 호스트 컨트롤러로 사용하며, CANopen을 통해 Smart Display와 통신합니다.

시스템 블록 다이어그램은 다음과 같습니다.

Arduino 호스트와 Smart Display 간 CANopen 통신

시스템 블록 다이어그램

이 애플리케이션에는 다음 구성 요소가 필요합니다.

  1. 3.5인치 CANopen Smart Display
  2. Arduino Mega 2560
  3. Arduino Mega 2560용 CAN Bus Shield
  4. CAN Bus Dongle
  5. 물리 버튼
  6. LED
  7. Smart Display GUI Builder v0.4.2 이상
 

이 데모는 다음 세 단계로 구성됩니다.

  1. GUI Builder에서 프로젝트 설계
  2. 프로젝트 빌드 및 업로드
  3. Arduino 호스트 프로그래밍
 

GUI Builder에서 프로젝트 설계

먼저 새 프로젝트를 생성하고 프로젝트 이름을 입력합니다. 다음으로 디바이스 유형을 선택합니다. 이 예제에서는 3.5인치 디바이스를 사용합니다. 통신 프로토콜로 CANopen을 선택하고 디스플레이 방향을 Landscape로 설정합니다. 그런 다음 UI 템플릿에서 Blank Template을 선택하고 Create를 클릭하여 새 프로젝트를 생성합니다. 설정 방법은 아래 그림과 같습니다.

GUI Builder에서 CANopen Smart Display 프로젝트 생성

설정을 완료하면 빈 페이지가 표시됩니다.

GUI Builder에서 생성된 Smart Display 빈 페이지

이 애플리케이션 예제에서는 작업 영역에 터치 버튼과 Indicator 위젯을 추가합니다. 컨트롤 패널에서 필요한 위젯을 선택한 후 작업 영역으로 드래그 앤 드롭합니다. 배치 예시는 아래 그림과 같습니다.

GUI Builder에 터치 버튼과 Indicator 위젯 배치

프로젝트 빌드 및 업로드

앞서 설명한 설정과 UI 디자인을 완료하면 프로젝트를 빌드하고 업로드할 수 있습니다. GUI Builder 툴바에서 Device를 클릭한 후 Device Property를 선택합니다. Device Property 창에서는 기본 보드레이트(Baud Rate)를 사용하거나 애플리케이션 요구 사항에 맞게 조정할 수 있습니다. Arduino 프로그램에 설정된 Baud Rate와 GUI Builder의 설정이 동일한지 확인하십시오. 설정을 완료한 후 Upload를 클릭하여 프로젝트를 Smart Display에 업로드합니다. 아래 그림을 참고하십시오.

GUI Builder에서 Smart Display로 프로젝트 업로드

프로젝트 업로드가 완료되면 “Upload project completed” 메시지가 표시됩니다. OK를 클릭하여 창을 닫습니다.

Smart Display 프로젝트 업로드 완료 화면

업로드가 완료되면 Smart Display에 시작 화면이 표시됩니다.

프로젝트 업로드 후 Smart Display 시작 화면

시작 화면이 끝나면 Smart Display가 업로드된 애플리케이션 화면으로 전환되며, 이를 통해 프로젝트가 정상적으로 빌드되고 업로드되었음을 확인할 수 있습니다.

업로드된 애플리케이션 화면을 표시하는 Smart Display

Arduino 호스트 프로그래밍

본 예제에서는 Arduino IDE v2.0.4를 사용하여 Arduino 호스트 프로그램을 작성합니다. CAN Bus 통신을 위해 mcp2515_can.h 라이브러리와 여러 보조 라이브러리를 사용합니다. 자세한 내용은 Arduino 프로그램 코드를 참조하십시오. 호스트와 Smart Display 간 통신을 구성할 때는 각 객체와 관련된 주소를 확인하는 것이 중요합니다. 호스트와 Smart Display 간 CAN Bus 통신에 대한 자세한 내용은 GUI Builder의 통신 로그를 참조하십시오. Arduino IDE 프로그램에는 필요한 객체 주소가 아래와 같이 정의되어 있습니다.

Arduino 호스트 프로그램의 Smart Display CANopen 통신 설정

CANopen 구조에서 Button의 index는 0(0x2000)에 해당하며, Indicator의 index는 1(0x2001)에 해당합니다. 각 객체의 index를 확인하는 것이 중요합니다. 객체의 index를 알고 있으면 Arduino 호스트 프로그램을 통해 해당 객체의 상태를 변경할 수 있습니다. 각 객체에 해당하는 index는 아래 시뮬레이션 로그 테이블에 표시된 명령 정보에서 확인할 수 있습니다.

GUI Builder 시뮬레이션 로그의 Button 객체 index

 

GUI Builder 시뮬레이션 로그의 Indicator 객체 index

여기에서는 각 객체의 데이터 타입(Data Type)을 정의합니다. 객체를 추가하려면 해당 객체의 데이터 타입도 프로그램에 정의해야 합니다.

Arduino 프로그램의 CANopen 객체 데이터 타입 정의

아래 그림은 ObjectFunCallback에서 각 객체로부터 수신한 값을 처리하는 방법을 보여줍니다. 사용자는 애플리케이션 요구 사항에 따라 코드를 수정하거나 다른 객체를 처리하기 위한 로직을 추가할 수 있습니다.

ObjectFunCallback을 통한 CANopen 객체 수신 값 처리

Arduino 호스트가 물리 버튼의 상태 변화를 감지하면 CANopen을 통해 해당 값을 Smart Display로 전송합니다. 명령 구조에 사용되는 ID와 sub-index는 아래 프로그램 코드를 참조하십시오. 이 부분의 프로그램은 물리 버튼의 상태에 따라 Indicator(object index 2)의 값을 업데이트합니다.

Arduino 호스트에서 CANopen을 통해 Indicator 값을 업데이트하는 프로그램

모든 객체의 레지스터 주소를 정의하고, 물리 버튼 및 LED와 같은 외부 구성 요소의 핀을 입력 또는 출력 모드로 설정한 후 보드레이트를 설정합니다. 아래 그림을 참고하십시오.

Arduino 프로그램의 객체 레지스터 주소 및 핀 설정

Arduino 프로그램의 CAN Bus 보드레이트 설정

마지막으로 이 애플리케이션 시나리오를 실행하는 데 필요한 로직을 loop()에 정의합니다. 물리 버튼 또는 Smart Display의 터치 버튼을 누르면 화면의 Indicator 색상이 변경되고 외부 LED가 켜지거나 꺼집니다.

Arduino loop()의 버튼 및 Indicator 제어 로직

Arduino IDE에서 프로그램을 정상적으로 검증하고 업로드한 후 물리 버튼 또는 Smart Display의 터치 버튼을 누르면 LED가 켜지고 Indicator 색상이 녹색으로 변경됩니다. Indicator가 빨간색이고 LED가 꺼져 있으면 물리 버튼과 터치 버튼이 모두 눌리지 않은 상태를 의미합니다.

물리 버튼 또는 터치 버튼을 이용한 Indicator 및 LED 제어

위에서 설명한 프로그램은 GitHub 링크에서 다운로드할 수 있습니다. 예제에는 본 Demo 프로젝트와 관련된 추가 파일 및 정보도 제공됩니다. 실제 하드웨어 구성은 아래 그림과 같습니다.

Arduino와 Smart Display CANopen 통신 데모의 실제 하드웨어 구성

위의 설정을 완료하면 물리 버튼 또는 Smart Display의 터치 버튼을 사용하여 화면의 Indicator 상태와 외부 LED를 제어할 수 있으며, 이를 통해 Smart Display CANopen 통신 데모가 완성됩니다.

결론

본 예제에서는 GUI Builder의 조작 및 활용 방법을 소개하고, CAN Bus를 사용하여 호스트 측 제어 애플리케이션을 개발하는 방법을 설명했습니다. 또한 호스트에서 명령을 송수신하여 Smart Display를 제어하는 방법도 보여줍니다. 이 예제를 통해 개발자는 호스트와 Smart Display 간의 CANopen 통신 및 제어 방식에 대한 이해를 높이고, 향후 Smart Display 애플리케이션 개발을 위한 참고 자료로 활용할 수 있습니다.

비즈니스에 맞는 디스플레이 솔루션에 관해 궁금한 점이 있으십니까? 문의!

구독

Winstar의 최신 소식을 전하는 이메일을 받아보세요.

문의

가격/데이터시트/일반 문의

기술 지원

각종 기술적인 정보가 궁금하시면 문의하세요.

go top
연계
close

우리는 귀하의 프라이버시를 소중히 여깁니다

"모든 쿠키 허용"을 클릭하면 사이트 탐색을 개선하고, 사이트 사용을 분석하며, 마케팅 및 성능 노력에 도움을 주기 위해 쿠키를 귀하의 장치에 저장하는 데 동의한 것으로 간주됩니다. 이 주제에 대한 추가 정보는 당사의 정책에서 확인할 수 있습니다. 개인정보 보호정책

우리는 귀하의 프라이버시를 소중히 여깁니다

Winstar와 일부 제3자는 www.winstar.com.tw에서 쿠키를 사용합니다. 쿠키의 종류, 목적 및 관련된 제3자에 대한 자세한 내용은 아래 및 당사의 쿠키 정책에 설명되어 있습니다. 웹사이트에서 최상의 경험을 얻으려면 "모두 허용"을 클릭하여 당사의 쿠키 사용에 동의해 주세요. 또한 선호 설정을 하거나 필수 쿠키를 제외한 쿠키를 거부할 수도 있습니다.

동의 설정 관리

항상 활성화
필수 쿠키

이 쿠키는 웹사이트를 탐색하고 개인 정보 설정, 로그인 또는 양식 작성과 같은 기능을 사용할 수 있도록 하는 데 필수적입니다.

분석 쿠키

“통계 쿠키”라고도 알려진 이러한 쿠키는 웹사이트 사용에 대한 정보를 수집합니다. 예를 들어 어떤 페이지를 방문했는지, 어떤 링크를 클릭했는지와 같은 정보입니다. 자세한 내용을 확인하세요.