아두이노정의

반응형

 

아두이노에 대한 정의

인터넷에 아두이노를 검색해 보면 아트멜 사의 AVR 마이크로컨트롤러를 기반으로 만들어진 소형 보드를 찾아 볼 수 있다. 그렇다면 아두이노는 마이크로컨트롤러 보드를 지칭하는 것일까? 아두이노 본사 홈페이지에서는 다음과 같이 아두이노를 정의하고 있다. “아두이노란, 하드웨어와 소프트웨어를 쉽게 사용할 수 있게끔 만들어진 오픈소스 전자 플랫폼이다.” 이 말인 즉 슨, 마이크로컨트롤러를 이용하여 만들어진 개발보드인 하드웨어와 하드웨어를 동작시키기 위해 필요한 프로그램을 개발할 수 있는 소프트웨어 개발 환경까지를 모두 아두이노로 본다는 것이다. 따라서 아두이노를 한마디로 정의하기는 어렵지만 아두이노 보드라고 불리는 하드웨어와 아두이노 스케치라고 불리는 소프트웨어, 더 나아가 소프트웨어 개발을 쉽게 해주는 개발환경(IDE)을 모두 합쳐져 아두이노라고 생각하면 될 것이다.

아두이노는 개인용 컴퓨터의 작은 버전이다. 명령어를 아두이노의 메모리에 저장해 놓으면 아두이노는 그 명령어대로 일을 한다. 따라서 아두이노를 사용해 독립형 인터랙티브 장치를 개발할 수 있다. 또한 아두이노도 컴퓨터이기 때문에 우리가 소지하고 있는 개인용 컴퓨터와의 연동이 가능하다. 아두이노에서 발생하는 어떤 작업을 개인의 컴퓨터로 받을 수도 있고, 반대로 개인컴퓨터에서 아두이노로 명령을 보낼 수도 있다.

다음과 같은 특징은 아두이노를 다른 플랫폼과 구별해 준다.

하나> 멀티 플랫폼(cross-platform) 환경이다. 윈도, 매킨토시, 리눅스에서 실행 가능하다.

> 아티스트와 디자이너들이 사용하기 쉬운 개발 환경인, 프로세싱 프로그래밍 IDE에 기반을 두었다.

> 시리얼 케이블이 아닌 USB케이블을 통해 프로그래밍 할 수 있다. 요즘에는 시리얼 포트가 없는 컴퓨터가 많기 때문에 이 특징은 매우 유용하다.

> 하드웨어와 소프트웨어 모두 오픈소스로, 원한다면 아두이노의 창시자들에게 어떤 대가도 지불할 필요가 없이 회로도를 다운로드하여 나만의 아두이노를 만들 수 있다.

다섯> 하드웨어가 저렴하다. USB보드는 대략 3~4만원이며 보드에서 타버린 일부 부품들을 교체하는 비용도 5천 원 정도를 넘지 않는다.

여섯> 사용자 커뮤니티가 활발하다. 그 덕분에 문제가 생기면 도와줄 사람이 많다.

일곱> 아두이노 프로젝트는 교육환경으로 개발되었기 때문에 막 시작했지만 빨리 작동하는 결과를 얻고 싶어 하는 사람들에게 최적이다.

이 중, 중요하다고 생각되는 오픈소스에 대한 내용을 좀 더 설명해보면, 아두이노는 여타 다른 마이크로프로세서 개발환경과 다르게 소프트웨어부터 하드웨어 디자인 또한 모두 공개되어 있는 오픈소스 피지컬 컴퓨팅 플랫폼이다. 비전공자들을 위한 오픈소스 하드웨어의 일종으로, 사용 방법이 쉽고 간단하여 다양한 사용자층을 확보함으로써 마이크로컨트롤러 관련 제품 중 판매량이 가장 많은 제품으로 자리 잡고 있다.

아두이노가 다른 마이크로컨트롤러 보드와 비교하여 쉽게 사용할 수 있는 이유로는 공통된 핀 배치와 이를 통해 다양한 확장 쉴드를 사용할 수 있도록 해주는 하드웨어 측면뿐만 아니라, 마이크로컨트롤러의 기능을 추상화된 함수로 제공해 주어 손쉽게 프로그래밍 할 수 있도록 해 주는 소프트웨어도 큰 몫을 차지한다. 또한 아두이노는 사물인터넷에서 사물로 동작할 수 있는 다양한 방법들을 갖추고 있으므로, 사물인터넷을 위한 훌륭한 사물의 후보라 하겠다. 이에 대한 추가설명은 아두이노 운영 예제 파트에서 할 것이다.

아두이노 탄생 배경 및 역사

지금으로부터 약 15여 년 전, MIT에서 디자이너들에게 프로그래밍과 전자공학을 가르치기 위해 다양한 연구가 진행되었다. 그 연구에서 큰 줄기를 차지하고 있던 것이 프로세싱언어와 하드웨어에서의 프로세싱이라고 할 수 있는 와이어링(Wiring)’이었다. 그런데 와이어링의 경우 ‘ATmega128’이라는 고 사양 마이크로컨트롤러를 사용했기 때문에 가격이 약 12만 원 정도로 여러 가지 실험을 하기 에는 조금 부담스러운 가격이었다. 이러한 문제는 2005년 이탈리아에서 해결점을 찾았다. 이탈리아 밀라노 옆에 위치한 이브레아(Ivrea)라는 미디어 중심의 교육을 하는 학교가 있었다. 그곳에 다니던 마시모밴지(Massimo Banzi)와 데이비드 쿠아르티에예스(David Cuartielles)는 와이어링을 저렴하게 사용하기 위한 방법과 비전공자(예술가, 디자이너, 학생 등)에게도 쉽게 이해시키기 위한 방법을 연구하던 도중, 아두이노에 대한 아이디어를 최초로 제시하게 되었다. 그리고 그들은 마을의 역사적 인물인 이태리의 왕 ‘Arduin of Ivrea’의 이름을 따서 이 컨트롤 장치의 이름을 아두이노라고 지었다. 그 이후 아두이노는 제작자, 학생, 예술가를 비롯한 수많은 사람들에게 큰 인기를 얻었다.

