작은 칩으로 구현된 아두이노인 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
'아두이노 기본' 카테고리의 다른 글
[아두이노] Arduino 호환 D1 R32 보드 (ESP32 - WiFi/Bluetooth) (1) | 2019.11.30 |
---|---|
[아두이노] Arduino 호환 D1 WiFi 보드 (ESP8266) (0) | 2019.08.01 |
[아두이노] WeMos D1 mini + Matrix LED shield (0) | 2019.05.19 |
[팁/부품선택] 아두이노(Arduino) 부품 선택 및 구매 노하우 (0) | 2015.02.03 |
[팁/직구] 해외 직구로 싸게사는 아두이노(Arduino) 부품 : Aliexpress편 (5) | 2015.01.27 |
[아두이노] 아두이노 개발환경(Arduino IDE/Sketch) 및 라이브러리 설치 (0) | 2015.01.21 |