Edit on GitHub

OpenCM 9.04

개요

Item OpenCM9.04 A Type OpenCM9.04 B Type OpenCM9.04 C Type
Power Switch X 1 1
User Button 1 1 1
2Pin Battery(LBS-40) X 2 2
JTAG/SWD X 1 1
Micro B USB X 1 1
5-Pin Port X 4 4
Dynamixel TTL BUS X 41 42
4 Pin 통신 포트 X 1 1

1: MOLEX 53253-0370 x 2(XL-320 호환), MOLEX 22-03-5035 x 2(AX 또는 MX 시리즈 호환)
2: MOLEX 53253-0370 x 4(XL-320 호환)

참고: 제어기복구는 현재 OpenCM9.04 C 타입(다윈미니용제어기)만 지원되고있으며,복구방법은 아래 링크에서 확인가능합니다. OpenCM9.04 C Type 펌웨어 복구하기

주의: 다이나믹셀 펌웨어 업데이트 및 복구시 OpenCM9.04와 OpenCM 485 확장보드를 반드시 분리해주세요.

제품 사양

항목 사양
CPU STM32F103CB (ARM Cortex-M3)
동작 전압 5V ~ 16V
입출력 GPIO x 26
타이머 4 (16bit)
아날로그 입력(ADC) 10 (12bit)
플래시 메모리 128Kb
SRAM 20Kb
동작 클럭 72Mhz
USB 1 (2.0 Full Speed) Micro B Type
USART 3
SPI 2
I2C(TWI) 2
디버깅 JTAG & SWD
다이나믹셀 3핀 TTL 버스 4
크기 27mm x 66.5mm

주의:

  • USB전원으로는 다이나믹셀을 구동할 수 없습니다. 별도의 전원을 공급해주세요.
    (OpenCM9.04 는 USB나 배터리 또는 + - 터미널 중에 하나 이상의 전원이 공급되면 동작합니다.)
  • 별도의 전원공급시 연결되는 주변장치의 동작전압을 확인해주세요. 제어기에 입력된 전압이 다이나믹셀에 바로 공급됩니다.
  • 7.2V를 권장하는 XL-320은 다른 다이나믹셀과 동작전압의 차이가 있어 함께 사용할 수 없습니다.

컨트롤 테이블

컨트롤 테이블은 제어기 내부에 존재하는 데이터의 집합체입니다. 사용자는 컨트롤 테이블의 주소를 이용하여 해당 주소에 저장된 데이터를 읽어오거나 새로운 데이터를 입력할 수 있습니다.  

EEPROM Area

주소 크기 데이터 설명 접근속성 초기값
0 2 Model Number 모델 변호 R 400
6 1 Firmware Version 펌웨어 버전 정보 R -
7 1 ID 제어기 ID RW 200
8 1 Baud Rate 제어기 통신속도 R 1
9 1 Return Delay Time 응답 지연 시간 RW 0
10 1 Status Return Level 응답 레벨 RW 2
12 1 DXL Baud Rate 다이나믹셀 통신속도 RW 3

RAM Area

