아두이노

From The Hidden Wiki
Jump to navigationJump to search
* 상위 항목 : 컴퓨터 관련 정보, 프로그래밍 언어, 예술 관련 정보, 미디어아트

목차

개요

|| https://arduino.cc/en/pub/skins/arduinoWide_SSO/img/logo.png ||

Arduino는 '아두이노', 혹은 '아르두이노'라고 읽는다. 영어냐 이탈리아어냐 차이겠지만 영어권의 영향이 강한 국내에서 많이 사용되는 명칭은 아두이노. 이탈리아어로 '강력한 친구'라는 뜻이라는 듯. 자바기반의 오픈소스 프로그래밍 언어인 Processing과 AVR 기반의 마이크로컨트롤러 보드인 Wiring에서 파생한 프로젝트로, 2005년 이탈리아의 Massimo Banzi와 David Cuartielles가 처음 개발하였다.

하드웨어

[아두이노 공식 홈페이지 (영어)]

아두이노는 주로 Atmel사의 AVR을 사용하는 오픈소스 마이크로컨트롤러 보드이다. 임베디드 개발 경험이 전혀 없는 사람을 위해 개발된 교육용 플랫폼이기 때문에 프로그램을 작성하고 보드에 프로그램을 올리는 과정을 단순화하여 다루기 쉽게 되어 있다. 버전에 따라 조금씩 다르지만 아두이노 보드와 개발 환경은 대개 다음과 같은 모습이다. 참고로 사진의 보드는 우노 R3버전으로 2013년 현재 기준 레퍼런스 보드이자 가장 보편적으로 사용되는 보드다. 사용하는 마이크로컨트롤러는 ATMEGA328로 16MHz로 동작하고 메모리 32kb를 내장한 프로세서이다.

|| https://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front_450px.jpg?width=250 https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Arduino_IDE_-_v0011_Alpha.png/300px-Arduino_IDE_-_v0011_Alpha.png?width=250 ||

소프트웨어 개발환경

개발환경의 경우, Processing에서 제공하는 IDE와 90% 이상 동일한 인터페이스를 하고 있다. 언어 역시 Processing과 유사한 문법으로 되어있다.[* 엄밀히 따지면 Processing은 Java, Arduino는 C의 문법을 기반으로 하고 있다. 이는 아두이노의 모체인 AVR의 프로그래밍에 C를 쓰기 때문인데, Java나 C나 비슷한 문법을 가지고는 있어 얼핏 차이가 잘 안느껴지지만 양자간 차이가 있는 부분의 경우 프로세싱은 자바 쪽, 아두이노는 C쪽의 문법을 채용하고 있다. 예를 들면 char 타입은 프로세싱에선 2바이트지만 아두이노에서는 1바이트이며 프로세싱에는 없는 unsigned 타입이 아두이노에는 있는데 이들은 Java와 C간의 차이와 같다.] 이는 Processing의 파생 프로젝트였던 Wiring의 영향을 받은 것이다.

대체로 계산 속도와 저장 용량 모두 부족하기 때문에[* 레퍼런스인 Uno에 내장된 메모리는 겨우 32kb이다. ARM 프로세서를 사용하는 Due나 메모리 512kb를 내장한 Mega는 그나마 사정이 좀 나은 편] 아두이노를 써서 복잡한 계산 작업을 수행하는 데에는 무리가 있지만, 아두이노 보드에 달린 핀에 센서나 액추에이터를 달아서 쓰기 좋게 되어 있어서 실세계와 상호작용하는 피지컬 컴퓨팅이나 인터랙티브 아트 분야에서 유용하게 쓰인다.

쉴드(shield)라고 부르는 확장 부품을 아두이노 보드 위에 장착하면 유/무선 통신, GPS 수신, 음악 재생 등의 기능을 손쉽게 추가할 수도 있다.~~좀 비쌀뿐이지~~

시리얼 통신으로 컴퓨터와 통신하기 때문에 어도비 플래시, Processing, 파이썬 등의 언어로 짠 프로그램으로 아두이노를 손쉽게 제어할 수도 있으며. Firmata와 같은 펌웨어를 사용하면 더 쉽게 컨트롤이 가능하다. 특히 플래시로 컨트롤하는 경우에는 AS3Glue나 AS3Funnel 등의 라이브러리를 쓰게 되는데 이게 Firmata 프로토콜을 바탕으로 하고 있어서 Firmata 펌웨어가 필수다. 물론 플래시도 Firmata 없이 단순하게 시리얼 통신만을 이용할 수도 있으나 플래시가 시리얼 포트에 직접 접근할 수 없기 때문에 Serproxy 같은 소켓 프록시를 이용하거나 AS3-Arduino Connector 같은 ANE(AIR Native Extension)를 사용하는 형태가 된다.

