Arduino를 ISP로 바꾸는 방법 — ATmel ATtiny85 프로그래밍
게시 됨: 2017-06-13짧은 바이트: 때로는 프로젝트에서 사전 빌드된 Arduino 보드를 사용하는 것이 과하거나 크기가 너무 큽니다. ATtiny85는 저렴하지만 놀라울 정도로 성능이 뛰어난 마이크로컨트롤러로 프로젝트의 설치 공간을 줄이는 데 도움이 됩니다. 다음은 프로젝트에서 사용하기 위해 ATtiny를 프로그래밍하는 방법입니다.
Arduino 플랫폼은 학습을 위한 놀라운 도구이지만 지원되는 Arduino 보드가 필요한 위치에 맞지 않는 경우가 있습니다. Arduino Uno (가장 일반적인 모델) 의 크기는 약 65mmx50mm이므로 일부 프로젝트에서 이것이 어떻게 가장 큰 구성 요소인지 쉽게 알 수 있습니다. 훨씬 더 작은 Nano와 같은 다른 보드가 있지만 (내 Nano 녹오프는 43mm x 17mm, 4.5배 더 작음) 그럼에도 불구하고 때로는 너무 큽니다. 예를 들어 웨어러블 장치를 만들고 싶다면 개가 밤에 착용하기 위해 깜박이는 LED일 수 있습니다. 배터리 등을 고려하면 상당히 커질 수 있습니다.우리 문제의 영웅인 ATtiny 라인에 신호를 보내십시오. ATtiny의 이름은 분명합니다. 약 9mm 제곱인 DIP-8 패키지 (이중 인라인 패키지 – 8핀) 에서 찾을 수 있습니다. 그 이름에 걸맞게 ATtiny는 아주 작지만 물리적인 크기 이상입니다. 이 기사에 사용된 ATtiny85는 8KB의 프로그램 플래시 스토리지, 512바이트의 RAM 및 512바이트의 EEPROM (프로그램 스토리지 외부 영구 스토리지) 만을 가지고 있습니다.
이제 문제는 이 작은 녀석들 중 하나를 프로그래밍하는 것입니다. 이에 대한 온라인 자습서가 몇 가지 있지만 약간 불완전하거나 지침이 부족한 것으로 나타났습니다.
ISP – 시스템 프로그래머에서
ISP(In System Programmer)는 생각만큼 화려하지 않습니다. 일반적으로 ATmel 칩용 ISP는 6핀 커넥터 USB 케이블이 있는 장치로 구성됩니다. ISP 핀은 Arduino에서 정말 쉽게 찾을 수 있으며 일반적으로 USB 커넥터 맞은편에 있습니다. ATmel 칩은 ISP 핀을 통해 프로그래밍하도록 되어 있지만 Arduino 플랫폼은 ISP 장치가 필요하지 않도록 보드에 USB-직렬 어댑터를 구현했습니다. 그럼에도 불구하고 대부분의 모델은 아니지만 많은 모델에서 ISP 핀을 사용할 수 있도록 했습니다.
우리 ATtiny 칩에는 Arduino에 있는 USB-직렬 장치가 없기 때문에 ISP를 사용하여 프로그래밍해야 합니다. ATmel ISP 장치는 적어도 Arduino 자체의 비용과 비교할 때 상당히 비싸므로 Arduino를 ISP로 작동하도록 프로그래밍하여 비용과 배송 시간을 절약할 수 있습니다.
Arduino IDE를 열고 샘플 스케치에서 ArduinoISP를 선택하여 이를 수행합니다.
스케치 파일을 열면 코드의 예상 동작에 대한 몇 가지 정보가 표시됩니다. 이 파일에서 ISP가 Arduino IDE와 제대로 통신할 수 있도록 빠르게 변경해야 합니다.
220행에서 setup() 함수를 찾습니다.
무효 설정() { SERIAL.begin(BAUDRATE); 핀모드(LED_PMODE, 출력); 펄스(LED_PMODE, 2); 핀모드(LED_ERR, 출력); 펄스(LED_ERR, 2); 핀모드(LED_HB, 출력); 펄스(LED_HB, 2); }
행이 읽히도록 BAUDRATE 를 19200으로 변경해야 합니다.
SERIAL.begin(19200);
내가 읽은 것에서 Arduino IDE는 이 ArduinoISP 펌웨어와의 호환성을 깨는 업데이트를 받았습니다. Arduino와 IDE는 서로 다른 전송 속도로 통신을 시도했고 펌웨어가 제대로 깜박임에도 불구하고 Arduino를 ISP로 활용하지 못했습니다.
ATtiny 라이브러리
Arduino IDE는 다양한 마이크로 컨트롤러와 보드를 지원하지만 불행히도 ATtiny 시리즈는 포함되어 있지 않습니다. 이것은 우리가 그들 스스로 지원을 받아야 한다는 것을 의미합니다.
나를 위해 일한 방법은 Arduino IDE 기본 설정 아래의 추가 보드 관리자 URL에 아래 URL을 추가하는 것이었습니다.
IDE를 다시 시작하고 도구 -> 보드 -> 보드 관리자에서 보드 관리자를 연 다음 ATtiny 패키지를 검색하여 설치합니다.
완료되면 ATtiny 프로그래밍을 위한 회로 구축을 시작할 수 있습니다.
ISP 구축
ISP를 구축하는 방법에는 여러 가지가 있습니다. 무납땜 브레드보드에 만들어 부품을 재활용하거나, 저처럼 납땜해서 반영구적인 솔루션을 만들 수도 있습니다. 신중하게 모든 것을 함께 납땜하는 경우 선택하는 경우 다른 프로젝트에 Arduino를 재사용할 수 있습니다.
ArduinoISP 스케치의 처음 30개 행을 보면 ISP로 작동하도록 Arduino를 설정하는 방법에 대한 다음 정보를 찾을 수 있습니다.
핀 10 | 핀을 재설정하려면 타겟 마이크로컨트롤러 |
핀 11 | SPI 마스터 아웃 슬레이브 인 |
핀 12 | SPI 마스터 인 슬레이브 아웃 |
핀 13 | SPI 직렬 시계 |
선택적으로 상태를 나타내기 위해 다음 핀에 LED를 연결할 수 있습니다.
- 핀 9 – 하트비트 – ISP가 실행 중임을 나타냅니다.
- 핀 8 – 오류 – 오류가 발생했음을 나타냅니다.
- 핀 7 – 프로그래밍 – 대상과의 활성 통신을 나타냅니다.
이러한 LED에는 저항이 필요합니다.
여기에서 ATtiny85의 핀아웃과 Arduino에 다시 연결하는 데 필요한 적절한 연결을 볼 수 있습니다. 꽤 조잡한 그림이지만 편의를 위해 ATtiny85의 핀에 레이블을 붙였습니다. 그러나 핀은 다이어그램에서와 같이 1,2,3..8에서 주소가 지정되지 않고 대각선 텍스트로 레이블이 지정된 Arduino IDE 내에서 지정된다는 점에 유의해야 합니다.
이것은 다른 연결에 대한 훨씬 더 자세한 다이어그램입니다. 모든 LED는 선택 사항이지만 문제 해결에 유용합니다. ArduinoISP 스케치 파일에서 권장하는 3개의 상태 LED 외에도 5V에서 접지 (물론 저항 포함)로 간단히 연결하는 LED가 있습니다. 그런 다음 깜박임 테스트로 ATtiny를 테스트하기 위해 두 번째 핀 (IDE의 핀 3)에 연결된 핀이 하나 있습니다. 리셋 핀을 접지에 연결하는 커패시터에 주목하십시오. 이것은 Arduino가 ISP로 작동하는 데 필요합니다.
ATtiny 마이크로컨트롤러용으로 만든 Arduino ISP입니다. ATtiny가 프로그래밍되는 동안 DIP-8 소켓을 사용하여 ATtiny를 고정한 것을 볼 수 있습니다. 나는 또한 ATmega328P와 같은 ATmega 칩을 프로그래밍하기 위한 DIP-28 소켓을 설치하기 위해 오른쪽에 충분한 공간을 남겼습니다. 업그레이드는 매우 간단하며 ATtiny와 마찬가지로 Atmega 칩에 필요한 핀만 연결하면 됩니다.
Arduino ISP를 조립한 후에는 반드시 사용해 보고 싶을 것입니다. Arduino 자체를 프로그래밍하지 말고 연결된 Arduino를 통해 프로그래밍하려면 적절한 설정을 선택해야 합니다.
보드의 경우 ATtiny 25/45/85 옵션을 선택한 다음 프로세서 선택에서 ATtiny85를 선택하고 마지막으로 프로그래머로부터 ISP로 Arduino를 선택합니다. 이는 대상 시스템과 통신하는 방법을 포함하여 대상 시스템에 대해 알아야 할 모든 것을 IDE에 알려줍니다. 이제 Blink 스케치를 불러올 준비가 되었습니다 (또는 하드코어한 경우 직접 입력). 시도할 준비가 되었습니다. LED를 깜박이는 데 사용되는 핀을 귀하가 사용했던 핀으로 전환하십시오. 회로, 내가 제공한 회로도를 사용하는 경우 핀 3입니다. 마지막으로 Sketch -> Upload Using Programmer를 클릭하여 스케치를 컴파일하고 업로드합니다.
무효 설정() { 핀모드(3, 출력); } 무효 루프() { 디지털 쓰기(3, 높음); 지연(1000); 디지털 쓰기(3, LOW); 지연(1000); }
전체적으로 함께 납땜 된 Arduino ISP는 약 3-4 달러가 될 것입니다. ATtiny 칩은 매우 저렴할 수 있으며 일반적으로 개당 약 1달러에 불과합니다. 일부 코드를 업데이트하거나 칩의 용도를 변경할 수 있기 때문에 ATtiny 칩을 프로젝트에 넣을 계획이라면 DIP-8 소켓을 구입하는 것이 좋습니다. IC를 제자리에 납땜하는 것은 가능하지만 코드를 몇 번 업데이트하는 경우처럼 특히 반복적인 노출로 IC를 쉽게 손상시킬 수 있습니다.
다른 사람이 이런 일을 한 적이 있습니까? 더 많은 Arduino 제품을 보고 싶으십니까? 아래 의견에 알려주십시오.
또한 읽기: Raspberry Pi 또는 Arduino — 초보자에게 가장 적합한 보드는 무엇입니까?