아두이노 우노로 ATtiny85 프로그래밍하기: 저비용 멀티 센서 솔루션
왜 ATtiny85인가?
여러 위치에서 센서 데이터를 읽어야 하는 프로젝트에서 아두이노 우노를 여러 대 사용하는 것은 비용과 공간 낭비입니다. ATtiny85는 단돈 1-2달러 수준의 8핀 마이크로컨트롤러로, PWM 핀 2-3개와 ADC 핀 4개만 필요하다면 완벽한 대체재가 됩니다. 저전력, 소형, 저렴한 장점을 모두 갖췄습니다.
ATtiny85 핀아웃 (8핀 DIP 패키지)
| 핀 번호 | 기능 | 아두이노 핀 번호 |
| 1 (PB5) | 리셋 / ADC0 (D5) / PWM | 5 |
| 2 (PB3) | ADC3 (D3) / PWM | 3 |
| 3 (PB4) | ADC2 (D4) / PWM | 4 |
| 4 (GND) | 그라운드 | - |
| 5 (PB0) | MOSI / SDA / ADC0 (D0) / PWM | 0 |
| 6 (PB1) | MISO / ADC1 (D1) / PWM | 1 |
| 7 (PB2) | SCK / ADC2 (D2) / PWM | 2 |
| 8 (VCC) | 전원 (2.7V-5.5V) | - |
데이터시트: ATtiny25/45/85 데이터시트
1단계: 아두이노 우노를 ISP 프로그래머로 설정
- 아두이노 우노를 PC에 연결
- 아두이노 IDE에서 파일 → 예제 → 11.ArduinoISP → ArduinoISP 열기
- 업로드 (이제 우노가 ISP 프로그래머 역할 수행)
2단계: 아두이노 IDE에 ATtiny 보드 지원 추가
- 파일 → 환경설정에서 추가 보드 매니저 URL에 다음 추가:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
- 도구 → 보드 → 보드 매니저 열기
- "attiny by Davis A. Mellis" 검색 후 설치
- 설치 완료 후 도구 → 보드 메뉴에 "ATtiny" 항목 생성 확인
3단계: ATtiny85와 아두이노 우노 연결
| 아두이노 우노 | ATtiny85 | 비고 |
| 5V | VCC (핀 8) | |
| GND | GND (핀 4) | |
| 핀 13 (SCK) | 핀 7 (PB2/SCK) | |
| 핀 12 (MISO) | 핀 6 (PB1/MISO) | |
| 핀 11 (MOSI) | 핀 5 (PB0/MOSI) | |
| 핀 10 (SS) | 핀 1 (PB5/RESET) | 리셋 제어용 |
중요: 아두이노 우노의 RESET과 GND 사이에 10μF 전해 콘덴서를 연결하세요 (극성 주의: 음극 → GND). 이 캡은 프로그래밍 중 우노가 자동 리셋되는 것을 방지합니다.
4단계: ATtiny85 설정 및 프로그램 업로드
- 도구 → 보드 → ATtiny 선택
- 도구 → 프로세서 → ATtiny85 선택
- 도구 → 클럭 → 8 MHz (내부) 선택
- 도구 → 프로그래머 → Arduino as ISP 선택
- 도구 → 부트로더 굽기 실행 (필수! 출하 시 1MHz로 설정되어 있음. 이 과정으로 8MHz 퓨즈 비트 설정)
- 예제 파일 → 예제 → 01.Basics → Blink 열기
- 코드 내
pinMode(13, OUTPUT)를 pinMode(0, OUTPUT)로 변경 (ATtiny85 핀 5 = 아두이노 핀 0)
- 업로드 (일반 업로드 버튼 사용, "프로그래머를 사용하여 업로드" 아님)
5단계: 독립 실행 테스트
모든 연결을 해제하고 코인 전지(CR2032 등)나 3.3V 전원으로 ATtiny85 단독 구동 테스트. 핀 5(PB0)에 LED + 저항 연결 시 1초 간격으로 깜빡임 확인 가능.
실전 팁: 프로그래밍 실드 제작
브레드보드 배선이 번거롭다면 전용 실드를 제작하세요. 저자는 첫 전자 프로젝트로 실드를 직접 설계/제작했으며, 향후 여러 ATtiny85를 양산 프로그래밍할 때 매우 유용합니다.
주의사항 및 트러블슈팅
- 클럭 설정 필수: 부트로더 굽기 없이 8MHz 코드 업로드 시 실제 동작 속도가 8배 느려짐
- 리셋 캡 필수: 10μF 캡 없으면 "프로그래머와 통신 실패" 오류 빈발
- 전압 범위: ATtiny85는 2.7V-5.5V 동작, 3.3V/5V 모두 호환
- 시리얼 통신: 하드웨어 UART 없음 → SoftwareSerial 또는 TinyDebugSerial 라이브러리 사용
- 라이브러리 호환성: 일부 아두이노 라이브러리(특히 타이머 의존)는 ATtiny에서 작동 안 할 수 있음
응용 예시
- 다중 온도/습도 센서 노드 (배터리 구동, 1년 이상 동작)
- 간단한 모터/서보 제어 노드
- IR 리모컨 수신기
- 웨어러블 LED 컨트롤러
- 소형 데이터 로거 (EEPROM 또는 외부 SPI 플래시 활용)
참고 자료