Arduino

(아두이노에서 넘어옴)

공식 홈페이지(arduino.cc)
공식 홈페이지(arduino.org)

1 개요

logo.png파일:GenuinoTile-01.png

AVR 기반의 마이크로컨트롤러 개발환경인 Wiring에서 파생한 프로젝트다.

영어로 '아두이노', 이탈리아어로 '아르두이노'라고 읽는다. 영어권의 영향이 강한 국내에서 많이 사용되는 명칭은 아두이노. 이탈리아어로 우리는 사귄다 힘세고 강한 친구를 '강력한 친구'라는 뜻이라는 듯. 2005년 이탈리아의 Massimo Banzi와 David Cuartielles가 처음 개발하였다. 개발자 Massimo Banzi가 직접 저술한 <Getting Started with Arduino>(번역명 <손에 잡히는 아두이노>)를 필두로 많은 입문서들이 나와 있다.

1.1 Genuino

현재 Arduino 브랜드는 미국 안에서만 쓰인다. 미국 밖(유럽 등)에서는 옆에 있는 Genuino 브랜드가 쓰이며, 이는 2015년 5월에 발표된 자매 브랜드이다. 그러나 국내에서는 Genuino의 인지도가 바닥이다.

2015년 7월 경, 해외를 위해 다른 제조사에서 제작을 하고 그 이름을 Genuino로 정했다며 브랜드 발표 후에 Arduino Leonardo 등의 몇몇 제품을 단종시킨 일과 겹쳐져 사용자들에게 돈을 더 벌기 위해 그러는 것이냐며 쓴소리를 듣고 있다...라고 적혀 있었는데, 사실은 훨씬 복잡한 사정이 있다.

Massimo Banzi의 동업자 친구가 메인 제조회사(현 Arduino.org)를 맡고 있었는데, 그쪽에서 만들면 창립자 Banzi의 단체 Arduino LLC에 아두이노 상표명 개런티를 지불하고 판매하는 식이었는데 그 친구가 몰래 아두이노의 근원지인 이탈리아에서 Arduino 상표명을 선점해버렸다는게 드러났다. 다 사업을 위해서라며 Banzi를 비롯한 다른 동업자들을 안심시킨 그 친구는 이탈리아 밖 지역의 아두이노 원래 상표권의 갱신 시기가 되자 개런티 지불을 그만두고 소송을 걸어서 이탈리아에 상표권이 있으면 유럽연합에 다 적용되는거 아니냐는 논리로 유럽 전역의 Arduino 상표권을 뺏어가버렸다(...)

현재 맞소송이 진행중이다.

  • 원래 단체인 Arduino.cc에서는 해당 회사에서만 제조되던 모든 보드를 단종시켰다. 단종된 제품은 YUN,Leonardo, Mega ADK, Ethernet, Robot, Esplora, Mini, Fio, WIFI Shield, USB Host Shield, Wireless Proto Shield, Wireless SD Shield, TFT LCD 스크린, ISP, USB-Serial 어댑터이다.
  • 사건 이후 아두이노 제조회사 이름을 Arduino로 바꾼 Arduino.org에서는 기존의 모든 보드를 팔고 있다.

2 하드웨어

width=100%

위 사진의 보드는 우노 R3 버전으로 2013년 기준 레퍼런스 보드이자 가장 보편적으로 사용되는 보드다. 사용하는 마이크로컨트롤러는 ATMega328P로 16MHz로 동작하고 프로그램 저장용 플래시 32kb를 내장한 프로세서이다.

아두이노는 주로 Atmel사의 AVR을 사용하는 오픈소스 마이크로컨트롤러 보드이다. 아래 보드들 가운데 사용된 칩 이름 앞에 AT가 들어간 것들이 바로 그것. 임베디드 개발 경험이 전혀 없는 사람을 위해 개발된 교육용 플랫폼이기 때문에 프로그램을 작성하고 보드에 프로그램을 올리는 과정을 단순화하여 다루기 쉽게 되어 있다. 버전에 따라 조금씩 다르지만 아두이노 보드와 개발 환경은 대개 다음과 같은 모습이다.

위에도 적혀있지만 미국에서는 아두이노(Arduino)로 불리며, 미국 밖에선 제누이노(Genuino)로 불린다. 중요하니까 두 번 말했습니다.
제품 표

