제작 요약 - 이론 설명 없이 빠르게 제작하기
일단 만드는 것부터 하실 분들을 위한 총 요약 페이지입니다. 제작을 위한 순서는 다음과 같습니다.
- 재료 구매
- 아두이노에 프로그램 넣기
- 하드웨어 3d 프린터로 출력하기
- 조립
재료 구매
부품 총 정리
버스킹봇을 만들기 위한 하드웨어 부품 표입니다.
역할 | 모델명 | 수량 | 구매링크 | 비고 |
---|---|---|---|---|
서보모터 | MG90S | 2 | 클릭 | |
아두이노 본체 | 아두이노 나노 | 1 | 클릭 | |
아두이노 확장보드 | 아두이노 나노 확장보드 | 1 | 클릭 | |
USB mini 케이블 | USB mini 케이블 | 1 | 클릭 | 아두이노 나노에 맞는 케이블 사용 |
블루투스 | HC-05 | 1 | 클릭 | |
dupont cable 100mm | 점퍼 케이블 100mm (male to male) | 4 | 클릭 | 블루투스 - 아두이노 연결용 |
배터리 | USB보조배터리 | 1 | 클릭 | USB 케이블이 꽂히는 모델 구매 요 |
도구 총정리
역할 | 모델명 | 수량 | 구매링크 | 비고 |
---|---|---|---|---|
글루건, 글루심 | 글루건 | 1 | 클릭 | 기구 임시 고정용 |
십자 드라이버 | 3mm 십자드라이버 | 1 | 클릭 | 모터 - 막대 고정용 |
3d 프린터 | 저는 FDM 방식의 저가형 프린터를 사용했습니다. | 1 | 클릭 | 팹랩, 메이커스페이스 등에서 출력 가능 |
필라멘트 | PLA 원료 사용 | 1 roll | 클릭 | 1.75mm 직경 사용(가장 대중적인 굵기: 프린터 노즐의 굵기따라 다를 수 있음) |
아두이노에 프로그램 넣기
아두이노 프로그램 다운로드
버스킹봇 소스코드 다운로드하기
/*********************************************************
Open BuskingBot
Written by Eunchan Park (박은찬)
BSD license, all text above must be included in any redistribution
**********************************************************/
//서보모터 라이브러리 사용하겠음
#include <Servo.h>
//소프트웨어시리얼 라이브러리 사용하겠음
#include <SoftwareSerial.h>
// "PIN_NUMBER_SW_SERIAL_TX" 이란 단어를 "2"라고 사용하겠음
// "PIN_NUMBER_SW_SERIAL_RX" 이란 단어를 "3"라고 사용하겠음
#define PIN_NUMBER_SW_SERIAL_TX (2)
#define PIN_NUMBER_SW_SERIAL_RX (3)
#define PIN_NUMBER_LEFT_MOTOR (9)
#define PIN_NUMBER_RIGHT_MOTOR (10)
#define LEFT_HIT_POSITON 140
#define RIGHT_HIT_POSITON 40
#define CENTER 90
Servo myservo1; // 첫 번째 서보모터선언
Servo myservo2; // 두 번째 서보모터 선언
//소프트웨어시리얼 선언, TX핀은 2번, RX핀은 3번임
SoftwareSerial BTSerial(PIN_NUMBER_SW_SERIAL_RX, PIN_NUMBER_SW_SERIAL_TX);
long lastHitTime = 0;
//왼쪽 팔을 이용해서 드럼을 치는 함수
void LeftHit() {
myservo1.attach(PIN_NUMBER_LEFT_MOTOR);//서보모터에 힘을 부여함
myservo1.write(LEFT_HIT_POSITON); // 서보 1번에게 90도로 이동하라고 명령 (왼쪽 모터) (팔을 내린다)
delay(200); // 200ms (0.2초 동안 여기서 대기)
myservo1.write(CENTER); // 서보 1번에게 0도로 이동하라고 명령 (왼쪽 모터) (팔을 든다)
}
//오른쪽 팔을 이용해서 드럼을 치는 함수
void RightHit() {
myservo2.attach(PIN_NUMBER_RIGHT_MOTOR);//서보모터에 힘을 부여함
myservo2.write(RIGHT_HIT_POSITON); // 서보 2번에게 90도로 이동하라고 명령 (오른쪽 모터) (팔을 내린다)
delay(200); // 200ms (0.2초 동안 여기서 대기)
myservo2.write(CENTER); // 서보 2번에게 0도로 이동하라고 명령 (오른쪽 모터) (팔을 든다)
}
// 데이터에 따라서 왼손 또는 오른손으로 드럼을 치는 함수
void hitDrum(char data) {
// 만약 데이터가 'b' 라면
if (data == 'b') {
//왼팔을 움직이세요
LeftHit();
} else if (data == 's') {
// s 라면 오른팔을 치세요
RightHit();
} else if (data == 'f') {
// f 라면 드럼을 치는 위치로 가서 기다리세요.
myservo1.attach(PIN_NUMBER_LEFT_MOTOR);//서보모터에 힘을 부여함
myservo2.attach(PIN_NUMBER_RIGHT_MOTOR);//서보모터에 힘을 부여함
myservo1.write(LEFT_HIT_POSITON);
myservo2.write(RIGHT_HIT_POSITON);
delay(60000);
}
}
//아두이노 셋업 함수 (1회만 실행됨)
void setup() {
myservo1.attach(PIN_NUMBER_LEFT_MOTOR); // 9번 핀을 서보1번이라는 이름으로 컨트롤 하겠음 (왼쪽 모터)
myservo2.attach(PIN_NUMBER_RIGHT_MOTOR); // 9번 핀을 서보2번이라는 이름으로 컨트롤 하겠음 (오른쪽 모터)
// 시리얼 통신을 시작하겠음. 38400 이라는 속도로 하겠음
// 38400 이라는 숫자는 미리 정해진 여러가지 속도 중 하나임
// 이번 강좌에서 사용된 블루투스는 38400 속도로 셋팅이 되어 있기 때문에 이 속도를 사용함
long baudrate = 38400;
Serial.begin(baudrate);
BTSerial.begin(baudrate);
LeftHit();
RightHit();
}
// 임시로 데이터를 저장할 공간을 마련함
char tempData = 0;
//아두이노 루프 함수 (무제한 실행됨)
void loop() {
// 통신을 통해 데이터를 받았다면 (컴퓨터로부터)
if (Serial.available()) {
// 임시 공간에 데이터 하나를 읽어서 저장하세요
char tempData = Serial.read();
hitDrum(tempData);
lastHitTime = millis();
}
// 통신을 통해 데이터를 받았다면 (블루투스로부터)
if (BTSerial.available()) {
char tempData = BTSerial.read();
hitDrum(tempData);
lastHitTime = millis();
}
// 1000ms (1초) 이상 아무런 통신이 오지 않았다면 모터의 힘을 풀겠습니다.
if (millis() > lastHitTime + 1000) {
myservo1.detach();
myservo2.detach();
}
}
예제 소스를 보드에 업로드하기
[tools - Port]를 눌러서 현재 Port 상태를 확인
아두이노와 연결된 USB 를 꽂고 포트 확인/선택
보드 확인
Processor "ATmega328P"도 확인하세요
업로드 버튼 클릭
업로드 완료 (Done uploading)
하드웨어 3d 프린터로 출력하기
출력파일:
https://www.thingiverse.com/thing:2742894
위 링크에서 모든 파일을 다운받으신 후, 출력하시면 됩니다. (팔은 2세트 필요함)
3d 프린터는 따로 스터디가 필요합니다.
조립
다음 영상과 사진들을 참고하셔서 조립하세요
3D 프린터를 이용해서 본 도면을 다운받고, 출력을 하시면 됩니다.
조립 방법
모든 부품들 준비합니다.
라이센스
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스 에 따라 이용할 수 있습니다.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
.
Copyright 2018. Eunchan Park all rights reserved.
http://happyThingsMaker.com
[email protected]
박은찬