주소 크기 데이터 설명 접근속성 초기값
21 1 Mode Number 현재 모드 번호 RW -
26 1 Button Status 사용자버튼 상태 R 0
66 2 Motion Play Page 모션 실행 페이지 번호 RW 0
68 1 Motion Play Status 모션 실행 상태 R -
73 1 128ms Timer Value 128ms 타이머 값 RW 0
74 2 1ms Timer Value 1ms 타이머 값 RW 0
77 1 Random Number 임의의 숫자 RW -
79 1 Green LED 녹색 LED 값 RW 0
82 1 Motion LED 모션중 LED 사용 여부 RW 0
360 2 Port 1 IR Sensor Value 1번 포트 적외선 센서 값 R -
366 2 Port 4 IR Sensor Value 4번 포트 적외선 센서 값 R -
368 2 Port 1 DMS Sensor Value 1번 포트 DMS 센서 값 R -
370 2 Port 2 DMS Sensor Value 2번 포트 DMS 센서 값 R -
372 2 Port 3 DMS Sensor Value 3번 포트 DMS 센서 값 R -
374 2 Port 4 DMS Sensor Value 4번 포트 DMS 센서 값 R -
376 1 Port 1 Touch Sensor Value 1번 포트 터치 센서 값 R -
377 1 Port 2 Touch Sensor Value 2번 포트 터치 센서 값 R -
378 1 Port 3 Touch Sensor Value 3번 포트 터치 센서 값 R -
379 1 Port 4 Touch Sensor Value 4번 포트 터치 센서 값 R -
381 1 Port 2 LED Module Value 2번 포트 LED모듈 제어 값 RW 0
382 1 Port 3 LED Module Value 3번 포트 LED모듈 제어 값 RW 0
386 2 Port 2 User Device Value 2번 포트의 사용자 장치 RW 0
388 2 Port 3 User Device Value 3번 포트의 사용자 장치 RW 0
392 1 Port 1 Temperature Sensor Value 1번 포트 온도 센서 값 R -
393 1 Port 2 Temperature Sensor Value 2번 포트 온도 센서 값 R -
394 1 Port 3 Temperature Sensor Value 3번 포트 온도 센서 값 R -
395 1 Port 4 Temperature Sensor Value 4번 포트 온도 센서 값 R -
396 1 Port 1 Ultrasonic Sensor Value 1번 포트 초음파 센서 값 R -
397 1 Port 2 Ultrasonic Sensor Value 2번 포트 초음파 센서 값 R -
398 1 Port 3 Ultrasonic Sensor Value 3번 포트 초음파 센서 값 R -
399 1 Port 4 Ultrasonic Sensor Value 4번 포트 초음파 센서 값 R -
400 1 Port 1 Magnetic Sensor Value 1번 포트 자석 센서 값 R -
401 1 Port 2 Magnetic Sensor Value 2번 포트 자석 센서 값 R -
402 1 Port 3 Magnetic Sensor Value 3번 포트 자석 센서 값 R -
403 1 Port 4 Magnetic Sensor Value 4번 포트 자석 센서 값 R -
404 1 Port 1 Motion Sensor Value 1번 포트 동작 감지 센서 값 R -
405 1 Port 2 Motion Sensor Value 2번 포트 동작 감지 센서 값 R -
406 1 Port 3 Motion Sensor Value 3번 포트 동작 감지 센서 값 R -
407 1 Port 4 Motion Sensor Value 4번 포트 동작 감지 센서 값 R -
409 1 Port 2 Color Sensor Value 2번 포트 칼라 센서 값 R -
410 1 Port 3 Color Sensor Value 3번 포트 칼라 센서 값 R -

참고: R+ Manager 2.0을 통해서 제어기를 연결하면 컨트롤 테이블을 확인할 수 있습니다. (컨트롤 테이블 확인하기)

하드웨어

OpenCM 9.04 영문 eManual에서 더 많은 정보가 제공되고 있습니다. 오른쪽 탭의 구글 버튼을 클릭하시면 구글 번역기를 사용할 수 있습니다.

블럭 다이어그램

OpenCM9.04의 전체 블럭 다이어그램은 아래와 같습니다. OpenCM9.04는 32비트 Cortex-M3 코어를 가진 STM32F103CB 마이크로컨트롤러를 중심으로 회로가 구성되어 있습니다.
전원 회로는 5V와 3.3V 레귤레이터가 다단(Cascade) 형태로 구성되어 있고 5V는 다이나믹셀 TTL 버스에 공급되고 3.3V는 마이크로컨트롤러 및 5핀 포트, 4핀 통신포트에 공급됩니다.
OpenCM9.04의 USB 2.0 FS를 지원하고 Micro-B 커넥터를 이용해 프로그램을 다운로드 받거나 데이터 통신을 수행합니다.
USART 1번 채널은 다이나믹셀 TTL Bus에 할당되어 있어서 핀11(TX1) 12(RX1)을 이용한 중복사용은 불가능합니다.

OpenCM9.04 블럭 다이어그램

각 부 명칭

전원 스위치

보드와 다이나믹셀 전원을 on/off하는 스위치 입니다. 단, USB 연결시 보드 전원은 on/off되지 않습니다.

직렬 배터리 소켓

