프로그램을 작성/편집 하고 컴파일/디버깅 할 수 있는 통합 환경을 IDE(Integrated development envirionment)라고 한다. processing 이라는 JAVA 기반의 흥미로운 오픈소스 그래픽 개발 환경이 있는데 GUI 구현을 위해서 종종 아두이노와 같이 사용되기도 한다. ( processing.org 홈페이지에 자세한 내용이 있다.) 아두이노는 바로 이 processing 의 IDE를 이용하여 개발된 전용 IDE를 무료로 제공하고 있어서 편리하게 사용할 수 있다. 그래서 processing IDE의 외관과 아두이노 IDE의 그것과 매우 비슷하다. 아래의 공식 다운로드 링크에서 OS에 맞는 프로그램을 다운받아서 설치한다.


아두이노 IDE 공식 다운로드 페이지


설치한 후 실행시키면 아래와 같은 조금은 단순해 보이는 화면이 뜰 것이다. 이 프로그램을 이용하여 아두이노 프로그램을 입력하고 컴파일한 후 (USB로 아두이노 보드와 연결되어 있다면) 다운로드까지 수행할 수 있다.



 만약 사용자가 C++에 익숙하다면 물론 좋겠지만 그렇지 않더라도 라이브러리가 사용하기 편하게 잘 갖추어져 있으므로 익히는 시간이 그리 많이 걸리진 않는다. 사실 사용하는 언어는 C++ 이지만 잘 모른다고 미리 겁먹을 필요는 없다. 어차피 아두이노라는 플랫폼 자체가 비전공자(디자이너, 예술가 등)들이 깊은 전공 지식 없이 개발을 할 수 있도록 설계가 된 것이기 때문이다.


 아두이노 보드를 PC와 USB로 연결하고 IDE를 실행한 다음, 메뉴에서


  • 도구>보드 항목 : 연결된 보드의 종류를 선택

  • 도구>포트 항목 : 가상 시리얼 포트의 번호를 선택


위의 두 항목만 올바르게 선택했다면 일단 개발 환경은 다 갖춘 셈이다. 아두이노 포트 번호는 윈도우즈의 경우 장치관리자에서 확인할 수 있다.


아두이노 강좌 전체 목록 (TOP) >>>

C++ 언어 전체 강좌 목록 >>>

c{ard},n{ad005}

Posted by 살레시오

 아두이노 우노(uno) R3는 ATmega328P 라는 AVR 8-bit 마이크로콘트롤러를 사용한다. PC와 USB로 연결할 수 있으며 이것으로 프로그램 다운로드 및 시리얼 통신에 사용된다.


전원 연결


 아두이노 우노보드는 내부적으로 5V로 동작한다. 전원은 다음과 같이 두 가지 방법 중 한 가지로 인가하면 된다.


  1. USB로부터 5V 전원을 공급받아서 동작할 수 있다. 따라서 이 보드를 PC와 USB로 연결하면 일단 기본적인 하드웨어 세팅은 끝난 것이다.

  2. 외부 전원을 연결하는 단자가 있는데 이것으로 7~12V 사이의 전원을 인가하면 되며 9V가 권장 전압이다. 일반적인 AA 혹은 AAA 사이즈의 1.5V건전지를 6개를 직렬 연결하거나 1.2V 충전지를 사용해도 된다. 물론 AC어댑터도 전압 범위가 맞으면 사용 가능하다.


만약 USB와 전원 소켓에 둘 다 연결되어 있다면 소켓에서 공급되는 전원을 자동으로 사용하게 된다.


디지털 입출력 핀 14개 (0번~13번 핀)


 디지털(digital) 입출력 핀들을 이용해서 외부의 이진 신호를 읽어들어나 또는 이진 신호를 내보낼 수 있다. 이진 신호란 on/off 와 같이 상태값이 두 가지만을 가지는 신호라는 의미이다. 이 디지털 핀을 이용해서 LED를 켜고/끄거나 외부의 스위치가 눌려져 있는지 아닌지 등을 검출할 수 있다. 구체적으로 0V 와 5V 두 전압중 하나의 값을 가지며 이것은 프로그램으로 제어할 수 있다.


