배너
닫기

산업동향

배너

[Inside AIDC] 아두이노 개념과 와이파이 연결의 가능성

  • 등록 2014.09.29 14:02:49
URL복사

지난 호에서는 스마트폰과 연결하는 통신 방식인 블루투스에 대해 살펴봤다. 이번 글에서는 블루투스와 마찬가지로 스마트폰 연결 방식의 대표적인 방법의 하나인 무선 랜, 즉 WiFi(와이파이)를 이용한 연결 방식에 대해 살펴보도록 하겠다.


 
 WiFi 연결 방식은 아이폰이 블루투스를 통한 연결 시 MFi(Made for iPhone/iPod/iPad)라는 인증을 거치 장치에게만 연결 기능을 제공하는 제한을 피하기 위해 주로 사용했던 방법이다. 스마트폰에 대부분 탑재되었던 WiFi 연결 방법을 사용하고, TCP/IP나 UDP 통신 프로토콜을 사용하여 임베디드 시스템과 연결하는 방식이다.
이러한 연결 방식은 다소 제품의 가격을 높이는 결과를 낳지만 스마트폰뿐만 아니라 인터넷을 통한 접속 기능까지 제공하기 때문에 현재도 많이 사용되는 방법 중 하나이다. 이러한 연결 방식을 가장 쉽게 접근할 수 있는 방법은 아두이노라는 플랫폼이다. 지금부터 아두이노 플랫폼을 이용하여 어떻게 스마트폰과 연결하는지 살펴보도록 하겠다.

▲Arduino UNO

▲Arduino Mega2650


 

ARDUINO


아두이노 보드는 현재 전 세계에서 가장 널리 사용되고 있는 오픈 소스 기반의 플랫폼이다. 여기서 오픈 소스의 의미는 소프트웨어의 오픈 소스뿐만 아니라 개발 툴, 하드웨어에 대한 개발 정보까지 오픈 소스로 공개되어 있다는 것이다.
하드웨어적, 소프트웨어적 전문지식 없이도 누구나 쉽게 배우고 사용할 수 있도록 개발되었다. 이미 전 세계적으로 수많은 아티스트, 디자이너, 그리고 초보 개발자, 학생 등 다양한 사람들에게 널리 보급되어 사용되고 있다.
아두이노 보드는 간단한 I/O(입력 출력) 보드와 쉬운 언어를 이용한 개발 환경을 기반으로 하고 있다. 컴퓨터나 다른 기기와 연결되지 않고서도 독립적으로 작동하도록 구성되었다. 현재 맥 OS X, 윈도우, 리눅스 버전으로 준비되어 있는 오픈 소스 기반의 통합 개발 환경을 통해 무료로 다운로드 받아 사용할 수 있다(www.arduino.cc).


아두이노 하드웨어


▲Arduino Nano


아두이노의 하드웨어 모델은 기본적으로 3가지 모델이 나왔고, 기본 구조를 변형하여 다양한 형태의 하드웨어로 재탄생되고 있다. USB 포트와 전원, 그리고 외부 센서나 기기에 연결할 수 있는 제어 포트들로 이루어진 마이크로프로세서 보드 형태이다. 다만 추가 장치나 모양, 크기에 따라 여러 형태의 하드웨어가 존재할 수 있으나 그 근본적인 구조는 동일하다고 하겠다.


▲Arduino의 다양한 활용


▲아두이노로 구현한 세그웨이