LBS-04 리튬 이온 배터리 2개를 직렬 연결하는 커넥터 입니다. 배터리를 2개 직렬 연결한 상태에서 충전할 경우 쇼트위험이 있으므로 반드시 보드와 연결을 분리해서 충전해주세요.

다이나믹셀 TTL 소켓

3핀 케이블(Dynamixel TTL Bus)을 사용하는 다이나믹셀을 Daisy chain으로 연결하기 위한 포트 입니다.

주의: 커넥터 제조사의 PIN 순서와 상이할 수 있으니 반드시 PIN 순서를 확인하시기 바랍니다.

통신포트

BT-210, BT-110A, ZIG-110A, LN-101 등과 같은 4핀 케이블을 연결해서 외부 장치와 유/무선 통신을 수행합니다. OpenCM9.04의 4핀 통신 포트는 Serial2(USART2)를 사용합니다.

4핀 통신 포트 핀맵

OpenCM9.04와 스마트폰을 이용한 무선 통신 연결 예시

OpenCM9.04와 RC100을 이용한 블루투스 무선 통신 연결 예시

OpenCM9.04와 RC100을 이용한 지그비 무선 통신 연결 예시

OpenCM9.04와 LN-101을 이용한 유선 통신 연결 예시

사용자 버튼

사용자가 제어 할 수 있는 스위치 입니다. 23번핀 혹은 BOARD_BUTTON_PIN으로 사용할 수 있고 pinMode()에서 INPUT_PULLDOWN옵션으로 초기화해서 사용합니다.
그리고 OpenCM9.04에서 다운로드가 되지 않을 때 User button을 누른 상태에서 USB를 연결하면 Status LED가 계속 켜지면서 바로 다운로드 모드로 진입합니다.

OpenCM9.04는 User button으로 긴급 복구 모드 진입을 할 수 있습니다.

외부 ADC 기준전압 점퍼

Analog 기준전압을 변경할 수 있습니다. 입출력 IO헤더를 참고해주십시요.

Micro-B USB

OpenCM9.04를 다운로드 또는 PC와 같은 외부 장치와 USB 통신을 수행하며 동시에 5V 전원이 공급됩니다.
배터리 연결시 USB 5V는 자동으로 차단되고 배터리로부터 전원을 공급받습니다. 만약 과전류가 흐를 경우 내장된 Fuse가 USB 5V에서 흐르는 전류를 차단하므로 사용자 PC가 손상될 위험으로부터 보호됩니다

상태 LED

OpenCM9.04에서 프로그래밍 확인을 위한 테스트 LED입니다. 14번 핀 혹은 BOARD_LED_PIN이 HIGH이면 꺼지고 LOW가 되면 켜집니다. PWM으로 제어 가능합니다.

Status LED 위치

리셋 버튼

CPU의 리셋을 수행합니다.

JTAG/SWD 4 PIN

ST-LINK와 같은 In-Circuit Debugger and Programmer와 연결할 수 있습니다.
JTAG/SWD 4핀 포트를 통해서 전문가를 위한 별도의 상용개발프로그램을 이용 가능합니다. 아래는 ST-LINK와의 연결도 예시입니다.

ST-LINK 와 OpenCM9.04 연결 예시

로보티즈 5핀 포트

ROBOTIS 5핀 장치(모듈)를 연결해 사용 할 수 있습니다.

5핀 포트 번호 및 사용 방법

5핀 케이블 연결 방향

5핀 장치 종류 포트 1 포트 2 포트 3 포트 4
적외선센서 O X X O
DMS센서 O O O O
자이로센서 O O O O
접촉센서 O O O O
컬러센서 X O O X
자석센서 O O O o
온도센서 O O O O
동작감지센서 O O O O
LED모듈 X O O X

로보티즈 센서 및 LED 모듈 호환 리스트

입출력 IO헤더

OpenCM9.04의 CPU인 STM32F103CB의 GPIO 핀들이 외부로 인터페이스 되어 있어서 자유롭게 활용 가능합니다.

