Skip to content

HM 모듈 펌웨어 프로그래밍

김정현 edited this page Feb 15, 2019 · 4 revisions

HM 모듈 개요

우리가 Myo band와 통신하기 위해서는 HM-10또는 HM-11, 묶어서 HM 모듈이라 불리는 모듈을 사용해야 한다.

두 모듈 모두 Jinan Huamao Technology 주식회사에서 생산하고 있으며 데이터시트와 스펙, 펌웨어 파일과 관련 프로그램은 링크의 홈페이지에서 쉽게 구할 수 있다. 구매는 우리나라의 여러 소매점에서 쉽게 구할 수 있다.

간단히 스펙을 소개해자면 다음과 같다. 따로 모듈 구분 없으면 두 모듈 공통으로 적용되는 스펙이다.

  • 블루투스 4.0 버전 BLE
  • 전원 3.3VDC 소비전류 약 50mA
  • 2.4GHz ISM 밴드 GFSK 변조 방식
  • 동작 온도 섭씨 -5 ~ 65도
  • 크기 (HM- 10) 26.9 x 13 x 2.2mm, (HM-11) 18 x 13.5 x 2.2mm
  • CPU & RF 칩셋 CC2540 (또는 CC2541)
  • 입출력 USB, GPIO, UART (HM-10), UART, GPIO (HM-11)

왜 펌웨어를 프로그래밍을 해야하나요?

Myo band는 전용 동글로 PC와 통신하지만, 우리의 HaneulMyo 의수는 동글과 드라이버 스택이 올라간 PC를 탑재할 여력이 없다. 즉, HM 모듈과 아두이노로 동글과 PC와 드라이버를 흉내내주어야 한다. Myo Band의 동글은 HM 모듈의 기본 펌웨어에 탑재된 표준 BLE 프로토콜로 흉내내기엔 페어링 과정등에서 재현할 수 없는 부분이 있어 펌웨어를 Myo band에 맞게 수정된 펌웨어로 모듈을 프로그래밍해 UUID와 페어링 메커니즘 등을 조금 수정해주어야 한다. 자세한 기술적 내용은 Myobridge 레포의 해당 문서를 참고하라.

왜 HM 모듈을 사용해야 하나요?

아두이노에 블루투스 통신 모듈을 추가해야 할 떄는 저렴하고 널리 이용되는 HC-06 모듈을 쓴다. 하지만 HC-06 모듈과 시판되는 대부분의 모듈은 블루투스 2.0 버전만을 지원한다. (주로 SPP 프로파일을 이용해 시리얼 통신용으로 쓴다) 하지만 Myo band는 여러번 소개했던 대로 BLE를 이용하므로 시판되는 블루투스 모듈 중 블루투스 4.0버전, BLE를 지원하며 저렴하고 구하기 쉬운 HM 모듈을 사용한다.

어떤 제품을 구매해야 하나요?

HM-11, HM-10 모듈 자체는 표면 실장용으로 제작되어 우리가 납땜으로 사용하기 힘들다. (가능은 하지만 수고가 배로 든다.) 모듈을 PCB위에 실장해 LDO 레귤레이터와 UART 입력에 레벨 쉬프트 회로를 구현한 Breakout 제품을 판매하고 있으니 그 제품을 사면 편하게 제작할 수 있다. 또한 HM-11, HM-10은 우리의 의수에선 CPU가 동일해 크기 차이 정도 외에는 성능이 동일하므로 둘 중 아무 모듈이나 구매해도 된다. (HM-11 모듈을 사용한 제품쪽이 크기가 더 작아서 추후에 조립시 편하다.)

펌웨어 프로그래밍 방법

HM 모듈의 CPU인 CC2540 모듈의 펌웨어를 갈아엎기 위해서는 PC외에도 또다른 장치가 필요하다. 아래와 같은 두가지 방법을 소개할테니 적절한 방법을 사용하면 된다.

방법 1. Arduino + CCLoader

권장되는 방법이다. 지금까지 HaneulMyo 의수는 모두 이 방법으로 제작됬다.

이 방법은 CCLoader을 기반에 둔다. 자세한 내용은 링크를 참조하라.

회로도 HM-10 CCLoader 배선도 HM-11 CCLoader 배선도

  1. 배선도 대로 회로를 배선한다. DD, DC, RESET 단자는 HM 모듈의 기판에 직접 납땜하여 연결하여야 한다. 회로도의 Method 1, 2는 아래를 참고하여 편한 방법중 하나를 선택하여 배선하면 된다.
  • Method 1 : LDO 포함된 제품을 구매했으면 이 방법대로 3개의 신호선만 직접 납땜하고 전원 2개 선은 제품의 단자를 통해 배선하면 된다.
  • Method 2 : 그냥 HM 모듈만 샀을경우 이 방법처럼 직접 납땜하여야 한다.
  1. 명령프롬프트를 열고 tool\CCLoader 폴더 또는 링크된 레포의 CCLoader 프로그램을 이용해서 프로그래밍을 진행한다. (예시 명령어 : CCLoader.exe COM1 Myo2541.bin 0) 펌웨어 파일은 tool\CCLoader\Myo2541.bin 파일을 사용하거나 MyoBridge 레포에 있는 파일을 사용하라.

CC254X 칩셋의 IO tolerance는 명세상 VDD + 0.3V (MAX 3.9V)이나 경험적으로 아두이노와 칩셋간 레벨쉬프터 없이 문제 없이 진행되어 회로도에서는 생략했다. 관련해서 칩이 죽는 이슈가 발생할시 신호선에 레벨 쉬프터 추가를 시도해볼 수 있겠다.

방법 2. CC Debugger

TI사의 공식 CC254X 칩셋 공식 디버거인 CC Debugger를 이용할 수 있다. 구체적인 방법은 Myobridge의 위키를 참고하라.

필자도 제작 중 방법 2 를 먼저 시도했으나 모두 실패했기에 방법 1을 권장한다. CC Debugger 장치는 하늘고에서는 7기 최진혁군이 가지고 있으므로 필요하면 문의해보기 바란다.

추가 정보

  • Myo bridge 펌웨어를 올리면 AT 커맨드를 포함한 모든 HM 모듈 본래 기능이 먹통이 된다. 원상복구 시키고 싶으면 펌웨어 파일을 원본으로 교체해서 다시 프로그래밍하면 된다. tools/CCLoader/CC2541hm10v540.bin 파일을 사용하거나 제조사 홈페이지에서 구할 수 있다.