골판지와 서보모터 2개로 네 발로 걷는 강아지 로봇을 만들어 봅니다. 아두이노가 서보모터의 각도를 순서대로 바꿔 주면, 골판지 다리가 앞으로·뒤로 움직이며 로봇이 걷기 시작해요. 서보모터의 원리를 배우고, 골판지를 재단하고, 볼트·너트로 조립하고, 직접 코드를 수정해 걸음걸이를 만드는 것까지 — 메이커 수업의 기본기를 한 번에 다지는 프로젝트입니다.

한눈에 보기
| 난이도 | 중급 (아두이노 첫 프로젝트로 적합) |
| 제작 시간 | 약 5차시 (차시당 2~3시간 블록 수업 기준) |
| 대상 | 중등 이상, 메이커 수업·동아리 프로젝트 |
| 핵심 부품 | 아두이노 우노, 센서쉴드, 서보모터, 나무스틱 |
| 움직임 | 전진(go) · 후진(back) · 좌회전(left) · 우회전(right) |
자료 모음 (필요한 링크 전부)
따라 만들다가 길을 잃으면 언제든 이 표로 돌아오세요. 아래 본문에서 하나씩 순서대로 사용하는 자료들입니다.
| 순서 | 자료 | 설명 |
|---|---|---|
| 1 | 완성 예시 영상 (Easy Arduino Robot Dog) | 무엇을 만드는지 먼저 보기 |
| 2 | CH340 드라이버 | 아두이노가 인식되지 않을 때 설치 |
| 3 | 서보모터 작동 원리 ① | 내부 구조 이해 |
| 4 | 서보모터 작동 원리 ② | 각도 제어 신호 이해 |
| 5 | 다축 로봇 참고 영상 ① | 서보 여러 개로 만드는 구조 |
| 6 | 다축 로봇 참고 영상 ② | 걸음걸이 설계 참고 |
| 7 | 다축 로봇 참고 영상 ③ | 관절 배치 참고 |
| 8 | 다음 프로젝트 — 외줄타기 로봇 | 차시 예고 |
1. 준비물
전자부품 · 재료
| 품명 | 용도 | 구매 링크 |
|---|---|---|
| 아두이노 우노 | 로봇의 두뇌 | 구매 |
| 아두이노 센서쉴드 | 서보 여러 개 연결 + 외부 전원 공급 | 구매 |
| 아두이노 케이블 | 코드 업로드용 USB | 구매 |
| 서보모터 | 로봇의 다리 관절 | 구매 |
| 서보모터 작은 나사 | 서보 혼 고정 | 구매 |
| 나사 너트 | 골판지 부품 체결 | 구매 |
| 나사 볼트 (M3×12mm) | 골판지 부품 체결 | 구매 |
| 나무스틱 | 서보 90도 정렬 확인용 | 구매 |
공작 재료 · 도구
- 골판지(카드보드) — 택배 상자를 재활용해도 좋아요
- 가위, 칼, 자, 드라이버, 글루건
- 외부 전원 (건전지 홀더 또는 어댑터)
💡 센서쉴드가 꼭 필요한가요? 네. 서보모터는 아두이노 보드만으로는 전력이 부족합니다. 센서쉴드를 끼우면 서보를 여러 개 꽂을 수 있고, VCC(빨강)·GND(검정)로 외부 전원까지 공급할 수 있어요.
2. 서보모터 이해하기
서보모터(Servo Motor)는 회전 각도를 정밀하게 제어할 수 있는 모터입니다. 로봇팔, 자동문, RC 장난감처럼 제한된 범위 안에서 위치를 정확히 잡아야 할 때 쓰입니다. 이 프로젝트에서는 0~180도 사이를 오가며 강아지의 다리가 됩니다.
만들기 전에 작동 원리 영상 ①과 ②를 먼저 보면 이후 코드가 훨씬 잘 이해됩니다.
⚠️ 아두이노가 컴퓨터에 안 잡힌다면?
장치 관리자 → 포트에서 USB Serial CH340이 보이지 않는 경우입니다. CH340 드라이버를 내려받아 Install을 눌러 설치하세요.
3. 서보모터 제어 코드 익히기
조립하기 전에 서보 하나만 연결해 코드를 돌려 봅니다. 이 감각을 익혀야 나중에 걸음걸이를 스스로 수정할 수 있어요.
3-1. 기본 — 90도와 0도를 오가기
#include <Servo.h> // Servo 라이브러리 호출
Servo servo_1; // 서보를 제어할 객체 생성
void setup() {
servo_1.attach(8); // 서보모터를 8번 핀에 연결
}
void loop() {
servo_1.write(90); // 90도 위치로 회전
delay(1000);
servo_1.write(0); // 0도 위치로 회전
delay(1000);
}
3-2. 여러 각도를 순서대로
#include <Servo.h>
Servo servo_1;
void setup() {
servo_1.attach(8);
}
void loop() {
servo_1.write(30); delay(1000);
servo_1.write(60); delay(1000);
servo_1.write(90); delay(1000);
servo_1.write(120); delay(1000);
servo_1.write(150); delay(1000);
servo_1.write(0); delay(1000);
}
3-3. 심화 — for문으로 부드럽게
#include <Servo.h>
Servo servo_1;
void setup() {
servo_1.attach(3);
}
void loop() {
for (int angle = 0; angle <= 180; angle++) {
servo_1.write(angle);
delay(10);
}
for (int angle = 180; angle >= 0; angle--) {
servo_1.write(angle);
delay(10);
}
}
📚 라이브러리 · 클래스 · 메소드
라이브러리<Servo.h>는 서보 제어에 필요한 코드를 미리 모아 둔 꾸러미입니다.
클래스Servo는 그 안에 정의된 설계도로, 각도 설정·핀 연결 같은 기능을 담고 있습니다.
메소드.attach(),.write()는servo_1이라는 객체에게 시키는 명령입니다.
즉Servo servo_1;은 설계도로 실제 조종 대상을 하나 만든 것이고,servo_1.write(90);은 그 대상에게 “90도로 가”라고 말하는 셈입니다.
4. 만들기 — 차시별 진행
1차시. 재료 배분 & 카드보드 재단
설계 도면을 참고해 골판지에 부품 모양을 그리고 잘라냅니다. 2시간 정도면 대부분의 학생이 외형 재단까지는 무난하게 마무리합니다.
- 자르는 선은 칼과 자를 대고 한 번에
- 접는 선은 칼등으로 살짝만 칼집 — 이게 완성도를 좌우하는 포인트!
2차시. 하드웨어 조립 (볼트·너트 체결)
잘라 낸 부품을 M3 볼트와 너트로 하나씩 결속합니다. 다리가 될 서보모터를 몸체에 고정하는 것이 이 차시의 핵심이에요. 형태가 잡히기 시작하면 학생들의 속도가 눈에 띄게 빨라집니다. 3시간 블록 수업이라면 빠른 조는 이 차시 안에 하드웨어를 끝내기도 합니다.
3차시. 외부 전원 연결 & 서보 90도 정렬
전원 연결
- VCC → 빨간색 선
- GND → 검정색 선
90도 정렬 — 이 프로젝트에서 가장 중요한 단계
서보를 몸체에 붙이기 전에 반드시 혼(날개)을 정확히 가운데로 맞춰야 합니다. 그래야 앞으로 걸을 때 다리가 좌우 대칭으로 움직여요. 아래 코드를 업로드한 뒤, 서보에 나무스틱을 꽂아 기준선을 확인하며 조립합니다.
#include <Servo.h>
Servo servo_1;
void setup() {
servo_1.attach(8);
}
void loop() {
servo_1.write(90); // 90도로 고정
delay(1000);
}
4차시. 하드웨어 완성 & 프로그래밍 병행
하드웨어 모양이 갖춰지면 코드를 올려 보고, 움직임을 보며 각도를 수정해 나갑니다. 하드웨어와 소프트웨어를 오가며 다듬는 이 과정이 프로젝트의 진짜 핵심입니다.
5차시. 완성도 업그레이드 & 걸음걸이 정교화
배선을 정리하고, 다리 각도를 미세 조정해 넘어지지 않고 안정적으로 걷도록 만듭니다.
5. 걷게 만드는 코드 (함수로 정리하기)
서보 2개로 전진·후진·좌회전·우회전을 만듭니다. 동작마다 함수로 묶어 두면 loop() 안에서 이름만 불러 조합할 수 있어요.
#include <Servo.h>
Servo servo_1;
Servo servo_2;
void setup() {
servo_1.attach(8);
servo_2.attach(9);
}
void loop() {
go();
go();
back();
back();
}
void go() {
servo_1.write(120);
servo_2.write(70);
delay(500);
servo_1.write(70);
servo_2.write(120);
delay(500);
}
void back() {
servo_1.write(70);
servo_2.write(70);
delay(500);
servo_1.write(120);
servo_2.write(120);
delay(500);
}
void left() {
servo_1.write(70);
servo_2.write(70);
delay(500);
servo_1.write(120);
servo_2.write(120);
delay(500);
}
void right() {
servo_1.write(88);
servo_2.write(88);
delay(500);
servo_1.write(110);
servo_2.write(110);
delay(500);
}
내 로봇에 맞게 걸음 보정하기 (튜닝)
조립 상태가 조마다 다르기 때문에, 위 각도가 그대로 잘 걷는 경우는 드뭅니다. 숫자를 바꿔 가며 우리 로봇에 맞는 값을 찾는 것이 이 프로젝트의 코딩 학습 목표예요.
| 바꿀 값 | 효과 | 이렇게 보정하세요 |
|---|---|---|
write()의 각도 (70·120 등) | 다리를 얼마나 크게 휘두를지 | 보폭이 작으면 두 값의 차이를 키우기 |
| 두 서보의 각도 차이 | 좌우 균형 | 한쪽으로 휘면 한쪽 값만 조금씩 조절 |
delay() 값 (500) | 걸음 속도 | 넘어지면 값을 늘려 천천히 |
| 함수 호출 순서 | 걸음 패턴 | go(); go(); left();처럼 자유롭게 조합 |
💡
left()와right()는 아직loop()안에서 호출되지 않았습니다. 직접 넣어 보고, 실제로 회전하도록 각도를 고쳐 보세요. 위 코드의left()는back()과 값이 같으니 그대로는 회전하지 않습니다 — 여기서부터가 학생들의 몫입니다.
6. 문제가 생겼나요? (자주 묻는 질문)
- 아두이노가 컴퓨터에 안 잡혀요 → 장치 관리자에 USB Serial CH340이 있는지 확인하고, 없으면 CH340 드라이버를 설치하세요.
- 서보가 아예 안 움직여요 → ① 센서쉴드에 외부 전원(VCC 빨강 / GND 검정)이 연결됐는지 ② 코드의
attach()핀 번호와 실제로 꽂은 핀이 같은지 확인하세요. - 다리가 짝짝이로 움직여요 → 조립 전 90도 정렬이 안 된 경우가 대부분입니다. 다리를 서보 혼에서 빼고 90도 코드를 올린 뒤 다시 끼우세요.
- 걷다가 자꾸 넘어져요 →
delay()값을 늘려 속도를 줄이고, 몸체가 앞뒤로 쏠리지 않도록 배터리 위치를 조절하세요. - 서보가 떨리면서 소리만 나요 → 전원 용량 부족입니다. 아두이노 USB 전원만으로는 부족하니 외부 전원을 꼭 연결하세요.
7. 평가 기준표 (총점 40점)
| 등급 | 점수 |
|---|---|
| 매우 우수 | 37~40점 |
| 우수 | 31~36점 |
| 보통 | 24~30점 |
| 미흡 | 23점 이하 |
| 평가 영역 | 평가 요소 | 상(4점) | 중상(3점) | 중하(2점) | 하(1점) |
|---|---|---|---|---|---|
| 설계/계획 | 아이디어 창의성 | 독창적이며 문제 해결에 적합 | 기존 아이디어에 응용이 있음 | 단순 모방 수준 | 아이디어 제시 없음 |
| 설계도 및 계획의 구체성 | 부품·구조·기능이 명확히 표현됨 | 주요 요소는 표현됨 | 일부 누락·단편적 | 불완전하거나 미작성 | |
| 제작 과정 | 부품 조립 및 배선 정리 | 정확하고 안전하게 조립됨 | 약간의 오차 있으나 작동 가능 | 오작동·조립 오류 다수 | 조립이 거의 안 됨 |
| 협업 및 역할 분담 | 적극적으로 협력하며 역할 수행 | 보통 수준의 협력 | 협력 미흡·편중 | 협업 의지 없음 | |
| 기능 구현 | 로봇 작동 정확도 | 모든 기능이 정확히 작동 | 대부분 기능 작동 | 일부 기능만 작동 | 작동하지 않음 |
| 작동 안정성 | 오작동 없이 안정적 | 간헐적 오작동 | 잦은 오류로 불완전 | 지속 작동 불가 | |
| 창의성 | 기능 외 요소의 창의적 추가 | 참신한 장치 있음 | 간단한 장치 추가 | 특별한 창의 요소 없음 | 단순 구현에 그침 |
| 실생활 응용 가능성 | 현실 적용·문제 해결에 연계 | 제한적 응용 가능성 | 응용 연결이 모호 | 응용 관점 없음 | |
| 발표/완성 | 제작 과정 설명 및 시연 | 흐름이 자연스럽고 이해도 높음 | 설명 구조가 분명 | 일부 누락·전달 부족 | 설명이 어렵거나 미실시 |
| 전체 완성도 | 정리 상태 우수, 완성도 높음 | 기능은 대부분 완성 | 외형·기능 미완성 | 조립·정리 미흡 |
과정 요소 보완 평가 항목
| 평가 영역 | 평가 요소 | 상(4점) | 중상(3점) | 중하(2점) | 하(1점) |
|---|---|---|---|---|---|
| 문제 해결 과정 | 문제 발생 시 해결 시도 | 문제를 명확히 인식하고 창의적·효과적으로 해결 | 문제 인식 및 해결 시도 있음 | 시도는 있었으나 효과적이지 않음 | 별다른 대응 없이 진행 |
| 수정 및 개선 노력 | 제작 중 수정·개선 시도 | 반복 실험과 피드백을 반영해 적극 개선 | 수정 시도 있으나 일부 반영 | 수정은 했으나 계획적이지 않음 | 수정·개선 활동 없음 |
| 자기 주도성 | 작업 주도적 참여 | 주도적으로 기획·실행 | 일정 부분 주도적 참여 | 지시에 따라 주로 수행 | 수동적 수행 |
| 기록 및 성찰 활동 | 과정 기록 및 자기 성찰 | 과정과 해결 과정을 구체적으로 기록·성찰 | 기록은 있으나 단편적 | 일부 기록 또는 성찰만 | 기록·성찰 없음 |
8. 더 해보기 — 다음 프로젝트
강아지 로봇을 완성했다면 다음 단계로 넘어가 보세요.
- 얼굴 로봇 프로젝트 — 카메라가 인식한 얼굴을 따라 고개를 돌리고 눈을 깜빡이는 로봇
- 외줄타기 로봇 — 예고 영상
배우는 내용: 로봇 설계, 센서·액추에이터 활용, 제어 알고리즘
사용 도구: 아두이노 우노, 센서쉴드, 모터드라이버, 서보모터, DC모터, 퓨전 360, 틴커캐드, 전자회로·배터리
수업에서 만든 작품이나 궁금한 점이 있다면 언제든 공유해 주세요. 여러분이 만든 강아지 로봇이 골봇의 다음 갤러리가 됩니다. 🤖