필자가 학교에 다니던 2000년대 초 ‘마이크로 마우스 경진 대회’가 이슈가 되었고, 이때 사용했던 마이크로프로세서는 PIC나 AVR이라는 이름의 마이크로 프로세서였다. 하지만 마이크로프로세서를 제어한다는 것은 일반인이 접근하기 힘든 영역에 속했다. 하지만 아두이노의 경우 마이크로프로세서를 이용하여 프로그래밍 하는 것을 일반인이 쉽게 접근할 수 있도록 제공하고 있다.
필자와 같이 10년 이상의 임베디드 시스템을 개발한 임베디드 소프트웨어 개발자에게도 PIC나 AVR과 같은 마이크로프로세서를 다루는 일은 결코 쉽지 않은 일이다. 또한 개발을 위해 준비해야 할 작업을 ‘개발 툴을 설치하고’, ‘개발 툴을 익히고’, ‘프로세서에 적합한 기능으로 프로그램을 구현하고’, ‘프로세서에 작성한 프로그램을 다운로드’ 하는 일은 결코 간단한 작업이 아니다.
이러한 어려움을 극복하기 위해 나온 것이 아두이노 프로젝트이다. 아두이노의 장점을 살펴본다면 다음과 같다.

■공개된 하드웨어 플랫폼 = 누구나 하드웨어 설계의 수정 혹은 변경이 가능하다.
■또한 검증된 하드웨어 플랫폼 = 오랜 시간 하드웨어 및 소프트웨어에 대한 검증 작업이 이루어졌다.
■통합 환경 = 윈도우/리눅스/맥 OS X 환경에 이르기까지 다양한 환경에서 동작하는 개발 환경을 사용할 수 있다.
■이해하기 쉽고 프로그래밍 하기 쉬운 언어 구조 = 하드웨어 제어를 C언어와 유사한 언어를 통해 쉽게 제어할 수 있다. 이러한 장점은 엔지니어나 개발자가 아닌 일반인, 심지어 초중고생까지 쉽게 접근할 수 있다는 장점이 있다.
■개발자 및 리소스 = 개발자 및 개발에 관련된 정보가 풍부하다. 따라서 많은 리소스가 있다. 개인 및 회사에서 진행하는 다양한 프로젝트로 활용되는 것을 볼 수 있다.
■다양한 하드웨어 기능 지원 = 단순히 키나 LED를 동작시키는 것뿐만 아니라 모터, 센서, 바코드 리더기와 같은 다양한 장치를 연결할 수 있고, 이더넷과 같은 네트워크 기능도 제공하고 있다.


그림 1. 아두이노의 개발 환경 파일들


▲도어락


■소프트웨어의 다양성 = 현재 아두이노는 플랫폼 하드웨어 다양성뿐만 아니라 소프트웨어적인 기능도 다양해지고 있다. 간단한 제어부터 복잡한 웹 서버 기능까지 제공하고 있다. 이러한 소프트웨어 기능의 다양성 때문에 활용의 범위도 점점 넓어지고 있는 추세다.


매니아·개발자를 위한 아두이노


그림 2. Arduino 프로그램 예제 선택 화면


미국의 MAKE 잡지와 같은 DIY(Do It Yourself) 잡지들에는 아두이노를 이용한 프로젝트가 종종 소개 되는 것을 볼 수 있다. 개인적인 취미 활동으로 하드웨어를 만들고, 납땜을 하여 부품을 연결하는 것에 즐거움을 느끼는 해커 취향의 매니아가 의외로 많다는 것에 놀라게 된다.
아두이노 보드를 이용하여 개인용 수치 제어 머신(CNC)나 3차원 프린터를 만들고, 모형 항공기의 제어 컴퓨터로 사용하고 있다. 개발자뿐만 아니라 음악가나 행위 예술가를 위한 예술의 도구로 사용되는 것을 볼 수 있다. 사실 활용의 일부 예를 드는 것이며 활용 범위는 무궁무진할 것이다.


아두이노 소프트웨어


리스트 1. 아두이노LED 제어 프로그램 예제


아두이노의 개발 환경은 그림 1과 같이 특별히 설치하는 형태가 아니라 다운로드 받아서 압축을 풀면 바로 실행시켜서 사용할 수 있는 형태로 구성되었다. 따라서 USB 메모리와 같은 저장 장치에 가지고 다녀도 되니 매우 가벼운 개발 환경이라고 하겠다.


아두이노 프로그래밍


