[ATtiny85 #1] 손톱만큼 작은 아두이노(arduino)인 ATtiny85에 코드 업로드해서 작동시켜보기!(녹칸다의 아두이노)
프로그래밍/attiny85 2023. 12. 27. 23:08
https://youtube.com/live/cZmzyPJ0JWg
[ATtiny85 #1] 손톱만큼 작은 아두이노(arduino)인 ATtiny85에 코드 업로드해서 작동시켜보기!(녹칸다의 아두이노)
녹칸다의 ATtiny85 시리즈이다!
ATtiny85라는 핀이 총 8개 달려있는 아주 작은 IC가 있다!
기존 아두이노 IDE 개발환경에서 몇가지 설정을 해주면 손톱만큼 작은 IC에 아두이노 코드를 업로드 할 수 있다!
녹칸다가 보았을때는 아래와 같은 장점이 있다!
1.크기가 매우 작음!
2.가격이 매우 저렴함!
3.기존 아두이노 코딩하는 사용자 경험을 그대로 활용할 수 있음!
그러나 모든것은 장점만 있는 것은 아니다! 단점도 있다!
1.칩만 덩그러니 있다보니 컴퓨터와 연결해서 프로그램을 업로드 할 수 있는 인터페이스가 없다!
2.너무 작다보니 핀이 몇개 없다!
3.기존 아두이노 우노에서 작동되는 대부분의 라이브러리가 작동하지 않는다!
하지만 아두이노 우노를 가지고 노는데 실증이 났다면 충분히 흥미를 느낄만한 내용이라고 생각한다!
이번 내용은 튜토리얼편(시작하기)으로 ATtiny85 개발환경을 설정하는 방법에 대해 알아본다!
다음으로 USB로 연결할 수 없는 상황에서 어떻게 코드를 업로드 할지 알아보도록 하자!
ATtiny85에 코드를 업로드 할 수 있는 전용 소켓을 판매하기도 한다!(이건 관심대상이 아님)
녹칸다는 이번 시리즈에서 아두이노 우노를 활용해서 ATtiny85에 프로그램을 업로드 하려고 함!
(딱히 이유는 없음 개인 취향)
아두이노 우노에 기본 예제중 Arduino ISP 예제를 업로드 해주면 우노 보드가 다른보드에 프로그램을 업로드 할 수 있는 업로더로 동작하게 된다!
그럼 ATtiny85는 아두이노 우노를 통해서 컴퓨터와 간접적으로 연결되게 된다!
컴퓨터에서 컴파일된 코드가 아두이노 우노를 통해서 업로드 되는 것이다!
아래 참고자료를 활용해서 튜토리얼편을 진행해보도록 하자!
(미리 작성된 ATtiny85 환경설정 방법)
https://blog.naver.com/jangstargosu/223226622544
(Attiny85 보드추가를 위한 주소)
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
(아두이노 우노와 연결하기)
(우노-Attiny85)
5V - VCC
GND - GND
D13 - D2
D12 - D1
D11 - D0
D10 - RESET
(업로드시 설정)
보드 : "ATtiny25/45/85"
프로세서 : "ATtiny85"
Clock : "Internal 8 MHz"
프로그래머 : "Arduino as ISP"
(서보모터 제어 관련 참고자료)
아두이노의 servo 라이브러리는 16bit타이머가 필요한데, ATtiny85는 8bit 타이머라고 함!(잘 모름 직접 검색해보기)
하여튼 아두이노 servo 라이브러리가 attiny85에서는 작동이 안된다는 의미임!
softwareservo 라이브러리를 활용하니 제어할 수 있었음!(어쨋든 작동만 되면 OK)
https://github.com/ttseng/SoftwareServo
가번져항은 4번, 서보모터는 1번에 연결하는 것을 권장함!(실험적)
(추가) D0번은 서보모터 작동가능
(추가) D2번은 서보모터 작동가능
(추가) D3번은 서보모터 작동가능
(추가) D4번은 서보모터 작동가능
(대략적인 목차)
LED를 1초간격으로 온오프해보기!
LED의 밝기를 제어해보기!(PWM)
버튼을 2개 연결해서 LED 온오프 해보기!
버튼 1개로 LED 1개를 토글해보기!
가변저항으로 LED의 밝기를 제어해보기!
버튼2개와 릴레이로 DC모터 제어해보기!
가변저항과 모스펫으로 DC모터 속도제어해보기!
서보모터(SG90) 제어해보기!
가변저항으로 서보모터 제어해보기!
(기타등등)
(참고사항)
1.LED를 디지털적으로 제어하는 것은 디지털출력을 의미하고 온오프이다!(digitalWrite)
2.LED의 밝기제어를 한다는 것은 아날로그 출력을 의미하고 PWM제어를 의미하고 0~255단계로 출력을 제어할 수 있다!(analogWrite)
3.ATtiny85에서 아날로그 입력은 우노와 마찬가지로 10bit로 분해한다(0~1023)
4.아날로그 입력은 10bit이고 아날로그 출력은 8bit이므로 입력값을 출력값으로 전환하기 위해서는 map함수가 필요하다!
5.아두이노 코드입장에서 릴레이는 LED제어하는것과 같다!
6.DC모터를 제어할때는 ATtiny85와는 독립된 전원을 사용해야한다!
7.DC모터의 속도를 제어하겠다라는것은 LED의 밝기를 제어하는코드와 동일하게 해석하면된다!
8.모스펫(IRF520)을 릴레이를 제어하는 코드와 동일하게 활용할 수 있다!(속도제어가 아니라 on/off으로~)
9.가변저항은 하한값과 상한값의 범위가 존재하나 로터리엔코더는 무한히 회전할 수 있다!
(업로드할때)
(예제번호)
1.ATtiny85의 D0핀에 LED를 1개 연결해서 1초간격으로 깜빡이는 예제를 만드시오!
2.D0핀에 연결된 LED를 밝기 제어해보시오!(아날로그 출력)
3.D3,D4핀에 택트스위치를 1개씩 풀업방식으로 연결하고 D3버튼이 눌려지면 D0번의 LED가 ON되고, D4버튼이 눌려지면 OFF되도록 하시오!(디지털 입력)
4.D3번에 연결된 버튼 1개만을 이용해서 D0번에 연결된 LED를 토글제어하시오!(토글제어란 켜져있을때 버튼을 누르면 꺼지고, 꺼져있을때 누르면 켜지는것을 말함)
5.가변저항을 A1핀에 연결한다음 아날로그값을 측정해서 LED밝기제어를 하시오!
6.D3,D4에 버튼을 이용해서 D0에 연결되어있는 릴레이를 이용해서 DC모터를 제어하시오!
7.A1에 연결된 가변저항을 돌려서 D0에 연결된 모스펫(IRF520)을 이용해서 DC모터의 속도제어를 하시오!
8.D1에 연결된 서보모터(SG90)을 어쨋든 작동시키는 예시를 보이시오!(위에 설명해놓은 라이브러리 설치할 것!)
9.A1에 연결된 가변저항을 돌려서 D1에 연결된 서보모터의 각도를 제어하시오!(2축조이스틱예제포함)
10.로터리엔코더를 연결해서 서보모터를 제어해보시오!(정확하게 작동되지는 않는것 같음)