원격 IoT 제어 커스텀 로봇 팔: 아두이노 MKR1000과 심링크(Simulink) 활용
프로젝트 개요
기존 오픈소스 설계를 따르지 않고, 로봇 팔을 처음부터 직접 설계·제작·프로그래밍하는 과정을 다룹니다. 하드웨어 설계보다 프로그래밍 측면에 초점을 맞췄으며, 단순 서보 각도 제어를 넘어 심링크(Simulink)와 씽스피크(ThingSpeak) IoT 플랫폼을 활용해 어디서든 로봇 팔을 정밀 제어하는 방법을 보여줍니다. 최종 동작 영상은 여기에서 확인할 수 있습니다.
하드웨어 구성
- 15″ × 20″ 1/8인치 합판
- 아두이노 MKR1000
- GS9025MG 서보 모터 × 5
- 2.1mm 브레드보드 호환 DC 배럴 잭
- 6V DC 배럴 잭 파워 서플라이
- 점퍼 와이어
- 2N2222A 트랜지스터 × 3
- M2 너트 × 10, M2 × 10 나사 × 10
- M3 너트 × 40, M3 × 25 나사 × 40
소프트웨어 환경
- MATLAB
- Simulink
- MATLAB Support Package for Arduino Hardware
- Simulink Support Package for Arduino Hardware
- MATLAB Support Package for ThingSpeak
설계 과정
구조 설계
비용 절감을 위해 하비용 서보(GS-9025MG) 기준으로 설계했습니다. 마이크로 서보의 토크 한계로 최종 무게와 크기가 제한되었으며, 1/4인치 합판 프로토타입이 너무 무거워 1/8인치로 변경하고 암 길이를 줄여 서보 제어 문제를 해결했습니다. 퓨전 360(Fusion 360)으로 설계 후 DXF 파일로 내보내 레이저 커팅했습니다.
전원 공급
배터리 팩은 전류 소모가 커 빠르게 방전되므로, 벽면 콘센트에서 지속적인 DC 전압을 공급받는 방식이 필수적이었습니다.
서보 제어 회로
아두이노 MKR1000은 PWM 핀이 4개뿐이지만 서보 5개를 제어해야 했습니다. 한 PWM 핀으로 2개 서보를 제어하고, 디지털 핀으로 두 서보를 번갈아 제어하는 트릭을 사용했습니다. 회로도와 배선도는 본문 이미지를 참조하세요.
프로그래밍: 심링크(Simulink) 모델 기반 설계
1단계: 프로토타이핑
슬라이더와 상수 블록으로 서보에 목표 각도를 명령하며, 명령 각도와 실제 각도 간의 편차(Bias) 및 각 서보의 허용 각도 범위를 파악했습니다. 기어 아이콘이 있는 블록이 PWM 출력(0~180°) 블록입니다. 2D 평면 운동 로봇 팔의 역기구학(Inverse Kinematics)을 적용해 목표 XY 좌표에 도달하는 서보 각도를 계산했습니다. 기구학 설명은 이 링크가 도움이 됩니다.
2단계: 정밀 제어 (IoT 연동)
입력 블록이 슬라이더에서 씽스피크(ThingSpeak) 채널 읽기 블록(회색 구름 아이콘)으로 변경되었습니다. 입력값은 목표 X, Y 위치이며, MATLAB 함수 블록 'loc2angles'로 서보 명령 각도로 변환됩니다. 상단의 'angles2loc' 블록은 순기구학(Forward Kinematics)으로 서보 각도가 올바른 위치로 변환되는지 모니터링용입니다. 심링크의 외부 모드(External Mode)를 사용해 아두이노에서 실행 중인 시스템을 실시간 모니터링했습니다.
씽스피크(ThingSpeak) 채널 생성 및 사용법
- thingspeak.com 접속 후 매스웍스(MathWorks) 계정으로 로그인
- 대시보드에서 'New Channel' 클릭
- 필수 필드(Field 1~5) 설정 후 'Save Channel'
- MATLAB 명령창 또는 모바일 앱에서
thingSpeakWrite(chID, [x y ...], 'WriteKey', APIKEY, 'Fields', [1 2 3 4 5]) 형태로 데이터 전송
- 채널 데이터가 실시간 업데이트되는 것 확인
모델 실행 및 배포
심링크 모델에서 'Model Configuration Parameters → Hardware Implementation'로 들어가 하드웨어 보드를 'Arduino MKR1000'으로 설정합니다. 'Target Hardware Resources → WiFi Properties'에서 와이파이 자격 증명을 입력합니다. 녹색 실행 버튼(외부 모드) 또는 파란색 배포 버튼(하드웨어 배포)을 눌러 모델을 실행합니다. 실행 후 MATLAB이나 모바일 앱에서 씽스피크 필드 값을 변경하면 로봇 팔이 실시간으로 반응합니다.
소스 코드 및 자료
MATLAB Central File Exchange: 로봇 팔을 IoT로 어디서든 제어하기