아두이노 기초 강좌는 아두이노를 처음 접하시는 전자분야 비 전공자를 위한 강좌입니다. 이해를 위해서는 간단한 프로그래밍 지식이 필요할 수 있습니다. 프로그래밍이 처음이라면 [아두이노 프로그래밍 기초] 강좌를 먼저 읽으시길 권해 드립니다.

=============================================================

1. 아두이노(Arduino)란?

먼저 위키백과사전에 등록된 아두이노 항목을 보시죠.

아두이노(Arduino)는 오픈소스를 기반으로 한 단일 보드 마이크로컨트롤러이다. 아트멜 AVR을 기반으로 한 보드로 이루어져 있고 최근에는 Cortex-M3를 이용한 제품(Arduino Due)도 있다. 소프트웨어 개발을 위한 통합 환경(IDE)이 있다. 아두이노는 다수의 스위치나 센서로부터 값을 받아들여, LED나 모터와 같은 외부 전자 장치들을 통제함으로써 환경과 상호작용이 가능한 물건을 만들어낼 수 있다. 또한 어도비 플래시프로세싱, Max/MSP와 같은 소프트웨어를 연동할 수 있다.[3]

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

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

설명대로 아두이노는 단일 보드 마이크로 컨트롤러입니다. 그냥 작은 컴퓨터라고 생각하시면 됩니다. 80년대 중후반에 나온 80286PC(16MHz) 정도의 속도로 동작하는 컴퓨터입니다. 다만 메모리나 저장공간, 입출력 장치가 매우 제한적이거나 없는 대신 다른 LED, 모터, 입력장치, 출력장치 등등을 제어하는데 특화된 컴퓨터입니다. 어렸을 적 사물을 움직이고 불빛을 깜빡이는 뭔가를 만들어보고 싶었던 적이 있으실겁니다. 하지만 이런 일들은 전자분야의 관련 지식이 어느정도 있어야만 가능한 일이었습니다. 전공자나 관련 분야에서 종사하는 분이 아니라면 어디서부터 시작해야 할지 굉장히 막막한 일이었죠. 아두이노는 이런 분들을 위해 만들어진 초보자용 컴퓨터입니다. 아두이노는 자신의 설계도가 모든 공개되어 있는 오픈 하드웨어입니다. 납땜 장비와 적당한 부속을 구입하면 설계도대로 누구나 직접 아두이노 보드를 만들 수 있습니다.(물론 직접 만들 필요가 없는 대부분의 경우 그냥 사면 됩니다.) 그리고 가급적 배우기 쉽게 개발환경이 갖추어져 있습니다. 이런 특징 때문에 아두이노는 현재 가장 일반적으로 보급되고, 가장 활발하게 관련 지식들이 공유되는 Physical computing 개발환경이 되었습니다. 아두이노 보드의 구조나 동작 방법에 대해 감이 없으시다면 아리송 하실겁니다. 대충 어떤데 쓰이는지는 알겠는데 이걸 어떻게 동작시키고 어떤 곳에 사용할지, 내가 원하는 것을 만들려면 무엇을 해야 하는지… 아두이노가 아무리 쉬운 사용성을 가지고 있다 하더라도 방안의 전등 켜듯 쓸 수는 없습니다. 하지만 예제를 하나씩 따라해 가다보면 어느순간 아두이노에 대한 이해가 생기고 스스로 프로젝트를 해 볼 수 있으실겁니다. 아두이노는 적당한 예제와 가이드만 제공된다면 초등학생도 해볼 수 있습니다.  

2. 아두이노의 종류와 특징

