아두이노란?

먼저 아두이노의 기본이 되는 마이크로컨트롤러에 대하여 살펴보겠습니다.

1. 마이크로컨트롤러란 무엇이며 일반적인 컴퓨터와 다른 점은 무엇일까요?

일반적으로 우리가 알고 있는 컴퓨터는 여러가지 부품으로 구성됩니다. CPU(중앙처리장치, 계산과 제어를 담당), RAM(데이터저장 메모리), ROM(프로그램저장 메모리), 입출력포트(USB포트, 시리얼포트, 패러렐포트...) 등으로 구성되며 이것들은 각각의 반도체 소자로서 PCB에 조립되어 한나의 메인보드로 만들어지게 됩니다. 그러나 마이크로컨트롤러는 각각의 반도체들을 한나의 IC에 통합하여 일명 원칩디바이스로 만들어지며 추가로 아날로그컨버터(ADC). 디지털컨버드(DAC)과 같은 추가적인 기능도 포함하고 있습니다.

마이크로컨트롤러는 복잡한 계산을 빠른 속도로 하는 목적으로 만들어진 것이 아니며, 냉장고, 에어컨, 세탁기처럼 비교적 단순한 제어를 하는 곳에 사용되며 가격도 저렴합니다.

아래는 아두이노 우노 R3보드에 사용되는 ATMEL사의 ATMEGA328P 마이크로 컨트롤러입니다. 칩하나에 CPU, ROM, RAM, ADC, 디지털IO, 아날로그IO등을 모두 내장하고 있습니다. 또한 8비트의 프로세서로서 최대 20MHz속도로 동작하며 프로그램메모리는 32KB입니다.

2. 아두이노란?

아두이노는 물리적인 환경을 감지하고 제어하는 툴로서 만들어졌으며 마이크로컨트롤러를 기본으로 오픈하드웨어어 프로젝트로 사작되었습니다. 이 프로젝트는 아두이노 하드웨어와 프로그램을 개발하기 위한 아두이노 IDE 소프트웨어로 구성됩니다.

 

 

아두이노 보드는 방대한 종류의 센서, 스위치류의 신호를 받아 모터, LCD, 스피커, LED 등의 물리적인 장치들을 제어하게 됩니다. 아두이노 IDE소프트웨어는 오픈소스로서 무료로 사용할 수 있으며, 이 소프트웨어를 통해 제어프로그램을 제작하여 아두이노 보드로 업로드하므로서 아두이노보드로 원하는 작업을 할 수 있습니다.

  • 아두이노 보드를 사용하면 기존에 마이크로컨트롤러를 통한 개발에 비해 프로그램 개발이 매우 단순하고 쉬워서 전문기술자가 아니어도 사용이 가능하다는 장점이 있습니다.
  • 저렴한 가격 - 아두이노 보드는 다른 플랫폼의 보드에 비해 저렴한 가격에 구매가 가능합니다.
  • 다양한 OS지원 - 아두이노 IDE는 윈도우 환경 뿐만 아니라 맥OS, 리눅스에서도 사용이 가능합니다.
  • 쉬운 개발 환경 - 초보자도 쉽게 배울 수 있으며 각종 라이브러리는 물론 방대한 관련 소스를 구할 수 있어 개발이 쉽습니다.
  • 오픈소스/오픈하드웨어 - 아두이노 보드 및 아두이노 IDE는 모두 오픈 프로젝드로 시작되어 자신만의 아두이노 보드 및 소프트웨어 환경을 구축할 수 있습니다.

3. 아두이노 우노보드

아두이노 보드중에서도 가장 대중적이고 대표적인 보드인 아두이노 우노 보드를 통해 하드웨어 구성에 대해서 알아보겠습니다.

하드웨어 구성

  • 디지털 IO : 디지털 입출력포트 0-13
  • 아날로그IO : 아날로그 입출력포트 0-5
  • ICSP 다운로드포트
  • 시리얼 통신용 RX/TX
  • 전원 입력 방법: USB인터페이스, DC 7-12V 아답터, Vin 외부전압입력(DC 7-12V)
  • 전압 출력 : 3.3V & 5V
  • 마이크로컨트롤러 : ATMEGA328P

아래는 아두이노 우노보드 하드웨어 구성도입니다.

아두이노 우노보드에는 다음과 같은 특별한 하드웨어 핀이 있습니다.

  • Vin핀 - 외부 전원 입력을 받기 위한 핀입니다. 만약 USB포트를 전원을 공급받지 않는 경우에는 Vin핀으로 외부 전원(또는 배터리; DC7-12V)을 공급받을 수 있습니다. 
  • AREF핀 - 아날로그 입력 레퍼런스 전압 핀입니다. 아날로그 입력의 최대치를 설정하기 위해 사용합니다. 0-5V 사이의 전압으로만 사용하여야 하며, 프로그램에서는 analogReference() 명령어로 불러서 사용합니다.
  • ICSP핀 - 일반적으로 ISP(In-System Programmer)라고 하며, 이 핀을 통해 마이크로컨트롤러(여기서는 ATMEGA328P)를 직접 프로그램할 수 있습니다. 아두이노 보드에 펌웨어를 구울 때 사용합니다.

아래는 대표적인 아두이노 보드 종류입니다.

아래는 아두이노 우노 보드를 사용한 스마트카 SPAC2 조립완성도입니다.