아두이노는 주변 기기들을 간편하게 제어할 수 있는 다양한 라이브러리가 존재한다. arduino.cc 에서는 이들 라이브러리를 표준 라이브러리와 그외의 것들로 구분하는데 표준 라이브러리는 아두이노 IDE에 포함된 것으로 다음과 같은 것들이 있다.


[표 1] 아두이노 표준 라이브러리

라이브러리명

기능

비고

EEPROM

EEPROM에 읽고 쓰는 기능을 하는 함수들.

Ethernet

Arduino Ethernet Shield를 이용한 인터넷 접속.

Firmata

시리얼 프로토콜을 이용하여 PC와 연결하여 데이터를 주고 받기.

GSM

GSM shield를 이용하여 GSM/GRPS 네트워크에 접속하기.

LiquidCrystal

LCD 제어.

SD

SD카드에 읽고 쓰기.

Servo

서보모터 제어.

SPI

SPI(Serial Peripheral Interface) 통신.

SoftwareSerial

시리얼통신을 소프트웨어적으로 구현한 것.

Stepper

스테핑모터 구동.

TFT

Arduino TFT screen에 문자, 이미지, 도형 표시하기.

WiFi

Arduino WiFi shield를 이용하여 인터넷 접속하기.

Wire

TWI (I2C) 통신.


[표 2] 특수 라이브러리

라이브러리명

기능

비고

Audio

SD카드에 저장된 오디오파일 재싱.

Due

Scheduler

다중 non-blocking 태스크 관리.

USBHost

마우스와 키보드 같은 USB주변장치와의 통신.

Esplora

Esplora 보드의 센서와 작동기를 쉽게 접근하도록 함.

Esplora

Keyboard

연결된 컴퓨터에 키보드 입력 전송.

Leonardo, Micro,Due,Esplora

Mouse

연결된 컴퓨터의 마우스 커서 제어.


[표 3] 기타 라이브러리 (사용하기 위해서는 설치 과정이 필요함)

라이브러리명

기능

비고

Messenger

PC로부터의 텍스트기반 메시지 처리.

통신

NewSoftwareSerial

SoftwareSerial 라이브러리의 개선판

OneWire

1-wire protocol을 사용하는 장치 제어(Dallas Semiconductor)

PS2Keyboard

PS2 키보드로부터 문자 읽어들이기.

Simple Message System

아두이노와 PC간 메시지 보내기.

SSerial2Mobile

휴대폰을 이용하여 문자메세지나 이메일 보내기.

Webduino

확장가능한 웹서버 라이브러리(이더넷쉴드)

X10

AC전원선으로 x10신호 보내기.

XBee

XBee와의 통신.

SerialControl

시리얼 통신으로 다른 아두이노 제어하기


Capacitive Sensing

두 개 혹은 그 이상의 핀을 정전식 터치센서로 사용.

센싱

Debounce

(버튼으로부터) 바운싱을 제거하기.


GFX

기반 클래스(표준 그래픽 루틴)

디스플레이/LED

GLCD

KS0108 칩 기반의 그래픽 LCD 라이브러리

Improved LCD library

LCD라이브러리의 오류 수정 버전

LedControl

LED행렬/7세그먼트 제어 (MAX7221/MAX7219)

LedControl

여러개의 LED를 Maxim칩으로 제어하는 다른 라이브러리

LedDisplay

HCMS-20xx 스크롤링 LED디스틀레이 제어.

Matrix

기본적인 LED매트릭스를 제어하는 라이브러리.

PCD8544

Nokia55100 LCD 제어기(Adafruit ind.)

Sprite

LED매트릭스의 애니메이션 사용을 위한 기반 클래스

ST7735

1.8“ TFT 128x160 스크린 제어 라이브러리(adafruit)


FFT

오디오 혹은 다른 아날로그 신호의 주파수 해석.

audio

Tone

오디오 주파수의 구형파 생성.


TLC5940

16채널 12비트 PWM 제어기

PWM


DateTime

현재 날짜와 시간을 추적.

타이밍

Metro

정해진 시간 간격으로 수행.

MsTimer2

타이머2를 써서 매 N밀리초마다 정해진 일을 수행


PString

버퍼에 프린팅을 하기위한 가벼운 클래스

유틸

Streaming

프린트문을 간략히 하기위한 메쏘드

 여기에 소개된 리스트 외에도 사용자들이 작성한 수 많은 라이브러리들이 공유되고 있다. 따라서 본인이 필요한 기능을 구현하기 위해서 직접 작성하기 전에 그 기능을 지원하는 라이브러리가 있는지 검색해 보는 과정을 거쳐야 한다.



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 살레시오
,