디지털 입출력으로 사용되면서 또한 부가적인 기능을 가지는 핀들은 다음과 같다.


  • 0번과 1번 핀은 시리얼 통신에 사용된다. USB로 PC와 통신을 할 수 있다.

  • 2번과 3번 핀은 인터럽트 기능을 갖는다.

  • 3, 5, 6, 9, 10, 11번 핀은 PWM 기능을 가지며 아날로그 출력을 흉내낼 수 있다.


아날로그 입력 핀 6개 (A0~A5)


 아날로그 입력 핀이란 외부의 아날로그 입력값을 읽어들이는 핀으로서 주로 센서(sensor)와 연결하여 사용된다. 아날로그(analog)신호는 디지털 신호와는 달리 연속값을 의미하면 예를 들어서 온도, 빛의 세기 등이 있다. 이러한 물리량을 센서가 전기 신호로 변환하며 이것을 이 아날로그 핀으로 읽어들일 수 있다. 센서를 통해 읽은 전압값은 0에서 1023 사이의 숫자로 변환된다. 기준 전압은 5V 이지만 1.1V의 내부 전압이 사용될 수 있으며 AREF핀으로 기준 전압을 직접 인가할 수도 있다.


그리고 아날로그 핀은 디지털 입/출력 핀으로도 사용할 수 있다.


아날로그 출력핀 6개 (3,5,6,9,10,11번핀)


 디지털 출력핀이 0V/5V 두 가지 값만을 가질수 있는데 비해서 아날로그 출력핀은 0V~5V사이의 전압 값(256단계)을 가질 수 있다. 엄밀히 얘기하면 PWM방식으로 동작하므로 순수 아날로그 방식은 아니다.


인터럽트 (2, 3번 핀)


 2번핀과 3번핀은 인터럽트(interrupt) 기능을 가진다. 인터럽트 처리(interrupt handling)라는 것은 이벤트를 처리하는 데 사용되는 기능으로서 특정한 신호가 발생했을 때 정해진 동작을 수행하여야 하는 경우 사용되는 방식이다. 예를 들어서 버튼이 눌려진 시점에서 (또는 떼어진 시점에서) 어떤 작업을 수행해야 하는 경우다.


그 외의 기능들


 아두이노 우노 보드는 3.3V의 전압도 공급할 수 있다. 이는 USB만 연결한 경우도 마찬가지이다. AREF 핀은 아날로그 핀의 기준 전압을 설정하는 용도로 사용된다.


다른 기기와의 통신 기능은 다음과 같다.

  • 시리얼 통신 : 0번, 1번 핀

  • SPI 통신 : ICSP 헤더핀

  • TWI (I2C) 통신 : A0, A1 핀


시리얼 통신 방식 외에는 일반적으로 사용 빈도가 낮지만 기기간 통신이나 일대다 통신을 하는 경우 SPI, TWI 통신이 널리 사용된다.


아두이노 강좌 전체 목록 (TOP) >>>

C++ 언어 전체 강좌 목록 >>>

c{ard},n{ad04}

Posted by 살레시오

 아두이노(arduino)보드는 하드웨어와 소프트웨어 구조가 모두 개방된 오픈소스 플랫폼이기 때문에 정품뿐만 아니라 수많은 변종 보드들이 존재한다. 여기에서는 동일한 Arduino IDE를 사용해서 개발할 수 있고 기본적으로 많이 사용되는 보드들 위주로 설명하도록 하겠다.


우노(uno), 나노(nano) / 프로(pro), 미니(mini), 프로미니(pro mini)


 이 다섯 가지 보드는 모두 atmega328p 라는 프로세서를 기반으로 한 보드들이므로 코어 부분은 모두 동일하다. 다만 크기를 작게 만들거나 또는 양산을 위해서 USB통신부가 제거되었거나 하는 부분이 다를 뿐이다.


(a) 아두이노 우노와 나노


 아두이노 우노는 가장 많이 사용되는 기본적인 아두이노 보드이다. 이 보드의 핀 배열이 거의 표준과 같이 사용된다. 2014년 현재 세 번째 버전인 우노 R3 가 유통되고 있다.




