[아두이노] ATtiny 제어

IOT/아두이노|2019. 4. 4. 09:00

[아두이노] ATtiny 제어



오늘은 ATtiny에 대해서 살펴보는록 하겠습니다. 아주 작은 프로그램을 이식할 수 있고 다른 부품을 제어할 수 있어서 소형 아두이노로 생각하시면 아마 편하실꺼에요. 그런데 사용하기 위해서는 프로그램을 이식해야하는데 좀 복잡한 과정을 거쳐야 하기 때문에 사용하시기 번거로울 꺼에요. 프로그램 이식과정을 무시하고 바로 가상시뮬레이터에서 동작을 시킬 수 있기 때문에 한번 사용해 보겠습니다. 사용을 해봐야 어디다 사용할지 상상을 할 수 있기 때문에 상상하기 전에 간단히 제어를 통해 ATtiny를 배워도록 하겠습니다.

1. ATtiny 구조



파워포인트로 대충 그려봤는데 잘 그려졌는지 모르겠네요. 우선 핀을 보시면 총 8개의 핀으로 구성되어 있습니다. 전원 공급핀과 리셋핀을 제외하면 대충 Pin 0,1은 PWM으로 사용되고 Pin 2,3,4은 Analog Input으로 사용되네요.

따로 설명할 필요가 없을 것 같아 이 핀들을 가지고 간단히 LED를 제어하는 실험을 해보도록 하겠습니다.

2. 회로도 구성


  • 준비물 : ATtiny 1개, coin Cell 3V Battery 1개, Red Led 1개, 저항 220옴 1개
  • 내용 : 간단히 Red Led를 깜박이기게 하자.


위 그림에서 ATtiny 칩이 동작할려면 전원을 공급해야겠죠. 작은 건전지를 Vcc, Gnd로 연결해서 전원을 공급하게 됩니다. 그리고 첫번째 Pin 0에 출력핀으로 해서 Red Led를 전류를 공급하도록 배치해 놨습니다. 제일 처음 LED 제어편에서 아두이노를 13번 핀에 연결한 Red Led를 깜박이는 예제가 생각나실 꺼에요.

아래 그림에서는 NeoPixel Ring 24 짜리는 선을 구별할 수 있지만 NeoPixel Ring 12와 NeoPixel Jewel은 우리가 NeoPixel를 지난 시간분터 계속 연결해왔기 때문에 안보여도 대충 어떤식으로 연결되는지 아실거라고 생각되기에 그 부분은 설명에서 제외하겠습니다. 아래 결과물 동영상에서 제작과정이 잘 나와 있으니깐 참고해 주세요. 그거랑 같다고 생각하시면 됩니다.

3. 코딩


  • 사용함수 : pinMode(), digitalWrite(), delay()
  • 내용 : "STEEM CODINGMAN" 글자를 만들어 출력하자.
  • 참고소스 :

함수

  • pinMode(사용핀, 입/출력모드) : 해당 사용핀을 어떤 모드로 사용할지 결정.
  • digitalWrite(사용핀, HIGH/LOW) : 해당 사용핀을 디지털 출력으로 HIGH or LOW 인지 결정.
  • delay(시간값) : 시간값만큼 대기한다.

[기본 소스]

void setup()
{
  pinMode(0, OUTPUT);
}

void loop()
{
  digitalWrite(0, HIGH);
  delay(1000); // 1초(1000) 대기
  digitalWrite(0, LOW);
  delay(1000); // 1초(1000) 대기
}

Pin 0을 출력모드로 설정 합니다. 1초 동안 HIGH(5V)를 공급 한 뒤에 1초동안 LOW(0V)상태가 됩니다. 이렇게 loop()함수는 계속 반복하게 됩니다. 그럼 1초 단위로 깜박이는 로직이 됩니다. 이미 LED 제어편에서 설명한 내용이니깐 간단히 로직에 대해서만 이야기 했네요.

4. 결과



