다수의 HMI를 서로 인터페이스하기 위한 합리적인 방법
  • 2015-06-05
  • 김언한 기자, unhankim@elec4.co.kr
  • 글|고든 룬(Gordon Lunn), FTDI Chip


휴대용 가전제품용 HMI는 독립형으로 사용되는 것으로 많이 알려져 있다. 그러나 여러 유닛이 함께 인터페이스될 필요가 있는 상황도 상당수 존재한다. 이와 같은 종류의 HMI 구조의 적용 가능한 예를 소개한다.

터치형 HMI는 전자 하드웨어를 조작하는데 있어서 기존의 스위치나 버튼에 비해 직관적이고 자연스러운 방법을 제공하며 사용자에게 조금 더 즐거운 경험을 선사한다. 이제는 모든 소비자형 가전제품에 널리 접목이 돼 있으며, 이 외에도 소매, 의료, 홈 자동화, 산업용 통제, 백색 가전제품 등 다양한 분야에도 적용할 수 있는 기회가 무궁무진하다고 볼 수 있다.
 
대체적으로 휴대용 가전제품용 HMI는 독립형으로 사용되는 것으로 많이 알려져 있으나, 더욱 포괄적인 시스템을 만들기 위해 여러 유닛이 함께 인터페이스될 필요가 있는 상황도 상당수 존재한다. 이 글은 위와 같은 종류의 HMI 구조의 적용이 가능한 예시에 대해 기술한다.

복수의 HMI를 연결할 경우의 장점으로는 각각의 일관성 있는 디스플레이를 예를 들 수 있다. 이를 통해 한 개의 HMI에 입력이 된 데이터 값은 연결되어 있는 다른 HMI를 운영/조망하는데 있어서 더 이해하기 쉽게끔 도와준다. HMI는 다양한 배열이 가능하다. 예를 들어 피어투피어(Peer-to-peer) 토폴로지 방식뿐만 아니라 중앙 서버를 통해 여러 유닛을 모두 연결하는 방식도 가능하다.

컨슈머 분야를 예를 들자면, 소비자는 상점에서 POS 기계를 사용해 구매를 희망하는 상품을 선택한다. 이 구매정보는 곧 물류창고로 전송되며, 창고에서는 이 정보를 통해 소비자가 선택한 물건을 수집할 준비를 하게 된다. 또한, 레스토랑의 각 테이블에 터치패널을 내장할 수도 있다. 내장된 터치패널을 통해 손님은 원하는 음식과 음료를 선택할 수 있으며, 이러한 주문 데이터는 주방에 있는 응답용 디스플레이로 전송된다.

홈 자동화의 경우, 네트워크의 각 디스플레이 유닛을 통해 전달되는 정보를 통해 거주자가 방의 온도를 세팅할 수 있도록 해주는 등의 기능을 제공한다.

이렇게 접목이 가능한 부분이 많음에도 아직까지 적용이 이루어지지 않은 이유는 무엇이었을까? 지금까지의 HMI 시스템은 너무 복잡하고, 경제적 가치를 따졌을 경우에 운영비용이 지나치게 높았기 때문이다. 그러나 상황은 바뀌었고, 반도체 기술의 최신 개발동향은 엔지니어들에게 미래형 HMI의 설계에 대한 인식에 큰 변화를 가져다주었다.



HMI 구현의 변화

HMI 시스템은 대체적으로 그림 1에서 나타낸 것과 비슷한 구조로 돼 있다. 고성능 MCU(16 혹은 32비트)는 디스플레이에 랜더링되는 그래픽을 만들고 조정하는 기능을 한다. 이와 더불어 모든 그래픽이 저장될 거대 용량의 비휘발성 메모리 리소스와 그래픽 프로세싱, 디바이스 간의 커뮤니케이션을 위한 와이드 데이터 버스에 필요한 프레임 버퍼 또한 존재한다.

그리고 이 모든 것들 외에도 각각의 터치 인풋과 사운드 아웃풋을 관장하는데 최적화된 터치컨트롤러와 오디오 DAC 컨버터가 필요하다. 어떤 종류의 칩이 몇 개가 포함되는가에 따라 이런 종류의 시스템 설계에서는 재료의 실질적 가격이 달라지는 결과를 가져오게 된다. 게다가 각각의 칩이 상당히 많은 수의 핀을 가지고 있기 때문에 이러한 시스템이 차지하는 보드 공간의 확보 역시 문젯거리가 될 수 있다.