그런데 아두이노 이전에도 마이크로컨트롤러는 물론이거니와 마이크로컨트롤러를 내장한 개발 보드들이 다수 존재했다. 대표적인 마이크로컨트롤러로는 AVR, ARM 등이 있으며 현재도 많이 사용되는 마이크로컨트롤러들이다. 아두이노의 기능은 기존의 마이크로컨트롤러 보드와 다르지 않으며, 심지어 아두이노 우노의 성능은 다른 마이크로컨트롤러 보드에 비해서 낮다. 이렇게 AVRARM의 성능 및 활용성이 이미 입증된 마이크로컨트롤러들이 있음에도 불구하고 아두이노가 주목받은 이유는 무엇일까? 아두이노가 기존의 AVR이나 ARM과 다른 점은 일단 비용 면에서 저렴하고 빠른시간 내에 쉽게 마이크로컨트롤러 기반의 하드웨어 제어 장치를 만들 수 있도록 해준다는 점에서 찾아야 한다. 이러한 성공이 가능할 수 있었던 또 하나의 요인은 아두이노의 모든 설계를 CCL표기 하에 무료로 이용할 수 있었다는 점에 있다. 정의 부분에서도 설명했지만 아두이노는 아두이노라는 이름만 유일하게 보호되었기 때문에 Boarduino, Seeeduino, Freeduino처럼 duino형태의 유사한 이름의 수많은 저비용의 대체 보드가 등장했다. 하지만 그럼에도 불구하고 이탈리아에서 제조되는 공식보드는 아직까지도 매우 잘 팔리고 있다고 한다.

2005년 발표 이후, 아두이노 보드는 마이크로컨트롤러를 활용하여 제어장치를 만들고자 하는 이들에게 주목을 받기 시작하여 그 판매량이 급증하고 있으며, 2011년에는 구글이 아두이노를 하드웨어 파트너로 선택했다. 오픈소스의 정신을 공유하고 있음은 물론 아두이노의 확장성과 편리함을 인정하였기 때문이라 하겠다.

 

아두이노 하드웨어

하드웨어란 실제로 만질 수 있는 세상의 모든 것이다. 여기에서는 전자부품이 해당된다. 하지만 아두이노 하드웨어에 대해 부품이다.’ 라고 간단히 설명을 끝내기에는 부족함이 있다. 먼저, 아두이노 하드웨어를 이해하기 위해서는 마이크로컨트롤러마이크로컨트롤러보드에 대해 알아야 한다. 마이크로컨트롤러와 마이크로컨트롤러보드를 명확히 구분하지 못하여 오해가 생길 수 있기 때문이다. 마이크로컨트롤러는 싱글칩 컴퓨터라고도 불리는, 컴퓨터의 본체에 해당하는 기능을 하나의 칩으로 집약시켜 놓은 저사양의 컴퓨터를 가리킨다. 컴퓨터의 본체에 전원만 꽂아 주면 컴퓨터로 기능할 수 있는 것처럼 마이크로컨트롤러 역시 전원만 주어진다면 마이크로컨트롤러로서 동작할 수 있다. 마이크로컨트롤러보드는 마이크로컨트롤러로 이루어진 하나의 상품(보드)이다. 결국, 아두이노 하드웨어는 마이크로컨트롤러를 사용하여 만들어진 개발 보드라고 정의할 수 있다. 오해하지 말아야 할 점은 마이크로컨트롤러가 아니라 개발보드라는 점이다. ‘마이크로컨트롤러=마이크로컨트롤러보드가 성립되지 않는 이유는 마이크로컨트롤러보드에 마이크로컨트롤러 이외에도 많은 것들이 추가되어 있기 때문이다. 아두이노 우노를 예로 들어보면, 아두이노 우노는 AVR 시리즈의 마이크로컨트롤러 중 하나인 ATmega328을 이용하여 만든 마이크로컨트롤러 보드이다. 아두이노 보드를 살펴보면 28개의 다리가 있는 검은색 칩을 볼 수 있는데 이 칩이 ATmega328로 아두이노 보드의 심장이라 할 수 있다. 하지만 ATmege328 마이크로컨트롤러 이외에도 다양한 부품들이 자리하고 있음을 발견할 수 있다. 실제로는 아두이노에서 핵심이라 할 수 있는 ATmega328 마이크로컨트롤러 이외의 부가적인 부분들이 더 많은 부분을 차지하고 있다. 이처럼 아두이노는 마이크로컨트롤러 + a를 의미한다. 아두이노 하드웨어에 새로운 부품들을 연결하는 것도 가능하다. 수십 여 가지의 센서들, 쉴드라고 일컬어지는 모듈을 연결하면 확장이 가능하다. 쉴드에 대해서는 뒤에서 더 자세히 설명할 것이다. 이렇게 보드가 완성되면 IDE에서 작성한 코드를 업로드해서 아두이노를 작동시킬 수 있다.

아두이노 하드웨어는 이탈리아 회사인 스마트프로젝트에서 판매하고 있다. 2005년 이후 몇 차례 사양의 보완이 이루어져서 다양한 공식 아두이노가 출시되었다. 하지만 아두이노는 하드웨어가 공개되어 있으므로 다른 여러 회사에서도 공개된 사양을 바탕으로 새로운 기능을 추가하거나 기존 기능을 변경하여 아두이노 호환 보드를 제작, 판매하고 있다. 아두이노의 홈페이지를 살펴보면 보드들의 종류가 10가지가 넘는다. 이들의 공통점은 무엇일까? 아두이노 보드들은 크기와 형태가 다양하여 외형적으로는 공통점을 찾기가 힘들다. 아두이노의 공통점은 공통된 개발 환경, 즉 동일한 소프트웨어를 사용하여 프로그램을 개발 할 수 있다는 점이다. 마이크로컨트롤러는 종류에 따라 프로그램을 작성하는 방법이 다르다. 설령 동일한 회사의 것이라고 하더라도 다르다. 하지만 아두이노라고 이름 붙여진 개발 보드들은 모두 동일한 방식으로 프로그램을 작성하고 동작시킬 수 있다. 이러한 공통의 개발 환경이 아두이노의 장점이라고 할 수도 있겠다.

지금부터는 아두이노 보드의 종류를 하나씩 살펴 보도록 하겠다.

1) 아두이노 우노(UNO)