핀 0~25번까지 총26개의 GPIO 핀은 디지털 입력 및 출력이 가능하고 3.3V에서 동작합니다.
디지털 출력에서 HIGH일 경우 3.3V이고 LOW일때는 0V입니다.
디지털 출력에서 최대 토글 스피드는 18Mhz입니다.(단, 핀22, 23은 최대 2Mhz)디지털 입력의 경우 0V~3.3V까지만 입력 가능하지만 아래의 핀들은 5V입력이 가능합니다.
그 외에 핀에 3.3V 이상의 전압을 입력할 경우 OpenCM9.04가 손상될 수 있으니 주의하세요.

5V입력가능한 핀(5V Tolerant) : 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21

각 핀에서 최대로 공급(Source) 또는 받아들일(Sink) 수 있는 전류는 최대 25mA입니다.(단 핀22,  23의 경우 3mA)
OpenCM9.04의 모든 GPIO핀들은 내부적으로 pull-up 또는 pull-down이 지원되고 소프트웨어로 변경할 수 있습니다. 참고로 pull-up 또는 pull-down 저항은 40Kohm(Typical)입니다.
기타 궁금한 사항은 OpenCM9.04의 CPU인 STM32F103CB의 데이터시트를 참고하세요.

OpenCM9.04 GPIO 핀맵

JP2 점퍼 위치 및 사용방법

JP2를 변경해서 아날로그 입력 기준 전압(AREF)를 5V로 변경한 예시

주의: 아날로그 기준전압(AREF)을 5V로 변경시 5V 입력 가능한 핀을 확인하세요.

전원 연결 방법

OpenCM보드는 아래와 같이 3가지 전원 포트로 보드를 작동시킬 수 있습니다.

XL-320 다이나믹셀을 구동시키기 위해서는 LBS-04 배터리 2개를 배터리 소켓에 연결하는 것을 추천합니다.

OpenCM9.04와 XL-320, LBS-40(Li-Ion Battery) 연결 예시

LBS-40 배터리

XL-320을 제외한 3핀 TTL 다이나믹셀은 헤더의 +-핀 또는 배터리 소켓을 이용해 전원을 공급하시길 추천합니다.

OpenCM9.04와 AX12 연결 예시

아래의 그림과 같이 배터리 커넥터의 양끝 +,-에 연결하고 전원을 공급할 수 있는 장치로 연결도 가능합니다.
(OpenCM9.04 뒷면을 보면 그림A와 같이 가운데 +,-가 연결 되어있으므로 아래와 같이 연결이 가능합니다.)

전원 연결 예시

아래와 그림과 같이 배터리 소켓과 +-핀으로 동시 전원 공급은 피하세요.
그리고 배터리 소켓에 배터리를 혼용하지 마십시요. 배터리 소켓은 LBS-40 배터리만 사용해 주세요.

USB 포트는 LBS-40 배터리 혹은 +-핀과 동시 연결해도 무방합니다.(차단회로 내장)
+- 혹은 배터리로 공급되는 전압은 다이나믹셀의 권장 전압으로 사용하시길 추천합니다.
그 이상의 전압은 다이나믹셀의 수명을 단축시키거나 고장의 원인이 될 수 있습니다.
참고로 OpenCM9.04에 공급할 수 있는 최대 전압은 16V입니다. 그 이상의 전압은 OpenCM9.04의 부품들이 견디지 못할 수도 있습니다.
USB 전원 공급만으로는 다이나믹셀의 정상 동작이 되지 않지만 그 외에 통신포트나 IO 헤더핀은 정상동작을 합니다.
LBS-40 배터리를 직렬 연결한 채로 USB 충전은 쇼트가 생길 수 있으니 주의하세요.

A타입 전원 스위치 추가하기

A타입에는 전원 스위치가 없이 JP1이 쇼트처리 되어서 판매됩니다. 전원 스위치를 추가하기 위해서는 JP1의 납땜 처리를 제거하시고 2.54mm pitch 전원 스위치를 추가하시면 됩니다.
전원스위치는 OpenCM9.04 악세사리 키트에 포함되어 있고 pitch가 맞는 전원 스위치를 따로 구해서 사용할 수 있습니다.

JP1과 전원 스위치 회로도 : JP1이 연결되어 있으면 스위치가 없이도 동작합니다.

OpenCM9.04의 A타입에서는 JP1의 연결을 끊고 스위치를 추가해야 제대로 동작합니다.

A타입 다이나믹셀 TTL 커넥터 추가하기