자세한 내용은 Arduino/하드웨어 문서 참조.

  • 엔트리 레벨
    • 우노 - ATmega328P 사용
    • 101 - 인텔 퀴리 사용
    • 프로 - ATmega168 또는 ATmega328 사용
    • 프로 미니 - ATmega328 사용
    • 마이크로 - ATmega32U4 사용
    • 나노 - ATmega168 또는 ATmega328 사용
    • 스타터 킷
    • 베이직 킷
    • 모터 쉴드 - L298 사용
  • 향상된 성능
    • 메가 - ATmega2560 사용
    • 제로 - ATSAMD21G18, 32-Bit ARM Cortex M0+ 사용
  • IoT
    • MKR1000 - SAMD21 Cortex-M0+ 32bit low power ARM MCU 사용
    • 와이파이 쉴드 101
  • 웨어러블
    • 제마 - ATtiny85 사용
    • 릴리패드 아두이노 USB - ATmega32u4 사용
    • 릴리패드 아두이노 메인 보드 - ATmega168 또는 ATmega328V 사용
    • 릴리패드 아두이노 심플 - ATmega328 사용
    • 릴리패드 아두이노 심플 스냅 - ATmega328 사용
  • 3D 프린팅
    • 마테리아 101
  • 단종. 그러나 Arduino.org에서 생산, 유통 중이므로 구매가 가능하다. 설령 완전히 단종되어도 위대한 중국의 기상으로 구할 수 있을듯
    • 메가 ADK - ATmega2560 사용
    • 이더넷 - ATmega328 사용
    • 로봇 - ATmega32u4 사용
    • 레오나르도 - ATmega32u4 사용
    • ESPLORA - ATmega32u4 사용
    • 미니 - ATmega328 사용
    • 피오 - ATmega328P 사용
    • 와이파이 쉴드
    • USB 호스트 쉴드 - MAX3421E 사용
    • 무선 SD 쉴드
    • 무선 프로토 쉴드
    • LCD 스크린
    • USB 시리얼 LIGHT 어댑터 - Atmega8U2 사용
    • 미니 USB 시리얼 어댑터 - FT232RL 사용
    • ISP - ATtiny44 사용
    • 두에 - AT91SAM3X8E 사용
    • 그 외

2.1 호환, 파생 제품들

오픈소스 하드웨어인 관계로 여러회사들에서 자체적으로 제작한 보드들을 ebayAliexpress 등에서 내놓고 있으며 이중에는 기능이 추가된 버전부터 시작해서 여러 버전들이 있다. 간단한 선에서는 그냥 저렴하게 만든 중국제들 부터 시작해서[1] 보드에 블루투스[2], 와이파이[3] 등의 통신모듈을 내장시킨 것들은 흔하며 초소형화[4]된 것들도 볼 수 있다.

3 소프트웨어 개발환경

Arduino/소프트웨어 개발환경 참고.

4 버전

2016년 2월 현재 기본형이라고 할 수 있는 Arduino Uno를 비롯한 다양한 변종이 있다. 하드웨어의 회로도까지 오픈 소스라 아두이노와 호환되는 보드를 정품보다 훨씬 저렴한 값에도 구할 수 있다. 모든 소스가 공개되어 능력이 되면 자작도 가능하다.

긴 알파 테스트 기간을 거쳐서 2011년 11월 30일, 1.0 버전이 릴리즈되었다. 2012년 5월 21일 공개된 1.0.1버전부터는 UI의 언어가 다국어지원이 되는데 이 중에는 한글도 있어 초심자들의 접근이 더욱 쉽게 되었다. 2016년 현재 최신버전은 1.6.11버전이다.

2012년 7월 즈음 아두이노 신제품인 아두이노 Leonardo(레오나르도)가 출시되었다.근데 단종이다. 특징으로 온칩 USB 컨트롤러가 내장된 Atmega32U4를 메인으로 채택해 단가를 줄이고딱히 가격이 싸다고는 안 했다. 마우스,키보드로 인식시킬 수 있어 다양한 활용이 가능하다. 참고로 아두이노 우노를 dfu-program울 이용해서 펌웨어를 업데이트하면 레오나르도처럼 USB입력장치로 사용이 가능하지만 이 경우에는 레오나르도처럼 바로 업로딩 후에 인식이 가능하지 않고, dfu모드 진입과 해제의 과정을 거친 후에 HID 장치로 인식이 가능하다. 그래서 한번 펌웨어를 업데이트시킨 상태에서 수정하려면 좀 번거롭다. 그러니 아두이노를 입력장치로 써먹을려면 그냥 레오나르도를 사용하는편이 좋다. 그리고 dfu-program으로 펌웨어를 올리는 과정에서 잘못하다가 아두이노의 UART 컨버터가 벽돌이 될 수 있으니 조심하도록 하자. 그렇지만 살 사람은 산다