현재 전 세계적으로 가장 많이 사용되고 있는 보드로, 예제 리소스들이 많이 존재하기 때문에 아두이노를 처음 시작한다면 이 제품으로 시작하는 것이 좋다. 아두이노 우노는 201112월에 나온 R3버전이 최신 버전이다. 따라서 R3버전을 기본으로 하여 설명하겠다. 아두이노 우노 보드는 ATmega328 마이크로컨트롤러를 중심으로 외부 장치 연결을 위한 핀 헤더, 전원 연결 잭, 프로그램 다운로드를 위한 USB 커넥터, 부트로더와 프로그램 다운로드를 위한 ISP 연결 커넥터 등으로 구성되어 있다. 아두이노 우노는 프로그램 다운로드를 위해서 USBISP 커넥터를 동시에 제공하고 있지만 USB를 통한 프로그램 다운로드를 기본으로 사용한다. 아두이노 보드와 USB 연결선만 있으면 별도의 장치 없이도 아두이노로 프로그램을 작성하고 실행해 볼 수 있다.

2) 아두이노 레오나르도

아두이노 레오나르도는 아두이노 우노와 흡사하게 생겼지만 성격이 조금 다른 보드이다. 가장 큰 차이점은 아두이노 레오나르도 보드에는 ATmega32u4 칩을 탑재하고 있다는 점이다. ATmega32u4 칩은 내부에 USB 통신을 위한 기능을 갖추고 있기 때문에 아두이노 UNO 보드처럼 별도의 변환기를 필요로 하지 않는다. 아두이노 UNO 보드에서는 PCserial로 통신하기 위해 D0, D1(디지털 1, 2) 핀을 사용하는데 레오나르도 보드에서는 이게 필요 없기 때문에 D0, D1 핀을 다른 모듈과의 serial 통신에 사용할 수 있다. 별도의 serial 통신용 핀이 더 생긴 셈이기 때문에 주로 고속으로 동작하는 통신 모듈을 함께 사용할 때 레오나르도 보드가 더 효율적이다. 다만, 우노용 라이브러리들이 동작하지 않는 등 우노와 완전히 다르기 때문에 충분히 매뉴얼을 습득하고 사용해야 한다.

3) 아두이노 MegaADK

안드로이드는 v3.1 부터 USB를 통한 악세사리 장치를 지원하는 표준인 ADK를 사용할 수 있다. Mega ADKADK 지원을 위한 보드로 안드로이드에 연결 시 앱에서 ADK 라이브러리를 사용해서 연동할 수 있다. ADK는 아두이노가 USB Host (마치 PC 처럼) 역할을 하면서 안드로이드 기기와 USB 연결을 한다. 하지만 사용법이 복잡하기 때문에 ADK에 대해 미리 사전조사를 하고 블루투스나 WiFi와의 특징 비교를 해본 뒤 구매하는 것이 좋겠다.

 

4) 아두이노 FIO

무선통신 컨셉의 특수 보드이다. LiPo 배터리 연결단자와 충전기능을 기본으로 제공하고 XBee 모듈 장착을 위한 소켓을 포함하고 있다. USB 단자가 있으나 충전용이고 무선으로 코드 업로드를 지원한다. 외장형 FTDI(USB to Serial 변환기) 모듈을 사용할 수 있다. 가격이 비싸지만 N:N 연결이 필요한 경우 Xbee 활용도가 높다.

아두이노 소프트웨어

소프트웨어란, 컴퓨터와 그 주변장치들을 작동시킬 수 있는 컴퓨터 명령어의 모임이다. 아두이노 소프트웨어는 스케치(sketch)’라고 불린다. 쉽고 간단하게 그림을 그리듯이 프로그램을 만들 수 있다는 의미에서 붙여진 이름이다. 아두이노 보드를 프로그래밍하기 위해서는 먼저 아두이노 공식 홈페이지

