아두이노

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
아두이노
Arduino Uno - R3.jpg
아두이노 우노 R3
아두이노 보드
ATmega ATmega168, 328, 2560, 32U4
ARM Cortex-M0+, M3
통합 개발 환경
개발 언어 C++
컴파일러 avr-gcc
라이브러리 avr-gcc(lib),내장,공개소스
웹사이트
www.arduino.cc

LGPL 또는 GPL 라이선스

v  d  e  h

아두이노(Arduino)는 오픈소스를 기반으로 한 단일 보드 마이크로컨트롤러로 완성 된 보드(상품)와 관련 개발 도구 및 환경을 말한다. 처음에 아트멜 AVR을 기반으로 만들어 졌으며, 아트멜 보드가 많이 판매되고 있고 Cortex-M3를 이용한 제품(Arduino Due)도 존재한다.

아두이노는 다수의 스위치나 센서로부터 값을 받아들여, LED나 모터와 같은 외부 전자 장치들을 통제함으로써 환경과 상호작용이 가능한 물건을 만들어낼 수 있다. 임베디드 시스템 중의 하나로 쉽게 개발할 수 있는 환경을 이용하여, 장치를 제어할 수 있다.

소프트웨어 개발을 위한 통합 환경(IDE)을 제공한다.[1] 또한 어도비 플래시, 프로세싱, Max/MSP와 같은 소프트웨어를 연동할 수 있다.[2]

아두이노의 가장 큰 장점은 마이크로컨트롤러를 쉽게 동작시킬 수 있다는 것이다. 일반적으로 AVR 프로그래밍이 WinAVR로 컴파일하여, ISP장치를 통해 업로드를 해야하는 등 번거로운 과정을 거쳐야 하는데 비해, 아두이노는 컴파일된 펌웨어를 USB를 통해 업로드를 쉽게 할 수 있다. 또한 아두이노는 다른 모듈에 비해 비교적 저렴하고, 윈도를 비롯해 맥 OS X, 리눅스와 같은 여러 OS를 모두 지원한다. 아두이노 보드의 회로도가 CCL에 따라 공개되어 있으므로, 누구나 직접 보드를 만들고 수정할 수 있다.

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

역사[편집]

  • 2005년, 이탈리아 Ivrea에서 초기 프로젝트가 만들어졌다.
  • 2008년 10월, Arduino Duemilanove가 출시되었다.[4]
  • 2009년 3월, Arduinio Mega가 출시되었다.[4]
  • 2011년 3월, 전 세계적으로 30만 개 이상의 아두이노 유닛을 사용할 수 있다.[5][6]
  • 2015년 3월, 아두이노가 10주년을 맞았다.
아두이노 시리얼 보드 RS232 직렬 통신[7]

초기의 아두이노 보드는 UART와 RS-232C을 사용한 통신을 사용하였다. 그러나 개인용 컴퓨터의 직렬포트(COM) 퇴조로 USB을 UART 방식으로 바꾸는 방식을 사용하고 있다. 개인용 컴퓨터나 노트북의 경우 직렬포트 연결 자체가 없는 경우가 많아 이 방식을 사용하면 현실적인 어려움이 있다. 이것을 고려하여 아두이노 보드에 USB와 UART을 변환하는 별도의 칩을 추가하여 프로그램 코드의 업로드를 한다. 목표 MCU 입장에서 보면 여전히 UART을 통해 업로드와 통신을 하는 방식이다.

하드웨어[편집]

보드[편집]

아두이노의 보드는 아트멜(Atmel)사의 8비트 AVR 마이크로컨트롤러와 프로그래밍 및 다른 서킷들과의 결합을 용이하게 해 주는 부속품들로 구성되어 있다. 공식 보드의 마이크로컨트롤러에는 주로 ATmega8, ATmega168, ATmega328과 같은 megaAVR 시리즈가 주로 사용된다. 보드에는 기본적으로 5V 리니어 레귤레이터와 16MHz 결정 진동자(크리스털)가 내장되어 있으며, 프로그램의 업로드를 용이하게 하기 위한 부트로더가 마이크로컨트롤러에 미리 내장되어 있다.

개념적인 수준에서 볼 때, 아두이노에 프로그램을 탑재함에 있어 있어 모든 보드는 RS-232 직렬 커넥터를 통해 프로그램되지만, 구현되는 방식은 하드웨어의 버전에 따라 달라진다. 직렬 아두이노 보드는 RS-232 수준의 신호를 TTL 수준의 신호로 변환해주는 변환 장치(Shifter)를 내장하고 있다. 지금의 아두이노 보드들은 모두 USB를 통해 프로그래밍 가능하며, FT232와 같은 USB-시리얼 변환 칩을 통해 사용 가능하다.

