728x90
반응형
안녕하세요.
모빌리티키즈입니다.
제작한 프로젝트는 "Brainy Botic"이라는 이름의 3D 프린터로 제작된 로봇입니다. 이 로봇은 Arduino Nano로 제어됩니다.
이 프로젝트의 주요 목적은 3D 프린팅, 전자 및 프로그래밍 기술을 실전에 적용하여 이러한 종류의 프로젝트를 좋아하는 사람들에게 매력적으로 제시하는 것입니다.
로봇은 상자 모양을 가지고 있는데, 이는 세 가지 주요 이유 때문입니다. 첫째로, 프린팅 과정에서 지지물이 필요하지 않도록 하는 것이 프린팅 과정을 더 쉽게 만들기 때문입니다. 둘째로, 로봇을 모듈식으로 만들어 여러 가지 용도로 사용할 수 있도록 모듈, 구성품 및 센서를 쉽게 교체할 수 있도록 하기 위한 것입니다. 마지막으로, 나중에 레이저 컷 기술과 결합한 다른 버전의 로봇을 출시하여 그 영역에서 더 많은 지식을 습득하고자 합니다.
조립 프로세스를 가능한 간단하게 만들기 위해 상용 구성품을 선택했지만, 로봇 얼굴에 표정을 주기 위해 주로 LED에 솔더링 작업이 필요합니다.
이 프로젝트의 주요 목적은 이러한 종류의 프로젝트를 좋아하는 사람들에게 매력적인 방식으로 3D 프린팅, 전자 및 프로그래밍 기술을 연습하는 것입니다.
로봇은 세 가지 주요 이유로 상자 모양을 가지고 있습니다: 첫째, 인쇄 과정을 더 쉽게 만들기 위해, 즉 인쇄 과정에서 지지대가 필요하지 않습니다. 둘째, 모듈식이어야 하므로 다양한 사용 사례에서 로봇을 사용할 수 있는 방식으로 모듈, 구성 요소 및 센서를 쉽게 교체할 수 있습니다. 그리고 마지막으로, 저는 이 로봇의 다른 버전을 출시할 계획이지만 레이저 절단 기술과 혼합하여 해당 분야에 대한 더 많은 지식을 얻을 계획입니다.
조립 프로젝트를 가능한 한 단순하게 만들려고 노력했고 이를 위해 기성품 구성 요소를 선택했지만 주로 LED에 로봇 얼굴을 표현하는 납땜이 여전히 필요합니다.
로봇이 단순해 보일지 모르지만 이 버전의 로봇을 만들기 위해 설계 과정에서 많은 시행착오를 겪었습니다. 이 프로젝트를 재현한다면 적어도 "목적지가 아니라 여행"이기 때문에 나만큼 즐길 수 있기를 바랍니다.
공급
도구:
- 3D 프린터
- 납땜
소모품:
- 3D 프린트 필라멘트
구성 요소:
- 2 x SG90 360º 서보 모터
- 3 x SG90 180º 서보 모터
- 2 x SG90 서보 모터용 휠
- 금속 볼 이송 장치.
- M3 나사
- M3 스퀘어 너트
- M3 너트
- 듀퐁 전선
- Smile Shark LED 손전등 전원 은행 USB (모든 USB 보조 배터리가 가능합니다. 손전등이 있기 때문에 이것을 선택했습니다)
- 3개의 7비트 RGB WS2812 원형 LED. (눈과 입용)
1단계: 3D 프린팅
파일은 다음 구조로 구성됩니다.
- 로봇의 머리
- 피부
- 해골
- 무기
색상의 의미는 다음과 같습니다.
- 빨간색: 로봇의 피부용
- 흰색: 스켈레톤입니다.
2단계: 헤드 조립
헤드에는 로봇이 왼쪽과 오른쪽을 볼 수 있도록 하는 목용 서보가 포함되어 있습니다.
얼굴은 눈과 입을 만들기 위해 3 개의 7 비트 rgb LED로 구성됩니다.
4단계: 섀시 조립
섀시는 전체 로봇을 지원하며 각각 2º 서보 모터와 금속 볼 이송 장치에 부착된 360개의 바퀴를 포함합니다.
5단계: 앞면과 뒷면 피부
이 앞면과 뒷면 부분에는 팔과 머리가 부착되어 있습니다.
6단계: 코딩
서보 및 LED 테스트를 위해 arduino nano 업로드 된 간단한 프로그램 :
#include <FastLED.h>
#include <Servo.h>
Servo servoLeft;
Servo servoRight;
Servo servoArmLeft;
Servo servoArmRight;
Servo servoHead;
int pos0 = 0;
#define LED_PIN 7
#define NUM_LEDS 21
#define EYE_LEFT 14
#define EYE_RIGHT 7
#define MOUTH 0
CRGB leds[NUM_LEDS];
enum lookDirection { FRONT, UP, DOWN, LEFT, RIGHT };
void setup() {
FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
Serial.begin(9600);
Serial.println(F("Establishing connections..."));
servoLeft.attach(2);
servoRight.attach(3);
servoLeft.attach(4);
servoRight.attach(5);
servoHead.attach(6);
// Servo is stationary.
servoLeft.write(90);
servoRight.write(90);
servoLeft.write(90);
servoRight.write(90);
servoHead.write(90);
}
void clearEyes() {
for (int i = 0; i < 7; i++) {
leds[EYE_LEFT + i] = CRGB(0, 0, 0);
leds[EYE_RIGHT + i] = CRGB(0, 0, 0);
}
}
void clearMouth() {
for (int i = 0; i < 7; i++) {
leds[MOUTH + i] = CRGB(0, 0, 0);
}
}
void openEyes() {
clearEyes();
for (int i = 0; i < 7; i++) {
leds[EYE_LEFT + i] = CRGB(255, 255, 255);
leds[EYE_RIGHT + i] = CRGB(255, 255, 255);
}
FastLED.show();
}
void closeEyes() {
clearEyes();
leds[EYE_LEFT + 0] = CRGB(255, 255, 255);
leds[EYE_LEFT + 3] = CRGB(255, 255, 255);
leds[EYE_LEFT + 6] = CRGB(255, 255, 255);
leds[EYE_RIGHT + 0] = CRGB(255, 255, 255);
leds[EYE_RIGHT + 3] = CRGB(255, 255, 255);
leds[EYE_RIGHT + 6] = CRGB(255, 255, 255);
FastLED.show();
}
void look(lookDirection direction) {
int i = 0;
switch (direction) {
case FRONT:
i = 6;
break;
case LEFT:
i = 5;
break;
case RIGHT:
i = 5;
break;
default:
i = 5;
break;
}
clearEyes();
leds[EYE_LEFT + i] = CRGB(255, 255, 255);
leds[EYE_RIGHT + i] = CRGB(255, 255, 255);
FastLED.show();
}
void smile() {
clearMouth();
leds[MOUTH + 0] = CRGB(255, 255, 255);
leds[MOUTH + 3] = CRGB(255, 255, 255);
leds[MOUTH + 4] = CRGB(255, 255, 255);
leds[MOUTH + 5] = CRGB(255, 255, 255);
FastLED.show();
}
void loop() {
smile();
openEyes();
delay(4000);
closeEyes();
delay(500);
for(pos0=0; pos0 <= 140; pos0++){
servoLeft.write(pos0);
delay(10);
servoRight.write(140 - pos0);
delay(10);
}
// Servo spins forward at full speed for 1 second.
servoLeft.write(140);
servoRight.write(140);
servoArmLeft.write(140);
servoArmRight.write(140);
servoHead.write(140);
delay(1000);
// Servo is stationary for 1 second.
servoLeft.write(90);
servoRight.write(90);
servoArmLeft.write(90);
servoArmRight.write(90);
servoHead.write(90);
delay(1000);
// Servo spins in reverse at full speed for 1 second.
// myservo.write(0);
servoLeft.write(50);
servoRight.write(50);
servoArmLeft.write(50);
servoArmRight.write(50);
servoHead.write(50);
delay(1000);
// Servo is stationary for 1 second.
servoLeft.write(90);
servoRight.write(90);
servoArmLeft.write(90);
servoArmRight.write(90);
servoHead.write(90);
delay(1000);
}
728x90
반응형
'로봇프로젝트' 카테고리의 다른 글
친근한 워킹 로봇 만들기 - WalkBot 기본 버전 (0) | 2023.12.01 |
---|---|
6족 메커니즘이 있는 로봇 (0) | 2023.11.29 |
파란 로봇 개미 - Blue Robot Ant (1) | 2023.11.27 |
간단한 제스처로 로봇 팔 제어 -Control Robot Arm With Simple Gestures (3) | 2023.11.27 |
강력한 토크를 가진 태양열 자동차 만드는 간단한 방법 - How to Make Solar Powered Car With Powerful Torque in a Very Easy Way (0) | 2023.11.24 |