(http://www.arduino.cc/en/main/software)에서 통합개발환경(IDE)을 다운로드받아야 한다. IDE환경이란, 컴퓨터에서 돌아가는 특별한 프로그램인데 이 프로그램을 사용하면 프로세싱 언어에 기반을 둔 간단한 프로그래밍 언어로서 아두이노 보드에서 사용할 스케치를 작성할 수 있다. 이것은 아두이노 홈페이지에서 무료로 다운받을 수 있다. 아두이노 프로그램은 윈도우즈를 포함하여 리눅스와 MAC OS X도 지원하므로 운영체제에 맞는 프로그램을 다운로드받으면 된다. 아두이노 프로그램은 따로 설치할 필요가 없으며, 압축을 해제하는 것만으로 사용할 수 있다. 인스톨 파일의 경우 프로그램 설치 이외에 아두이노를 위한 드라이버 설정 등을 자동으로 해 주므로 꼭 인스톨 파일을 다운로드 받아 설치할 것을 권장한다. 설치가 끝났으면 아두이노 보드를 컴퓨터에 연결한다. 아두이노 보드를 처음 컴퓨터와 연결하면 드라이버 설정을 통해 추가 작업 없이 자동으로 인식된다. 이렇게 아두이노 프로그램의 설치는 끝났다. 이제 IDE를 실행해 아두이노를 사용할 수 있다. IDE를 실행시키면 아두이노 프로그램은 프로그램 작성과 업로드에 필요한 기본 기능들만으로 구성되는 직관적인 인터페이스를 제공하고 있다. 먼저 IDE에서 코드를 작성한다. 그리고 이렇게 IDE환경에서 작성되어진 소스코드는 아두이노 하드웨어에 바로 업로드가 가능하다. 우리가 보드에 스케치올리기(Upload to I/O Board)’버튼을 누르면 작성한 코드는 보통 초보자가 사용하기에 꽤 어려운 C언어로 번역되어, avr-gcc 컴파일러에 전달된다. 컴파일러는 오픈소스 소프트웨어 가운데 중요한 부분으로, 프로그래밍 언어를 마이크로컨트롤러가 이해할 수 있도록 마지막 변환 작업을 수행한다. 원래 아두이노 하드웨어에서 사용하는 AVR기반의 마이크로컨트롤러들은 ISP라는 프로그램 장비가 별도로 있어야 하지만 아두이노의 IDE환경에서는 별도의 추가 장비 없이 프로그램을 아두이노 하드웨어에 업로드 할 수 있다. 이러한 기능이 가능한 이유는 아두이노 하드웨어 CPU에 이미 ISP기능을 하는 Bootloader라는 프로그램이 존재하고 있기 때문이다. 아두이노의 프로그래밍 작업 주기를 정리해보면 다음과 같다.

첫째, 아두이노 보드를 컴퓨터의 USB에 꽂는다

둘째, 보드에 생명을 불어넣을 스케치를 작성한다.

셋째, USB 연결을 통해 보드에 스케치를 올리고, 보드가 재시작하기까지 기다린다.

넷째, 스케치를 보드가 실행한다.

아두이노에서는 헤더 파일을 포함시킬 필요 없이 사용할 수 있는 기본 함수들과 기본 클래스 이외에 자주 사용되는 기능들을 클래스로 구현하여 라이브러리로 제공하고 있다. 아두이노 프로그램과 함께 제공되는 라이브러리들은 아두이노 프로그램이 설치된 디렉토리 아래의 ‘libraries’ 디렉토리에서 찾아 볼 수 있다. 이렇게 아두이노 설치 디렉토리 아래 존재하는 라이브러리들은 기본 라이브러리라고 불리며, 이 라이브러리들은 아두이노에서 공식적으로 제공한다. 다양한 장치들을 활용할 수 있는 함수나 클래스를 기능이나 용도에 따라 묶어 라이브러리로 제공하고 있다. 아두이노에서 제공하는 기본 라이브러리 이외의 라이브러리는 외부라이브러리 또는 확장 라이브러리라고 하며, 이를 사용하기 위해서는 먼저 해당 라이브러리를 다운받아 설치해야 한다. 또 자주 사용하는 내용은 직접 라이브러리로 만들어서 사용할 수 있다.

아두이노에는 다양한 보드들이 존재하지만, 모두 동일한 환경에서 프로그램을 개발 할 수 있다는 점이 아두이노의 장점 중 하나라고 이야기하였다. 아두이노 개발 환경은 자바를 기반으로 만들어진 IDE와 그 아래에 숨겨진 아두이노 함수들로 이루어진다. 아두이노 프로그램은 작고 간단한 통합 개발 환경으로 손쉽게 사용할 수 있는 장점이 있기는 하지만, 고급기능을 사용하고 싶다면 아두이노 프로그램으로는 불가능하다는 사실을 발견하게 될 것이다. 아두이노 프로그램의 제한된 기능을 넘어서는 고급 기능을 사용하고 싶다면 아트멜 스튜디오 등의 개발환경을 통해 프로그램을 개발하는 것도 가능하다. 이때 아트멜 스튜디오를 사용하는 경우와 프로그램을 사용하는 경우의 공통점은 바로 아두이노의 함수에 있으며, 이것이 아두이노의 장점 중 하나이다.

 

아두이노 쉴드

아두이노의 친구 격으로 쉴드(Shield)’라고 불리는 확장 모듈이 존재한다. 아두이노 쉴드는 보드와 결합하여 보드의 성능을 확장하는 역할을 한다. 예를 들어 아두이노 우노 보드 하나만 가지고 인터넷 통신을 할 수 없다. 이 때, 이더넷 쉴드를 사용하면 인터넷 기능을 사용할 수 있게 된다. , 블루투스 쉴드를 보드에 연결하면 보드에서 블루투스의 사용이 가능해진다. 현재 300개가 넘는 쉴드가 존재하는데 제품으로 나와 있는 쉴드의 대부분은 아두이노 우노와 호환되고, 일부는 아두이노 메가와 결합된다. 이 외에도 아두이노 보드의 핀 배치는 표준화 되어 있으므로 이러한 표준을 준수한다면 누구든 손쉽게 원하는 기능을 수행하는 쉴드를 제작할 수 있다. 쉴드는 아두이노 보드에 수직으로 장착하며, 각 쉴드가 사용하는 핀이 중복되지 않는다면 여러 개의 쉴드를 적층하여 동시에 사용하는 것도 가능하다. 납땜을 하는 대신 적층형으로 쌓아서 원하는 작업을 손쉽게 수행할 수 있다. 쉴드와 같은 역할을 하고 있는 것으로 모듈이라는 것이 있다. 쉴드와 모듈은 둘 다 아두이노 보드의 성능을 확장 시켜주는 역할을 한다. 다만 차이점은 생김새이다. 위에서 설명했듯이 쉴드는 아두이노 보드에 적층(쌓아올림)해서 사용하는 반면 모듈은 아두이노 보드에 케이블을 연결해서 사용한다. 모듈이 쉴드보다 크기가 작다는 장점이 있지만 경우에 따라 납땜 과정을 필요로 하기 때문에 사용과정이 복잡해질 수 있다. 다음으로 자주 사용되는 쉴드의 종류를 하나씩 살펴보도록 하겠다.

 

 

 

1) 이더넷 쉴드

이더넷이란 LAN을 위해 개발된 컴퓨터 네트워크 기술로, OSI 모델의 물리 계층에서 신호와 배선, 데이터 링크 계층에서 MAC 패킷과 프로토콜의 형식을 정의한다. 인터넷에 연결하기 위한 방법 중에서 와이파이와 더불어 가장 많이 사용되는 방법 중 하나이다. 아두이노에서 이더넷을 통해 인터넷과 연결하기 위해서는 이더넷 쉴드가 필요하다. 이 쉴드는 단독으로 사용할 수는 없고 Arduino UNO R3와 연결하여 사용 가능하다. 거리에 상관없이 아두이노 보드를 인터넷망 혹은 LAN에 연결하여 센서 데이터를 공유하고 싶다면 이더넷쉴드를 이용하면 된다. 물리적으로는 이더넷 포트와 이더넷 통신의 물리계층부터 어플리케이션 계층 이전까지를 처리해 줄 이더넷 통신 칩과 프로토콜을 지원해줄 복잡한 소프트웨어가 필요하다. 하지만 아두이노 이더넷 쉴드를 이용하면 간단한 작업으로도 이더넷 통신을 할 수가 있다. 여러 종류의 이더넷 쉴드가 판매되고 있으며, 아두이노 공식 이더넷 쉴드는 Wiznet W5100이더넷 칩을 사용하고 있다.

2) 모터쉴드