OpenCM9.04의 다이나믹셀 TTL 3핀 홀은 기존 다이나믹셀 TTL 3핀과 XL-320 TTL 3핀(미니타입)이 모두 호환 가능합니다. 따라서 두 가지 종류의 커넥터 모두 납땜해서 사용할 수 있습니다.
참고로 2종류의 TTL 3핀은 OpenCM 악세사리 키트에 모두 포함되어 있습니다.

OpenCM9.04 A타입은 2가지 종류의 3핀 커넥터를 모두 납땜할 수 있습니다

소프트웨어 개발환경

  아두이노 IDE OpenCM IDE
Dynamixel SDK O X
DynamixelWorkbench O X
아두이노 라이브러리 O O
OS X O O (10.12.2)
리눅스 O O (12.04)
윈도우즈 O O

OpenCM IDE

OpenCM IDE는 더이상 업데이트되지 않습니다. 아두이노 IDE를 사용하시는 것을 권장드립니다.

아두이노 IDE

리눅스에 설치하기

USB 포트 설정

리눅스 환경의 아두이노 IDE에서 루트 권한이 없이 USB를 통해 OpenCM9.04에 스케치를 업로드하기 위해서는 아래와 같은 작업이 필요합니다.

wget https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCM9.04/master/99-opencm-cdc.rules
sudo cp ./99-opencm-cdc.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger

컴파일러 설정

OpenCM9.04의 라이브러리는 32비트 플랫폼에서 작성되었기 때문에 64비트 PC에서는 아래와 같이 32비트용 컴파일러를 설치해주어야 합니다.

sudo apt-get install libncurses5-dev:i386

아두이노 IDE 설치하기

아래의 아두이노 홈페이지에서 최신버전의 아두이노 IDE를 다운로드 받은 뒤 설치하십시오.
OpenCM9.04는 1.6.4 이상의 아두이노 IDE에서 동작을 확인했습니다.

https://www.arduino.cc/en/Main/Software

원하는 위치에 압축파일을 해제하고 터미널에서 설치파일을 실행하십시오.
아래는 사용자의 최상위 폴더(~/)에 아두이노 IDE 1.8.3을 설치하는 예제입니다.

cd ~/tools/arduino-1.8.3
./install.sh

아두이노 IDE가 설치된 파일 경로와 절대경로명을 .bashrc 파일에 입력하십시오.
여기에서는 gedit 에디터를 사용했습니다.
입력이 완료되면 source 명령어를 사용해서 변경된 설정을 적용시켜주어야 합니다.

gedit ~/.bashrc
export PATH=$PATH:$HOME/tools/arduino-1.8.3
source ~/.bashrc

아두이노 IDE 실행하기

리눅스 환경에서 아두이노 IDE를 실행하기 위해서는 터미널 창에 다음과 같이 입력하십시오.

arduino

OpenCM9.04를 아두이노 IDE에 포팅하기

환경설정

아두이노 IDE가 실행되면 File > Prefereneces를 클릭한 다음 아래의 주소를 Additional Boards Maanger URLs 텍스트상자에 입력하십시오.

https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCM9.04/master/arduino/opencm_release/package_opencm9.04_index.json

보드 매니저를 통해 OpenCM9.04 패키지 설치하기

Tools > Board > Boards Manager를 선택하고 아래와 같이 설치하십시오. (네트워크 사정에 따라 다르지만 20분정도 걸립니다.)

텍스트상자에 “OpenCM9.04”를 입력하고 검색된 패키지 중 ROBOTIS에서 제작된 패키지를 선택하고 설치하십시오.

설치가 완료되면 “INSTALLED” 라는 문구가 표시됩니다.

Tools > Board에서 OpenCM9.04 보드가 보이는지 확인하십시오. OpenCM9.04 관련 소스를 불러오기 위해서는 OpenCM9.04 보드를 선택해야 합니다.

포트 설정

여기에서는 프로그램을 업로드하기 위한 포트 설정을 합니다.
OpenCM9.04와 PC가 USB를 통해 연결되어 있어야 합니다.

Tools > Port > /dev/ttyACM0를 선택하십시오.

/dev/ttyACM0의 마지막 숫자는 PC의 환경에 따라 바뀔 수 있습니다.