아두이노 보드는 마이크로컨트롤러 I/O핀의 대부분을 다른 서킷에서도 사용할 수 있도록 공개하고 있다. Diecimila, Duemilanove, 현재의 Uno와 같은 주요 모델들은 14개의 디지털 I/O핀을 제공하고 있으며, 그 중 6개의 핀은 PWM(pulse-width modulated)신호를, 다른 6개의 핀은 디지털 I/O핀으로 혼용이 가능한 아날로그 입력 단자를 제공한다.

아두이노 제품[편집]

종류[편집]

제품에 사용된 MCU는 ATmega시리즈와 ARM MCU로 만들어 진다.

MCU 아두이노 보드
ATmega
ATmega168 Pro(168), Mini(168), LilyPad (168V)
ATmega328 UNO, Fio, Nano, Pro(328), Mini(328, Rev5, 5V), Pro Mini, LilyPad (328V)
ATmega2560 Mega 2560, Mega ADK
Atmega32U4 Yún, Leonardo, Esplora, Micro
ARM
Cortex-M0+ Zero, Zero Pro
Cortex-M3 Due

쉴드[편집]

쉴드(Shield)는 특정 기능을 갖는 보드로, 아두이노와 결합하여 호환 가능한 여러 부가 모듈과 연결하는 커넥터 구조를 포함한 부품이다. 특정 입출력 기능을 담당하는 부품으로, 아두이노에서 중요한 부품 중 하나이다. 아두이노의 입출력 커넥터에 연결할 수 있는 커넥터를 사용하고 각 부분품은 커넥터에 연결함으로써 적층 구조로 서로 연결한다.

아두이노 MCU 보드는 마이크로컨트롤러 기능 만 존재하기 때문에 센서나 기타 입출력 장치가 필요한 경우가 생긴다. 따라서 이 모듈들을 연결하는 방법으로 쉴드를 사용할 수 있다. 쉴드가 연결되면 커넥터를 통해 각 층으로 모든 필요한 핀이 연결된다. 아두이노 쉴드는 보드와 보드를 결합하여 여러가지 기능적 모듈들을 연결하는 방식이다.

쉴드 적층

연결 핀들이 위와 아래로 연결되면서 각 층에서 모두 사용할 수 있도록 구성되었다. 따라서 각 핀의 기능의 중복은 개발자가 판단하여 각층에서 선택적으로 사용하여야 한다. 몇몇 쉴드는 다른 복잡한 핀들을 거쳐서 보드와 직렬로 연결되지만, I²C 시리얼 버스를 사용하는 경우 고유 주소를 할당받을 수 있기 때문에 병렬로 연결하여 사용할 수 있다.

소프트웨어[편집]

아두이노 통합 개발 환경
Arduino Uno logo.png
Arduino IDE ko.jpg
아두이노 통합 개발 환경
개발자 아두이노 소프트웨어
최근 버전 1.6.5-r2 / 2015년 06월 17일, 15일 경과[8]
프로그래밍 언어 C++
운영 체제 크로스 플랫폼
종류 통합 개발 환경
라이선스 LGPL 또는 GPL 라이선스
웹사이트 arduino.cc

아두이노의 통합 개발 환경(IDE)은 JavaC를 기반으로 개발되는 크로스 플랫폼 응용 소프트웨어이며, 구문 강조, 괄호 찾기, 자동 들여쓰기 기능이 포함된 에디터와 한 번의 클릭으로 컴파일과 업로드가 가능한 컴파일러 기능을 포함하고 있다. 아두이노 동작을 위해서 C++ 언어 기반을 사용한다. 컴파일러는 avr-gcc[9]을 사용한다. 따라서 avr-gcc가 제공하는 많은 C언어의 표준라이브러리를 함수를 사용할 수 있다.

아두이노 개발환경은 C++을 사용하여 원하는 동작을 하도록 코딩을 하고 이것을 보드에 업로드하면 아두이노가 동작한다.아두이노 업로드는 플레쉬 메모리에 써 지므로 다음 부터는 전원 만 인가되면 동작한다. 만약 PC나 안드로이드에서 아두이노에 오는 데이터를 받아 처리하고 싶다면, 해당 운영 체계에 맞는 개발 도구를 활용하여 프로그램을 작성해야 한다. PC의 비주얼 스튜디오나 안드로이드의 SDK 등이 대표적이다. 이러한 개발도구가 좀 어렵다고 느낀다면, 프로세싱[10]을 사용하여 쉽게 코딩 할 수 있다. 프로세싱은 아두이노 개발환경과 별개로 PC에서 동작하며, 아두이노에서 COM포트로 통신을 하고 이 데이터를 화면 등에 처리하여 보여 줄수 있다. 그래픽 처리를 할 수 있는 함수도 제공한다. 프로세싱에서 안드로이드 모드로 변경하면 안드로이드에서 처리할 수도 있다.

