안녕하세요 다이나믹셀 rx-64 관련 질문입니다!

현재 저는 아두이노 Uno와 Dynamixel Shield를 사용하여 Dynamixel RX-64에 대해 공부하고 있습니다. Arduino IDE와 필요한 라이브러리(Dynamixel2Arduino, Dynamixel Shield)를 다운로드했고연습 → DynamixelShield → basic → position_mode 예제를 열었습니다.

모든 다이나믹셀이 다른 시리얼 번호, 버전 및 ID를 가지고 있다는 블로그에서 봐서일부 코드를 변경했습니다.
(DXL_ID를 1에서 3으로 변경,
DXL_PROTOCOL_VERSION을 2.0에서 1.0으로 변경,
dxl.begin(57600)는 동일한 상태로 유지합니다. RX-64를 사용하려고 합니다)

그러나, 다이나믹셀이 작동하지 않는데 혹시 도와주실 수 있을까요?
예제 코드도 보냅니다.

/*******************************************************************************

  • Copyright 2016 ROBOTIS CO., LTD.
  • Licensed under the Apache License, Version 2.0 (the “License”);
  • you may not use this file except in compliance with the License.
  • You may obtain a copy of the License at
  • http://www.apache.org/licenses/LICENSE-2.0
    
  • Unless required by applicable law or agreed to in writing, software
  • distributed under the License is distributed on an “AS IS” BASIS,
  • WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  • See the License for the specific language governing permissions and
  • limitations under the License.
    *******************************************************************************/

#include <DynamixelShield.h>

#if defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_MEGA2560)
#include <SoftwareSerial.h>
SoftwareSerial soft_serial(7, 8); // DYNAMIXELShield UART RX/TX
#define DEBUG_SERIAL soft_serial
#elif defined(ARDUINO_SAM_DUE) || defined(ARDUINO_SAM_ZERO)
#define DEBUG_SERIAL SerialUSB
#else
#define DEBUG_SERIAL Serial
#endif

const uint8_t DXL_ID = 3;
const float DXL_PROTOCOL_VERSION = 1.0;

DynamixelShield dxl;

//This namespace is required to use Control table item names
using namespace ControlTableItem;

void setup() {
// put your setup code here, to run once:

// For Uno, Nano, Mini, and Mega, use UART port of DYNAMIXEL Shield to debug.
DEBUG_SERIAL.begin(115200);

// Set Port baudrate to 57600bps. This has to match with DYNAMIXEL baudrate.
dxl.begin(57600);
// Set Port Protocol Version. This has to match with DYNAMIXEL protocol version.
dxl.setPortProtocolVersion(DXL_PROTOCOL_VERSION);
// Get DYNAMIXEL information
dxl.ping(DXL_ID);

// Turn off torque when configuring items in EEPROM area
dxl.torqueOff(DXL_ID);
dxl.setOperatingMode(DXL_ID, OP_POSITION);
dxl.torqueOn(DXL_ID);
}

void loop() {
// put your main code here, to run repeatedly:

// Please refer to e-Manual(DYNAMIXEL Shield) for available range of value.
// Set Goal Position in RAW value
dxl.setGoalPosition(DXL_ID, 512);
delay(1000);
// Print present position in raw value
DEBUG_SERIAL.print("Present Position(raw) : ");
DEBUG_SERIAL.println(dxl.getPresentPosition(DXL_ID));
delay(1000);

// Set Goal Position in DEGREE value
dxl.setGoalPosition(DXL_ID, 5.7, UNIT_DEGREE);
delay(1000);
// Print present position in degree value
DEBUG_SERIAL.print("Present Position(degree) : ");
DEBUG_SERIAL.println(dxl.getPresentPosition(DXL_ID, UNIT_DEGREE));
delay(1000);
}

안녕하세요.

기본값은 RX가 막혀 있습니다. 그걸 풀어주면 사용 가능 합니다.
이 파일에서, 0, 1로 (비)활성화를 할 수 있습니다.
단종제품이라 기본적으로 비활성화하고, 사용자가 원하면 가이드해주는 수준으로 정책을 잡았습니다

*AX, RX의 경우 오차 한계로 인하여 통신속도 57600Bps에서 Arduino Uno와 통신하는데 어려움이 있는 것을 확인 했습니다. 하여 오차율이 0%인 1MBps인 상태에서 사용하시면 정상적으로 사용이 가능하십니다.
감사합니다.
https://www.robotis.com/service/forum_view.php?bbs_no=2591292&page=1&save_sca=&sca=&save_stx=&stx=&sfl=

저 순간적인 희망으로 시도해보았는데 이것도 안되네요… ID 값도 wizard로 확인했고 dxl.begin을 1000,000, 57600, 9600 다해 보았고 version도 1.0으로 해보았는데 도 안되네요… 뭐가 문제일까요? 전원선 12v를 아두이노를 주거나 아니면 다이나믹셀 쉴드에 바로 12v를 주는 방식을 사용하는 것이 전원공급도 맞지요? 뭔가 계속 시도를 하는데 계속 작동이 안되서 뭐가 문제인지를 모르겠네요…

config.h 파일에서 "#define ENABLE_ACTUATOR_RX 1"로 변경을 하셨나요?

또한, 다이나믹셀 쉴드에서 업로드 스위치가 맞게 되어 있는지 확인 해주세요.

  • 업로드가 완료된 후에는 다이나믹셀 제어를 위해서 스위치를 다이나믹셀 위치로 이동 시켜야한다. 이동 시키지 않는다면 다이나믹셀 구동이 되지 않는다.
    다이나믹셀 쉴드

image
네 변경하였고 다이나믹셀 쉴드 upload 부분으로 돌려서 업로드를 하고 쉴드 전원을 키고 upload 부분에서 다이나믹셀 스위치로 옮기고 아두이노 코드 초기화 버튼을 눌렀는데 안되네요.

이순서가 맞지요?
아두이노우노와 쉴드 결합 → 쉴드에 다이나믹셀 연결 → 우노에 우노선으로 IDE로 업로드(upload 스위치 변경후) → 12v 전원선 아두이노에 연결(쉴드에도 연결해봄) → upload에서 다이나믹셀 부분으로 스위치 - > 쉴드 전원 스위치 → 아두이노 초기화 번튼 → 작동이 안됨 이러네요… 혹시 다른 문제가 있을수 있나요?

예제 코드에서 정상 동작 하는 것을 확인 했습니다.

사용하시는 아두이노 우노 및 다이나믹셀 쉴드에 문제가 없는지 확인을 해주세요.

확인이 어려우시다면 아두이노 우노 및 다이나믹셀 쉴드, 다이나믹셀을 점검 보내주시면 확인 해드리겠습니다.

감사합니다.

저 혹시 다이나믹셀은 위자드 2.0으로 구동을 확인하였고 우노는 blink로 확인하였고 이제 쉴드만 남았는데 혹시 쉴드가 고장났다는 것을 아는 방법이 있나요?
( ex) 다이나믹셀 led blink나 아니면 코드적으로 확인하는 것이 아닌 일반적으로 확인할수 있는지 방법이 궁금합니다.)