coding

아두이노로 첫 로봇 만들기 🤖🚀

AduVerse 2024. 12. 26. 00:00

아두이노로 LED를 깜빡이고 센서를 제어하는 기본적인 실습을 넘어, 이제는 로봇을 만들어볼 차례입니다!
이 글에서는 아두이노와 간단한 부품들로 움직이는 로봇을 만드는 방법을 안내합니다. 초보자도 따라 하기 쉬운 단계로, 첫 로봇 프로젝트에 도전해 보세요!


1. 로봇 만들기에 필요한 준비물 🛠️

필수 부품

  1. 아두이노 보드(UNO 또는 나노)
  2. L298N 모터 드라이버 모듈: 모터를 제어하기 위한 필수 장치.
  3. DC 모터 2개: 로봇의 바퀴를 구동.
  4. 캐스터 휠: 안정성을 위한 보조 바퀴.
  5. 초음파 센서(HC-SR04): 장애물 감지.
  6. 배터리 팩(6V 또는 9V): 로봇에 전력 공급.
  7. 바퀴 2개: 모터와 연결.
  8. 점퍼 와이어와 브레드보드

추가 도구

  • 글루건: 부품 고정용.
  • 드라이버와 나사: 부품 결합용.

2. 로봇 구조 만들기 🛠️

  1. 로봇의 프레임 구성
    • 로봇 베이스(아크릴 판이나 합판)를 준비합니다.
    • 베이스에 DC 모터 2개와 바퀴를 장착합니다.
    • 뒤쪽에 캐스터 휠을 부착해 안정성을 확보합니다.
  2. 모터 드라이버와 아두이노 부착
    • L298N 모터 드라이버와 아두이노 보드를 베이스 위에 부착합니다.
    • 배터리 팩을 부착해 전원을 공급할 준비를 합니다.

아두이노 보드와 DC 모터가 장착된 로봇 베이스 구조


3. 회로 연결하기 💡

회로 구성

  1. DC 모터와 모터 드라이버 연결
    • 두 개의 DC 모터를 L298N 모터 드라이버의 출력 핀(OUT1, OUT2, OUT3, OUT4)에 연결합니다.
  2. 모터 드라이버와 아두이노 연결
    • L298N 모터 드라이버의 입력 핀(IN1, IN2, IN3, IN4)을 아두이노의 디지털 핀(8, 9, 10, 11)에 연결합니다.
  3. 초음파 센서 연결
    • 초음파 센서의 Trig 핀을 아두이노의 디지털 핀 12에 연결.
    • Echo 핀을 아두이노의 디지털 핀 13에 연결.
  4. 전원 연결
    • 배터리 팩을 L298N 모터 드라이버의 12V 입력에 연결합니다.

아두이노 보드와 모터 드라이버, 초음파 센서의 회로 연결 모습


4. 코드 작성 및 업로드 ✍️

장애물 감지 로봇 코드

아두이노 IDE에 아래 코드를 작성하고 업로드하세요.

#define trigPin 12
#define echoPin 13
#define motor1Pin1 8
#define motor1Pin2 9
#define motor2Pin1 10
#define motor2Pin2 11

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(motor2Pin1, OUTPUT);
  pinMode(motor2Pin2, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  long duration, distance;

  // 초음파 센서로 거리 측정
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  distance = (duration / 2) / 29.1; // 거리 계산 (cm 단위)

  Serial.println(distance);

  // 장애물이 가까우면 멈춤
  if (distance < 20) {
    stopMotors();
  } else {
    moveForward();
  }

  delay(100);
}

void moveForward() {
  digitalWrite(motor1Pin1, HIGH);
  digitalWrite(motor1Pin2, LOW);
  digitalWrite(motor2Pin1, HIGH);
  digitalWrite(motor2Pin2, LOW);
}

void stopMotors() {
  digitalWrite(motor1Pin1, LOW);
  digitalWrite(motor1Pin2, LOW);
  digitalWrite(motor2Pin1, LOW);
  digitalWrite(motor2Pin2, LOW);
}

5. 로봇 테스트 🚗

  1. 배터리를 연결해 로봇에 전원을 공급합니다.
  2. 초음파 센서가 장애물을 감지하면 로봇이 멈추고, 그렇지 않으면 앞으로 이동합니다.
  3. 필요에 따라 코드를 수정해 로봇의 행동을 커스터마이징하세요.

아두이노 로봇이 초음파 센서를 이용해 장애물을 감지하며 움직이는 장면


6. 프로젝트 확장 아이디어 💡

첫 로봇 프로젝트를 성공했다면, 아래와 같은 기능을 추가해 보세요:

  1. 블루투스 제어: 스마트폰 앱으로 로봇을 원격 제어.
  2. 라인 트래킹: 바닥의 선을 따라가는 로봇.
  3. LED 표시: 장애물 감지 시 LED로 알림.
  4. 스마트 장애물 회피: 장애물을 감지하면 다른 방향으로 회전.

로봇 만들기를 시작해 보세요! 🎉

아두이노와 간단한 부품들로 만드는 첫 로봇은 창의력을 발휘하고 전자공학과 프로그래밍을 배우는 최고의 방법입니다.
이번 프로젝트를 통해 아두이노의 가능성을 느껴보고, 다양한 응용 프로젝트로 도전 범위를 넓혀보세요.
로봇을 움직이며 얻는 성취감은 여러분의 다음 아이디어를 실현하는 데 큰 동기가 될 것입니다! 🚀