소형 IoT 장치 개발 도구인 아두이노 & 아두이노 IDE 소개

라즈베리파이와 더불어 아두이노(Arduino)는 IT 업계에서 오픈소스 플렛폼으로 매우 유명한 플렛폼 중에 하나입니다. 라즈베리파이가 32 bit 고성능 ARM Core 기반의 임베디드 시스템이라고 한다면 아두이노는 16 bit 혹은 8 bit 의 Atmel 사의 CPU를 탑재한 소형 임베디드 장치를 개발하는데 주로 사용하고 있습니다. 사실 개발이라는 말 보다는 아이들과 학생들의 코딩 교육 및 실습 용도로 시작된 프로젝트였지만 현재는 교육의 목적을 넘어서서 수많은 작품들과 IoT 기기, 웨어러블 장치 등의 개발 플렛폼으로도 각광을 받고 있습니다. 

아두이노(Arduino)란?

Atmel사의 AVR Microcontroller를 탑재한 오픈소스 하드웨어 개발환경입니다. 아두이노는 이탈리아에서 시작되었으며, 본래 일반인들이 접근하기 어려운 AVR Microcontroller의 개발환경에서 아두이노 IDE를 사용하여 누구나 손쉽게 코딩하여 기계나 장치 혹은 작품들을 만들 수 있는 개발환경입니다. 특히 최근에는 아이들이나 학생들의 교육 용도로 많이 사용되고 있고, 일반인들의 취미나 간단한 프로젝트 및 예술 작품까지 다양한 용도로 활용이 되고 있습니다. 

아두이노 공식 사이트

모든 하드웨어 회로도, 정보, 소스등이 공개가 되어 있어서 누구나 아두이노의 하드웨어를 회로도를 보고 직접 제작할 수 있습니다. 최근에는 아두이노 정품 외에 중국에서 저렴하게 제작된 호환 하드웨어가 널리 보급되고 있습니다. 아두이노 우노(Uno) 같은 경우 정품가격이 1~2만원 정도 한다면, 호환보드는 국내에서 5천원정도의 가격이 구입이 가능합니다. 즉 누구나 저렴한 가격으로 임베디드 장치 개발을 할 수 있으며, 수많은 작품들이나 장치들을 직접 만들어 볼 수 있습니다. 

아두이노 IDE는 쉬운 개발환경을 제공하며, 무료로 다운받아 설치할 수 있습니다. 따라서 관심있는 누구나 언제든지 아두이노 홈페이지에서 아두이노 IDE를 다운로드 받아서 사용할 수 있습니다. 아두이노 IDE를 다운받으려면 아래 링크로 이동하여 다운로드 받으시기 바랍니다.

이런 다양한 프로젝트와 학생들의 교육용으로 널리 보급된 아두이노는 오픈소스의 장점과 저렴한 가격 덕분에 현재 널리 사용되고 있는 개발 플렛폼이라고 볼 수 있습니다. 누구나 저렴한 아두이노 하드웨어만 구입하면 수많은 라이브러리를 무료로 제공받아서 작품을 만들 수 있습니다. 최근에는 아두이노에 무선 통신 모듈을 붙혀서 IoT 장치를 개발하는 프로젝트가 인기가 있더군요. 이런 프로젝트도 공개된 많은 소스들을 구해다 자신의 프로젝트에 적용해 볼 수도 있습니다. 

아두이노는 현재 매우 흥미로운 플렛폼이라고 봐도 됩니다. 

아두이노 종류 및 Spec.

2005년부터 시작된 아두이노는 현재 다양한 하드웨어가 시중에 출시되어 있습니다. 그중에서 가장 대표적인 하드웨어는 “아두이노 우노(Uno)” 입니다. 아두이노 우노의 스펙에 대하여 알아볼까요?

현재 제가 가지고 있는 아두이노 우노 실제 사진입니다. 라즈베리파이 3 보다 살짝 작은 정도의 크기입니다. 그럼 아두이노 우노의 실제 스펙에 대하여 알아보겠습니다.

메인 CPU인 마이크로컨트롤러는 Atmel사의 ATmega328P 가 실장되어 있습니다. 따라서 ATmega328P의 Spec을 따른다고 보면 되겠네요. 동작전압이 5V이고, 입력전압이 7~20V까지인데 되도록 12V까지를 사용하라고 권장하고 있습니다. 

디지털 I/O 핀이 14개이고 PWM 디지털 I/O 핀이 6개, 아날로그 입력 핀이 6개 입니다. 내부 Flash Memory는 32 Kbyte가 내장되어 있으며 SRAM은 2 Kbyte, EEPROM은 1 KByte 가 내장되어 있습니다. 최대 클럭 속도는 16 Mhz네요. 보드 사이즈는 가로가 68.6 mm X 세로 53.4 mm 이고, 무게는 25 g으로 아주 가벼운 편 되겠습니다. 

