본문 바로가기
아두이노 기본

[보드/소형] 세상에서 가장 작은 아두이노 ATtiny85를 소개합니다

by 작동미학 2015. 2. 11.
반응형

작은 칩으로 구현된 아두이노인 ATtiny85를 구동할 수 있다

 

▶ 이 가이드를 따라하면,

- 1000원 미만의 아두이노인 ATtiny85를 사용해볼 수 있다.

- 아두이노를 경유하여 다른 보드에 업로드 하는 방식을 배울 수 있다

 

▶ 부품 설명 및 회로 구성

Arduino는 사실 Atmel이라는 칩 제조사가 만든 ATmega328이라는 칩을 응용한 제품이다. 이 칩에 USB를 연결하고 몇가지 전압 공급 기능을 추가로 갖춘 것이 Arduino라고 볼 수 있다. 그러면 이런 칩 중에 소형은 혹시 없는가?

있다. 바로 ATtiny85칩이다. Atmel은 다양한 종류의 유사 칩을 보유하고 있으며, 핀 개수에 따라 ATtiny84도 있다. 국내에서 매우 저렴하게 이 칩을 구매할 수 있는데(작동 Mhz에 따라 조금씩 다르지만 결국 비슷하다), 대량구매시 몇 백 원에 살 수 있다.

단점은 역시 Arduino UNO류보다는 활용가능한 PIN개수와 용량이 적다는 것이다. 아래처럼 매우 소수의 핀만 제공된다. 하지만 만약에 핀3개정도만 필요한 기능을 구현한다면 이것만으로도 딱이다. 아래처럼, 디지털 데이터핀 2개와 아날로그 3핀이 지원되는 것을 볼 수 있다.

 

<ATtiny85/ATtiny45/ATtiny84 그림. ATtiny84의 지원 핀 수가 더 많다>

 

<ATtiny45/85의 핀 정보/highlowtech.org 발췌>

그런데 자세히 보면 USB 포트가 없다. 시리얼 통신 없이 어떻게 프로그램을 집어넣지? USB를 경유하여 업로드할 수 있는 별도 장치가 제공되기도 하는데(USB ISP Programmer 등), 여기서는 간단히 Arduino UNO R3를 사용해 blink program을 업로드하는 법을 배워보자. 이를 위해서는 아래와 같은 배선이 필요하다(UNO R3기준, R2이하는 10 uF 커패시터가 필요하다고 알려져있다.)

<ATtiny85프로그램 위한 연결배선/toasterbotics.blogspot.kr 발췌>

<실제 연결 샘플은 위와 같다. UNO의 D9 / ATtiny85의 Pin 3 연결은 생략 가능>

 

▶ 소스 코드 입력 및 구동

ATtiny85 칩에 곧바로 프로그램을 업로드할 수 없으므로. 다음과 같은 과정을 거친다.

일단 https://github.com/damellis/attiny/archive/master.zip 로 Arduino 컴파일을 위한 하드웨어 정보를 설치한다. 해당 정보를 아두이노설치폴더\hardware\에 복사한다. 단, 폴더명은 attiny_master가 아니라 attiny로 생성한다. 아도이노설치폴더\hardware\attiny\boards.txt 파일이 존재하도록 설치 되었다면 맞다. 설치 후 아두이노 스케치인, IDE를 재시작한다.

이후에는 아두이노를 프로그램 전달 역할로 바꾸기 위해 아두이노 보드(UNO기준)에 ArduinoISP를 컴파일해서 업로드 한다.


<메인메뉴 파일->예제->ArduinoISP 선택하여 일반적인 컴파일/업로드 수행>

이후 컴파일 대상 Board명은 ATtiny85 1Mhz(대부분 통용), 프로그래머는 Arduino as ISP를 아래와 같이 고르자

<도구->보드->ATtiny85 (구매 칩 속도에 맞게 선택)>

<도구->프로그래머->Arduino as ISP>

이제 이렇게 변경하고 나서 ATtiny85데이터 0번 핀을 통해 LED를 깜빡이는 소스코드를 넣고 컴파일 및 업로드를 해보자. 그러면 USB에 연결된 Arduino UNO가 업로드된 프로그램을 ATtiny85칩에 입력한다.

이때 업로드 완료시에도 "avrdude: please define PAGEL and BS2 signals.."라는 오류가 나는데 무시하면 된다.

송신 모듈 소스 원본 GitHub 링크 : https://github.com/bbangpan/bbangpan.com/blob/master/neibc_attiny85_blink/neibc_attiny85_blink.ino

http://www.bbangpan.com ----------------------------------

/* Originally posted on www.bbangpan.com

 

Program Description: ATTINY85 test code

Needed library : None

Tested on : Arduino 1.0.6, Arduino UNO R3/ATTINY85

 

Copyright (c) 2015 www.bbangpan.com. All rights reserved.

This program can be used for any non-commercial purpose freely. */

 

int led = 0;

 

// the setup routine runs once when you press reset:

void setup() {

// initialize the digital pin as an output.

pinMode(led, OUTPUT);

}

 

// the loop routine runs over and over again forever:

void loop() {

digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)

delay(400); // wait for a second

digitalWrite(led, LOW); // turn the LED off by making the voltage LOW

delay(400); // wait for a second

}

-------------------------------------------------------

이렇게 구동하고 업로드 시 나오는 완료 화면이다.

<컴파일/업로드시 무시 가능한 오류>

 

정말 blink가 잘 반영되었는지 0핀에 LED를 연결해 꼽아보자(과전류 방지용 저항은 330옴을 사용하였다)

<ATtiny85 단독 작동 모습. Pin 3에 LED를 연결해 시험해보았다. 아두이노는 5V전원만 공급중>

    

▶ 구매 가이드

ATtiny85 : http://www.eleparts.co.kr/EPX7PCF6 에서 국내 구매가 가능하다. Aliexpress에서는 US $1 수준으로 구매가 가능하다.

 

강의 키워드

아두이노 Attiny85, Arduino as ISP, ArduinoISP

반응형