아두이노 IDE에서 ATtiny85를 프로그래밍하는 방법과 다양한 소형 AVR 마이크로컨트롤러 종류
잘 정리한 튜토리얼을 찾았다. 너무 길어 몇 부분으로 나누어 포스팅 한다. 그들의 노고, 공개한 헌신뿐만 아니라 그 여정을 존중한다. 아마 하기 싫었고, 포기하고 싶었고, 무슨 대단한 일인가 싶기도 했겠지만 그들은 했다.
그렇다면 나도 한다.
튜토리얼의 전체 포스팅 목록은 아래와 같다. 순서대로 주요 항목을 찾아 학습하시면 된다.
아두이노 IDE에서 ATtiny85 프로그래밍 마스터 1
아두이노 IDE에서 ATtiny85 프로그래밍 마스터 2
아두이노 IDE에서 ATtiny85 프로그래밍 마스터 3
아두이노 IDE에서 ATtiny85 프로그래밍 마스터 4
아두이노 IDE에서 ATtiny85 프로그래밍 마스터 5
튜토리얼은 아두이노 개발 환경 1.8 버전이라서 2.3 버전인 지금과 같지 않지만 그 과정 설명은 모두 현재에 적용된다. 오히려 설명을 건너뛰더라도 모두 내부적으로 실행을 하는 셈이다. 꼼꼼히 참고하면 된다. 나도 이전 이미지를 그대로 남기고 현재 이미지를 캡쳐하여 설명을 보완하겠지만 원문을 충실히 남겨두기로 한다.