적은 전류만을 필요로 하는 소형 모터를 사용하면 USB로 공급되는 전원만으로 모터의 구동이 가능하지만, DC모터와 같은 경우 고전압, 고전류를 요구하는 경우가 많아 별도의 전원 공급 회로가 필요하다. 또한 서보 모터의 경우에는 회전 방향을 조절할 수 있는 제어선이 존재하지만 DC모터의 경우에는 전원을 인가하는 방향에 따라 회전 방향이 바뀌므로 모터 제어를 위한 별도의 칩을 사용하는 것이 일반적이다. 이처럼 전원공급과 제어를 간편하게 하기 위해 만들어진 쉴드가 모터 쉴드이다. 모터쉴드는 L298칩을 이용하여 만들어졌다. 모터 쉴드를 사용하면 두 채널을 통해 두 개의 DC 모터 방향과 속도를 개별적으로 제어할 수 있다. 하나의 스테핑 모터 제어도 가능하지만 자동차, 탱크 등의 움직이는 기기를 만들기 위해 두 개의 모터를 사용하는 것이 일반적이다.

3) 블루투스쉴드

블루투스란 휴대폰, 노트북, 이어폰, 헤드셋 등의 휴대기기를 서로 연결해 정보를 교환하는 근거리 무선통신 기술이다. 블루투스는 디지털 무선 신호를 이용하며, 10미터 안팎의 초단거리에 있는 주변기기를 저 전력으로 연결 해주고, 주파수 대역 2400~2483.5MHz 범위의 79개의 채널을 사용한다. 블루투스 쉴드의 버전은 현재 4.0 까지 나왔다. 초창기 블루투스의 전송속도는 1Mbps 에 불과했지만 블루투스 2.0 (2004)은 최대 3Mbps, 블루투스 3.0 (2009)은 최대 24Mbps까지 속도가 올라갔다. 2010년에는 블루트스 4.0이 등장하면서 속도를 24Mpbs까지 유지하면서 소비전력까지 낮추게 되었다. 4.0에서 더해진 Bluetooth Smart 저전력 기술이 이론상으로는 수은전지로 며칠씩 작동할 수 있는 수준의 배터리 효율을 자랑한다고 한다. 아두이노 쉴드는 bluetooth low energy쉴드로써, 아두이노 보드와 호환되고 우노, 메가2560, 레오나르도 등에서 사용할 수 있다. 뿐만 아니라 스마트폰, 태블릿 등의 휴대기기와도 연결할 수 있다.

4) 와이파이쉴드

와이파이는 인터넷에 무선으로 연결하기 위한 대표적인 방법 중 하나로, 유선 연결 방법인 이더넷과 함께 인터넷 연결을 위해 흔히 사용된다. 아두이노에서 와이파이를 사용하기 위해서는 와이파이 쉴드가 필요하다. 즉 와이파이쉴드란 무선으로 네트워크에 접속, 제어할 수 있게 해주는 하드웨어이다. 와이파이 쉴드는 무선 데이터 통수신을 위해서는 HDG204칩을, TCP/IP 스택을 지원하기 위해서는 아트멜의 AT32UC3칩을 사용하고 있다. 아두이노에는 와이파이 쉴드를 사용하기 위한 와이파이 라이브러리가 기본으로 포함되어 있으므로 소프트웨어를 추가로 설치하지 않아도 와이파이 쉴드를 사용하여 무선 인터넷을 활용하는 스케치를 작성할 수 있다. 와이파이 쉴드는 아두이노와의 통신을 위해 SPI 통신을 사용한다.

5) USB 호스트쉴드

USB는 컴퓨터와 주변장치와의 통신을 위한 표준 중 하나로, 인텔, 마이크로소프트, IBM 등 주요 IT 기업들이 상호 접속의 편이성을 높이기 위해 개발하였다. 초기 USB는 전송 속도가 느려 적은 양의 데이터 전송이 필요한 마우스나 키보드 등의 주변장치로 사용되었지만 최근 USB3.0이 발표되면서 대용량의 고속 저장장치에도 사용되는 등 활용 범위가 점차 넓어지고 있다. USB 호스트 쉴드는 아두이노가 USB 호스트의 역할을 수행할 수 있도록 해 주는 쉴드로, 다양한 USB 장치를 아두이노에 연결하여 사용할 수 있도록 해 준다. 아두이노의 가능성을 좀 더 넓히려는 시도 중의 하나가 바로 USB호스트 기능을 추가하여 USB기기를 작동할 수 있도록 하는 것이었다. 따라서 이를 지원하는 usb 호스트 쉴드 제품이 만들어 졌으며, 이를 지원하는 공개 라이브러리가 발전되기 시작하였다. 하지만 모든 USB 장치를 아두이노와 연결할 수 있는 것은 아니다. 아두이노 쉴드를 통해 아두이노 보드와 연결할 수 있는 장치는 라이브러리에서 지원하는 장치로 한정된다. 따라서 아두이노와의 연결 지원 여부를 먼저 확인해야 한다. 또한 USB 호스트 쉴드를 사용하기 위해서는 먼저 USB 호스트 쉴드 라이브러리를 다운받아 설치하여야한다.

6) MP3 쉴드

스파크펀의 MP3 Player Shield는 아두이노 보드에 적층하여 사용할 수 있는 쉴드 형태로(호환 가능), 프로젝트에 음악 또는 음향효과를 넣을 수 있도록 해준다. VS1053B칩을 기반으로 제작된 이 쉴드는 SPI통신이 가능하고 MP3, Ogg Vorbis, AAC, WMA, MIDI형식의 파일을 지원한다. MP3 ShieldMicroSD 슬롯에 MicroSD 카드를 꽂아 음악파일을 저장하고, 3.5mm 스피커 잭과 0.1" 스피커 헤더에 출력장치(스피커, 이어폰 등)를 연결하여 음악을 출력할 수도 있다.

7) NFC 쉴드

NFC는 근거리 무선 통신 표준 중 하나로, 스마트폰의 보급에 따라 활용도가 증가하고 있는 기술 중 하나이다. 스마트폰에서의 사용을 주 목적으로 하고 있으며, 스마트폰을 통한 다양한 서비스에 사용되고 있다. NFC의 특징 중 하나인 10cm 이내의 아주 짧은 거리에서만 동작하기 때문에 의도적인 접근에 의한 사용자의 요구를 반영할 수 있는 특징을 가진다. PN532칩은 NFC 기능을 지원하는 칩 중 가장 널리 사용되고 있는 칩으로 NFC의 모든 통신모드를 지원하지만, 쉴드는 읽기/쓰기 모드만을 지원한다. NFC 쉴드를 사용하기 위해서는 먼저 전용 라이브러리가 필요하며, 인터넷에서 다운로드 받을 수 있다.

 

