민선생의 전자공방 ・ 23시간 전
URL 복사 통계
본문 기타 기능
📌 예비 엔지니어를 위한 아두이노 3축 로봇 프로젝트 피지컬 코딩 실무능력 향상 프로젝트[1/7] — 3일 · 21시간 집중 과정 전 과정 공개 1일차 (7시간) — 아두이노 기초 + 자작 아두이노 부트로더 2일차 (7시간) — PCB 설계 (Altium Designer) 3일차 (7시간) — PCB 제작 + SMD 납땜 + 3축 로봇 완성 이 글은 그 중 1번째 / 7편 입니다. |
피지컬 컴퓨팅 기본기 · 민선생의 전자공방 [ 피지컬 코딩 실무능력 향상 프로젝트 1/7] 🤖 아두이노 프로젝트 개요 2,000원짜리 칩으로 나만의 아두이노를 만들다 |
이 시리즈는 제가 몇년전 대학생을 대상으로 진행한 전자응용 실무 역량 강화 특강의 실제 교안 및 프로젝트 과제를 공유하는 콘텐츠입니다. 콘텐츠에 맞게 3일 21시간 집중 과정 동안 아두이노 코딩부터 PCB 설계, 납땜, 3축 로봇 완성까지 피지컬 코딩의 처음과 끝을 모두 경험하도록 재구성했습니다. 물론 3일 만으로는 모든것을 다 경험할 수는 없습니다. 그래서 중요한 부분, 아트메가를 수업했는데 아두이노는 처음 배우는 학생들을 대상으로 아두이노 기본, 부트로더를 내장한 자작 아두이노 만들어 프로그램해보기, PCB 아트웍으로 자작아두노로 제어하는 3축로봇 보드 설계하기, 설계한 보드 생산하기(이건 개별 가공에 시간이 많이 들어 대표로 가공하는 시범을 보이고, 내가 설계한 보드를 인터넷으로 주문해보는 경험하고, PCB에 부트로더를 올린 아두이노 및 부품을 조립하는 실습(SMD 부품 조립), 완성된 보드에 프로그램을 입력하고 로봇의 외형을 조립해 최종 3축로봇 완성하기를 정말 빡빡하게 진행한 과제였습니다.
짧은 시간에 너무 많은것을 넣었지만 학생들이 이 모든 전과정을 한번쯤 완벽히 경험해 앞으로 실습하면서 이것이 왜 중요한 요소인지 느끼게 해주고 싶었습니다.
한번의 완벽한 시작부터 완성까지의 경험이 필요합니다. 이후는 조금더 정교하고, 조금더 복잡해지는 일만 남은것이니까요. 엔지니어가 되기위한 첫걸음을 떼어주고 싶어 만든 과제입니다.
아마 블로그에 이미 올렸던 콘텐츠가 곳곳에 보일것입니다. 기판의 모습은 제가 아두이노를 쉽게 배울수 있도록 만든 에듀메이커보드의 모양입니다. ^^
"피지컬 코딩"이란 소프트웨어 코딩에 그치지 않고 하드웨어까지 직접 만들어 움직이게 하는 것입니다. 화면 속 코드가 실제 세상의 모터를 돌리고, 로봇을 움직이는 그 순간의 감동은 경험해 본 사람만이 압니다. 그 감동을 함께 나누고 싶습니다.
3일 강의 구성 한눈에 보기 1일차 (7시간): 아두이노 기초 → 자작 아두이노 부트로더 만들기 2일차 (7시간): Altium Designer로 3축 로봇 PCB 설계하기 3일차 (7시간): 기판 가공 → SMD 납땜 → 3축 로봇 완성! |
■ 자작 아두이노(ATmega328)를 이용한 3축 로봇 제작
- 강의 계획 (3일, 21시간)
■ day1 Arduino & 자작(ATmega328P) 아두이노
1. 아두이노 둘러보기
2. 아두이노와 브레드보드로 ATmega328p 아두이노 부트로더 Uploader 만들어 굽기
2. ATmega328p로 만든 자작 아두이노로 LED 및 RC서보모터 제어하기
■ day2 PCB Artwork(Altium Designer 사용)
1. PCB 설계와 전자제품 생산공정(PCB 설계, PCB 제작공정, SMT 생산기술) 소개
2. 자작 아두이노로 구동되는 3측 로봇 PCB 설계
∙ schematic/Footprint 라이브러리 만들기 (Footprint 3D Library 만들기)
∙ schematic 그리기
∙ PCB Board 설계
■ day3 SMD Soldering/Rework 및 로봇 프로그래밍
1. 자작아두이노로 구동되는 3측 로봇 PCB 설계 기반 샘플기판 가공하기
2. 기판에 Through hole, SMD 부품 장착하기
3. 조립 검사 및 Rework
4. 자작 로봇 제어 프로그래밍
5. 자작아두이노로 구동하는 3축로봇 완성 및 상호토론
DayⅠ. 아두이노 & 자작(ATmega328P) 아두이노
□ 참고 사이트
- 아두이노 부트로더 https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard
- fritzing 다운로드 https://fritzing.org
- NCS자료 https://ncs.go.kr
□ 소요 기자재 및 재료
- 컴퓨터, 아두이노, 브래드보드, 배선, LED, 저항(330, 10k), ATmega328, 레조네이터
| 🔌 왜 아두이노(Arduino)를 사용했는가? |
아두이노는 아트멜(Atmel)사의 AVR 마이크로컨트롤러를 사용해 이탈리아에서 개발되었으며, AVR 마이크로컨트롤러를 사용해 만든 하드웨어와 소프트웨어 개발을 쉽게 해주는 개발환경(IDE)을 합쳐서 아두이노라 합니다.
아두이노 소프트웨어는 공식 홈페이지에서 무료로 제공되며, 윈도우, MAC, 리눅스 등 운영체제에 관계없이 사용할 수 있는 크로스플랫폼(Cross Platform)을 지원합니다. 공개된 하드웨어를 활용해 전 세계 많은 프로그래머의 자료를 활용해 나만의 응용 작품을 만들 수 있다는 점이 아두이노의 가장 큰 장점입니다.
AVR 활용을 위한 컴파일러 프로그램이 보통 150만 원 정도임을 감안하면, 무료로 제공되는 컴파일러와 단순한 인터페이스만으로 프로그램 작성, 기계어 번역, 마이크로컨트롤러로 업로드까지 한 번에 실행해주는 막강한 기능을 제공합니다.
💡 컴파일러(Compiler)란? 사람이 작성한 프로그램을 컴퓨터가 이해할 수 있는 기계어로 번역해 주는 프로그램입니다. 아두이노 IDE는 이 컴파일러가 무료로 내장되어 있습니다! |
7,000~35,000원가량의 저렴한 아두이노 보드에서부터, 기술 능력이 향상되면 2,000원 정도의 마이크로컨트롤러(ATmega328)로 나만의 아두이노를 직접 만들어 사용할 수 있습니다. 이 시리즈의 핵심 내용 중 하나입니다!
| ③ 공개 소스 프로그램 (Open Source) |
아두이노 프로그램은 공개 소스 형태로 발표되었습니다. 고급 프로그래머가 만든 LCD 제어 함수, 서보모터 라이브러리 등을 간단한 명령어 한 줄로 초보자도 쉽게 활용할 수 있습니다. 고급 프로그래머의 어깨 위에 올라타는 것입니다
| ④ 공개 하드웨어 (Creative Commons License) |
아두이노 모듈의 회로도는 영리를 목적으로 하지 않는 한 자유로이 사용할 수 있는 저작권(Creative Commons License)으로 발표되었습니다. 회로 설계자가 아두이노 모듈을 확장하거나 기능을 향상시켜 자신만의 아두이노 모듈을 만들어 사용할 수 있습니다.
| 💻 아두이노 소프트웨어 — 스케치(Sketch) |
아두이노로 프로그램을 작성하기 위해 아두이노 공식 홈페이지(http://www.arduino.cc)에서 무료로 제공하는 스케치(Sketch)라는 통합개발환경(IDE; Integrated Development Environment)을 사용합니다.
홈페이지에서 각자의 운영체제에 맞는 스케치 프로그램을 다운로드 받아 설치한 뒤 프로그램을 작성하고, 이를 컴파일(Compile)한 다음 아두이노 하드웨어에 탑재(Upload)하면 동작이 실행됩니다.
💡 부트로더(Bootloader)란? 컴퓨터의 윈도우 운영체제와 유사한 역할을 합니다. 전원이 켜지면 마이크로컨트롤러가 처리해야 할 동작 과정을 내장된 메모리에 미리 저장해 놓은 프로그램입니다. 아두이노에서 부트로더는 컴퓨터와의 통신을 통해 작성된 프로그램을 마이크로컨트롤러 메모리에 저장하고 실행하는 역할을 합니다. → 3/7편에서 ATmega328에 직접 부트로더를 굽는 실습을 합니다! |
전 세계에서 사용되는 Microchip사의 PIC이나 Atmel사의 AVR 등 대표적인 마이크로컨트롤러를 사용하기 위해서는 ISP라는 시리얼 통신 장비와 보통 150만~250만 원가량의 컴파일러가 필요합니다. 아두이노는 이 모든 것을 무료·오픈소스로 제공합니다.
개발하고자 하는 목적에 따라 다양한 아두이노 보드를 선택할 수 있습니다.
| 보드명 | 컨트롤러 | 전압 | 디지털I/O | 아날로그 | 플래시 | 클럭 | 특징 |
| Uno | ATmega328 | 5V | 14(PWM 6) | 6 | 32KB | 16MHz | 기본·입문용 |
| Mega | ATmega2560 | 5V | 54(PWM 15) | 16 | 256KB | 16MHz | 대규모 I/O |
| Nano | ATmega328 | 5V | 14(PWM 6) | 8 | 32KB | 16MHz | 소형화 |
| Pro mini | ATmega168 | 5V | 14(PWM 6) | 8 | 16KB | 16MHz | 초소형 |
| Lily Pad | ATmega328 | 5.5V | 14(PWM 6) | 6 | 16KB | 8MHz | 웨어러블 |
| Fio | ATmega328 | 3.3V | 14(PWM 6) | 8 | 32KB | 8MHz | XBee 무선 |
| Leonardo | ATmega32u4 | 5V | 20(PWM 7) | 12 | 32KB | 16MHz | USB HID |
| Due | AT91SAM3X8E | 3.3V | 54(PWM 12) | 12 | 512KB | 84MHz | 고성능 |
| 🔍 아두이노 우노 R3 — 가장 많이 쓰이는 기본 보드 |
지금부터 가장 많이 사용하고 있고 우리가 공부할 아두이노 우노 보드에 대해 알아보겠습니다. 아두이노 우노는 아트멜(Atmel)사의 ATmega328 28핀 마이크로컨트롤러를 기반으로 만든 보드입니다.
| 항목 | 내용 |
| 마이크로컨트롤러 | ATmega328P (28핀 DIP) |
| 동작 전압 | 5V |
| 플래시 메모리 | 32KB (프로그램 저장 공간) |
| EEPROM | 1KB (중요 데이터 저장) |
| SRAM | 2KB (실행 중 데이터) |
| 동작 클록 | 16MHz |
| 디지털 I/O | 14개 (D0~D13) — 스위치 입력, LED·모터 제어 출력 |
| PWM 출력 | 6개 (D3, D5, D6, D9, D10, D11) — 모터 속도 제어, LED 밝기 제어 |
| 아날로그 입력 | 6개 (A0~A5) — 0~5V → 0~1023 변환 (10비트 ADC) |
💡 PWM(펄스폭변조)이란? 디지털 신호(0 또는 1)만 출력할 수 있는 핀에서 펄스의 폭(HIGH 유지 시간)을 바꿔 아날로그처럼 동작하게 하는 방법입니다. analogWrite(핀, 0~255)로 LED 밝기 조절, 모터 속도 제어에 활용합니다. |
| 📝 아두이노 스케치 구조 — setup과 loop |
아두이노 프로그램(스케치)은 반드시 두 개의 함수로 구성됩니다. 이 구조만 이해하면 아두이노 코딩의 절반은 된 것입니다.
// setup 함수 — 처음 한 번만 실행 void setup() { pinMode(핀번호, INPUT/OUTPUT); // 핀 입출력 설정 // 변수 초기화, 하드웨어 설정 등 }
// loop 함수 — 반복 실행 (무한 루프) void loop() { digitalWrite(핀번호, HIGH); // 출력 delay(1000); // 1초 대기 digitalWrite(핀번호, LOW); delay(1000); } |
| 함수 | 실행 시점 | 주요 용도 |
| setup() | 전원 켜질 때 단 1회 | 핀 설정, 초기화 |
| loop() | 무한 반복 | 실제 동작 제어 |
아두이노는 자주 쓰는 기능을 미리 만들어 놓은 라이브러리 함수를 제공합니다. 이 함수들을 활용하면 복잡한 코드 없이도 다양한 하드웨어를 제어할 수 있습니다.
| 구분 | 함수명 | 설명 |
| 디지털 I/O | pinMode(핀, INPUT/OUTPUT) | 핀을 입력 또는 출력으로 설정 |
| digitalRead(핀) | 디지털 핀 입력 읽기 (0 또는 1) |
| digitalWrite(핀, HIGH/LOW) | 디지털 핀 출력 (5V 또는 0V) |
| 아날로그 I/O | analogRead(핀) | 아날로그 입력 읽기 (0~1023) |
| analogWrite(핀, 0~255) | PWM 출력 (0~255) |
| 시간 | delay(ms) | ms 단위 시간 지연 (delay(1000) = 1초) |
| delayMicroseconds(us) | 마이크로초(㎲) 단위 시간 지연 |
| 소리 | tone(핀, 주파수) | 부저로 소리 내기 |
| 펄스 | pulseIn(핀, HIGH/LOW) | 핀의 펄스 폭 측정 (초음파 센서 등) |
| 📚 아두이노 우노 R3(Arduino Uno R3) |
지금부터 가장 많이 사용하고 있고 우리가 공부할 아두이노 우노 보드에 대해 알아볼까요?
아두이노 우노는 아트멜(Atmel)사의 Atmega328 28핀 마이크로컨트롤러를 기반으로 만든 보드입니다. 그러므로 입출력 단자와 메모리는 모두 ATmega328과 같습니다. 프로그램을 저장하는 메모리는 플래시메모리로 32Kbyte, 비밀번호와 같은 중요 데이터를 저장하는 EEPROM은 1Kbyte를 갖고 있으며 15개의 디지털 입출력 단자와 6개의 아날로그 입력 단자를 갖고 있습니다. 동작 클록은 16MHz입니다.
디지털 입출력 핀 14개 (Pin D0~D13)
14개의 디지털 입출력 핀을 사용해 스위치 입력, 또는 LED나 모터 제어 출력으로 자유로이 사용할 수 있습니다.
아날로그 출력핀 6개 (Pin D3, D5, D6, D9, D10, D11)
디지털 핀 가운데 6개는 펄스폭을 바꾸는 펄스폭변조(PWM)제어로 아날로그 값을 출력할 수 있고, 이 아날로그 출력단자를 이용해 모터의 속도제어 등을 쉽게 수행할 수 있습니다.
아날로그 입력핀 6개(Pin A0~A5)
6개의 아날로그 입력핀은 0~5V의 아날로그 전압을 0~1023의 이진수로 변환하여 광량, 속도, 전압, 온도 등을 아두이노가 입력 받습니다.
| ✅ 피지컬 코딩 실무능력 향상 프로젝트 1/7 정리 |
오늘 배운 핵심 내용 ① 아두이노 = AVR 마이크로컨트롤러 + 무료 IDE + 오픈소스 하드웨어 ② 4가지 장점: 무료 IDE · 저렴한 가격 · 오픈소스 코드 · 오픈소스 하드웨어 ③ 스케치 구조: setup() → 1회 실행 / loop() → 무한 반복 ④ 핵심 함수: pinMode / digitalRead / digitalWrite / analogRead / analogWrite / delay ⑤ ATmega328 칩 단 2,000원 — 나만의 아두이노를 직접 만들 수 있다! |
📌 다음 편 예고 — 2/7 첫 번째 코딩 — LED 제어와 RC 서보모터 움직이기 ▸ LED를 켜고 끄는 기본 코딩부터 PWM으로 밝기 제어까지 ▸ RC 서보모터 원리와 0도·90도·180도 제어 실습 ▸ 사용자 정의 함수로 코드를 더 깔끔하게 만드는 법 |
민선생의 전자공방 · blog.naver.com/hansikmin
아두이노, ATmega328, 피지컬코딩, 마이크로컨트롤러, 아두이노우노, 부트로더, 오픈소스하드웨어, 민선생전자공방
태그#아두이노#ATmega328#피지컬코딩#마이크로컨트롤러#아두이노우노#부트로더#오픈소스하드웨어#민선생전자공방 태그수정