아두이노2016. 6. 27. 16:16

사실 이 글을 아두이노 카테고리에 넣을까 말까 하다가 어차피 ATTiny85 보드라고 하더라도 개발은 아두이노 IDE 를 사용해서 개발을 하니 아두이노 카테고리에 넣었습니다. ATTiny85는 ATmel 에서 개발한 저전력(Low Power) AVR 8비트 MCU(Micro Controller Unit) 칩 입니다. 발음은 '에이티 타이니 85' 입니다. ㅎ  그냥 읽으라고 하면 '어티니85' , '애티니85' 라고 읽는 분들도 많을 것입니다. 사실 그게 발음상 더 이쁘긴 하죠. 아무튼 ATmel 에서 만든 Tiny 한 MCU 칩이라는 뜻인 것 같습니다. ATTiny85 는 시리즈가 여러가지 입니다. 25, 45, 85 시리즈가 있는데 2 로 시작하면 2KB 의 프로그래밍 가능한 공간이 있는 제품이고 마찬가지로 4KB, 8KB 의 프로그래밍 공간이 제공 됩니다. (부트로더가 2KB를 차지하므로 85의 경우 실제 사용가능한 공간은 6KB 정도) 이 칩을 보드 형태로 만들어서 사용하기 쉽게 만든 제품이 Digistump 의 Digispark 라는 제품 입니다. 자체적으로 USB 단자도 달려 있어서 PC에 연결해서 사용하기 쉽게 되어 있습니다. 물론 제가 리뷰할 제품은 알리익스프레스에서 구입한 복제품 입니다. Digispark 정품은 비싸거든요. (정품: 8달러, 복제품: 1.2 달러에 무료배송)


아두이노 나노, 프로 미니와의 크기 비교 입니다. 대략 아두이노 프로 미니의 2/3 정도의 크기 입니다. 가격은 제일 저렴 합니다. 그러므로 간단한 기능을 구현이나 소형화 프로젝트 시 사용하기에 적당한 보드 같습니다. 게다가 USB 단자를 통해서 PC와 바로 연결이 가능하므로 프로그램 업로드를 위해서 USB UART 보드가 필요한 프로 미니와 비교하면 장점이라고 할 수 있겠습니다.


ATTiny85 보드의 구조 입니다. 스마트폰 충전에 사용되는 Micro USB 단자를 통해서 PC와 연결되며 6개의 입출력 핀이 제공 됩니다. 5V 레귤레이터가 달려 있어서 외부전원을 연결할 경우 7V ~ 16V 까지 연결이 가능 합니다. 하지만 보드의 보호를 위해서 12V 이하로 연결해 주는 것이 좋습니다. 이 제품은 Micro USB 단자가 있는 제품 이지만 Digispark 오리지널 제품은 USB 메모리처럼 USB 단자가 붙어 있습니다.


Digispark 오리지널 제품, http://digistump.com/products/1

 

ATTiny85(Digispark) 보드의 뒷면 입니다.


■ ATTiny Chip Spec.


Features

• High Performance, Low Power AVR® 8-Bit Microcontroller

• Advanced RISC Architecture

– 120 Powerful Instructions – Most Single Clock Cycle Execution

– 32 x 8 General Purpose Working Registers

– Fully Static Operation

• Non-volatile Program and Data Memories

– 2/4/8K Bytes of In-System Programmable Program Memory Flash

• Endurance: 10,000 Write/Erase Cycles

– 128/256/512 Bytes In-System Programmable EEPROM

• Endurance: 100,000 Write/Erase Cycles

– 128/256/512 Bytes Internal SRAM

– Programming Lock for Self-Programming Flash Program and EEPROM Data Security

• Peripheral Features

– 8-bit Timer/Counter with Prescaler and Two PWM Channels

– 8-bit High Speed Timer/Counter with Separate Prescaler

• 2 High Frequency PWM Outputs with Separate Output Compare Registers

• Programmable Dead Time Generator

– USI – Universal Serial Interface with Start Condition Detector

– 10-bit ADC

• 4 Single Ended Channels

• 2 Differential ADC Channel Pairs with Programmable Gain (1x, 20x)

• Temperature Measurement

– Programmable Watchdog Timer with Separate On-chip Oscillator

– On-chip Analog Comparator

• Special Microcontroller Features

– debugWIRE On-chip Debug System

– In-System Programmable via SPI Port

– External and Internal Interrupt Sources

– Low Power Idle, ADC Noise Reduction, and Power-down Modes

– Enhanced Power-on Reset Circuit

– Programmable Brown-out Detection Circuit

– Internal Calibrated Oscillator

• I/O and Packages

– Six Programmable I/O Lines