아두이노 운영 예제

아두이노의 운영은 아두이노로 사물인터넷을 구현하여 정보를 수집하고 가공함으로써 유용한 서비스를 제공하는 것이다. 아두이노는 사물인터넷의 한 종류이다. 사물인터넷(IOT)이란, 사물들이 인터넷 네트워크를 통해 상호 연결되어 있고 사물들 사이의 통신을 통해 서로 정보를 주고받는 상태를 가리킨다. 사물인터넷의 폭발적인 성장에 발맞춰 ARM, 인텔 등의 IT 기업들 역시 자신들만의 강점을 내세워 사물인터넷 시장에 뛰어들고 있다. 이러한 거대기업들의 틈바구니에서 어찌 보면 시대에 뒤떨어지는 저사양의 8비트 마이크로컨트롤러로 만들어진 아두이노가 살아남을 수 있을까 하는 의구심이 들 수도 있다. 하지만 아두이노는 수많은 참여자들에 의해 독자적인 생태계 구축에 성공함으로써 수많은 하드웨어와 소프트웨어의 확장이 이루어졌다. 특히 아두이노에서 사용할 수 있는 다양한 주변장치에는 사물인터넷 환경에서 필요로 하는 대부분의 주변장치들이 포함되어 있다. 또한, 여기에 힘을 더해 주는 사실은 사물인터넷에서의 사물은 종류가 다양하여 8비트 마이크로컨트롤러만으로도 충분한 사물들이 수없이 많다는 점이다. 높은 퀄리티를 자랑하는 초고가의 제품은 제외하고 저가형으로 우리가 자주 접할 수 있는 제품들은 아두이노를 기본으로 하여 만들어진다.

1) 자동 식물관리 시스템

아두이노는 농업분야에도 이용이 가능하다. 토양 습도 센서는 토양에 수직으로 센서를 삽입한 후 센서를 통해 시물에 대한 토양 습도 함유량을 평가하며 측정된 습도 값을 코드를 이용해서 출력한다. 사전에 설정한 습도 값을 기준으로 설정 값 이하이면 서브모터를 일정시간 동안 작동시켜 자동으로 물이 제공된다. 온도, 습도 등에 민감한 식물의 경우 아두이노를 통하여 모니터링하여 생장에 최적의 환경을 만들 수 있다.

2) 가스누출 자동 차단기

요즘 광고에 많이 나오는 집에 도착하기 전에 에어컨이나 보일러, 전등 등을 on/off 하는 것처럼 아두이노는 각종 센서의 값을 읽거나 제어하는 것이 가능하다. 이 가스누출 자동 차단기는 MQ2 Gas & Smoke Sensor를 활용해 가스를 감지하고, Servo Motor를 사용해 가스누출을 차단시키며, 부저를 활용해 경보음을 낸다.

 

3) 청소로봇

아두이노는 DC모터, 스텝핑모터, 서보모터의 정밀한 제어가 가능하다. 예를 들어 장애물 감지 센서와 모터를 아두이노와 연결하여 로봇을 만든다면 장애물을 피해가는 로봇을 만들 수 있다. 이와 더불어 기존의 로봇청소기보다 크기를 작게 하면 사람의 손이 닫지 않는 곳도 구석구석 청소할 수 있다. 본 로봇을 만들기 위해 필요한 핵심적인 부품은 아두이노 우노, L298N듀얼 모터 드라이버, DC모터, HC-SR04 초음파거리센서 등이다.

4) 신생아 심장박동 알림기

최근 유비쿼터스 컴퓨팅 기술의 발달로 가장 활발한 연구 성과를 보여주는 분야가 헬스케어이다. 이 제품은 펄스 센스를 중심으로 아두이노 우노와 LE, 브레드보드, 피에조 부저 등을 이용하여 구현한다. LED는 심장박동이 뛸 때마다 불빛이 나타내는 것이며, 펄스 센서를 이용하여 신생아의 평균 BPM에서 벗어난 경우 피에조 부저가 울리는 구성이다.

 

 

 

아두이노의 발전 가능성

1차 산업혁명과 2차 산업혁명을 거쳐 정보통신 분야에서 3차 산업혁명이 발생했다. 정보통신의 발달로 인해 이전보다 훨씬 다양한 직업군이 생겨났고 이 세계는 지구촌사회라고 부를 만큼 가까워지게 되었다. 물리적인 거리는 같지만 SNS를 통해 실시간으로 지구 반대편의 상황을 알 수 있을 만큼 가깝게 되었다는 의미이다. 그리고 요즘, 아두이노와 같은 오픈소스 제조업이 등장하면서 몇몇 학자들은 4차 산업혁명이 시작되었다고 주장한다. 만약 이것을 4차 산업혁명으로 본다면, 4차 산업의 핵심 기술은 정보통신기술과 제조업의 융합이라고 할 수 있다. 이와 관련된 단어로 메이커운동이라는 개념이 있다. 메이커운동의 개념을 알기에 앞서 메이커운동의 주체인 메이커에 대해 간략하게 설명하자면 메이커란 기존의 제조하는 사람, 만드는 사람의 경계를 뛰어 넘어서 아이디어를 직접 구현하고 서로 연결된 네트워크를 통해서 그들이 개발과정에서 얻은 프로세스나 지식, 노하우를 서로에게 나눠주는 사람들이다. 이렇게 서로 다른 메이커들이 자신의 아이디어를 공유하고 발전시키는 흐름을 메이커운동이라고 한다. 메이커 운동을 기반으로 4차 산업혁명이 실현되고 있는 것이라면, 4차 산업혁명은 이전의 혁명들과는 다르게 평범한 일반인들도 참여하여 발전해나가는 양상을 띤다. 아두이노에서도 메이커운동은 실현되고 있다. 확장라이브러리를 보면 쉽게 알 수 있다. 확장라이브러리는 아두이노에서 공식적으로 제공하지는 않지만 수많은 자발적인 참여자들에 의해 만들어지고 있다. 무료로 공개된 확장 라이브러리는 아두이노라는 생태계구축을 촉진시키고 지금과 같은 아두이노의 성공을 이끈 주역이라 해도 과언이 아니다. 지금도 누군가는 기존 라이브러리보다 더 편리한 라이브러리를 만들기 위해 고민하고 있을 것이며, 아두이노의 영토는 점점 넓어질 것이다. 메이커운동을 4차 산업혁명으로 보지 않더라도 이 파급효과는 어마어마할 것으로 예상된다. 한 사람의 아이디어가 실현되면서 지금까지 경험하지 못했던 새로운 문화와 편리성, 미래가치에 대하여 새로운 시각을 열어줄 것이라는 전망을 주고 있다. 그런 면에서 오픈소스 제조업의 한 분야인 아두이노는 그 발전 가능성이 매우 높다 하겠다.