아두이노 나노(nano)는 우노와 거의 동일한 구성을 가지고 있다. 빵판에서 실험할 수 있도록 작은 크기와 핀배열을 가진다.



(b) 아두이노 프로와 프로 미니


 다량의 완성품에 장착하기 용이하도록 소형화시키고 usb시리얼 변환 칩을 제거한 제품이다. 따라서 프로그래밍을 위한 별도의 usb시리얼 변환기가 필요하다. Atmega328 (혹은 Atmega168) 기반으로서 아두이노 우노와 거의 동일한 스펙을 가진다.


<아두이노 미니> - 프로미니와 핀배열이 거의 동일함


아두이노 레오나르도 (arduino leonardo)와 마이크로(micro)


레오나르도 보드는 USB기능이 내장된 atmega32u4 를 메인 프로세서로 사용한다. (이에 반해 우노 보드는 usb 통신을 위해서 메인 프로세서와 별도의 칩을 사용한다.) 따라서 프로그램 다운로드와 시리얼통신 포트가 독립적으로 동작된다. 단가가 우노보다 낮다.(고는 하지만 우노나 레오나르도나 -최저가로 검색하면- 만원대에 구입 가능함) 키보드/마우스/조이스틱과 같은 주변기기로 인식시킬 수 있어서 활용도가 높다.



아두이노 마이크로는 레오나르도 보드와 동일한 프로세서를 사용한 소형 보드이다.



아두이노 메가 2560 / 메가 ADK


 프로세서로 ATmgea2560 을 사용하여 우노 보드보다 기능과 핀수가 많은 보드이다.



아두이노 두에 (arduino due)


 다른 아두이노 제품들이 8-bit 마이크로콘트롤러인 AVR 기반인 것과 달리 아두이노 두에는 32-bit ARM core 프로세서를 사용한다. 기능과 성능이 높고 핀 수가 매우 많아서 보다 전문적인 제품 개발과 연구 목적으로 사용할 수 있다.



아두이노 제로 (arduino zero)


 Atmel사와 아두이노가 동동 개발한 거승로 프로세서는 AVR 이 아니라 ATSAMD21 이라는 ARM 계열의 32비트 프로세서를 채용하였다. 48MHz 의 클럭 주파수로 동작하는데 이것만 놓고 보면 아두이노 우노 성능의 3배이다.



클럭 속도 외에 우노와 비교하여 특이한 점은 0번과 1번을 제외한 모든 디지털 핀에서 PWM 기능을 사용할 수 있다는 점과 플래시메모리가 256KB 로서 우노의 8배 정도로 늘었다는 것이다. 개발 환경에서도 별도의 usb 통신 단자를 통해서 atmel 의 Embedded Debugger (EDBG) 기능을 사용할 수 있어서 디버깅에 별도의 장치가 필요없다는 점도 눈에 띈다. 우노와의 차이점을 정리하면 다음과 같다.


  • 32비트 프로세서 채용

  • 3.3V로 동작

  • 48MHz의 클럭 주파수 (우노대비 4배)

  • 12개의 PWM핀 (우노의 PWM핀은 6개)

  • 256KB의 플래시메모리 (우노대비 8배)

  • 디버깅(EDBG)을 위한 별도의 usb 단자 내장

  • 12비트 ADC (우노는 10비트 ADC임)


현재(2015년 4월) 아직 출시되지는 않았지만 조만간 나올 예정이다.


아두이노 융 (arduino yun)


 레오나르도 기판과 HTTP 통신과 같은 온갖 텍스트 기반의 작업을 처리하는 Linino(리눅스 변형 OS)를 구동하는 WI-FI 리눅스 기판을 내장하고 있다. USB통신 뿐만 아니라 와이파이를 통해 프로그램이 가능하다.



갈릴레오 보드 (galilero board)


 인텔의 쿼크(Quark) 프로세서 X1000 를 이용한 고성능의 아두이노 호환 보드이다.

최대 400MHz의 클럭속도를 가지는 초전력 x86 기반의 프로세서이다.