실제 스펙을 알아보니 아두이노 우노는 라즈베리파이와는 또 다른 환경을 지니고 있다고 보면 됩니다. 라즈베리파이가 실제로는 PC 성능을 지니고 있다면, 아두이노 우노는 아주 작은 소형의 CPU로 이루어진 임베디드 시스템이라고 보면 되겠습니다. 라즈베리파이는 라즈비안 같은 리눅스 OS를 올려서 사용할 수 있지만, 아두이노는 프로그램의 덩치가 큰 리눅스 같은 OS는 시스템의 한계로 인해서 사용하지 못하고 최소한의 동작을 위한 작은 내부 커널이 실장되어서 사용자의 코드에 따라서 동작하게 됩니다. 라즈베리파이와 아두이노는 생각보다 많이 다른 플렛폼이라고 볼 수 있습니다.

아두이노는 우노 외에 다른 하드웨어도 시중에 출시 되어 있는데요, 어떤 종류가 있는지 종류만 확인해 보도록 하겠습니다. ( 제일 많이 쓰는 하드웨어는 우노라서 우노 위주로 설명을 했습니다. )

처음 혹은 초보자를 위한 아두이노 Entry Level 로 출시한 아두이노 하드웨어입니다. 우노를 비롯하여 레오나르도, 101, ESPLORA, Micro, Nano 등이 있습니다. 이들은 비교적 사양이 낮은 Atmel사의 ATMega328 혹은 ATMega32 시리즈를 탑재하여 초보자나 학생들이 다루는 목적으로 출시된 거 같습니다. 물론 프로젝트에 따라서는 아주 훌륭한 도구가 될 수 있습니다. 

다른 제품군들중 성능 향상을 위한 제품들이 별도로 있는데요, 아두이노 메가 2560, Zero, DUE, M0 Pro 등입니다. 이들 제품군들은 Entry Level 제품군들보다 고성능인 ATMega 2560과 32 bit CPU인 ARM Coretex-M 계열의 CPU를 탑재하였습니다. 따라서 이들 제품들은 아두이노 우노 등의 성능보다 더 많은 성능이 필요할때 사용하면 될꺼 같네요. 특히 ARM Coretex-M 계열의 CPU를 탑재한 M0 Pro 같은 제품군은 고성능을 요구하는 프로젝트에 적합할 것으로 보입니다.

일단 아두이노를 처음 시작한다면? 아두이노 우노(Uno)를 구입하여 시작하면 되겠습니다^^

기타 다음 제품군들도 있습니다.

아두이노 IoT 제품군들과 웨어러블 장치 개발용인 웨어러블 아두이노 등이 있네요. 또한 아두이노 공식 사이트에서는 개발할때 편리한 각종 쉴드(보조 기판 혹은 커넥터)들이 제공되어서 사용자들의 다양한 요구사항에 맞춰서 하드웨어를 제공하고 있습니다. 

아두이노 IDE 

아두이노를 가지고 놀기 위해 아두이노를 구입했다면 이제 필요한 것은 아두이노 IDE를 설치하는 일입니다. 아두이노 IDE는 무료로 공식 사이트에서 다운로드 받을 수 있습니다. 최근에는 확인해 보니 PC에 설치하는 어플이 아닌 웹에서 작동하는 아두이노 Web editor가 있네요.

실제 사이트에서 캡쳐한 화면입니다. 얼마전까지만 해도 웹 에디터는 없었는데 최근에 제공을 하는거 같습니다. 저는 아직 웹 에디터를 사용해 보지 않아서 어떻게 사용하는지는 좀더 확인해 봐야 할꺼 같군요. 일단 아두이노 IDE는 본인의 PC에 설치해서 사용하는게 좋습니다. 

사이트에서 위의 화면에 다운로드 링크가 있습니다. 최신 버전은 1.8.9 네요. Windows 기반의 PC면 Windows Installer를 클릭하여 다운로드 하여 설치하면 됩니다. 최근에는 Linux 도 아두이노 IDE를 제공하는거 같네요. Windows 설치 파일은 다운로드를 받으면 대략 106 MB 정도 됩니다. 

설치하는 방법은 잘 아시듯이 동의 혹은 Next 를 누르고 넘어가면 됩니다^^ 설치하는데 꽤 시간은 소요되는 편입니다. 설치 마지막 즈음에 아두이노 관련 드라이버를 설치하겠느냐는 창이 나타나는데 이때 설치를 누르고 넘어가면 됩니다. 

설치가 완료되면 바탕화면에 아두이노 아이콘이 생생되었음을 확인할 수 있습니다. 실행하면 아래 화면이 나오면서 아두이노 IDE가 실행됩니다.

맨 처음 실행한 화면입니다. 친절하게 한글로 메뉴가 구성이 되어 있네요. 아두이노 IDE의 언어는 C를 채택하여 사용하고 있습니다. 그런데 C라고 해서 어려운 건 아니니 아두이노 IDE를 차근차근 접근하면 금새 간단한 기능을 만들 수 있습니다. 

이상으로 아두이노 및 아두이노 IDE를 소개해 봤습니다. 이후에는 아두이노 개발환경 구성 및 아두이노에 대한 내용들을 올려보도록 하겠습니다.

'코드도사(codedosa.com)'에는 쿠팡파트너스 등의 제휴링크가 포함되어 있으며 수수료를 제공받을 수 있습니다.