시스템에 복잡성이 존재한다는 것은, 이를 실행시키기 위해서는 엄청난 공학적 노력이 필요하다는 것을 의미하며, 전력 소모량 또한 상대적으로 크다는 것을 의미한다.



그림 2는 기존의 HMI 접근방식보다 훨씬 더 유연한 대안 솔루션에 대해 기술하고 있다. 기존 방식에 비해 구성요소와, 각 구성요소들 간에 전송되어야 했던 데이터의 양이 상당히 줄어들었다. 또한, 기존에 비해 보드 면적이 적다. 이 솔루션은 FTID 칩의 EVE(Embedded Video Engine) 기술을 기반으로 한다. EVE 디바이스들은 디스플레이, 오디오, 터치 기능을 하나의 칩에 통합해(내장 터치 컨트롤러와 싱글 채널 오디오 컨트롤러가 있기에 가능한) 보드 공간과 시스템 복잡성에 있어서 즉각적인 이점을 제공한다.

HMI를 구성하는 모든 그래픽 및 청각적 요소들은 객체 개념으로 처리된다. 이런 객체들(비트맵 이미지, 폰트, 경고/알람음, 템플릿, 오버레이, 로고 및 그 외 요소들)은 속기방식으로 표시가 된다. 다시 말해 객체들을 새로 그리거나 다시 그릴 필요 없이 단순하게 디스플레이 리스트를 통해 액세스를 하기만 하면 되는 것이다. 그렇기 때문에 디스플레이의 픽셀을 하나하나 일일이 랜더링할 필요 없이 픽셀 해상도의 1/16로 라인별 랜더링할 수 있으며 요구 대역폭을 줄일 수 있다.

객체 지향적 접근방식을 기반으로 한 HMI 설계는 데이터 전송의 개입을 줄여주며, 이러한 설계에서는 가능하면 프레임 버퍼와 비휘발성 메모리를 사용하지 않을 수도 있다. EVE 칩의 내부 오브젝트 메모리는 수천 개의 각각 다른 객체를 아무 무리 없이 저장/실행할 수 있으며, 고유의 내장 버퍼를 통해 디스플레이를 랜더링한다.

EVE 칩이 그래픽 프로세싱의 전반적인 부분을 관장하기 때문에 MCU는 이러한 작업에 기능의 많은 부분을 할당할 필요가 없다. 그렇기 때문에 HMI 시스템에 필요한 MCU는 8비트짜리 한 개면 충분하다. 그림 1에서 보았던 와이드 버스 대신 저 대역폭의 SPI나 I2C 시리얼 인터페이스를 데이터 전송에 사용할 수 있다.

조금 더 복잡성이 높은 객체들(키, 슬라이더, 토글, 버튼, 게이지, 시계 등)을 위한 스페셜 EVE 위젯 또한 설계가 돼 있다. 다시 말해, 엔지니어들이 무에서 유를 창조해내는 과정을 거쳐야 하는 것이 아니라, 특정 HMI의 설계에 적합하도록 사이즈, 색상, 그리고 위치를 조절해 주기만 하면 되는 것이다. 이러한 설계는 부정확한 터치 반응이 일어나는 위험성을 줄여주며, 데이터가 디스플레이로 전송되는 것을 유지시켜 준다.

객체 지향적 방법론의 접목으로 인한 추가적인 장점으로는 애니메이션 요소가 가미된 콘텐츠들을 더욱 효과적으로 다룰 수 있는 점을 꼽을 수 있다. 기존의 HMI 시스템은 애니메이션을 보여주기 위해 디스플레이 상에 같은 객체를 반복해서 계속 그려내야 했었으나, 객체 지향적 방법을 사용할 경우 객체가 표시될 위치의 좌표만 표시해 주면 그 외 다른 것은 필요하지 않다.

한 개의 동일 객체를 여려 위치에 반복해서 나타나게 할 수도 있다. 이러한 방식은 매번 새로운 객체를 만들기 위해 대역폭을 낭비하게 되는 일을 미연에 방지해 준다. 마지막으로, 안티앨리어싱 기능으로서 랜더링되는 이미지의 품질을 향상시키며 복잡한 모양과 가장자리의 균일하지 못한 라인을 제거해 준다.

적용가능 예

이 방법에 대한 더욱 상세한 기술은 다수의 HMI가 서로 인터페이스 되는 경우 시스템에 더욱 효과적인 것을 증명한다. 그림 3에서는 RS232 인터페이스를 통해 연결된 HMI 서브시스템 페어 간의 데이터 전송이 이루어지는 세팅을 나타냈다(이더넷처럼 다른 인터페이스 기술에도 접목 가능). 각각의 HMI 서브시스템은 VMP800P ‘플러스보드’ EVE 평가 모듈과 VI800A-232U 모듈에 의존한다.

