일반 ATmega328 칩이나 모듈을 아두이노처럼 사용하고 싶으신가요? 아두이노의 핵심 칩인 ATmega328에 부트로더(Bootloader)를 올리면, 비싼 아두이노 보드 없이도 아두이노 스케치 IDE를 통해 쉽게 코드를 업로드할 수 있습니다.
학부 시절부터 자주 사용되던 전통적인 AVR Studio 4.19 버전을 기준으로 퓨즈비트 설정부터 부트로더 업로드, 그리고 스케치 프로그래밍까지 핵심만 빠르게 정리해 드립니다.
1. 준비물 체크리스트
작업을 시작하기 전에 아래 하드웨어와 소프트웨어가 모두 준비되었는지 확인해 주세요.
하드웨어
- ATmega328 칩 또는 모듈
- ISP 다운로더 (부트로더 라이팅용 툴)
- USB to UART 모듈 (부트로더 설치 후 아두이노 스케치 코드 업로드용)
소프트웨어
- AVR Studio (본 가이드는 4.19 버전 기준이나 최신 버전도 프로세스는 동일합니다)
- Arduino IDE (스케치)
2. AVR Studio로 부트로더 굽기
순서를 삐끗하면 칩이 잠기거나(Lock) 동작하지 않을 수 있으니, 퓨즈비트 설정부터 차근차근 진행해야 합니다.
단계 1: 퓨즈비트(Fusebit) 설정
먼저 ISP 다운로더를 컴퓨터와 ATmega328 칩에 연결한 후, AVR Studio를 실행합니다. Fuses 탭으로 이동하여 외부 크리스탈 클럭 등을 정상적으로 인식할 수 있도록 아래 설정을 맞춰줍니다.

단계 2: 부트로더 Hex 파일 업로드
퓨즈비트 설정이 끝났다면 Program 탭으로 이동합니다. 아두이노 공식 부트로더 파일인 optiboot_atmega328.hex를 찾아 Flash 영역에 업로드해야 합니다.
해당 파일은 아두이노 IDE가 설치된 경로 내에 포함되어 있습니다. 아래 경로를 참고하여 파일을 지정한 뒤 프로그램(Flash Write)을 진행해 주세요.
- 일반적인 헥사(Hex) 파일 경로:
아두이노 설치 경로\Arduino\hardware\arduino\bootloaders\optiboot\ - 예시 (Windows 64비트 기준):
C:\Program Files (x86)\Arduino\hardware\arduino\bootloaders\optiboot\optiboot_atmega328.hex

단계 3: 락비트(Lockbits) 설정
부트로더가 정상적으로 올라갔다면, 마지막으로 LockBits 탭으로 이동하여 부트로더 영역이 덮어써지거나 손상되지 않도록 보호 설정을 해줍니다.

여기까지 완료했다면 이제 여러분의 ATmega328 칩은 평범한 MCU에서 ‘아두이노’로 변신에 성공한 것입니다.
3. 아두이노 스케치로 코드 업로드하기
부트로더를 구운 ATmega328 칩에 실제 동작 코드를 넣을 차례입니다. 잘 구워졌는지 확인하기 위해 가장 기본 예제인 Blink(LED 깜빡이기)를 활용해 보겠습니다.
⚠️ 주의하세요!
아두이노 스케치를 통해 코드를 업로드할 때는 USB to UART 모듈을 사용해야 합니다. 부트로더를 구울 때 썼던 ISP 다운로더로는 스케치 직접 업로드가 불가능합니다.
아두이노 IDE 설정 환경
- ATmega328 모듈의 TX, RX, GND, VCC 핀을 USB to UART 모듈에 교차 연결(TX-RX, RX-TX)하여 PC에 꽂습니다.
- 아두이노 IDE를 실행하고 파일 -> 예제 -> 01.Basics -> Blink를 선택합니다.
- 상단 메뉴에서 툴 설정을 아래와 같이 맞춰줍니다.
- 도구 -> 보드:
Arduino Mini w/ ATmega328 - 도구 -> 프로그래머:
AVR ISP - 도구 -> 포트: 연결된 USB to UART의 COM 포트 선택
- 도구 -> 보드:
꿀팁: DTR 핀이 없을 때 ‘수동 리셋’ 타이밍 잡기
사용 중인 USB to UART 모듈에 자동 리셋을 지원하는 DTR 핀이 없다면 코드가 올라가지 않고 에러가 발생합니다. 이럴 때는 당황하지 말고 수동 리셋 버튼을 활용하면 됩니다.
- 아두이노 IDE에서 업로드(화살표 버튼)를 누릅니다.
- 누름과 동시에 ATmega328 모듈에 있는 하드웨어 리셋(Reset) 버튼을 꾹 누르고 기다립니다.
- 스케치 하단 상태창에 컴파일이 끝나고 ‘업로딩…’이라는 문구가 뜨는 순간, 누르고 있던 리셋 버튼에서 손을 뗍니다.

타이밍이 엄청나게 칼같이 맞아야 하는 것은 아니니, ‘업로딩’ 글자를 보고 살짝 여유 있게 떼셔도 잘 들어갑니다. 완료되면 ‘업로드 완료’로 문구가 변경됩니다.
4. 핀 맵(Pin Mapping) 정보 확인
코드를 작성할 때 사용하는 아두이노의 디지털/아날로그 핀 번호는 실제 ATmega328 칩의 물리적인 핀 번호와 다릅니다. 혹시 본인이 가지고 있는 모듈의 핀 배치가 헷갈린다면 아래 아두이노 우노(Uno) 회로도를 참고하여 매핑 상태를 비교해 보시기 바랍니다.