개발 관련/아두이노,IOT

Arduino IDE 1.6.x 버전을 이용하여 간단하게 Attiny85 부트로더 굽기.

snoworca 2015. 8. 6. 03:00

  이전에 아두이노 IDE 1.0.x 버전 기준으로 Attiny85 부트로더 굽는 법과 삽질 경험에 대하여 포스팅(http://www.dev.re.kr/59) 했었는데, 아두이노 IDE 1.6.4 버전 이상과 그 안에 포함된 개개선된 ISP 코드 덕분에 이제는 부트로더 굽는 것이 더 쉬워졌다. 

  콘덴서나 저항을 reset 버튼 사이에 연결하거나 수정된 ISP 를 따로 구해서 사용할 필요가 없어졌다.


  이번 시간에는 1.6.x 버전을 이용하여 간단하게 부트로더를 굽는 방법에 대하여 언급할까 한다.

  이 포스팅은  Arduino UNO 기준으로 되어있다.

  



1. Attiny85 라이브러리 설치하기.


  먼저 환경설정 메뉴에 들어가면 아래와 같은 화면이 나오는데, Additional Boards Manager URLs 의 텍스트 박스에 다음과 같은 주소를 적는다. (그림에서 빨간 화살표가 가르키는 곳)

 

 https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

 

  

 (아두이노 IDE 1.6.4 로 버전업 하면서 굉장히 편하고 재미있는 기능을 넣은 것 같다.) 


  

이렇게 입력하게 된다면  https://github.com/damellis/attiny/tree/ide-1.6.x-boards-manager 에 있는 파일을 다운로드 받아 보드 매니져에서 볼 수 있게 된다. 


  두 번째 단계로 상단 메뉴에서  '도구' -> '보드' -> Boards Manager 를 선택한다. 그럼 아래 스샷과 같은 창이 하나 뜨는데, 검색창에 attiny 를 입력하거나 스크롤을 아래로 내리다보면 attiny 항목을 볼 수 있다. 



  (설치하기 전에 David A. mellis 에게 감사하는 마음을...)

  

  항목을 선택하면 인스톨 버튼이 나온다. 인스톨 버튼을 누르기 전에 콤보박스에서 최신 버전으로 선택 되어 있는지 확인하자.


  인스톨이 완료되면 상단 메뉴에서 도구 -> 보드 항목을 살펴보면 가장 아래쪽에 Attiny 가 추가된 것을 확인할 수 있다.

  





2. 기존의 아두이노에 ISP 굽기.


 USB 로 동작하는 ISP 가 없는이상 기존의 아두이노에 ISP 를 올려서 Attiny 에 부트로더를 굽거나 프로그램을 올릴수밖에 없다. 그러기 위해서 ISP를 기존의 아두이노 위에 올려야한다.

  

  상단 메뉴에서 파일 -> 예제 -> ArduinoISP 를 선택한 다음 자신의 아두이노 위에 올려보자.

   

  물론 상단 메뉴의 도구 에서 선택해야 하는 보드와 포트는 기존에 갖고 있던 아두이노를 선택해야 한다.

  

   

3. 아두이노와 Attiny85 간의 연결.


  



<기존 아두이노 IDE 1.0.x 를 이용하여 부트로더를 굽는 방법에 대하여 설명한  포스팅(http://www.dev.re.kr/59)에서 가져온 이미지이다. 수정하기 귀찮으므로 그대로 가져왔다. 이번에 설명하는 아두이노 IDE 1.6.x 이상에서는 아두이노의 9번핀과 Attiny85 의 pin 3 을 연결할 필요는 없다. pin 번호는 아래 그림 참고>




  

(Pin0 은 D0 , Pin2 는 D1 이다.)  


이해를 돕기 위하여 좀 더 자세히 설명하면, 

  다음 표와 같다.  (9번핀 연결할 필요 없음)

  


ATtiny Reset

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

Arduino 10

ATtiny Pin3

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

Arduino 9

ATtiny GND

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

Arduino GND

 

 

 

 ATtiny VCC

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

Arduino 5v

 ATtiny Pin2

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

Arduino 13

 ATtiny Pin1

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

Arduino 12

 ATtiny Pin0

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

Arduino 11


  

4. 부트로더 굽기


     상단 메뉴에서 


        도구 -> 보드 -> Attiny 선택.

        도구 -> 프로세서 -> Attiny85

        도구 -> Clock -> 8 Mhz (internal) 

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


      를 선택한다.  

      만약 Clock 을 1 Mhz (internal) 로 선택한다면 최소 1.8v 이상의 저전압에서 사용할 수 있다.


   






  그리고 가장 하단의 부트로더 굽기를 선택하면....



  




  부트로더가 생각보다 빠른 속도로 구워진다.



5. 테스트


  잘 되는지 테스트하기 위하여 LED 를 하나 연결해 보고 PWM 으로 깜빡이도록 해보았다.

  Attiny85 의 PWM 제어 핀은 0 번과 1번이다.



  




  전원을 5V 를 공급해준다.  그리고 테스트 코드를 입력한다.


Attiny85 Test:

#define LED_PIN 0

bool gIncreaseMode = false;
byte gLedValue = 0;

void setup() {
}

void loop() {
  analogWrite(LED_PIN, gLedValue);
  gLedValue += (gIncreaseMode)?-1:1;
  
  if(gLedValue == 255) {
    gIncreaseMode = true;
  } else if(gLedValue == 0) {
    gIncreaseMode = false;   
    delay(100);              
  }
  delay(3);              
  
}


  


아래는 결과 영상.

Attiny85 에 프로그램을 올릴 때 마다 빵판에 케이블을 꼈다 뺐다 하기 귀찮아서 아래와 같이 프로그래머 보드를 대충 만들었다.

아래 영상의 LED 도 pin 0 번과 연결되어 있다.