아두이노는 탄생 배경부터 전문적인 소프트웨어 혹은 하드웨어 엔지니어를 위해서 설계된 것이 아니다. 뭔가 새로운 것을 만들고 싶고, 창의적인 아이디어는 있으나 공학에 대한 지식이 부족한 사람들(비전공자)이 쉽게 이해하도록 만든 것이 아두이노이다. 저렴한 가격에 하드웨어를 갖추어서 프로토타이핑을 하고 싶다면 누구나 아두이노를 다룰 수 있다. 하지만 아두이노에서 주목해야 할 점은 이렇게 초보자를 위해 설계된 환경이지만 기초적인 일들만 할 수 있는 것이 아니라는 것이다. 아두이노 개발환경과 몇 가지 하드웨어만 갖춘다면 로봇, 사운드장치, 게임분야, 센서인터페이스 등 상상 그 이상의 일들을 할 수 있다. 그렇기 때문에 아두이노 플랫폼은 전 세계에 많은 사용자들을 확보하고 있고 현재에도 계속해서 발전해 나가고 있다. 이러한 아두이노의 가치를 알아본 구글에서는 아두이노를 하드웨어 파트너로 삼아 구글의 하드웨어 제작을 아두이노에게 맡기기도 했다. USB 호스트 쉴드를 모태로 하여 구글은 google io 2011 행사에서 아두이노와 안드로이드기기의 연결을 지원해주는 open ADK를 공개하여 안드로이드 스마트폰 기기를 아두이노와 연동할 수 있는 가능성을 열었다. 이후 공식 아두이노 팀은 아두이노에 USB 호스트 쉴드 기능을 기본으로 내장한 아두이노 ADK제품을 발표했다. 이를 통해 UNO보드에 별도의 USB 호스트 쉴드를 장착해야 하는 불편이 없어졌다. 이렇게 성능적 제약 역시 꾸준히 향상되고 있다는 점에서 발전 가능성도 높을 것으로 예상된다.

아두이노의 발전 가능성이 높은 이유 중 하나는 이미 교육적 도구로서 사용되고 있다는 점이다. 개발보드를 처음 접하는 학생들에게 있어, 아두이노는 아주 좋은 도구가 된다. 많은 연산을 필요로 하지 않고 센서와 액추에이터를 간단히 다루는 정도이기 때문이다. 하지만 아두이노의 난이도에 비해 다양한 제품으로 발전할 가능성이 무궁한 분야이기 때문에 IT 관련 대학교는 물론 직업학교에서도 아두이노를 가르치고 있다. 요즘에는 학교에서 방과 후 학교프로그램으로 사용되기도 하는데 심지어 초등학생들도 배운다고 한다. 실제로 한 외국의 초등학교에서 울티메이커와 프로토스페이스 FABLAB이라는 곳에서 초등학생들을 대상으로 3D프린터를 만드는 이벤트를 진행했다고 한다. 대부분의 어른들은 아이들이 만들기 어려울 거라고 생각했지만 아이들은 몇 시간 동안 집중하여 3D 프리터를 제작하는데 성공했다고 한다. 심지어 아이들은 책이나 선생님의 설명보다는 마음가는대로 만들었다고 한다. 이처럼 초등학생이 할 수 있다는 것은 그리 어렵지 않다는 것을 의미한다. 아두이노를 동작시키는 코드 또한 어렵지 않다. C언어를 기반으로 만들어져 있어서 전체적인 코드가 C언어와 상당히 유사하다. 그렇기 때문에 현재 초등학생이나 중학생들의 소프트웨어 교육에도 많이 사용되고 있는 것이다.

최근에는 사회적으로도 아두이노를 활용한 다양한 프로그램이 있다. 대표적인 예로 ‘daddy’s lab(아빠 공작소)’은 아빠가 자녀들의 소프트웨어 교육을 이끌어주며, 지역 사회 커뮤니티 성장을 돕고 있다. 여기서 주로 사용하는 개발보드 역시 아두이노이며, 아이들이 좋아하는 게임을 연동할 수 있는 하드웨어를 스스로 제작할 수 있도록 도와주며 교육적 효과를 얻고 있다고 한다.

아두이노는 예술, 과학, 기술과도 결합하고 있다. ‘아두이노는 예술작품 제작을 위한 용도로 개발되었다.’라는 말이 있을 정도로 아두이노는 실제로 예술의 영역에 자주 쓰인다. 그 예로 물이 떨어지는 설치예술에 사용된 적이 있는데, 물이 떨어지는 타이밍을 정확하게 맞춰야 해서 여기에 아두이노 기술을 사용했다고 한다.

최근에 사람들의 관심이 급속도로 높아진 로봇을 제작할 수 있다는 점 또한 경쟁력을 갖는 부분이다. 로봇은 미래에 각광받는 분야이다. 그런데 아두이노를 사용하면 로봇을 스스로 만드는 것이 어렵지 않으며 이렇게 만들어진 로봇이 상품화 되고 있다. 국내의 경우, 앱트로닉스사에서 아두이노 교육용 로봇인 DIO를 출시했다. DIO를 이용하면 로봇 축구, 펜으로 그린 선이나 미로를 탈출하는 등 아이들이 자연스럽게 아두이노와 코딩에 대한 이해도를 높일 수 있다.