– 8-pin PDIP, 8-pin SOIC, 20-pad QFN/MLF, and 8-pin TSSOP (only ATtiny45/V)

• Operating Voltage

– 1.8 - 5.5V for ATtiny25V/45V/85V

– 2.7 - 5.5V for ATtiny25/45/85

• Speed Grade

– ATtiny25V/45V/85V: 0 – 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V

– ATtiny25/45/85: 0 – 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V

• Industrial Temperature Range

• Low Power Consumption

– Active Mode:

• 1 MHz, 1.8V: 300 µA

– Power-down Mode:

• 0.1 µA at 1.8V


atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_



■ ATTiny85 Module (Digispark) Spec.

1. Support for the Arduino IDE 1.0 + (OSX/Windows/Linux).

2. Power via USB or External Source or 7-16 v to 5 v (automatic selection).

3. The On - board, 150 ma 5 v Regulator.

4. Built - in USB and serial was debugging).

5. 6 I/O Pins (2 are informs the for USB only if your program actively communicates over USB, otherwise you can use all 6 even if you are programming via USB).

6. 8 k Flash Memory (about 6 k after bootloader).

7. The I2C and SPI (vis USI).

8. PWM on 3 pins (more possible with Software PWM).

9. The ADC on 4 pins.

10. The Power LED and the Test/Status leds.


■ ATTiny85 Module Pin 정의

All pins can be used as Digital I/O (모든 핀들은 디지털 I/O 핀으로 사용 가능함)

Pin 0 → I2C SDA, PWM (LED on Model B)

Pin 1 → PWM (LED on Model A)

Pin 2 → I2C SCK, Analog In

Pin 3 → Analog In (also used for USB+ when USB is in use)

Pin 4 → PWM, Analog (also used for USB- when USB is in use)

Pin 5 → Analog In



이제 PC 에서 보드를 인식시켜서 아두이노 IDE 로 작성한 프로그램을 업로드 해 보겠습니다.


■ ATTiny85 설치 http://digistump.com/wiki/digispark 참조 )


먼저 드라이버를 설치해야 합니다. 아두이노 IDE 는 당연히 먼저 PC에 설치되어 있어야 합니다. Digispark 홈페이지의 설명에 따르면 드라이버는 윈도우OS + 아두이노 IDE 버전이 1.6.6 보다 높은 버전일 경우 설치해야 한다고 나와 있습니다. 현재 저는 윈도우7에 아두이노 IDE 버전은 1.6.8 버전을 사용하고 있으므로 드라이버를 다운로드 받아서 설치 해야 합니다. 어쩐지 그냥 PC에 연결했더니 드라이버 설치를 못 하네요.



드라이버를 다운로드 받고 압축을 풀면 Install Drivers.exe 라는 파일이 있습니다. 이것을 실행해서 드라이버를 설치해 줍니다.


잠시 후 완료 메시지와 함께 드라이버 설치가 완료 됩니다.


아두이노 IDE 를 실행하고 '파일 -> 환경설정' 으로 들어 갑니다. '추가적인 보드 매니저 URLs' 에 위와 같이 'http://digistump.com/package_digistump_index.json' 를 붙여 넣기하고 확인 버튼을 눌러 줍니다.


아두이노 IDE 에서 '툴 -> 보드 -> 보드매니저' 를 실행해 줍니다. 그럼 위와 같은 창이 뜨는데 타입에 Contributed 를 선택 합니다. 두 번째 보이는 'Digistump AVR Boards by Digistump' 를 클릭하면 '설치' 버튼이 나타나는데 이것을 클릭해서 설치 해 줍니다.


'툴 -> 보드' 에 들어가서 'Digispark (Default - 16.5mhz)' 보드를 선택해 줍니다.


이것으로 ATTiny85 보드에 프로그램을 업로드 하기 위한 준비는 모두 끝났습니다.


윈도우가 아닌 다른 OS (Mac, Linux) 사용자는 아래의 URL을 참고해서 설치해 주세요.




이제 실제로 예제 프로그램을 ATTiny85 보드에 업로드 하고 실행해 보겠습니다.


■ ATTiny85 프로그램 업로드 및 실행

http://digistump.com/wiki/digispark/tutorials/connecting 에 나와 있는 예제를 업로드 해 보았습니다. Pin 0 과 Pin 1 에 각각 LED 를 연결해 주었습니다. LED 두 개를 1초 간격으로 깜빡이는 예제 입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B
  pinMode(1, OUTPUT); //LED on Model A   
}
 
// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(1, HIGH);
  delay(1000);               // wait for a second
  digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(1, LOW); 
  delay(1000);               // wait for a second
}
cs


