일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- CM-50
- 업로드모드
- QA
- NocoDB
- 효용감
- Robotis
- 무명의개발자
- 테스트자동화
- hutc
- mysql4
- 올로
- 테스트 자동화
- arduino
- c#
- chromedriver
- 엠블록
- 다이나믹셀
- ChatGPT
- 아두이노
- 아두이노코딩봇
- 코딩봇
- 로보티즈
- TP4056
- 절벽아래은둔자
- automation
- MBLOCK
- testautomation
- Dynamixel
- Ollo
- 크롬드라이버
- Today
- Total
Hermit Under the Cliff
[Arduino] 아두이노 코딩봇 만들기 (4) - 로보티즈 올로 CM-50 컨트롤 하기 본문
[Arduino] 아두이노 코딩봇 만들기 (4) - 로보티즈 올로 CM-50 컨트롤 하기
AnonymousDeveloper 2022. 2. 20. 12:42지난번 포스트에서 로보티즈 올로의 CM-50 모듈의 UART 커넥터를 찾았고,
메뉴얼을 찾아 이 커넥터의 Pin 구성까지 알았습니다.
이제 Serial 통신을 이용하여 CM-50을 좀 더 자세히 알아볼 차례입니다.
우선 PC에서 Serial 통신을 하려면 요즘 나오는 PC에는 시리얼 포트가 없기 때문에
거의 대부분 USB to Serial 칩을 이용하여 합니다.
회사라면 여기 저기 굴러다니는 저런 USB to Serial 보드들이 있을텐데
집에 당장 가진 것이 없으니 아두이노를 USB to Serial로 이용해 봅니다.
구글 검색을 통해 아두이노의 GND와 RESET 단자를 점퍼선으로 이어주면
간단하게 USB to Serial 장치로 이용을 할 수 있다고 합니다.
결선은 아래와 같이 해 줍니다.
- 아두이노의 RESET핀 과 GND 핀을 연결
- CM-50의 Rx (1번핀)를 아두이노의 Tx(1번핀)과 연결
- CM-50의 Tx (2번핀)를 아두이노의 Rx(0번핀)과 연결
- CM-50의 GND(4번핀)를 아두이노의 GND와 연결
CM-50의 VCC는 딱히 연결이 필요 없는 듯 합니다.
CM-50이 아닌 다른 다이나믹셀 모듈로 하시는 분들도 아마 결선은 비슷할 것으로 생각 됩니다.
(잘 안될 때에는 Tx, Rx를 바꿔가면서 하면 될 때가 있습니다.)
이렇게 연결한 다음 CM-50의 전원 스위치를 길게 눌러 삐삐- 소리가 날때 떼어 주면
CM-50이 Management 모드로 진입을 하고, 이 모드가 이제 계속 사용할 모드 입니다.
계속 강조하지만, 근본이 있는 로보티즈 회사는 소프트웨어도 준비가 잘 되어 있습니다.
https://www.robotis.com/service/downloadpage.php?ca_id=10
위 다운로드 링크에서 R+Manager 2.0을 다운 받은 뒤 실행해 줍니다.
(업데이트를 하셔야 CM-50이 리스트에서 나타났던 것 같습니다.)
CM-50을 아두이노 USB to Serial을 통해 PC에 연결하고 R+Manager에서 연결을 하면
아래와 같이 CM-50에 대한 자세한 정보가 나옵니다.
드디어 CM-50에 맞는 Serial 세팅 값을 얻을 수 있습니다. 57600 baud rate를 사용하면 되네요.
또 다른 중요한 정보는 위 화면에서 보이는 ID값 (200이 CM-50의 고유 ID 입니다.)과 프로토콜 v2.0 부분 입니다.
이 정보는 잘 기억을 해 두고 다음 화면으로 넘어가면,
이렇게 CM-50의 컨트롤 테이블이 보이고
여기서 컨트롤 테이블의 값을 변경하여 LED를 켜고 끄거나, 모터를 돌릴 수 있습니다.
컨트롤 테이블은 지난번 포스트에서 링크했던 CM-50 메뉴얼에서도 찾아 볼 수 있습니다.
(https://emanual.robotis.com/docs/kr/parts/controller/cm-50/)
CM-50의 동작에 관한 플로우가 어렴풋이 감이 오기 시작합니다.
우선 Serial을 통해서 특정한 프로토콜(위에서 나온 Protocol 2.0)을 통해
컨트롤 테이블의 특정한 주소값에 값을 설정하면 동작을 하게 됩니다.
이제 해야할 것은 아두이노를 통해 시리얼로 Protocol 2.0을 이용하여 컨트롤 테이블의 값을 설정 하는 것이 됩니다.
Protocol 2.0을 좀 더 자세히 알아봐야 할 것 같으니 검색해 봅니다.
https://emanual.robotis.com/docs/en/dxl/protocol2/
근본이 있는 회사라고 계속해서 로보티즈를 칭찬하는 이유가 이렇게 깔끔하게 정리된 메뉴얼이 있다는 겁니다.
메뉴얼을 살펴보니 아래와 같은 Instruction Packet을 시리얼을 통해 보내주면, 원하는 동작을 할 수 있을 듯 합니다.
일단 가장 관심이 있는 것은 값을 쓰는 것이기 때문에 아래 command type중에서 Write (0x03)을 쓰면 되겠네요.
참고로 이 Instruction Packet을 더 자세히 보기 위해서는 위 다운로드 링크에서
다이나믹셀 위자드(Dynamixel Wizard)를 이용 하는 것도 좋습니다.
간단한 테스트는 쉽게 할 수 있더라구요.
안타깝게도 CM-50은 공식적으로 지원을 하지 않지만 메뉴에서 '패킷'을 눌러서 들어가시면
Dynamixel Protocol 2.0을 이용한 패킷 송수신은 테스트 해 볼 수 있기 때문에 간단한 테스트를 할 수 있습니다.
CM-50이 아니라 다른 다이나믹셀 모듈을 이용하신다면 이 툴을 훨씬 더 유용하게 사용하실 수 있을 겁니다.
아래와 같이 80번 주소 (Blue LED control)에 데이터를 1로 설정을 하면
파란색 LED가 켜지는 것을 바로 확인 해 볼 수 있습니다.
여기서 주의하셔야 할 것이 종류에는 protocol 버전인 2.0을
ID 에는 위에서 확인했던 CM-50의 ID인 200을 넣어 주어야 제대로 동작을 합니다.
리스트에서 패킷을 선택하면 아래와 같이 packet의 hex들을 바로 확인 할 수 있으니
아두이노에서 CM-50으로 저 byte array를 serial로 보냈을 때 LED가 켜지면 기본적인 동작 확인이 가능합니다.
이제 다시 아두이노로 돌아갈 시간입니다.
CM-50의 컨트롤 테이블을 한쪽에 펼쳐두고 다시 아두이노 IDE를 띄웁니다.
'Personal Projects > 아두이노 코딩봇' 카테고리의 다른 글
[Arduino] 아두이노 코딩봇 만들기 (6) - 코딩봇 펌웨어 작성 (0) | 2022.02.22 |
---|---|
[Arduino] 아두이노 코딩봇 만들기 (5) - 아두이노로 CM-50 제어하기 (0) | 2022.02.21 |
[Arduino] 아두이노 코딩봇 만들기 (3) - 코딩봇 설계 with 로보티즈 올로 (0) | 2022.02.18 |
[Arduino] 아두이노 코딩봇 만들기 (2) - 블록코딩 툴 결정 (0) | 2022.02.15 |
[Arduino] 아두이노 코딩봇 만들기 (1) - 아두이노 알아보기 (0) | 2022.02.13 |