기존 아두이노 우노의 핀배열을 가지며 유사한 개발 환경을 이용할 수 있다.

별도의 갈릴레오보드 전용 IDE가 제공되지만 사용법은 아두이노 IDE 와 동일하다.



기타 변종 아두이노들


 '아두이노'는 등록된 상표이므로 정품 보드만 이 이름을 사용할 수 있다. 이런 이유로 보통 파생 제품들은 두이노(duino)라는 접미어로 새로운 이름을 만들어서 사용한다. 개중에는 공식 아두이노와 완벽하게 호환되면서 가격은 더 저렴한 것들이 많으므로 이것을 이용해도 같은 개발도구와 라이브러리로 작업을 할 수 있다.


몇몇 예를 들어보면 다음과 같다.


  • Freeduino

  • Funduino

  • Seeeduino

  • Korduino

  • Meduino (make block)

  • Paperduino

  • Boraduino

  • Roboduino

  • Femtoduino (가장 작은 아두이노 호환 복제품)

  • Ruggeduino (I/O 보호 기능이 내장된 아두이노 보드)

  • pcDuino (갈릴레오보드와 비슷한 개념)

  • Teensyduino


등등 이 외에도 수많은 변종 보드들이 존재한다.


아두이노 강좌 전체 목록 (TOP) >>>

C++ 언어 전체 강좌 목록 >>>

c{ard},n{ad03}

Posted by 살레시오

 아두이노는 널리 사용되는 오픈소스 프로토타이핑 도구이다. 아두이노 프로그래밍을 하려면 아두이노 IDE를 다운로드 받은 다음 PC에 설치한 후 그것을 이용하여 개발하는 것이 기본이지만 요즘에는 온라인 상에서도 똑같은 일을 할 수 있는데 바로 codebender.cc 라는 사이트에서 제공하고 있다.



그냥 로컬PC를 이용하면 되지 왜 느리고 불편한 온라인 환경을 이용해야 되는지 의아할 수 도 있지만 협업과 공유라는 측면에서 온라인 작업 쪽의 장점이 훨씬 크다. 언뜻 생각나는 로컬PC에서 개발을 수행하는 경우의 단점들을 꼽아보면 다음과 같다.


  • 자기가 짠 프로그램들 조차도 효율적으로 관리하기 어렵다.

  • 라이브러리를 일일이 설치해야 한다. (어쩌다 PC를 포맷하면 다시 처음부터..)

  • 협업을 하기 어렵다.

  • 내가 작성한 프로그램이나 라이브러리를 타인들과 쉽게 공유할 수 없다.


이러한 단점들이 codebender.cc 와 같은 서비스를 이용하면 대폭 개선된다. 더우기 기본 기능을 무료로 사용할 수 있으니 한 번 사용해 보고 판단을 하면 될 것이다.


단, 온라인 특성상 반응 시간이 조금 늦은 것과 자동완성과 같은 프로그램의 편의 기능은 지원하지 않는 등 소소한 단점은 존재한다.


아두이노 강좌 전체 목록 (TOP) >>>

C++ 언어 전체 강좌 목록 >>>

c{ard},n{ad001}

Posted by 살레시오

 아두이노(arduino)는 AVR이라는 마이크로 컨트롤러를 기반으로 한 오픈소스 원보드 마이컴이다. 예전에는 이런 시스템을 설계하고 다루기 위해서는 전기/전자와 관련된 전문적인 기술이나 지식이 필요했다. 이 보드의 특징은 그러한 어려움을 극복하고자 기술 숙련도가 낮은 디자이너 혹은 예술가들을 대상으로 설계된 것이다. 따라서 비전공자들도 손쉽게 익히고 사용할 수 있다는 큰 장점을 갖는다.


[그림 1] 가장 널리 사용되는 아두이노 우노 R3 보드의 외형과 크기


 그러면 이러한 아두이노 보드를 이용하여 어떤 일들을 할 수 있을까. 간단한 몇 가지 예를 들어보면 다음과 같다.


  • 사람이 접근하면 자동으로 조명이 켜지는 장치.

  • 애완 동물에게 정해진 시간에 먹이를 공급하는 장치.

  • 화분의 습도가 낮아지면 자동으로 물을 주라는 트윗을 보내는 장치.

  • 여러개의 LED를 이용하여 귀걸이나 목걸이의 장식으로 이용.

  • 좀 더 전문적인 응용으로 로봇의 제어 장치.