▲아두이노 보드 선택 화면


리스트 2. 버튼의 상태를 판단하는 프로그램 예제


아두이노의 프로그래밍 작업은 통합 개발 환경에서 프로그램을 작성하여 USB를 통해 아두이노 보드에 다운로드 하는 형태로 이루어진다. USB 포트는 PC에서 시리얼 포트로 인식되어 프로그램 다운로드뿐만 아니라 동작 중 필요한 정보를 출력해주는 디버깅 창의 역할도 하게 된다.

•‌아두이노 보드 및 USB 케이블 준비
•‌아두이노 개발 환경 다운로드 및 설치(http://arduino.cc/en/Main/Software 사이트를 통해 다운로드 및 설치)
•‌보드와 PC를 USB 케이블을 통해 연결
•‌드라이버 설치: USB 포트를 시리얼 포트로 애뮬레이션 하는 아두이노 전용 드라이버를 설치하게 된다.
•‌아두이노 개발 환경 실행
•‌예제나 프로그램 작성

그림 2처럼 아두이노 통합 개발 환경에는 쉽게 개발 방법을 익힐 수 있도록 여러 예제를 선택하여 테스트 해 볼 수 있도록 소스를 제공하고 있다.

•‌보드 및 시리얼 포트 선택: 아두이노 통합 개발 환경에서는 여러 종류의 아두이노 보드를 지원할 수 있도록 구성되었다. 따라서 구입한 보드에 맞게 보드의 종류 및 이름을 선택해야 정상적으로 작성한 프로그램이 동작한다.
•‌프로그램 업로드: USB 포트를 통해 프로그램을 보드에 업로드하고 동작하게 만든다.


프로그래밍


그림 3. 아두이노 보드에 LED를 연결한 화면


그림 4. 아두이노 보드에 WiFi 장치를 연결한 모습


아두이노 보드에 LED와 같은 하드웨어를 연결하고 LED의 깜박이는 동작을 프로그래밍해 보는 것은 C/C++과 같은 언어에 대한 지식만 있다면 쉽게 따라해 볼 수 있다. 그럼 아두이노 보드에 LED를 연결하고 어떻게 프로그래밍하는지 살펴보자.
그림 3은 아두이노 보드에 LED를 실제로 연결하는 방법을 설명한 것이다. 이와 같이 아두이노는 손쉽게 하드웨어 부품을 연결하고 테스트 할 수 있는 구조로 하드웨어가 설계가 되었다. 이 연결한 LED를 프로그래밍 하는 방법은 리스트 1과 같다.

WiFi 연결
그림 4는 아두이노 메가 보드에 WiFi 연결 기능을 제공하는 WiFi 쉴드를 장착한 모습이다. WiFi 쉴드는 아두이노 보드에서 인터넷 연결 기능을 제공하며, 본 기능을 사용해서 스마트폰과 통신하는 기능을 구현할 수 있다. 스마트폰과 연결 방법은 ▲스마트폰과 직접 연결 ▲스마트폰과 인터넷 서비스를 통한 간접 연결 등을 고려할 수 있다.
스마트폰과 직접 연결하는 방식은 WiFi 다이렉트를 사용하거나 아두이노 보드에서 서버를 구현하고, 스마트폰에서 클라이언트 형태로 접속하는 방식을 사용한다. 하지만 이 경우 확장성 및 한계가 많기 때문에 인터넷 서비스를 통한 간접 연결 방식을 구현하여 스마트폰과 연결하는 방식에 대해 살펴보자. 연결에 대한 구체적인 내용은 다음과 같다.


  

그림 5. REST API를 통한 아두이노와 서버의 통신 방식



•아두이노 보드는 WiFi 쉴드를 통해 인터넷과 접속
•인터넷 서버는 구글 앱 엔진이나 웹 서버를 통해 구현
•아두이노 보드는 REST 형식의 API를 통해 서버와 통신
• ‌스마트폰은 REST 형식의 API를 통해 서버와 통신, 그리고 서버는 아두이노 보드와 통신을 하게 된다. 다소 복잡한 모습이지만 향후 확장성 및 다양한 기능을 위해 접근한 방법이다.
리스트 3은 아두이노와 WiFi 쉴드를 이용한 인터넷 연결 프로그램의 예다. 아두이노에서는 WiFi 연결에 관한 프로그램을 간단하게 작성할 수 있으며, 이 기능을 이용해 서버에 접속하는 기능을 구현하게 된다.

 

REST API


리스트 3. WiFi 쉴드를 이용한 인터넷 연결 프로그램


리스트 4. 아두이노에서 REST API를 사용한 정보 전달 소스


REST(Representational State Transfer) API 혹은 RESTful API는 웹 서비스 업체들이 자사의 서비스를 Open API 형태로 발표하면서 유행하게 된 통신 방식이다. 구현과 확장이 유연하다는 장점이 있다. 또한 아두이노에서도 복잡한 프로그램이 필요 없이 API 호출이 자유롭기 때문에 REST API 형태로 서버를 구현하고 스마트폰과 통신하는 형태를 많이 구현한다.
그림 5는 REST API의 예를 보여준다. REST API는 http 프로토콜을 사용하고, 명령과 인자 전달에 있어 XML과 같은 형태로 관리할 수 있기 때문에 쉬운 접근 방법을 제공한다. 리스트 4는 아두이노에서 REST API를 사용하여 서버와 통신하는 예제이다. 복잡한 코드 구성없이 서버와 통신하는 것을 보여준다.
서버에 전달된 정보는 서버에 기록되며, 마찬가지로 스마트폰에서는 본 서버와 동일한 REST API를 통해 서버와 접속하고 아두이노 보드를 제어하게 된다.


그림 6. 구글 앱 엔진에 파이선을 이용하여 구현한 서버


그림 7. 아두이노 보드의 로깅 그래프


스마트폰 연결 서버
스마트폰 연결 서버는 웹 서버, 데이터베이스 등을 구현한 독자적인 서버를 구현할 수도 있지만 매우 간단하게 구현할 수 있는 방법도 있다. 그 방법은 구글의 앱 엔진을 사용하는 방법이다. 구글 앱 엔진을 사용하면 간단한 서버의 경우에는 파이선과 같은 언어로 쉽게 구현할 수 있기 때문에 개발 초기에는 좋은 접근 방법이다. 그림 6은 파이선 언어를 사용해 서버를 구현한 소스의 일부분이다.
그림 7은 구글 앱 엔진을 통해 전달된 정보를 로깅하고 그래프로 보여준 화면이고, 그림 8은 스마트폰에서 아두이노 보드의 정보를 읽고 제어하는 그림이다. 물론 서버에 기록되어 있는 정보를 확인하고 필요한 명령은 서버를 통해 아두이도 보드로 전달하게 된다.


그림 8. 스마트폰과 아두이노 보드와 연결 그림


지금까지 WiFi 방식을 사용하여 스마트폰과 아두이노 보드와의 연결 방법에 대해 살펴봤다. 다소 복잡해 보이지만 WiFi 연결 방식은 많은 장점을 제공한다. 향후 스마트폰과 연결 방식이 이러한 방식으로 되지 않을까 조심스럽게 예측한다. 아직까지는 이렇게 모든 장치를 구성하기에는 너무 많은 비용이 들기 때문이다. 하지만 조만간 모든 장치에서 WiFi 연결 기능이 탑재되고 각 장치마다 IP가 할당되는 시기가 올 것이다. 그때에는 IP를 통한 통신 방법이 표준으로 자리 잡을 것이다. 다음 연재에서는 본 연재의 핵심인 블루투스를 이용한 통신 방법에 대해 본격적으로 살펴보고 구현해 보도록 하겠다. 


라영호  대표(주식회사 테뷸라)









배너










주요파트너/추천기업