ATtiny85-20PU
이 페이지는 현재 제작 중이며 주기적으로 업데이트됩니다. 여기서 다루고 있는 항목은 아래와 같습니다.
• ATTiny25/45/85 핀 배치
• Arduino IDE에 ATTiny "코어" 설치
• ATtiny용 프로그래머 인터페이스 설정
• Arduino를 ISP 프로그래머로 사용하여 부트로더를 굽고 스케치 업로드
• Uno용 프로그래밍 '쉴드' 제작
• USBasp 프로그래머를 이용한 프로그래밍
• FTDI USB-시리얼 어댑터를 이용한 프로그래밍
• USB 직접 프로그래밍이 가능한 ATTiny85(Digispark)를 제작하세요 .
• 단 하나의 핀만 사용하여 ATTiny를 시리얼 모니터에 연결하세요
• ATtiny용 퓨즈 설정기 제작 및 구현 - ATtiny85에서 6개의 I/O 핀을 활용하세요!
• ATtiny에서 I2C, SPI, 주소 지정 가능 LED 제어, OneWire 등을 사용하세요
• 문제점 및 해결 방법 - UART 미지원, Tiny의 ADC 노이즈 문제 등
• 더 많은 공간과 속도를 위해 저수준 명령 및 비트 연산을 활용한 ATTiny85 코딩 개선
• 절전 - ATTiny 슬립 모드를 통해 전류 소모량 감소
아래는 아직 작성중입니다.
• 브레이크아웃 보드 솔루션 및 프로그래밍 옵션을 포함한 최신 UPDI tinyAVR 장치로의 전환
• 유용한 ATTiny 스케치
ATtiny85는 소형 8핀 AVR 마이크로컨트롤러로, 아두이노의 ATmega328p보다 훨씬 작은 버전입니다. 'Tiny'는 더 크고 인기 있는 328p에 비해 기능이 일부 제한적이지만, 크기가 작고 구조가 간단하여 5~6개의 I/O 핀만 필요한 대부분의 메이커 DIY 프로젝트에 적합합니다.
ATtiny85를 비롯한 ATTiny 시리즈는 더 큰 규모의 AVR 제품군에 속합니다. 2005년에 출시되었지만, 저렴한 가격과 메이커 친화적인 8핀 DIP(DIL) 스루홀 패키지 덕분에 현재까지도 마이크로칩에서 생산되고 있습니다. 최근 몇 년간 칩 공급 부족 현상이 있었음에도 불구하고, Digi-Key를 비롯한 여러 판매처에서 여전히 많은 양을 구할 수 있으며, DIY 메이커 프로젝트에서 가장 많이 사용되는 칩 중 하나입니다. 전문적인 프로토타입 제작 및 턴키 생산 제품을 위해 8핀 SOIC 및 20패드 QFN/MLF SMD 옵션도 제공됩니다.
이 페이지에서는 "ATTiny"와 "ATTiny85"를 같은 의미로 사용하며, 대부분의 예제와 기능은 서로 다른 IC 유형 간에 호환됩니다. ATtiny MCU 제품군의 패키지 비교, 출시일, 사양 및 생산 프로필을 포함한 자세한 내용은 위키피디아 ATtiny 비교 차트에서 확인할 수 있습니다.
ATTiny85의 주요 특징은 다음과 같습니다.
• 8비트 하버드형 RISC 아키텍처 - 120개 명령어, 32x8 범용 레지스터
• 8KB 플래시 프로그램 메모리 - 10,000회 쓰기/지우기 주기
• 512바이트 EEPROM - 100,000회 쓰기/지우기 주기
• 512바이트 SRAM
• 프리 스케일러와 2개의 PWM 채널을 갖춘 8비트 타이머/카운터
• 별도의 프리 스케일러와 기타 기능을 갖춘 8비트 고속 타이머/카운터
• 10비트 ADC (단일 종단 채널 4개, 차동 쌍 2개)
• 워치독 타이머 • 아날로그 비교기 • 온칩 디버깅 (debugWIRE)
• SPI 포트를 통한 USI, ISP(ICSP)
• 외부 및 내부 인터럽트 소스
• 16MHz 외부 수정 발진기 (최대 20MHz), 8, 4, 1MHz 내부 발진기
• 6 프로그래밍 가능한 I/O 라인(리셋은 퓨즈 리세터가 있는 "약한" I/O 라인임)
• 1.8V(직렬), 2.7V(표준) - 5.5V 작동
• 3가지 소프트웨어 선택 가능 절전 모드: 300uA(1MHz, 1.8V)의 저전력 소비, 1.8V에서 0.1uA의 전력 감소 모드.
스펙을 영문으로 작성하면 아래와 같다.
The features & Specifications of the ATtiny85 microcontroller include the following.
The Architecture of the CPU is 8-bit RISC
Number of Pins-8
The frequency of CPU ranges from 0 to 20 MHz
The range of Operating Voltage is 4.5V to 5.5V
GPIO Ports are 6
One exterior interrupt on INT0 to GPIO7
8-bit Timer or Counter through compare modes is – 1
High-speed Timer or Counter with 8-bit is -1
PWM channels – 2
UART is Not Available
I2C Channel – 1
SPI communication channel is Single through different pins like MISO to GPIO6, MOSI to GPIO5 & SCK to GPIO7
LAN & CAN are not available
ADC with 10-bit & 4-channel
DAC is not available
USART Module with Single Channel
SRAM is 256 bytes
FLASH is 8K bytes
EEPROM is 512 bytes
Single analog comparator including input pins likeAIN0 to GPIO5, AIN1 to GPIO6
For each I/O pin, the max DC is 40mA
DC Current through GND & VCC Max is 200 mA
Operating Temperature ranges from -55ºC-to- +125ºC
Interfaces used for Communication are Master or Slave SPI serial, I2C, Two-wire & Universal Serial Interface
Timer Module is 2 – 8bit counter
Outputs of PWM -4
Speed of CPU is 1 MIPS at 1MHz
The size of Flash or Program memory is 8Kbytes
Program Lock & Watchdog Timer are available
Power Save Modes -3 like Power-down, ADC & Noise Reduction
아두이노 IDE(설치된 코어 사용)에는 몇 가지 제한 사항과 특정 기능의 부족이 있지만, 소프트웨어 솔루션을 통해 많은 기능을 사용할 수 있습니다.
더 자세한 정보는 마이크로칩(ATMEL) 매뉴얼을 참조하십시오.
ATTiny25, ATTiny45 및 ATTiny85의 핀 배열 :
클릭하여 크게 보세요.