아두이노는 크게 정식 아두이노 보드아두이노 호환 보드로 구분할 수 있습니다. 정식 아두이노 보드는 공식 사이트인 arduino.cc 에 기술된 보드들 입니다. 공식 홈페이지에 들어가면 각 보드들의 특징과 스펙이 자세히 소개되어 있으며, 설계도(schematic)도 구하실 수 있습니다. 아두이노의 개발환경(IDE, Integrated Development Environment, 통합개발환경)도 여기에 맞게 동작하도록 되어 있습니다. 국내외에서 아두이노 공식 보드를 판매하는 판매처를 통해 구입할 수 있습니다. 아두이노 보드의 설계도를 참조해서 똑같이 만든 보드 혹은 변형을 가해 특별한 기능을 더한 보드들도 존재합니다. 이런 보드들을 아두이노 호환(compatible) 보드라고 합니다. 아두이노와 100% 호환이 되는 보드의 경우 아두이노 개발환경을 그대로 사용할 수 있고, 변형된 보드의 경우에는 몇 가지 우회적인 방법을 통해 사용이 가능합니다. 이미 온라인에는 아두이노 보드를 이용한 예제와 소스, 라이브러리가 풍부하게 있으므로 아두이노 개발환경을 그대로 사용할 수 있다는 것은 큰 이점입니다. 정식 아두이노 보드에도 여러 종류가 있습니다. 여기서는 가장 대표적인 몇 개의 보드를 소개해 드리겠습니다. 좀 더 자세한 가이드는 링크를 참고하세요. 굳이 종류를 다 이해하실 필요는 없으며 아두이노 UNO 보드가 표준이고 이걸 사용하면 된다고만 아시고 넘어가셔도 됩니다.

  • 아두이노 UNO 보드 : 현재 아두이노의 표준 보드입니다. 온라인 상에 있는 대부분의 예제와 강좌, 소스, 라이브러리가 UNO 보드에 맞춰져있기 때문에 초보자라면 당연히 UNO 보드를 선택하시면 됩니다. 현재 R3 버전까지 나와있습니다.
  • 아두이노 Mega(Mega2560) 보드 : 아두이노 UNO 보드의 약 2배 크기에 제어할 수 있는 핀도 훨씬 많고, 더 빠르고, 저장용량도 더 많이 가진 보드입니다. 아두이노 UNO 보드로 처리하기 벅찬 멀티미디어 관련 작업이나 복잡한 제어가 필요한 작업에 알맞은 보드입니다. 하지만 주의하세요. 단순히 스펙이 좋다고 Mega 보드를 선택해서는 안됩니다. Mega 보드는 핀 배치나 특수한 기능을 가진 핀들이 UNO 보드와는 틀리게 설정되어 있습니다. UNO 보드에 맞춰진 예제들이 제대로 동작하지 않을 수 있으며, 이 경우 초보자는 어디가 문제인지 더 찾기 힘들어집니다.
  • 아두이노 Nano : 아두이노 UNO 보드의 소형화 버전이라고 생각하시면 됩니다. 아두이노 UNO 보드가 가진 대부분의 특징을 그대로 물려받고 있어서 호환성도 좋은데다 크기도 굉장히 작습니다. 다만 아두이노 UNO 보드는 각각의 핀에 female 소켓이 달려있어서 일반적인 케이블로 쉽게 사용이 가능한데 Nano 보드는 숫놈 핀 헤더를 납땜해 줘야 하는 경우가 있습니다.(납땜이 이미 되어서 나오는 경우라면 다행) 주로 빵판(Bread board)이라 불리는 구멍송송 뚫린 핀 확장용 보드와 함께 사용합니다.
  • 아두이노 Pro/Pro mini : 아두이노 보드 중 가장 작은 사이즈로 손가락 두 마디 정도에 아두이노의 기능이 탑재되어 있습니다. 하지만 3.3v/5v 용이 별도로 존재하기 때문에 외부 센서나 모듈의 동작전압과 맞춰야 하고 USB를 바로 꽂아 소스를 업로드 할 수가 없어서 별도의 외부 USB 모듈을 납땜해서 사용해야 하는 등의 제약이 있습니다. 작다고 처음부터 이 보드를 선택하면 고생길이 열립니다.
  • Lily Pad : 웨어러블, 전자 바느질 등에 적당하도록 변형된 아두이노 보드입니다. 패션쪽에 사용될 것을 염두에 뒀는지 모양도 꽃 모양으로 이쁘게 생겼고 여러가지 전용 악세사리 장치들도 함께 선보이고 있습니다. 잘 사용 안하는 보드 중 하나인 것 같습니다.
  • 기타 보드 : 이 외에도 여러 보드들이 있지만 대중적으로 쓰이는 보드는 위에 설명한 보드들입니다.

3. 아두이노를 동작시키기 위한 과정

아두이노로 내가 원하는 결과물을 만들기 위해서는 아래 과정을 거치게됩니다.

  • 아두이노와 각종 장치들(LED, 모터, 센서, 모듈 등등)을 연결
  • 아두이노 개발환경(Integrated Development Environment, 통합개발환경)을 실행
  • 아두이노에 연결된 장치들을 원하는 대로 동작하도록 스케치(Sketch, 소스코드) 작성
  • 아두이노 개발환경에서 스케치 컴파일
  • 아두이노 개발환경에서 컴파일된 바이너리를 아두이노 보드에 업로드
  • 아두이노가 스케치대로 동작

물리적으로 아두이노와 센서, 모듈을 연결하고 –> 소스코드를 작성하고 –> 컴파일해서 아두이노에 업로드하는 과정을 거칩니다.  

4. 아두이노를 테스트 하기 위한 준비물

아두이노를 배우기 위해서 필요한 것들을 준비 해야겠습니다. 눈으로 예제를 따라가며 감을 익히셔도 되지만 몸으로 익히는 것이 더 확실합니다.

  • 아두이노 UNO R3 보드 (예제는 아두이노 UNO 보드를 기준함)
  • LED, 스위치, 각종 센서류, 저항, 케이블 (아두이노 Starter Kit을 사면 들어있는 것들)
  • 아두이노 개발환경(IDE, 자신의 PC 종류에 맞는 어플리케이션을 설치)
  • 마음의 준비, 여유 시간

 

1번과 2번 같은 물리적인 장비들은 직접 준비하셔야 겠습니다. 이건 준비되었다고 보고 다음 강좌에서는 아두이노 개발환경을 설치하고 인터페이스를 익히도록 하겠습니다.  

===============================================================

이 문서는 작성자의 동의없이 개인적인 목적 외의 상업적인 목적으로 활용되어서는 안됩니다.

이 문서의 일부 혹은 전체를 수정, 삭제, 재배포 하여서는 안됩니다.

작성자 : GodsTale (godstale@hotmail.com)