위의 예들은 단순한 몇 개의 예를 든 것이고 인터넷으로 검색을 해보면 정말 많은 응용 제품들이 만들어지고 있으며 일반인 뿐만 아니라 기업에서도 이것을 이용하여 상용 제품을 출시하며 비즈니스 모델로 이용하고 있는 등 널리 사용되고 있다.


[동영상 1] 아두이노 소개


 대부분의 아두이노 보드들은 AVR 이라는 8비트 마이크로콘트롤러를 기반으로 하고 있으나 최근에는 Cortex-M3를 이용한 제품(Arduino Due)을 비롯한 여러 하이엔드 제품군이 개발되고 있다. 또한 소프트웨어 개발을 위한 스케치(sketch)라는 통합 개발 환경(IDE)이 제공되며 이것 또한 오픈소스로 공개되어 있다. C++ 로 개발이 진행되지만 관련 라이브러리가 잘 갖추어져 있어서 난이도는 낮은 편이다.


[그림 2] 다양한 아두이노 보드들


 앞에서도 언급했듯이 아두이노의 가장 큰 장점은 전기/전자의 깊은 지식이 없이도 마이크로컨트롤러를 쉽게 동작시킬 수 있다는 점이다. 일반적으로 AVR 프로그래밍이 WinAVR로 컴파일하여, ISP장치를 통해 업로드를 하는 등 일반인들에게는 어렵고 번거로운 과정을 거치는데 비해서, 아두이노는 전용 IDE를 이용하여 컴파일된 펌웨어를 USB를 통해 업로드를 쉽게 할 수 있다.


 또한 다른 프로토타이핑(prototyping) 도구들에 비해 비교적 저렴하고, 윈도를 비롯해 맥 OS X, 리눅스와 같은 여러 OS를 모두 지원한다. 아두이노 보드의 회로도가 CCL에 따라 공개되어 있으므로, 누구나 직접 보드를 직접 만들고 수정할 수 있으며 실제로 수많은 유사 (호환) 제품이 존재한다. 특히 요즘에는 중국 심천을 중심으로 하는 초저가 제품들이 쏟아지고 있다.


 아두이노가 인기를 끌면서 이를 비즈니스에 활용하는 기업들도 늘어나고 있다. 인텔, 마이크로소프트, 삼성 등과 같은 대기업들이 아두이노 호완 제품들을 선보이고 있는가하면, 장난감 회사 레고는 자사의 로봇 장난감과 아두이노를 활용한 로봇 교육 프로그램을 학생과 성인을 대상으로 북미 지역에서 운영하고 있다. 자동차회사 포드는 아두이노를 이용해 차량용 하드웨어와 소프트웨어를 만들어 차량과 상호작용을 할 수 있는 오픈XC라는 프로그램을 선보이기도 했다.


아두이노 강좌 전체 목록 (TOP) >>>

C++ 언어 전체 강좌 목록 >>>

c{ard},n{ad002}


Posted by 살레시오

  STM32 칩셋을 이용한 Maple이라는 아두이노 호환 보드가 있다. 아래는 메이플과 메이플미니 보드이다. leaflabs 라는 제조사에서 2010년도에 출시하였다.

아두이노 호환 핀배열을 가지면서 AVR기반의 보드들보다 고성능 칩셋을 사용하여 높은 성능을 가진다.


 하지만 아두이노두에(due)나 곧 출시될 제로(zero) 보드 및 타 제조사의 다양한 저가형 고성능 보드에 밀려서 유지가 힘들어 더이상 지원하지 않게 되었다는 공지가 나왔다.


    Maple end-of-life notice


하드웨어는 단종되었지만 여전히 소스는 github에 오픈되어 있으며 소소한 업데이트는 계속된다고 한다. [#00108]

Posted by 살레시오