Edit on GitHub

개요

아두이노 보드에서 다이나믹셀과 RC100을 사용하기위한 쉴드 보드이며 다이나믹셀 제어를 위한 라이브러리를 제공함.

본 제품은 아두이노 Uno를 포함하지 않습니다. 아두이노 관련 제품은 별도로 구매를 해야합니다.

제품 사양

항목 사양
동작 전압 7.4V (XL-320) ~ 24V (PRO / X Series)
허용전류 1A(아두이노), 10A(터미널 전원 커넥터)

지원되는 다이나믹셀

다이나믹셀 시리즈          
AX AX-12W AX-12+/12A AX-18F/18A    
RX 1 RX-10 RX-24F RX-28 RX-64  
DX 1 DX-113 DX-116 DX-117    
EX 1 EX-106+        
MX MX-12W MX-28, MX-28(2.0) MX-64, MX-64(2.0) MX-106, MX-106(2.0)  
XL XL320 XL430-W250      
XM XM430-W210 XM430-W350 XM540-W150 XM540-W270  
XH XH430-W210
XH430-W350
XH430-V210
XH430-V350
XH540-W150
XH540-W270
XH540-V150
XH540-V270
 
PRO H H42-20-S300-R H54-100-S500-R H54-200-S500-R    
PRO M M42-10-S260-R M54-40-S250-R M54-60-S250-R    
PRO L 1 L42-10-S300-R L54-30-S500-R L54-30-S400-R L54-50-S500-R L54-50-S290-R
PRO H(A) H42-20-S300-R(A) H54-100-S500-R(A) H54-200-S500-R(A)    
PRO M(A) M42-10-S260-R(A) M54-40-S250-R(A) M54-60-S250-R(A)    
PRO+ H H42P-020-S300-R H54P-100-S500-R H54P-100-S500-R    
PRO+ M M54P-060-S250-R M54P-040-S250-R M42P-010-S260-R    

1 RX, DX, EX, PRO L 시리즈를 사용하려면 소스 코드에서 별도의 설정이 필요합니다.

각 부 명칭

핀 번호 핀 이름 설명
0 HW UART RX DXL_RX
1 HW UART TX DXL_TX
7 SW UART RX 주의2 SoftwareSerial
8 SW UART TX 주의2 SoftwareSerial
항목 핀 이름 설명
다이나믹셀 포트 TTL, TTL(XL-430), RS485 주의3
전원 스위치 Power SW (다이나믹셀 포트 전원 스위치) -
UART 스위치 UART SW (업로드 또는 다이나믹셀 선택 스위치) 주의1
Jumper Cap 전원 선택 ‘전원 연결 방법’

주의1 UART SW(SW_2)를 Upload로 세팅해야, 펌웨어를 USB 포트를 통해서 업로드 할 수 있다. Dynamixel로 세팅해야만, 다이나믹셀을 활용할 수 있다. 이 때는, USB 포트를 사용하지 못하므로, 펌웨어를 업로드 할 수 없다.
주의2 SoftwareSerial을 지원하지 않는 보드를 사용한다면, 핀 7번과 8번을 UART 통신으로 사용하지 못한다.
주의3 TTL, TTL (XL-430) and RS485 커넥터들은 병렬로 연결되어 하나의 serial을 사용한다.

전원 연결 방법

VIN 전원 공유 VIN 전원 분리

스위치

업로드 스위치

다이나믹셀 전원 스위치

다이나믹셀 쉴드 라이브러리

특징

라이브러리 설치

아두이노 IDE에서 라이브러리를 추가하는 세가지 방법이 있다.

각각의 방법에 대한 자세한 설명은 Arduino Official Guide에서 찾을 수 있다.
다음은 라이브러리 매니저를 활용하는 예이다.

다이나믹셀 쉴드 라이브러리(v0.1.0 이상)를 사용하기 위해서는 DYNAMIXEL2Arduino 라이브러리를 먼저 설치해야 한다.

라이브러리를 설치하였다면, examples 항목에 DynamixelShield가 생기고 사용 가능한 예제를 볼 수 있다.

라이브러리 API

다이나믹셀 쉴드(v0.1.0 이상)

주의 : DYNAMIXEL Shield 라이브러리(v0.1.0 이상)를 사용하기 위해서는 DYNAMIXEL2Arduino 라이브러리를 설치해야 합니다.

Dynamixel2Arduino 클래스

Master 클래스

Dynamixel2Arduino 클래스는 Master 클래스로부터 다음의 함수를 상속받습니다.

RobotisRemoteController 클래스

다이나믹셀 쉴드(v0.0.5)

주의 : 이 버전의 API는 더이상 지원되지 않습니다.

bool begin(uint32_t baud_rate = 57600, uint8_t protocol_version = DXL_PACKET_VER_2_0);

bool scan(void);
bool ping(uint8_t id = DXL_GLOBAL_ID);
bool addMotor(uint8_t id, uint8_t model);
bool setProtocolVersion(uint8_t version);
bool write(uint8_t id, uint16_t addr, uint8_t *p_data, uint16_t length, uint32_t timeout);
bool read(uint8_t id, uint16_t addr, uint8_t *p_data, uint16_t length, uint32_t timeout);

uint8_t getDxlCount(void);
uint8_t getDxlID(uint8_t index);
uint32_t getErr(void);
void clearErr(void);

bool reboot(uint8_t id);
bool reset(uint8_t id);

bool setID(uint8_t id, uint8_t new_id);
bool setBaud(uint8_t id, uint32_t new_baud);

bool ledOn(uint8_t id);
bool ledOff(uint8_t id);

bool torqueOn(uint8_t id);
bool torqueOff(uint8_t id);

bool setJointMode(uint8_t id);
bool setWheelMode(uint8_t id);

bool    setGoalPosition(uint8_t id, uint32_t position);
int32_t getGoalPosition(uint8_t id);
int32_t getCurPosition(uint8_t id);

bool    setGoalSpeed(uint8_t id, int32_t speed);
int32_t getGoalSpeed(uint8_t id);   
int32_t getCurSpeed(uint8_t id);  

bool    setGoalAngle(uint8_t id, int32_t angle);
int32_t getGoalAngle(uint8_t id);
int32_t getCurAngle(uint8_t id);

bool syncWriteBegin(void);
bool syncWriteEnd(void);