맥에 설치하기

아두이노 IDE 설치하기

아래의 아두이노 홈페이지에서 최신버전의 아두이노 IDE를 다운로드 받은 뒤 설치하십시오.
OpenCM9.04는 1.6.4 이상의 아두이노 IDE에서 동작을 확인했습니다.

https://www.arduino.cc/en/Main/Software

아두이노 IDE 실행하기

맥에서 아두이노 IDE를 실행하기 위해서는 아래와 같이 아두이노 IDE 아이콘을 클릭하십시오.

OpenCM9.04를 아두이노 IDE에 포팅하기

환경설정

아두이노 IDE가 실행되면 File > Prefereneces를 클릭한 다음 아래의 주소를 Additional Boards Maanger URLs 텍스트상자에 입력하십시오.

https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCM9.04/master/arduino/opencm_release/package_opencm9.04_index.json

보드 매니저를 통해 OpenCM9.04 패키지 설치하기

Tools > Board > Boards Manager를 선택하고 아래와 같이 설치하십시오. (네트워크 사정에 따라 다르지만 20분정도 걸립니다.)

텍스트상자에 “OpenCM9.04”를 입력하고 검색된 패키지 중 ROBOTIS에서 제작된 패키지를 선택하고 설치하십시오.

설치가 완료되면 “INSTALLED” 라는 문구가 표시됩니다.

Tools > Board에서 OpenCM9.04 보드가 보이는지 확인하십시오. OpenCM9.04 관련 소스를 불러오기 위해서는 OpenCM9.04 보드를 선택해야 합니다.

포트 설정

여기에서는 프로그램을 업로드하기 위한 포트 설정을 합니다.
OpenCM9.04와 PC가 USB를 통해 연결되어 있어야 합니다.

Tools > Port > /dev/ttyACM0를 선택하십시오.

/dev/ttyACM0의 마지막 숫자는 PC의 환경에 따라 바뀔 수 있습니다.

윈도우즈에 설치하기

Install Virtual COM Port Driver

USB 포트를 통해 OpenCM9.04를 윈도우즈 환경에서 사용하려면 USB CDC 드라이버를 설치해야 합니다. 아래 방법으로 설치하시기 바랍니다.

아두이노 IDE 설치하기

아래의 아두이노 홈페이지에서 최신버전의 아두이노 IDE를 다운로드 받은 뒤 설치하십시오.
OpenCM9.04는 1.6.4 이상의 아두이노 IDE에서 동작을 확인했습니다.

https://www.arduino.cc/en/Main/Software

윈도우즈 버전의 아두이노 IDE는 압축파일 형태와 설치 형태로 구분됩니다. 선호하는 방법으로 설치하시기 바랍니다.

OpenCM9.04를 아두이노 IDE에 포팅하기

환경설정

아두이노 IDE가 실행되면 File > Prefereneces를 클릭한 다음 아래의 주소를 Additional Boards Maanger URLs 텍스트상자에 입력하십시오.

https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCM9.04/master/arduino/opencm_release/package_opencm9.04_index.json

보드 매니저를 통해 OpenCM9.04 패키지 설치하기

Tools > Board > Boards Manager를 선택하고 아래와 같이 설치하십시오. (네트워크 사정에 따라 다르지만 20분정도 걸립니다.)

텍스트상자에 “OpenCM9.04”를 입력하고 검색된 패키지 중 ROBOTIS에서 제작된 패키지를 선택하고 설치하십시오.

설치가 완료되면 “INSTALLED” 라는 문구가 표시됩니다.

Tools > Board에서 OpenCM9.04 보드가 보이는지 확인하십시오. OpenCM9.04 관련 소스를 불러오기 위해서는 OpenCM9.04 보드를 선택해야 합니다.

포트 설정

여기에서는 프로그램을 업로드하기 위한 포트 설정을 합니다.
OpenCM9.04와 PC가 USB를 통해 연결되어 있어야 합니다.

Tools > Port > COM1를 선택하십시오.

COM1의 마지막 숫자인 포트번호는 PC의 환경에 따라 바뀔 수 있습니다. 장치관리자에서 포트번호를 확인하시기 바랍니다.

다운로드

참고자료

도면