[아두이노] 오또봇 기본형 만들기 - 오또봇(Otto Bot) 조립 하기
오또봇(Otto Bot)은 ottodiy사이트에 공개 되어 다양한 형태로 발전 하였다.
인터넷에 검색 해보면 많은 오또봇자료와 오또봇3D모델링이 존재하며 오또봇 출력 형태도 조금씩 상이한 하여 양재동 메이커는 아래 자료를 활용하여 오또봇(Otto Bot)의 기본 조립을 설명한다
1. 오또봇 부품과 준비물

* 메뉴얼 숙지 하면 조립 시간 1~2시간 가능 할듯, 적정 연령은 중학생 이상 부터 가능 할듯
* 실제 3D모델링 데이타 출력 8시간 이상 소요 되어 준비 시간이 필요 함
Otto DIY 3d printed parts × 6 개 (머리 / 모통 / 다리 × 2개 / 발 × 2개로 구성)
Arduino Nano R3 × 1 개
Arduino NANO Shield I/O × 1 개
HC-SR04 Ultrasound sensor × 1 개
Micro servo SG90 9g × 4 개
Jumper Wires × 6 개
4 AA Battery Holder(2X2) × 1 개 (AA Batteries × 4 개: 사용자 준비)
Micro Switch Self lock On/Off × 1 개
2. 오또봇 머리 조립
조립 문서에는 발 부터 조립하게 되어 있으나 필자는 머리를 먼저 조립 시작
초음파 센서를 먼저 조립하지 않으면 나노 쉴드 장착이 힘듬 (필자는 재 조립)
3D출력이 꽉 맞물려서 아두이노 쉴드 장착 시 어려움이 있었음
3. 오또봇 모통 조립
SG90서보 모터의 구성품 내 볼트 활용하여 결속
* 다른 3D 모델에서 하단 부분의 홈 모양이 상이한 것도 존재
4. 오또봇 다리 조립
다리 부분을 오또봇 몸통에 결속시 서보 모터에 장착을 해줘야 한다.
포함 메뉴얼에 보면 서버 모터 180도의 중간 각이 정면으로 향하는 그림이 있음
양재동 메이커는 서보 모터 90도를 위치를 맞추는 것이 어려워 제공 소스를 일부 변경
서보 보터가 90도 위치하게 한 후 다리 결속 작업을 진행
사용 소스는 다운 받은 파일중 Otto_Footalign을 포팅 후 서보 모터를 결속
그냥 눈대중으로 하느 것보다는 조금은 정밀하게 조립이 가능
5. 오또봇 발 조립
오뜨봇의 다리 부분 조립은 메뉴얼 따르는걸 권장 (90도 각도 프로그램 활용)
필자의 경우 서버 모터를 다리에 끼워 놓고 발을 결속하다 발이 파손되는 사태가 발생
필자의 경우 오또봇 발을 막지막에 밀어서 결속하였으나, 메뉴얼 강추
* 2번째 조립 시 메뉴얼 방식으로 시도 하였으나 이또한 조립이 어려움 (주의 : 발바닥 파손)
6. 오또봇 건전지 홀더 조립
건전지 홀더는 4XAA 사용하도록 메뉴얼에 있으나 필자는 4XAAA를 사용
7. 오또봇 완성
적용 아두이노 소스는 Otto_smooth_criminal를 적용하면 오또봇 춤추기 시작
다리의 나가사 있는 부분이 뒤면 머리 조립시 참조
8. 오또봇 추가 작업
오또봇 조립 완료 후 해당 소드의 Offset값을 이용하여 차렷 자세의 위치 보정에 활용
보정 작업 완료 후 Otto.saveTrimsOnEEPROM()의 Remark해제 후 EEPROM보정 값 저장
* 조립 완료 후 자세 보정은 1회 진행
/* --------------- | O O | |---------------| YR 3==> | | <== YL 2 --------------- || || || || RR 5==> ----- ------ <== RL 4 |----- ------| */ void setup() { Otto.init(2, 3, 4, 5, false); Otto.setTrims(0,0,0,0); //change Trim "offset values" gradually until Otto is completely straight (90º) // Otto.saveTrimsOnEEPROM(); //use only after completely straight(90º), delete this line after for further programming } int posiciones[] = {90, 90, 90, 90}; void loop() //test comparing before & after function { Otto.home(); // delay(4000); // Otto.updown(6, 500, BIG); // delay(2000); // // Otto.walk(4,1800); //delay(2000); } |