소프트웨어 개발에 생소한 사용자들도 쉽게 프로그래밍 할 수 있도록 설계되어 있다. 이러한 아두이노 IDE를 통해 작성된 프로그램이나 코드를 "스케치(Sketch)"라고 부른다.

아두이노 통합 개발 환경[편집]

아두이노 통합환경은 편집기, 컴파일러, 업로드 등이 합쳐진 환경이다. 이와 더불어 기타 개발에 필요한 각종 옵션 및 라이브러리 관리를 할 수 있다. 실행 시, 개인용 컴퓨터와 시리얼 통신을 할 수 있는 모니터를 제공한다. 보통 USB을 통해 업로드를 하므로 아두이노 보드는 USB를 UART 통신으로 바꾸는 방법이 제공되고, MCU가 실행할 때는 이 UART 통신을 이용하여 필요한 통신을 할 수 있다. 이렇게 되려면 아두이노의 MCU는 부트로더가 되어 있어야 한다.

아두이노 통합환경 기능은 :

  • 편집기 : UTF-8을 기반으로 하는 편집기 이다.
  • 컴파일러 : ATmega의 경우, AVR-GCC을 이용하여 컴파일 한다.
  • 업로드 : USB-UART 변환을 하고, MCU의 부트로더가 동작하여 기계어 코드가 업로드 된다.
  • 라이브러리 관리 : 등록 된 라이브러리 목록 및 예제를 지원한다. 공개 된 아두이노 라이브러리 찾아 파일을 받아 등록하면 초기에 장착되지 않은 각종 라이브러리를 등록 사용할 수 있다. 라이브러리 관리 프로그램도 검색 기능과 등록 기능을 제공한다.
  • 기타 옵션

USB가 없는 아두이노 보드는 USB-시리얼 변환 모듈을 별도 구매하여 연결할 수 있다.

라이브러리[편집]

아두이노는 AVR의 ATmega의 MCU을 기반으로 만들어진 것이므로 ATmega의 내에 장착된 기본 모듈을 함수 화하여 쉽게 접근할 수 있다. 이외에 다른 여러 가지 부품을 적용할 수 있도록 다양한 라이브러리가 존재한다.

아두이노 개발 IDE에 기본적으로 내장된 라이브러리도 있고, 외부의 많은 공개 라이브러리가 존재한다.

ATmega 내부 모듈 :

기타 부품 모듈과 인터페이스:

예제[편집]

전형적인 스케치의 예는 LED를 점멸시키는 "blink"라는 구문이다. Arduino 언어는 사용자가 이와 같이 작성하면 된다.

#define LED_PIN 13

void setup () {                     //처음 시작 할때만 실행
    pinMode (LED_PIN, OUTPUT);     // 13번 핀을 디지털 출력 핀으로 설정
}

void loop () {                        // 아래의 명령문을 반복
    digitalWrite (LED_PIN, HIGH);    // LED 점등
    delay (1000);                   // 1000ms(1초) 대기
    digitalWrite (LED_PIN, LOW);   // LED 소등
    delay (1000);                 // 1000ms(1초) 대기
}

같이 보기[편집]

주석[편집]

  1. “아두이노 개발환경 - 다운로드”. 2015년6월19일에 확인함. 
  2. “Arduino - Introduction”. 
  3. 류한석 (2013년 7월 9일). “아두이노, 상상력을 실현하는 플랫폼”. 주간경향. 2013년 7월 12일에 확인함. 
  4. News; Arduino.cc
  5. Phillip Torrone (2011년 5월 12일). “Why Google Choosing Arduino Matters and Is This the End of "Made for iPod" (TM)?”. makezine.com. 2012년 1월 1일에 확인함. 
  6. Smart Projects
  7. Arduino Board - Serial Interface
  8. “Arduino Software Release Notes”. Arduino Project. 2015년6월25일에 확인함. 
  9. “AVR gcc 사이트”. 2015년6월19일에 확인함. 
  10. “Processing 사이트”. 2015년6월19일에 확인함. 

바깥 고리[편집]

더보기[편집]

  • 라즈베리 파이 : 라즈베리파이는 영국의 라즈베리 파이 재단이 학교에서 기초 컴퓨터 과학 교육을 증진시키기 위해 만든 싱글 보드 컴퓨터이다.