ATtiny 제어(아두이노)

in #kr-arduino7 years ago

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 칩을 어디에다 쓸지 상상의 나래를 펼쳐보세요. 아마 소형으로 구현할 수 있는 기기들을 상상하시겠지요.

Sort:  

코딩 좀 알았으면 좋겠슴다. 진심임다.

스크래치를 검색하셔서 온라인상에서 블록 코딩을 한번 해보세요.
중독성 쩔어요.
초등학생들 수준의 난이도의 블록 코딩인데요. 이게 내년도 5~6학년 대상으로 하는 코딩의무화 교육의 기본틀이 될꺼에요. 스크래치 vs 엔트리로 경쟁하지만요.
암튼 그정도로 배우기 쉽다는 의미이고요.
성인이시면 해당 사이트에서 튜토리얼대로만 하시면 짧게는 몇십분 만에 기본 동작을 터득할 수 있는 프로그램인데 프로그램 입문자에게 꽤 재밌게 접근할 수 있는 프로그램이라서 아마 괜찮을꺼에요.

저도 ATtiny 를 사용하고 있어서 흥미롭게 봤습니다만 이런 기술적인 글을 읽는 사람은 많지 않을 것 같습니다. 하여튼 Fighting 하세요

그냥 기록을 남기는데에 의미를 두고 있어요.
어짜피 현재 읽으시는 분이 별로 없고요. 나중에 검색사이트에서 노출이 잘 되니깐 그때 필요하신분이 있으면 보시라는 의도를 갖고 쓰기 때문에 현재를 그렇게 의미를 두고 있지 않아서 편하게 포스팅 하네요.

진정한 고수십니다. 보통 여기 글 올리는 분들은 보상을 기대하고 올리는 것 같더군요

보상이 목적이면 요즘 트랜드에 맞는 포스팅을 했을꺼에요.
애초 이런주제는 아예 안썼을꺼에요.
쉬운길을 나두고 그냥 저만의 마의웨이를 가고 있습니다.

오늘도 수고하셨어요~

방문해주셔서 감사합니다.

오오~ 아두이노를 주제로 자세히 해주시는것 너무 좋네요~
회사에서 저희팀에서도 아두이노, 라즈베리파이를 이용해서 카메라 만들고~ 온습도계 만드는거 해봤었거든요~
저는 전기쪽은 잘 몰랐었는데~ 참고해서 좀 놀아봐야겠네요~~! ㅎㅎ

조금만 검색하시면 오픈소스로 널려있어서 부품을 다루는데에는 어려움이 없을거에요.
중요한것은 그 부품을 가지고 어떤 상상력을 발휘하냐가 관건인 것 같아요.
많은 상상력을 발휘하시기 바래요.
창업하신분 에 성공한 사례가 온습도계부품을 활용한 스마튼 화분이 아마 대표적인 사례이겠죠.
어떤 분은 자외선 센서를 스마트폰과 연결해서 실시간 정보를 알림해주는 서비스인가 게시판 게시물을 본것 같은데그분 스타트업이 어떻게 됐는지 모르겠군
이렇게 특정 부품의 원리를 이용해서 다른것과 연동을 통해 상상력을 발휘하여 새로운 길을 개척하시는 분들이 많더군요.
사실 누구나 조금만 신경쓰면은 쉽게 만들 수 있는 것들을 상상력이 합쳐지니깐 엄청난 결과물을 만들어 내는 것 같아요.

Coin Marketplace

STEEM 0.13
TRX 0.34
JST 0.036
BTC 109045.05
ETH 4404.36
USDT 1.00
SBD 0.83