프로그램 업로드 시 주의할 점이 있습니다. 아두이노 IDE 의 업로드 버튼을 누를 때에는 ATTiny85가 PC에 연결되어 있으면 안됩니다. 연결되어 있으면 업로드가 되지 않습니다.


위와 같이 프로그램 작성 후 업로드 버튼을 누르면 업로더가 동작 됩니다. 60초 안에 장치(ATTiny85)를 연결하라는 메시지가 나옵니다. 이 때 ATTiny85를 PC에 연결해야 업로드가 진행 됩니다.


PC에 ATTiny85 를 연결하면 위와 같이 업로드 프로세스가 진행되고 마지막 Thank you! 메시지가 나오면 프로그램의 업로드가 끝난 것 입니다.


작동 동영상을 찍어 보았습니다. 잘 작동하네요.


파일 -> 예제에 들어가면 다른 Digispark 예제도 많이 있으니 개발에 참고하면 되겠습니다.



이상으로 ATTiny85 칩을 사용한 Digispark 보드의 사용에 대해서 알아 보았습니다. 아두이노를 쓰기엔 가격도 그렇고 왠지 부담스러울 경우나  IoT(Internet of Things) 같은 소형화가 필요한 프로젝트를 진행할 경우 등에 유용하게 사용할 수 있을 것으로 생각되는 ATTiny85 (Digistump Digispark Board) 보드에 대해서 알아 보았습니다.



※ 추가 내용 (2016.06.28) : ATTiny85 보드는 PC에 연결해도 COM 포트(통신 포트)에 잡히지가 않기 때문에 센서 등의 출력값을 시리얼모니터로 볼 수 없습니다. 이럴 때는 'DigiKeyboard' 라이브러리를 사용해서 값을 PC의 메모장 같은데 찍어보면 됩니다. ATTiny85의 출력값을 마치 키보드를 눌러서 입력하듯이 바꿔주는 기능 입니다. 아두이노 IDE 에서 '예제 -> DigisparkKeyboard -> Keyboard' 예제를 참고하시면 충분히 구현이 가능 합니다. 스마트폰(안드로이드)에서도 메모장 등을 실행시키고 OTG 케이블을 이용하여 ATTiny85 보드를 연결하면 출력값을 볼 수 있습니다. 단, 센서가 전류를 많이 필요로 한다면 정상적인 값이 나오지 않을 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "DigiKeyboard.h"
 
void setup() {
  // don't need to set anything up to use DigiKeyboard
}
 
 
void loop() {
  // this is generally not necessary but with some older systems it seems to
  // prevent missing the first character after a delay:
  DigiKeyboard.sendKeyStroke(0);
  
  // Type out this string letter by letter on the computer (assumes US-style
  // keyboard)
  DigiKeyboard.println("Hello Digispark!");
  
  // It's better to use DigiKeyboard.delay() over the regular Arduino delay()
  // if doing keyboard stuff because it keeps talking to the computer to make
  // sure the computer knows the keyboard is alive and connected
  DigiKeyboard.delay(5000);
}
cs




※ 추가 내용 (2016.12.18) : 나의 경우는 Mac 으로도 아두이노 코딩을 하는데 구형 맥북이라 OS X 10.6 (스노우 레오파드)를 사용하고 있다. 이럴 경우 아두이노 IDE 버전 1.6.1 이상은 설치가 되지 않는다. 그래서 위의 방법으로 Digispark 환경설정을 하기가 어렵다. 이럴 경우 Digispark Arduino 라는 것이 있다. Digispark 관련 모든 환경설정이 되어 있는 1.0.4 버전의 아두이노 IDE 이다. 그냥 다운받아서 실행하면 Digispark 를 별도의 설정 없이 바로 사용할 수 있다. 다운로드는 http://sourceforge.net/projects/digistump/files/DigisparkArduino-MacOSX-1.0.4-May19.zip/download 이다. 실행 후 아래와 같이 설정하고 코딩하면 된다.


 

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요

  1. 팥칼국수

    해당 보드는 Serial.print 를 사용하여 아두이노 시리얼 모니터를 사용할 방법이 없나요?
    (GPIO 하나만 사용할 예정이고, 그 상태를 아두이노 시리얼 모니터로 띄울 가장 저렴한 MCU를 찾고있어서요.)

    2020.06.25 14:10 [ ADDR : EDIT/ DEL : REPLY ]
    • 아두이노와 호환되니 당연히 찍을 수 있습니다

      2020.06.25 15:13 신고 [ ADDR : EDIT/ DEL ]
    • 팥칼국수

      헐 그렇군요 알아봐야겠네요! 감사합니다.

      2020.06.25 16:50 [ ADDR : EDIT/ DEL ]