이전에는 개발보드를 다루는 작업이 전문가들만의 고유 영역으로 취급되었으나, 아두이노의 출현은 이러한 활동을 좀 더 대중적으로 변화시켰다. 아두이노가 쉽고 간편하다는 특성은 많은 사람들에게 사랑 받아 왔으며, 그러한 점에서 훌륭한 개발보드임에 틀림없다. 공개된 개발환경과 하드웨어 플랫폼을 기반으로 전 세계적으로 제작된 아두이노와 호환되는 수많은 하드웨어 자원들, 이 자원들을 쉽게 활용할 수 있도록 제작된 오픈된 소프트웨어 코드들과 아두이노에 흥미를 가지고 있는 사람들의 수많은 커뮤니티들이 진정한 아두이노의 파워라고 할 수 있다.

 

아두이노를 조사하면서 느낀점

처음 과제를 부여받았을 때 아두이노라는 단어를 난생 처음 들었기 때문에 어떻게 레포트를 써야할지 난감했다. 일단 나 스스로가 이해하는 게 먼저라고 생각해서 아두이노를 공부하기로 마음먹었다. 몇 권의 책을 빌려와서 이 레포트의 순서처럼 아두이노의 정의와 하드웨어, 소프트웨어, 그리고 예제들을 훑어보았다. 이해가 안 되는 부분은 인터넷에서 추가적으로 검색해보았다. 아두이노는 내가 몰랐던 신세계였다. 생각보다 많은 사람들이 이미 아두이노에 관심을 갖고 있었고, 초등학생이 아두이노를 통해 3D프린터를 만들었다는 것을 알았을 때는 정말 깜짝 놀랐다. 뉴스에서 3D프린터가 나올 때마다 3D프린터는 너무 비싸고 희귀하기 때문에 몇 십 년 뒤에나 우리 삶과 밀접해질 것이라고 생각했기 때문이다. 여기서 아두이노의 발전 가능성이 상상 이상일 것 같다는 생각을 하게 되었다. 아두이노는 탄생 배경부터가 독특하다. 비전문가들을 위해 만들어졌고, 저렴하며 또 그것이 오픈소스로 공개되었으니 말이다. 3차 산업혁명까지만 해도 혁명으로 인한 부는 기업에게 돌아갔다. 하지만 이익을 추구하는 기업의 특성상 기업들은 그들 손 안에 있는 소스를 공짜로 나누려 하지 않았다. 그런데 시간이 지나면서 누군가의 발명으로 인해 소스들이 하나 둘 씩 오픈되기 시작한다. 예를 들면 교양시간에 세계 최초로 개인 인공위성을 띄워 올린 송호준씨 영상을 본 적이 있다. 개인이 인공위성을 제작하여 쏘아 올렸는데 인공위성 만드는 방법을 모두 오픈소스로 공개했다고 한다. 정보는 다른 사람과 나눈다고 해서 소멸하지는 않는다. 다만 희소성이 떨어지면서 가치가 떨어질 수는 있다. 혼자 이익을 얻을 수 있었음에도 불구하고 오픈소스로 공개하여 모두의 이익을 택한 개발자들의 마음이 전해져서 오픈소스가 좋은 쪽으로만 활용되었으면 좋겠다. 개인이 소스를 가지고 있는 것보다 이렇게 공유했을 때 발전 속도는 훨씬 빠르고 사회 전반에 끼치는 영향도 더 큰 것 같다. 공유는 지구를 지구촌으로 묶는 것보다 한 차원 높은 수준에서 모든 사람들의 아이디어를 하나로 묶어줄 것이다. 이제 우리가 갖춰야 할 것은 적극적인 태도이다. 프로그래밍을 하고 조립하는 것에 큰 관심이 없는 사람들도 무조건 오픈소스를 활용하고 개발해야 한다는 것은 아니다. 하지만 관심이 있음에도 불구하고 막연하게 어려울 것 같다고 생각하며 피한다면 소스를 오픈한 의미가 없어진다. 위에서 언급했던 송호준씨도 이미 인공위성을 만드는 방법은 오픈되어 있는데 사람들이 자기를 특별한 사람으로 볼 뿐, 자신들은 할 수 없을 것이라고 단정 지어 생각하는 게 안타깝다고 했다. 이미 우리나라에도 한국형 아두이노가 개발되었다. 아두이노 보드를 저렴한 가격에 살 수 있으며 확장 라이브러리 또한 계속 증가하고 있다. 그러니 아두이노에 관심이 있는 사람이 있다면 과감하게 도전해 보라고 권하고 싶다.

아두이노는 미래의 교육에 있어서도 긍정적인 영향을 끼칠 것이라고 생각한다. 우리사회는 그동안 정보교육에 대한 관심이 높았었다. 우리 사회가 정보화 사회가 되었고, 그로 인해 정보와는 뗄 수 없는 관계가 되어버렸기 때문이다. 하지만 아두이노가 등장하면서 정보통신기술과 제조업이 융합되었고, 이제 세계는 융합의 바람이 불고 있다. 미래의 기술 혁신은 기존의 기술을 새롭고 조화롭게 융합하는 것이 중요하므로 융합적 사고가 필수적으로 요구될 것이다. 그리고 이러한 융합시대는 과학, 공학, 예술, 기술 등을 아우르는 능력을 겸비한 사람이 융합시대를 선도해 나갈 것이다. 아두이노는 과학, 공학 뿐만 아니라 이미 예술분야에도 폭넓게 사용되고 있다. 이러한 아두이노를 조금이라도 빨리 접하고 친숙해지면 앞으로의 변화에 쉽게 대처가 가능할 것이다.

아두이노의 부품을 직접 만져보며 아두이노에 대해 배운 것은 아니기 때문에 아두이노의 소프트웨어적인 면이 크게 와 닿지 않아서 아쉬웠다. 인터넷을 찾아보다 보니 아두이노로 만들 수 있는 신기한 것들이 너무 많고, 그러한 기능들이 일상생활에서 유용하게 쓰이는 것을 보고 내 손으로 한번쯤 만들어보고 싶다는 생각을 했다. 아두이노 플랫폼 위는 인종, 국적, 나이, 성별에 관계없이 누구나 올라올 수 있다. 이들 모두가 주인공이 되어 나만의 아두이노를 만들 수 있다는 것은 너무 매력적인 일인 것 같다.

 

반응형

'교육자료' 카테고리의 다른 글

아이디어를 생각해보자  (0) 2019.09.27
특허를 이해해보자 1  (0) 2019.09.27
아두이노 레포트  (0) 2019.09.26
아두이노란  (0) 2019.09.26
기침에 좋은 음식  (0) 2019.09.26

댓글

Designed by JB FACTORY