ATTiny85 핀 배치 출처: https://github.com/SpenceKonde/ATTinyCore
ATTiny용 Arduino IDE 보드 관리자 코어 설치
아두이노 IDE의 보드 관리자를 설정하여 ATTiny 칩을 프로그래밍하는 방법을 알려드리겠습니다.
아두이노 IDE는 기본적으로 인기 있는 AVR 시리즈인 ATTiny를 지원하지 않는데, 이는 다소 이상한 점입니다. 하지만 몇 가지 단계를 거치면 다양한 ATTiny IC 유형과 풍부한 설정 옵션을 활용하여 곧바로 ATTiny를 사용할 수 있게 됩니다. 웹에서 검색해 보면 몇 가지 ATTiny 코어를 찾을 수 있지만, 가장 잘 알려진 코어는 Spence Konde가 관리하는 코어입니다. 그의 GitHub 사이트(https://github.com/SpenceKonde) 에서 코어의 일부 코드, 지속적인 업데이트 및 사용자 의견을 확인할 수 있습니다 . 그는 정말 훌륭한 작업을 해냈으며, ATTiny 프로젝트에 그의 코어가 유용하다고 생각되면 기부를 고려해 보시기 바랍니다.
아두이노 IDE에 무언가를 설치하는 것이 복잡하게 느껴질 수 있으므로 단계별로 설명하겠습니다. 진행 과정에서 어려움이 있거나 문제가 발생하더라도 양해 부탁드립니다. 이러한 문제를 해결하는 데 도움을 주는 훌륭한 커뮤니티들이 많이 있습니다. 아두이노 버전 1.8.13 이상을 권장합니다.
1단계: 코어 설치
방법 1 - 자동 설치 Spence Konde의 ATTinyCore는 보드 관리자를 업데이트하기 위해 자동으로 설치할 수 있습니다.
현재 URL은
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
http://drazzy.com/package_drazzy.com_index.json
a. 메뉴에서 파일 -> 환경설정 (PC) 또는 Arduino -> 환경설정 (Mac)으로 이동하여 " 추가 보드 관리자 URL "에 위의 URL을 입력합니다.
b. 메뉴에서 도구 -> 보드 -> 보드 관리자로 이동합니다.
c. "Spence Konde의 ATTinyCore" 를 검색하여 선택한 다음 "설치"를 클릭합니다. 보드 관리자를 열 때 " http://drazzy.com/package_drazzy.com_index.json 다운로드 오류 " 라는 오류 메시지가 나타날 수 있습니다 . 이는 제작자 또는 호스팅 사이트에서 인증서를 갱신하지 않았거나 다른 이유 때문일 수 있습니다. 일부 기기에서는 이 기능이 작동하지만 다른 기기에서는 작동하지 않는 것 같습니다. 그렇다면 두 번째 방법을 시도해 보세요.

방법 2 - 수동 설치 이 방법은 어렵지 않습니다. ZIP 파일을 다운로드하고 압축을 풀어서 특정 Arduino 폴더에 넣기만 하면 됩니다. a. Spence Konde의 GitHub 페이지 \에서 ZIP 파일을 다운로드하세요 . 녹색 < > 코드 버튼을 클릭 하고 드롭다운 메뉴에서 " ZIP 다운로드 "를 선택하세요.
b. Arduino IDE 스케치북 폴더를 찾으세요. 찾는 방법은 메뉴에서: 파일 -> 환경설정(PC 기준) 또는 Arduino -> 환경설정(Mac 기준)으로 이동한 후, 파일 탐색기를 사용하여 "스케치북 위치:" 아래에 표시된 폴더로 이동하세요.
c. 스케치북 폴더 내에 "hardware"라는 이름의 폴더가 없다면 새로 생성하세요! 이곳이 사용자 제작 보드가 저장될 위치입니다.
d. 다운로드한 ZIP 파일의 내용을 스케치북/hardware 폴더 안에 넣고 압축을 해제하세요. ZIP 파일이 하위 폴더를 추가로 포함하는 경우가 있으므로, 하드웨어 폴더 내부에 파일들을 포함하는 "ATTinyCore-2.0.0"(또는 해당 버전)이라는 메인 폴더만 존재하는지 확인하세요.
e. Arduino IDE를 재실행하면 이제 "도구(Tools) -> 보드(Board)" 아래에 "ATTinyCore (in sketchbook)"이라는 새 하위 메뉴가 표시됩니다: GitHub 게시물이나 .json 링크에 문제가 생길 경우를 대비해 ZIP 파일을 다운로드하여 보관해 두는 것을 권장합니다! 또한 가능한 경우 이전 릴리스 버전 몇 개도 다운로드하여 호환성 충돌을 방지하세요.
또는 David A. Mellis가 개발한 ATTiny 코어를 사용해 볼 수도 있습니다. Boards Manager URL의 .json 파일은 다음과 같습니다.
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
이제 프로그래밍 인터페이스를 설정할 준비가 되었습니다.
ATTiny용 프로그래밍 인터페이스 설정하기
별도의 (그리고 때로는 비싼) AVR 프로그래머를 구입할 필요가 없습니다. 아두이노를 ATTiny 프로그래머로 사용하는 방법을 알려드립니다
2단계: "프로그래머" 아두이노 우노 R3 준비하기
a. USB 케이블을 사용하여 아두이노 우노 R3(아두이노 나노 등)를 컴퓨터에 연결합니다.
b. 아두이노 IDE에서 도구 -> 보드 -> 아두이노 AVR 보드메뉴에서 "아두이노 우노"(또는 나노와 같은 다른 보드)를 선택합니다 .
c. 도구 메뉴에서 적절한 시리얼 포트를 선택합니다.
d. 아두이노 IDE에서 도구 -> 프로그래머 메뉴에서 " ISP 로 아두이노 "(인시스템 프로그래머)를 선택합니다 . [특정 아두이노 제품인 "ArduinoISP" 옵션은 선택하지 마십시오.]
e. IDE에서 "ArduinoISP" 예제 스케치를 열고 아두이노에 업로드합니다 . [ 스케치를 업로드하기 전까지 Uno의 Reset+GND에 10uF 커패시터를 설치하지 마십시오!] "하트비트" LED가 깜빡거리며 켜졌다 꺼졌다 하는 것을 보면 프로그래머 스케치가 실행 중임을 알 수 있습니다.


3 단계 : ATTiny 를 프로그래머 에 연결하기
Arduino Uno R3(Nano 등)를 다음과 같이 ATTiny85 IC에 연결합니다.( ATtiny13, ATtiny24, ATtiny44, ATtiny84, ATtiny25 및 ATtiny45에서도 작동합니다.)

아두이노 우노 R3를 이용한 ATTiny85 프로그래밍 - 회로도
부트로더 굽기 및 스케치 업로드
코드가 준비되면 다음 단계를 따라 칩에 코드를 업로드하세요.
4단계: 코어 구성하기
ATTiny를 프로그래밍하기 전에 설정해야 할 몇 가지 옵션을 살펴보겠습니다.
[이 설정은 Spence Konde의 ATTinyCore에 대한 옵션 설명입니다.] 다음 메뉴
에서 옵션을 찾으세요 . 도구 -> 메뉴...
보드: "여기에 선택한 보드" -> ATTinyCore ->
대상 ATTiny MCU IC 유형 선택. ATTiny85를 포함한 다양한 AVR ATTiny 유형을 사용할 수 있습니다.
"(부트로더 없음)" 표시는 스케치만 업로드되고 필요한 퓨즈도 설정됨을 나타냅니다.
이렇게 하면 IC 공간을 절약할 수 있습니다! ATTiny가 USB 인터페이스가 있는 '개발' 보드의 일부가 아닌 경우 부트로더는
필요하지 않으며 스케치에 8KB 전체를 사용할 수 있습니다!
"Optiboot 직렬 부트로더 포함" 표시는 부트로더가 설치됨을 나타냅니다. Optiboot는 512바이트만 사용합니다. "Micronucleus" 태그는 ATTiny에
USB 부트로딩/업로드 기능을 제공하도록 설계된 부트로더를 나타냅니다 . Micronucleus는 2KB의 공간을 차지하므로 ATTiny에서 사용할 수 있는 공간은 6KB로 줄어들고 최소 2개의 핀이 사용되지만, 그 대신 ATTiny85를 더 작지만 기능이 제한적인 Arduino Uno처럼 사용할 수 있습니다. 칩: "ATTinyXX" -> 여기서는 보드: 클럭 소스+속도(부트로드 시에만 설정): "X MHz(내부)" 에서 선택한 목록에서 특정 칩 모델을 선택합니다 . "(내부)"는 칩 내부에 내장된 RC(저항+콘덴서) 발진기에서 클럭이 작동함을 의미합니다. 1, 2, 4, 8MHz 중에서 선택할 수 있지만 1MHz와 8MHz가 가장 일반적으로 사용됩니다. 내부 RC 클럭은 본질적으로 정확도가 떨어지며 칩 제조 과정에서 5~10%의 오차 범위 내에서만 설정된다는 점을 명심하십시오. 또한 온도와 진동에 민감합니다. 내부 RC 클럭은 정확한 시간 유지가 필요하지 않은 대부분의 취미용 애플리케이션에는 적합 하지만, 직렬 통신에는 문제를 일으킬 가능성이 높습니다. (외부) 모드는 ATmega328p(아두이노) 칩과 마찬가지로 외부 수정 발진기 또는 세라믹 발진기 와 적절한 수동 부품이 필요하며, 이로 인해 ATTiny85의 2번 및 3번 핀과 함께 공간이 사용됩니다. 이 경우 타이밍이 매우 정확하며, 나머지 3개의 핀만 필요한 애플리케이션에는 이 구성이 적합합니다. 또한 최대 20MHz의 CPU 속도를 얻을 수 있습니다.
(외부) 클럭킹은 수정 발진기 입력 핀 하나만 필요하며 다른 MCU 클럭 또는 시스템 클럭에서 가져올 수 있습니다.
(PLL)을 사용하면 ATTiny는 내부 8MHz 발진기를 사용하여 약 16MHz로 작동할 수 있습니다.
클럭 속도가 1MHz, 8MHz 또는 기타 표준 속도 이외의 경우,
타이밍이 중요한 애플리케이션에서는 코드에서 특별한 처리가 필요하다는 점에 유의하십시오.
클럭 속도가 높을수록 ATTiny를 작동시키는 데 더 높은 전압(1.8V~5.5V)이 필요합니다! 사양 설명서의
millis()/micros() 함수를 참조하십시오. ->
활성화하면 Arduino IDE의 millis() 및 micros() 함수를 사용할 수 있지만 프로그램 플래시 공간을 일부 차지합니다.
비활성화하면 클럭 시간을 읽는 사용자 지정 비트뱅잉 방식이나 라이브러리를 사용해야 하지만 초기에는 약간의 공간을 절약할 수 있습니다.
내장 소프트웨어 시리얼("시리얼"): ->
소프트웨어 시리얼 라이브러리를 로드하는 대신, ATTinyCore는 PB1에 RX, PB0에 TX를 사용하여 시리얼 통신을 제공합니다.
표준 시리얼 기능을 사용하려면 ATTiny를 FTDI USB-to-Serial 어댑터에 연결하십시오. RX는 TX에, TX는 RX에 연결합니다.
PB0의 TX만 사용하고 RX는 사용하지 않는 옵션도 있습니다.
BOD 레벨(부트로드 시에만 설정): -> 브라운 아웃 감지(BOD)는 AVR 마이크로컨트롤러에 내장된 보호 기능으로 , 의도치 않은 저전력 공급 상황 발생 시 칩을 종료합니다. BOD 임계값은 1.8V, 2.7V, 4.3V로 설정할 수 있습니다. 마이크로컨트롤러에서 '브라운 아웃'이 발생하면 플래시/SRAM 데이터 손상뿐만 아니라 해당 장치가 제어하는 다른 장치에도 문제가 발생할 수 있습니다. 대부분의 취미 프로젝트에서는 BOD를 비활성화하여 전류 소모를 줄일 수 있습니다.
EEPROM 저장(부팅 시에만 설정): -> 스케치 업로드 시 EEPROM 데이터를 유지할지 여부를 선택할 수 있습니다

ATTinyCore 보드 옵션
5단계: 부트로더 굽기
새 ATTiny IC를 프로그래밍하려면 먼저 부트로더를 구워야 하며, 클럭 속도와 같은 코어 설정을 변경하는 경우에는 다시 구워야 합니다. 부트로더 없이 ATTiny를 프로그래밍하려는 경우에도, 제조 과정에서 미리 설정되지 않은 기본 퓨즈를 설정하기 위해 초기 부트로더 굽기가 필요합니다.
a. [도구] 메뉴 에서 " ISP로 Arduino 사용 "을 선택합니다 .
b. [도구] 메뉴에서 적절한 장치(ATTiny85)를 선택합니다.
c. 속도 및 기타 옵션과 같은 IC별 설정을 신중하게 선택합니다(4단계 참조).
d. [도구] 메뉴에서 " 부트로더 굽기 "를 선택합니다 . 상태 창에 확인 메시지가 표시됩니다.
6단계: 스케치를 대상 ATTiny 장치에 업로드합니다.
a. Arduino IDE에서 원하는 스케치를 준비합니다. b.
[도구] 메뉴 에서 " ISP로 Arduino 사용 "이 선택되어 있는지 확인합니다 .
c. [도구] 메뉴에서 적절한 장치(예: ATTiny85)를 선택합니다 . d. [도구] 메뉴 에서 속도, 퓨즈 옵션 등 IC별 설정을 신중하게 선택합니다. e. 상단의 (->) 버튼을 Shift 키를 누른 채 클릭하거나 [스케치] 메뉴에서 " 프로그래머를 사용하여 업로드 " 옵션을 선택하여 Arduino를 사용하여 대상 ATTiny 장치에 스케치를 프로그래밍합니다.
상태 창에 확인 메시지가 표시됩니다. 이전 섹션과 같이 ATTiny85 칩을 설정하는 경우 다음 설정을 시도해 보세요. ATTiny85, 부트로더 없음, 1MHz, BOD 없음, EEPROM 설정 저장, 소프트웨어 시리얼 및 millis()/miscros() 사용.
튜토리얼의 방대한 참고 자료 원문은 이 링크를 따라가세요. 헌신에 감사합니다.
'아두이노우노 R4' 카테고리의 다른 글
| 아두이노와 ADXL345 가속도계 방향 추적 3D 시각 (0) | 2026.02.17 |
|---|---|
| LDR 및 서보 모터를 사용한 2축 태양광 추적기 아두이노 프로젝트 (0) | 2026.02.14 |
| 아두이노 OLED 메뉴 디스플레이 (2) | 2026.02.03 |
| 아두이노와 3-디스플레이 OLED 시계 (0) | 2026.02.03 |
| Visuino를 사용한 실시간 시계 및 GC9A01 디스플레이 (0) | 2026.01.29 |
| 아두이노로 RGB LED 스트립 제어 (1) | 2025.12.27 |
| MFRC522 RFID 리더 접근 제어 배열 사용 (0) | 2025.12.11 |
| RFID RC522 모듈 Arduino Uno R4 WIFI 인터페이스 (0) | 2025.11.28 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