시리얼 포트를 사용하면 별도의 통신용 쉴드 없이도 인터넷에 접속할 수 있다. 정확히는 프로세싱과 같은 별도언어를 통해 아두이노와 정보를 주고받는 방식. 아두이노가 인터넷에 직접 접속하는 것은 아니고, 노트북 등에서 돌아가는 프로그램에게서 정보를 요청하게 된다. 다만 아두이노에서 직접 접속하거나, 외부에서 아두이노를 컨트를 하는 방식에 비하면 구현이 꽤 복잡해 질 수 있으니 주의.

버전

2011년 12월 현재 기본형이라고 할 수 있는 Arduino Uno를 비롯한 다양한 변종이 나와 있으며, 하드웨어의 회로도까지 오픈 소스로 풀려 있기 때문에 아두이노와 호환되는 보드를 정품보다 훨씬 저렴한 값에도 구할 수 있다. 모든 소스가 오픈으로 풀려있기 때문에 능력이 되면 자작하는 것도 가능하다. 오픈소스의 강점이 그대로 나타나는 부분.

긴 알파 테스트 기간을 거쳐서 2011년 11월 30일, 1.0 버전이 릴리즈되었다. 2012년 5월 21일 공개된 1.0.1버전부터는 UI의 언어가 다국어지원이 되는데 이 중에는 한글도 들어있어 초심자들의 접근이 더욱 쉽게 되었다. 2013년 현재 최신버전은 2013년 5월에 나온 1.0.5버전이며, 한편으로 1.5 버전의 베타 공개가 진행중이다. Arduino Due의 경우는 이 1.5 버전을 사용해야한다.

참고로 UI는 한글을 지원하는 주제에 최신 버전까지도 IDE에 한글을 입력할 수는 있지만, 마지막 글자가 날아가는 문제가 있다. 정확히는 화면에는 뜨지만 줄을 바꾸거나 하면 그 마지막 글자가 사라진다.~~어?~~ 차라리 복사해서 붙여넣는 것을 추천. 아니면 한글로 칠 부분은 빼두고 나중에 다른 프로그램에서 열어 한글만 따로 쳐넣자. 애초에 아두이노 프로젝트의 원형인 Processing 시절부터 IDE의 한글입력 관련으로 문제가 많았는데 영 개선이 더디다. 지금도 Mac OS X 버전은 한글 입력이 제대로 안된다는 듯. 이래서는 주석 같은 거 써넣을때 영 귀찮기 때문에 그냥 영어로 쓰라고 권장하는 경우도 있다.(...) 혼자 쓰고 말거나 공개하지 않을 소스면 상관이 없지만 제작한 소스를 공개하는 경우 이 소스를 내국인만 본다는 보장이 없기 때문에 귀찮아도 영어로 쓰는 것이 좋다.

2012년 7월 즈음 아두이노 신제품인 아두이노 Leonardo(레오나르도)가 출시 되었다. 특징이라면 온칩 usb 컨트롤러가 내장되어 있는 Atmega32u4 를 메인 *****u 로 채택해 단가를 줄이고 마우스,키보드로 인식시킬수 있어 다양한 활용히 가능하다.

2013년 초 ARM Cortax-M3 SAM3E8X(512KB 플래시 메모리,96KB SRAM, 클럭 84Mhz)를 채택한 Arduino Due 제품이 출시되었다. 기존의 Arduino Mega 2560[* ATMEGA2560을 채용한 모델. 메모리 512kb, 54 디지털 I/O핀, 16 아날로그 입력핀을 갖춘 모델로 Duemilanove나 Uno같은 레퍼런스 보드보다 많은 양의 입출력이 필요할 때 사용하는 모델이다.]의 후속모델에 가까우나, ARM 기반이니만큼 프로세서 성능은 훨씬 고성능이다. 다만 아날로그 입력/PWM 출력이 12핀으로 MEGA보다 약간 적다. 동작 전압이 다른 보드와 다른 3.3V[* 일반적인 아두이노 보드의 동작전압은 5V이다. 3.3V는 ATMEGA칩에 내장된 레귤레이터로 출력해주는 것.]이기 때문에 I/O 핀에 5V를 인가하면 핀이 나가는 수가 있으니 주의. 아직은 베타 버전인 1.5 버전을 사용해야하므로 안정적인 동작을 원한다면 Mega를, 고성능을 원한다면 Due를 사용하면 된다.

2013년 10월에는 인텔에서 인텔 갈릴레오라는 이름으로 자사 펜티엄 기반의 32nm공정을 사용한 새로운 인텔 쿼크[* Atom보다 작아서 Quark... ~~다만 Quark중에서는 원자보다도 큰 Quark가 있는 것이 함정~~] SoC를 탑재한 호환 보드를 발표하였다. 며칠 뒤에는 TI에서 Cortex-A8 기반의 자사 1GHz Sitara SoC와 ATmega32를 동시에 내장한 아두이노 Tre라는 보드를 발표하였다. Tre는 Uno와는 100배 이상의 성능 차이가 있다고 하는데 ATmega32까지 동시에 내장했기 때문에 호환성 문제는 없는 상황. 인텔의 갈릴레오는 2014년 4월경 단종 수순[* 핀 호환성이 영 안좋다는 이야기가 있다. 인텔 쿼크 항목을 참조 ]이고 대신 갈릴레오2가 출시될 예정이라고.