위 그림은 간단히 Red Led가 깜박이는 장면입니다. 코딩하는 것도 아두이노랑 차이가 없고 핀번호에 대해서 구분하여 사용하시면 사용하는데 어려움이 없겠죠. 하지만 문제는 프로그램을 ATtiny 칩에 이식하는 과정입니다. 사용은 쉽고 코딩도 쉬운데 프로그램을 이식하는게 어렵습니다.

5. 아두이노에서 ATtiny로 연결



위 출처로 가시면 자세히 설명 나와 있습니다. 저도 이글을 통해서 ATtiny에 프로그램을 이식시키구나 하고 대충 의미를 이해했네요. 구글검색하시면 국내 게시물도 다양하게 공개되어 있으니깐 어느걸 보셔도 상관없습니다. 따로 제가 아는척 설명드리기는 뭐해서 링크만 걸어 놓겠습니다.


대충 가상시뮬레이터에서 그림만 그린다면 이렇게 되네요. 그리고 나서 위 참고자료에 따라 순서대로 아두이노 IDE에서 설정만 해주시면 된다고 하네요. 실제 ATtiny 칩이 없어서 실험은 해보지 못했네요. 그냥 여러분들도 가상시뮬레이터에서 실험하기 대문에 동작 제어만 한번 코딩해보고 ATtiny 칩에 응용 방법만 머리속에서 설계하시면 됩니다.

6. 추가로 찾아보셔야 할 내용



필독 내용도 꼭 읽어주시기 바랍니다. 어떻게 아두이노에서 다른 칩에 프로그램을 이식시킬 수 있는지 아두이노공식페이지에 잘 나와 있습니다.

그리고 데이터시트 경우는 구글검색 키워드 "attiny85 datasheet"로 하시면 저 게시물이 나옵니다. 해당 데이터시트를 링크를 안걸어 놓은 이유는 다운로드 PDF 파일이기 때문입니다. 오해를 살 수 있는 부분이라서 링크를 걸어놓지 않겠습니다. 다른 데이터시트를 보셔도 됩니다. 내용은 비전공자분들은 어려울 수 있습니다. 제가 소개한 데이터시트의 p59 페이지의 표만 참고하시면 됩니다. 각 핀에 대한 설명이 자세히 나와 있습니다. 그걸 참고하시고 위에서 간단히 핀 설명을 설명을 PWM, Analog Input이라고만 했는데 우선은 이정도만 이해하셔도 충분합니다. 보다 자세히 알고 싶으면 데이터시트를 꼭 참고해 주세요.

마무리


간단히 ATtiny 칩을 제어해 보았습니다. 코딩은 따로 할 것은 없고 아두이노 상에서 코딩한 것 처럼 그대로 코딩하시면 됩니다. 어떤 핀들이 있는지만 잘 이해하시면 됩니다. 명령을 내릴 수 있는 핀은 어떤 핀인지만 구별하시면 어려움은 없을 듯 하네요. 좀 어려운 부분은ATtiny에 프로그램을 이식시키는 과정이 좀 복잡하다는 점이죠.
저는 코딩을 좋아하고 코딩을 위주로 하기 때문에 전자회로쪽은 좀 약한 편입니다. 얇은 지식으로 2편을 나눠서 제가 설명하는 것보다 위에 나온 링크한 자료들을 토대로 공부하시는게 더 좋을 것 같아 포스팅을 늘리지 않겠습니다.

실제로는 다른칩에 프로그램을 이식하기 위해서는 ArduinoISP 튜토리얼을 참고하셔서 그 과정대로 세팅하고 실제 코딩해놓은 프로그램을 이식시키면 됩니다. 가상시뮬레이터에서는 프로그램을 이식시키는 과정이 필요 없기 때문에 뭘 만들지만 여러분들이 상상력을 발휘하시면 됩니다. 지금까지 배워온 여러가지 부품들을 ATtiny와 연결해서 회로도를 설계를 해보시고 동작시켜서 ATtiny의 활용도를 상상해 보세요.

마지막으로 작은 ATtiny 칩을 어디에다 쓸지 상상의 나래를 펼쳐보세요. 아마 소형으로 구현할 수 있는 기기들을 상상하시겠지요.

댓글()