각 VMP800P는 Atmel ATMEGA328P 마이크로컨트롤러와 FTDI의 FT800 EVE 디바이스, 4-3인치 터치디스플레이, SD카드 커넥터(SD카드에 저장되어 있는 데이터에 접근하기 위한 용도), 그리고 실시간 클록(RTC) 및 백업 배터리로 구성돼 있다.

애플리케이션 펌웨어

예제 코드에 포함돼 있는 펌웨어는 VM800P에 붙어있는 VI800A-232U 도터 카드를 통해 VM800P들이 서로 데이터를 주고받는 것을 허용한다. 이런 특수한 경우, 데이터는 일련의 이미지들로 구성이 돼 있으며, 이러한 이미지들은 데이터가 물리적, 시각적으로 전송되는 것에 대한 용량을 보여주기 위해 설계돼 있다.

펌웨어는 크게 두 가지 구성 성분으로 이루어져 있다:

Image_Transfer_Master.ino -통칭 ‘Master’인 이 펌웨어는 첫 번째 모듈로 로드가 된다.
Image_Transfer_Slave.ino- 통칭 ‘Slave’인 이 펌웨어는 두 번째 모듈로 로드가 된다.
Master 모듈에 부착돼 있는 SD카드에 이미지들이 저장되며, 그리고 최종적으로 IC의 내장 그래픽에 저장되고, 모듈의 FT800 EVE 디바이스로 전송되기 전, 한 번에 한 개씩 프로세서 RAM으로 로드가 된다.
이미지 파일명은 하드 코딩되어 ImageName[][] 배열로 저장된다. 따라서 사용자가 새로운 파일이나 파일명을 제공하기만 하면 손쉽게 이미지를 바꿀 수 있다. loadJpegImage() 기능은 로딩을 할 이미지와 관련된 파일이 실질적으로 존재하는지를 체크하며, 그 후 CMD_LOADIMAGE 명령어를 실행하여 FT800dl JPEG 이미지를 로딩하고 확장하도록 한다.
위 과정이 완료되면 loadJpegBytes() 기능을 통해 SD카드의 파일 데이터를 FT800으로 전송하며, CMD_LOADIMAGE 명령어가 요구하는 데이터를 제공해준다. 이 과정을 통해 FT800은 JPEG 데이터를 확장하고 그래픽 RAM에 저장할 수 있다. loadJpegBytes()는 JPEG 파일을 로딩하고, FT800에 전송하는 기능을 한다. 전체 파일이 프로세스될 때까지 이러한 작업은 512바이트 블록들에서 한 번에 한 개씩 진행된다.



Master와 Slave 간의 커뮤니케이션

그림 3과 같이 두 개의 VM800P 모듈이 함께 연결되면, Master는 Slave(응답을 전송하는 slave)와의 커뮤니케이션을 설정한다. 이미지 전송 프로세스를 시행하기 위해 명령 시그널인 COMMAND_IMAGE_START를 송신한다(이 명령어는 이미지의 크기 관련 정보를 포함한다). 모든 이미지의 각 라인에 대해 Master에서 Slave로 COMMAND_IMAGE_SLICE 시그널이 전송되며, 이 시그널에는 전송되는 이미지의 라인 넘버와 FT800의 그래픽 RAM에서 읽어낸 이미지 데이터 또한 포함돼 있다.

COMMAND_IMAGE_SLICE_CONFIRMED 시그널이 수신되면, 이는 Slave가 이미지 데이터를 수신 받아 이를 FT800으로 전송했으며, 다음 커맨드를 수행할 준비가 되었음을 의미한다.

결론적으로 시청각적 요소들을 모두 객체화 하여 다루는 것이 가능하도록 단순화된 HMI 설계는 뚜렷한 장점을 다수 가지고 있다고 할 수 있다. 비용 절감, 보드 공간 절약, 개발시간 단축뿐 만 아니라, 다수의 HMI를 연결하는 것이 쉬워 서로 데이터를 주고받는 것 또한 훨씬 수월해졌다. 다시 말해 HMI 유닛은 더 이상 고립된 방식이 아니며, 더욱 더 큰 시스템의 일부로 사용될 수도 있는 기회가 열려있다는 것이다. 

<저작권자(c)스마트앤컴퍼니. 무단전재-재배포금지>


#HMI  
관련 기사

  • 100자평 쓰기
  • 로그인

세미나/교육/전시
TOP