2014년 5월 15일 아두이노 Uno의 후속으로 아두이노 Zero가 발표되었다#. 가장 큰 변경점은 MCU가 기존의 ATMega 계열에서 ARM Cortex-M0+ 계열로 변경되면서 연산속도와 메모리공간 등이 늘어난 것. 이것으로 아두이노의 주력 라인업인 우노-듀에-트레 모두가 ARM로의 이전을 완료하게 되었다.

주의사항

앞서 언급했듯이 성능이 떨어지기 때문에 개발과정에서 생각외의 부분이 장비를 정지시키는 경우가 있다. 컴파일까지 잘 해놓은게 정작 보드에서는 장비를 정지합니다가 되는 경우가 있으니 개발과정에서 문제가 생겼다면 마지막으로 추가한 내용들을 살펴보며 코드의 내용을 최대한 다이어트 시켜보자. String값 처리하는 부분 때문에 멈췄다거나 하는 식으로 다른 데에서는 문제가 없을 만한 부분이 문제를 일으키는 경우가 있다. 한예로 개발 도중에 동작 테스트를 위해 추가한 Serial.print();문 몇줄을 지웠는데 추가한 코드들이 갑자기 정상적으로 돌아가는 경우도 있다.~~어?~~[* C에서 함수가 중복 호출될 경우 스택오버플로우를 일으키면서 장비를 정지시킬 수 있다. 마이크로 컨트롤러같이 메모리 리소스가 크게 제한되는 장치에서 프로그래밍을 할 경우 항상 주의해야 하는 부분.]

아두이노 자체의 성능 제약을 피하려면, 라즈베리 파이 같은 다른 장치를 연결해 연산은 다른 데에서 처리하고, 아두이노는 센서나 액추에이터 등을 관리하는 기계로만 사용하는게 나을 수도 있다. 아두이노에 Firmata라는 펌웨어를 올리면[* 요즘에는 아예 아두이노 IDE 내부에 예제로 내장되어있다.] Firmata 프로토콜을 통해서 외부에서 아두이노를 컨트롤할 수 있게 된다. Processing을 비롯해 꽤 많은 언어를 이용하여 Firmata로 아두이노를 컨트롤할 수 있으니 이쪽을 알아보는 것도 괜찮다. 이걸 잘 활용하면 아두이노에는 최소한의 코드만 올리고 연산 부하가 큰 나머지 부분은 PC나 라즈베리 파이 같은 별도의 장치의 자원을 사용하여 돌리는 식으로 동작시키는게 가능하다. 아두이노 자체로는 센서값읽어서 판단하고 트윗올리는 것만 짜넣어도 빡빡한 경우가 있으니 판을 크게 벌일거라면 다른 장치를 사용해 통제하는걸 고려해보자. 32KB란 용량은 생각외로 빡빡하다! 실제로 많은 작업들이 이렇게 제작된다. 또, 중요한 것이 램이 328p기준 2KB 밖에 안된다!! 판이 크지 않다고 하더라도 외부 컴퓨터-아두이노 사이의 통신이 필요한 프로젝트인 경우, 시리얼 통신으로 메시지를 주고받는 것보다 자연스러운 형태로 코딩이 가능하므로 Firmata를 적극 사용해보는 것도 괜찮다. 이런 과정이 번거롭다면 내부 플래시와 램 용량이 크게 늘어난 아두이노 듀에나 트레 혹은 2014년 기준 최신형인 제로를 쓰는 것도 좋은 선택.

한국 내 동향

국내에서도 미디어아트나 취미로 임베디드 프로그래밍을 하는 계층에게 인기를 끌고 있으며 일부 대학에서도 커리큘럼을 개설하고 교육하는 곳이 있다. Processing과 마찬가지로 공학적 지식이 전무한 디자인/예술 전공 학생들에게 충공깽을 안겨주는 존재. 다만 경험적으로 보았을때 디자인/예술 계통 학생들은 쌩짜 프로그래밍 학습을 하게 되는 Processing보다는 뭔가 물리적인 리액션을 경험할 수 있는 아두이노 쪽을 재미있어하는 경향이 있다. --하지만 깊게 들어가면 이쪽도 지옥문이 열리기는 마찬가지-- ~~전자공학의 세계에 온것을 환영하오 나썬이여~~ 2012년 현재 한예종 조형예술과, 멀티미디어영상과, 테크놀러지음악과, 카이스트 산업디자인 학과, 서울예대, 성균관대, 서울대 등 미디어 관련 학과나 디자인과, 미디어랩 등에서 교육하고 있다. 문지문화원 사이, 메이크프로세싱, 아트센터 나비, 앨리스온 같은 사설 기관에서도 ~~간간히~~ 교육하기도 한다.


참조항목

컴퓨터 관련 정보 프로그래밍 언어

예술 관련 정보 미디어아트 MAX/MSP Processing vvvv