2013년 초 ARM Cortax-M3 SAM3E8X(512KB 플래시 메모리,96KB SRAM, 클럭 84Mhz)를 채택한 Arduino Due가 출시되었다. 기존의 Arduino Mega 2560[5]의 후속모델에 가깝다. ARM 기반이니만큼 프로세서 성능은 훨씬 고성능이다. 다만 아날로그 입력/PWM 출력이 12핀으로 MEGA보다 약간 적다. DAC 두 개와 CAN 핀쓸 수 있다고는 안 했다. 때문에 그렇다. 총 4개가 줄어든 셈. 동작 전압이 다른 보드와 다른 3.3V이므로 I/O 핀에 5V를 인가하면 핀이 나가는 수가 있으니 주의. 일반적인 아두이노 보드의 동작전압은 5V이다. 3.3V는 FTDI에 내장된 레귤레이터나, UNO 같이 FTDI가 없으면 온보드 레귤레이터로 출력한다.

2013년 10월에는 인텔에서 갈릴레오라는 이름으로 자사 펜티엄 기반의 32nm공정을 사용한 새로운 인텔 쿼크[6] SoC를 탑재한 호환 보드를 발표하였다. 며칠 뒤에는 TI에서 Cortex-A8 기반의 자사 1GHz Sitara SoC와 ATmega32U4를 동시에 내장한 아두이노 Tre라는 보드를 발표하였다. Tre는 Uno와는 100배 이상의 성능 차이가 있다고 하는데근데 그 성능 뽑으려면 SoC 직접 건드려야 되는 건 함정. 레오나르도에 탑재된 ATmega32U4까지 동시에 내장해서 호환성 문제는 없다. 인텔의 갈릴레오는 2014년 4월경 단종 수순 (핀 호환성이 영 안 좋다는 이야기가 있다. 인텔 쿼크 항목을 참조)이고 대신 갈릴레오2가 출시되었다. 갈릴레오 2 이후 사물인터넷을 위한 Intel Edison 보드가 출시되었다. 아두이노와 꽤 협력적인 관계를 구축한듯. 실제로 아두이노 공식적으로 인증된 타회사제 아두이노 기판은 죄다 인텔제.

2014년 5월 15일 아두이노 Uno의 후속으로 아두이노 Zero가 발표되었다#. 가장 큰 변경점은 MCU가 기존의 ATMega 계열에서 ARM Cortex-M0+ 계열로 변경되면서 연산속도와 메모리공간 등이 늘어난 것.가격도 늘어났다

이외에 아두이노 Yun이라는 리눅스 OS로 구동되는 보드나 브레드보드같은 곳에 꼽아 사용 가능한 아두이노 Micro, Nano, (Pro)Mini, Yun Mini 같은 물건들도 발매되었다. 리눅스 OS 기반은 갈릴레오같이 에뮬레이션 방식은 아니고 32U4와 리눅스 머신이 같이 내장된다.

현재 최신 보드는 Arduino 101로 인텔과 협작으로 나온 보드다. 특징은 인텔 Curie 칩을 사용하고 BLE와 가속도계, 자이로스코프가 보드에 기본 내장된다. 또 작동 전압이 3.3V이지만 5V를 인가해도 핀이 손상되지 않는다. 가격도 국내에서 4만원 후반대의 가격. 라즈베리 파이와 비슷하다. [7]

5 주의사항

앞서 언급했듯이 성능이 떨어지기 때문에 개발과정에서 생각 외의 부분이 장비를 정지시키는 경우가 있다. 컴파일까지 잘 해놓은 게 정작 보드에서는 장비가 멈춰버리는 경우가 있으니 개발과정에서 문제가 생겼다면 마지막으로 추가한 내용들을 살펴보며 코드의 내용을 최대한 다이어트 시켜보자. String값 처리하는 부분 때문에 멈췄다거나 하는 식으로 다른 데에서는 문제가 없을 만한 부분이 문제를 일으키는 경우가 있다. 한 예로 개발 도중에 동작 테스트를 위해 추가한 Serial.print();문 몇 줄을 지웠는데 추가한 코드들이 갑자기 정상적으로 돌아가는 경우도 있다.어?[8][9]

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

