중급 예제

약간은 익숙하시거나 익숙해지셨나요? 그렇다면 조금더 깊이 다뤄볼까요?

ATtiny85 x 캐패시터

2014-11-19 16:32:49

개요

ATtiny85는 간단하고 소형화를 원하는 아두이노 프로그램을 작동하려 할 때 최고의 선택이 될 수 있다.


ATtiny85는 일반 아두이노 보드(Mini까지 포함)와 비교하면 매우 작고 크기에 비해 사용하기가 상대적으로 쉬운 편이다.
하지만 크기가 작은 만큼 매우 적은 핀 수를 가지고 있으며, flashMemory 또한 일반 아두이노 보드와 비교하면 상대적으로 용량이 작기 때문에
프로그램 제작에 있어 제한이 될 수 있다.




짧게 설명하면
만들려는 프로젝트가 간단한 프로그램을 구동시키고 적은 수의 모듈을 필요로 한다면 ATtiny85는 최적의 선택이 될 수 있고
프로그램의 사이즈가 크고 많은 개수의 모듈을 필요로 한다면 ATtiny85보다는 Atmel328을 사용하는 아두이노보드를 사용하는 것이 낫다.

이번 프로젝트에서는 ATtiny보드에 부트로더를 올리고 간단한 예제를 돌려보는 방법에 대해 알아보자.

 

동영상

 

부품 목록

 

 

 

NO 부품명 수량 상세설명
1 아두이노 1 오렌지 보드
2 브레드보드 1  
3 ATtiny85 1  
4 점퍼 케이블 5~10  
5 캐패시터 1  

 

부품명 아두이노 브레드보드 ATtiny85 점퍼케이블 캐패시터
부품
사진

 

ATtiny85 사용법

ATtiny85를 사용하기 위해서는 일단 Attiny85를 사용하기 위해 필요한 파일들을 받아야 한다.

ATtiny85파일 내려받기   <- 링크

받은 파일은 압축을 푼 다음에 다음과 같이 아두이노가 위치한 디렉토리안에 있는 hardware 폴더에 넣어주어야 한다.




압축을 풀고 아두이노IDE(Sketch)를 재실행시켰을 때 도구(tools)-보드(board)에서 아래와 같이 ATtiny항목이 추가되었다면 제대로 설치가 된 것이다.
아직은 ATtiny쪽 항목을 체크하지 말고 기본 보드인 UNO쪽에 체크해 둔다.




그 다음에는 ATtiny85에 부트로더를 업로드 시키기 위해 아두이노에 ArduinoISP를 업로드 시켜야 한다.
ISP란 In System Programming의 준말로 이미 보드나 시스템에 연결되어 고정된 FlashMemory나 eeprom등에 회로를 연결하여 프로그래밍을 하는 것을 만한다. 
ArduinoISP의 역할은 아두이노가 받은 소스코드를 아두이노와 연결된 다른 장치(ATtiny85)에 그 코드를 프로그래밍하는 역할을 하게 된다.

파일(File)-예제(examples)에 가면 ArduinoISP가 존재하는데 이것을 아두이노에 업로드 시킨다.




ArduinoISP까지 업로드가 완료되었다면 이제 ATtiny85를 아두이노와 연결하여 부트로더를 업로드 시키자.
ATtiny85칩의 위치는 글씨가 올바르게 보이도록 고정시키면 왼쪽 상단이 vcc가 되고 오른쪽 하단이 GND가 되어 아래처럼 연결하면 된다.
(Arduino UNO R3 기준)

 

 

<ATtiny칩의 핀맵>


출처 : highlowtech.org



출처 : http://42bots.com/


연결을 끝냈으면 부트로더를 업로드 시키자.
도구(tools) - 프로그래머(Programmer)에서 Arduino as ISP를 선택하고




아두이노가 아닌 ATtiny85에 업로드를 시키는 것이기 때문에
도구(tools)-보드(Board)에서 ArduinoUNO가 아닌 ATtiny85(internal 1MHz clock)으로 바꿔주어야 한다.
그 다음에 부트로더 굽기를 클릭하면 부트로더를 올리게 된다.




부트로더에 실패하였다면 주황색 바탕에 '부트로더 굽는중 에러발생'이라는 메시지가 뜰것이고




성공하였다면 '부트로더 굽기 완료'라는 메시지가 뜨게 된다.




여기까지 성공하였다면 이제 ATtiny85를 아두이노처럼 코드를 업로드 하여 사용할 수 있게 된다!

 

 

간단한 예제 돌리기

예제에 있는 Basics-Blink를 실행해 보자.

 

 

 

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// 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(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

ATtiny85는 핀수가 적기 때문에
int led = 13;을 int led = 0; 으로 바꿔준 다음에 ATtiny85에 업로드 시킨다.

아두이노 보드를 통해 ISP방법으로 업로드를 시키는 것이기 때문에 항상 
도구-프로그래머에는 Arduino as ISP로 체크되있어야 하고 보드는 ATtiny85로 체크돼있어야 한다.
소스를 업로드 하고 아래 그림처럼 0번핀에 해당하는 오른쪽 상단에 LED을 연결하게 되면 LED가 깜빡깜빡 거리는 것을 볼 수 있다.




 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

ATtiny85, 아두이노, 오렌지보드