본문 바로가기
아두이노

🕹️ 단순한 호기심에서 시작된 여정, 3D 프린팅 RoboSoccer 자동차 만들기

by 모빌리티키즈 2025. 6. 19.
728x90
반응형

 

⚽ 시작은 작은 의문 하나였습니다

때로는 가장 단순한 질문이 가장 위대한 여정을 이끕니다. 온라인에서 우연히 본 RoboSoccer 경기—수십 대의 로봇이 공을 향해 돌진하고, 정교하게 방향을 바꾸고, 골대를 향해 정확히 슈팅하는 모습은 놀라움 그 자체였습니다. 그 순간 제 마음속 깊은 곳에서 불꽃이 일었습니다.

"나도 만들 수 있을까?"

전문 장비도, 고급 학위도 없었죠. 가진 건 열정과 유튜브 튜토리얼, 몇 개의 전자 부품, 그리고 밤을 지새우게 만드는 창작욕뿐이었습니다.

🛠️ 첫 번째 시도, 그리고 깨달음

처음 만들어 본 프로토타입은 작동은 했지만 어딘가 부족했습니다. 단순히 움직이는 것보다, 세련되고 안정적이며 기능적인 작품을 만들고 싶었습니다. 그래서 저는 새로운 목표를 세웠습니다:

  • 더 작고 단단하며 빠른 디자인
  • 일반적인 취미 프로젝트가 아닌 전문적인 느낌의 제품으로 보이게 하기

🧩 핵심 부품 리스트

부품기능
Arduino Uno 로봇의 뇌
HC-05 Bluetooth 모듈 스마트폰과 무선 통신
L298N 모터 드라이버 모터 속도 및 방향 제어
DC 기어드 모터 바퀴 움직임
3D 프린팅 구조체 외형 및 무게 최적화
리튬 이온 배터리 전력 공급
바퀴 & 볼 캐스터 전방향 이동 및 안정성

🎨 외형의 완성, JUSTWAY 덕분입니다

전자제품이 아무리 정밀하고 기능이 훌륭해도, 구조물이 어설프다면 사람들의 인식을 바꾸기 어렵습니다. JUSTWAY는 이 부분을 완전히 바꿔 놓았습니다. 산업 수준의 마감, 실시간 3D 모델 미리보기, 즉시 견적 시스템, 다양한 소재 선택 — 덕분에 제 로봇은 마치 완제품처럼 보이게 되었습니다.

💡 참고: [JUSTWAY 여름 캐시백 이벤트 – 2025년 6월 1일 ~ 8월 31일]

📱 Bluetooth 제어 방식

Arduino Car 앱을 통해 블루투스로 제어하며, 다음과 같은 명령어 구성을 적용했습니다:

  • L: 전진
  • R: 후진
  • B: 좌회전
  • F: 우회전
  • S: 정지
  • X: 정밀 회전 모드 ON
  • Y: 정밀 회전 모드 OFF

X 모드에서는 바퀴가 서로 반대 방향으로 회전하여 제자리 360도 회전이 가능하며, 실제 경기에서도 민첩한 움직임을 보여줍니다.

🔌 회로 구성 요약

  • HC-05 Bluetooth 모듈
    • VCC → Arduino 5V
    • GND → Arduino GND
    • Tx → D0
    • Rx → D1
  • L298N 모터 드라이버
    • IN1 → D5
    • IN2 → D6
    • IN3 → D9
    • IN4 → D10

전원은 배터리로 공급하며, 깔끔하게 납땜하고 3D 프레임 안에 배선이 숨겨지도록 구성했습니다.

 

char t;                  
bool preciseTurning = false;  

// Motor pins
int in1 = 5;   // Left motor forward
int in2 = 6;   // Left motor reverse
int in3 = 9;   // Right motor forward
int in4 = 10;  // Right motor reverse

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  Serial.begin(9600); // HC-05 on pins 0 and 1
}

void loop() {
  if (Serial.available()) {
    t = Serial.read();
    Serial.println(t);  // Optional debug

    // Mode toggle
    if (t == 'X') {
      preciseTurning = true;
    } 
    else if (t == 'Y') {
      preciseTurning = false;
    }

    // ---- Main Movement ----
    if (t == 'L') {  // Forward
      digitalWrite(in1, LOW);        
      digitalWrite(in2, HIGH);       
      digitalWrite(in3, HIGH);       
      digitalWrite(in4, LOW);        
    }

    else if (t == 'R') {  // Backward
      digitalWrite(in1, HIGH);       
      digitalWrite(in2, LOW);        
      digitalWrite(in3, LOW);        
      digitalWrite(in4, HIGH);       
    }

    else if (t == 'S') {  // Stop
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);
      digitalWrite(in3, LOW);
      digitalWrite(in4, LOW);
    }

    else if (t == 'B') {  // Turn Left
      if (preciseTurning) {
        // In-place rotate left
        digitalWrite(in1, LOW);     
        digitalWrite(in2, HIGH);    
        digitalWrite(in3, LOW);     
        digitalWrite(in4, HIGH);    
      } else {
        // Only left motor ON
        digitalWrite(in1, LOW);
        digitalWrite(in2, HIGH);
        digitalWrite(in3, LOW);
        digitalWrite(in4, LOW);
      }
    }

    else if (t == 'F') {  // Turn Right
      if (preciseTurning) {
        // In-place rotate right
        digitalWrite(in1, HIGH);    
        digitalWrite(in2, LOW);
        digitalWrite(in3, HIGH);    
        digitalWrite(in4, LOW);
      } else {
        // Only right motor ON
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
        digitalWrite(in3, HIGH);
        digitalWrite(in4, LOW);
      }
    }
  }
}

🧠 그리고 가장 중요한 것 — 경험

이 프로젝트는 단순한 코딩이나 조립이 아니었습니다.

  • 처음 배우는 분야에서 맨땅에 헤딩
  • 수많은 실패와 재설계
  • 유튜브로는 해결되지 않는 현장 문제 해결력 키우기
  • 그리고 직접 만든 로봇이 골을 넣는 순간의 감격

이제 저는 단순한 하드웨어가 아니라, 스스로 무엇이든 만들 수 있다는 확신을 얻었습니다.

✨ 마무리

누군가는 이걸 '작은 로봇'이라 부르겠지만, 저에게는 무한한 가능성과 창작에 대한 사랑을 증명하는 결과물입니다.

만약 지금 "나도 만들 수 있을까?"라는 마음이 든다면, 정답은 아주 간단합니다:

 

 

728x90
반응형