6 한국 내 동향

국내에서도 미디어아트나 취미로 임베디드 프로그래밍을 하는 계층에게 인기를 끌고 있으며 일부 대학에서도 커리큘럼을 개설하고 교육하는 곳이 있다. Processing과 마찬가지로 공학적 지식이 전무한 디자인/예술 전공 학생들에게 충공깽을 안겨주는 존재. 다만 경험적으로 보았을 때 디자인/예술 계통 학생들은 쌩짜 프로그래밍 학습을 하게 되는 Processing보다는 뭔가 물리적인 리액션을 경험할 수 있는 아두이노 쪽을 재미있어하는 경향이 있다. 하지만 깊게 들어가면 이쪽도 지옥문이 열리기는 마찬가지 전자공학의 세계에 온 것을 환영하오 나썬이여 하지만 MCU를 깊숙하게 파고 들어가는 것에 비하면 침대에 누워서 잠자는 수준으로 쉽다. 전자공학> 회로공학 안해봤으면 아두이노 어렵다 하지마!! 애초에 디자인/예술 전공 학생들은 자기 전공 하기에도 바쁜데 전혀 다른 분야를 얕게라도 접하니 어려워 하는 것이 당연하다. 반대로 전자공학 전공자들에게 디자인/예술 개론실습과목 들으라고 해도 카오스가 벌어지듯이...

아두이노와 관련된 교육과정이 존재하는 대학은 아래와 같다. (가나다순)

이외에도 문지문화원 사이, 메이크프로세싱, 아트센터 나비, 앨리스온 같은 사설 기관에서도 간간이 교육하기도 한다.

2012년부터 현재인 2015년에도, 삼성에서 이것을 기반으로해서 개조시킨 버전의 아두이노를 사용하여 삼성 주니어 소프트웨어 아카데미의 일환인 소프트웨어 교육을 초중고 학교에서 실시하고 있다.

7 관련 문서

  1. 진짜로 중국제 아두이노 보드는 1만원이 안되는 경우도 흔하다.
  2. HC-06 등
  3. ESP8266 등
  4. 흔하게는 미니, 마이크로 호환보드에서부터 그냥 ATmega328P에 아두이노 부트로더를 올린 모델이나 QFP형태로 만든 것도 찼아볼수 있다
  5. ATMega2560을 채용한 모델. 메모리 256kb, 54 디지털 I/O핀, 16 아날로그 입력핀을 갖춘 모델로 Uno 같은 레퍼런스 보드보다 많은 양의 입출력이 필요할 때 사용하는 모델이다.
  6. Atom보다 작아서 Quark. 다만 Quark중에서는 원자보다도 큰 Quark가 있는 것이 함정
  7. 최신 보드라는 주제에 프로그램 메모리 60Kb, RAM 8Kb, 클럭 16Mhz가 줄었고 PWM지원 핀이 2핀 줄어든 4개라 성능이 줄었네? 할수 있지만 최신 아키텍처가 도입된 칩인 관계로 단순 연산성능은 2배 이상급이다. 이건 101을 입문용 보드, Zero를 중상급자용 보드로 디자인했다는 사실을 고려해야한다. 예를 들어 Zero에만 있는 고급 디버깅 기능 등이 있다. 하지만 인텔 Curie 칩에는 승리의 하드웨어 레벨 인공뉴럴네트워크가 내장되었다는 사실. 그래봤자 아직 SDK 라이브러리 공개 안 됐잖아
  8. C에서 함수가 중복 호출될 경우 스택오버플로우를 일으키면서 장비를 정지시킬 수 있다. 마이크로 컨트롤러같이 메모리 리소스가 크게 제한되는 장치에서 프로그래밍을 할 경우 항상 주의해야 하는 부분.
  9. 애초에 deploy판에 디버그용 print를 안 지우고 보내는것 자체가 기본이...
  10. 요즘에는 아예 아두이노 IDE 내부에 예제로 내장되어있다.
  11. 거기다가, Uno와 똑같은 크기이고 디버거도 박혀있으며, 공식은 아니지만 미니 보드도 있다!