닫기

기획특집

오픈 하드웨어 플랫폼, 블루투스, IoT 제어 기술 동향

  • 등록 2015.10.08 11:10:56
URL복사

하드웨어 개발을 통해 제품을 개발하고 생산하는 일은 전문가 집단 및 전문 업체의 중요한 작업이며 경쟁력이었다. 하지만 오픈 소스 하드웨어 기술 및 블루투스 기술이 전반적인 제어 및 관련 산업의 흐름을 바꾸어 놓고 있다. 이 글에서는 이러한 흐름 및 기술 동향을 살펴본다.


아두이노


아두이노 보드는 현재 전 세계에서 가장 널리 사용되고 있는 오픈소스 기반 플랫폼이다. 여기서 오픈소스라는 의미는 소프트웨어적으로 오픈소스라는 것뿐 아니라 개발 툴과 하드웨어에 대한 개발 정보까지 오픈소스로 공개돼 있음을 말한다.


그래서 하드웨어적으로나 소프트웨어적인 전문적인 지식이 없어도 누구나 쉽게 배우고 사용할 수 있도록 개발됐다. 이미 전 세계적으로 수많은 아티스트, 디자이너, 초보 개발자, 학생들 및 다양한 사람들에게 널리 보급돼 사용되고 있다.


아두이노 보드는 간단한 입출력 보드와 쉬운 언어를 이용한 개발 환경에 기반을 두고 있다. 또한 컴퓨터나 다른 기기와 연결되지 않고 독립적으로 작동하도록 구성됐다. 현재 맥 OS X, 윈도우, 리눅스 버전으로 오픈소스 기반 통합 개발 환경을 제공하는데, 아두이노 웹사이트(www.arduino.cc)에서 무료로 다운로드해 사용할 수 있다.


그림 1. Arduino UNO



 그림 2. Arduino Nano


아두이노 하드웨어


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


그림 3. Arduino Mega2650


필자가 학교에 다니던 2000년대 초 마이크로 마우스 경진 대회가 주목을 받았는데, 이때 사용했던 마이크로프로세서는 PIC나 AVR이었다. 필자와 같이 10년 이상의 임베디드 시스템을 개발한 임베디드 소프트웨어 개발자도 PIC나 AVR과 같은 마이크로프로세서를 다루는 일은 결코 쉽지 않은 일이다. 


또한 개발을 위해 준비해야 할 작업들, 개발 툴을 설치하고, 개발 툴의 기능들을 익히고, 프로세서에 적합한 기능으로 프로그램을 구현하고, 프로세서에 작성한 프로그램을 다운로드하는 일은 결코 간단한 작업이 아니다. 그래서 이런 마이크로프로세서를 제어한다는 것은 일반인이 접근하기 힘든 영역에 속했다. 


이러한 어려움을 극복하기 위해 나온 것이 아두이노 프로젝트이다. 아두이노는 마이크로프로세서를 이용해 프로그래밍을 하는 것이 일반인들도 쉽게 접근할 수 있도록 제공하고 있다. 아두이노의 장점을 살펴본다면 다음과 같다.


•‌공개된 하드웨어 플랫폼 : 누구나 하드웨어 설계의 수정 혹은 변경이 가능하다.


•‌검증된 하드웨어 플랫폼 : 오랜 시간 하드웨어 및 소프트웨어에 대한 검증 작업이 이뤄졌다.


•‌통합 환경 : 윈도우, 리눅스, 맥 OS X 환경에 이르기까지 다양한 환경에서 동작하는 개발 환경을 사용할 수 있다.


•‌이해하기 쉽고 프로그래밍하기 쉬운 언어 구조 : 하드웨어 제어를 C 언어와 유사한 언어로 쉽게 제어할 수 있다. 이러한 장점은 엔지니어나 개발자가 아닌 일반인과 심지어 초중고생까지 쉽게 접근할 수 있다.


•‌개발자 및 리소스 : 개발자 및 개발에 관련된 정보가 풍부하다. 따라서 많은 리소스가 있다. 개인 및 회사에서 진행하는 다양한 프로젝트로 활용되는 것을 볼 수 있다.


•‌다양한 하드웨어 기능 지원 : 단순히 키나 LED를 동작시키는 것뿐 아니라 모터, 센서, 바코드 리더와 같은 다양한 장치를 연결할 수 있고, 이더넷과 같은 네트워크 기능도 제공한다.


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


그림 4. 아두이노의 다양한 활용



그림 5. 아두이노로 구현한 세그웨이



마니아를 위한 혹은 개발자를 위한 아두이노


미국 잡지인 <MAKE>와 같은 DIY(Do It Yourself) 잡지들에서 아두이노를 이용한 프로젝트가 종종 소개되고 있다. 개인적인 취미 활동으로 하드웨어 만들고 부품을 납땜해 연결하는 것에 즐거움을 느끼는 해커 취향의 마니아가 의외로 많다는 것에 놀라게 된다. 


아두이노 보드를 이용해 개인용 수치 제어 머신(CNC)나 3차원 프린터를 만들고, 모형 항공기의 제어 컴퓨터로 사용하고 있다. 또한 개발자뿐 아니라 음악가나 행위 예술가를 위한 예술의 도구로도 쓰이는 경우가 있다. 사실 지금 언급한 것은 활용의 일부 예를 든 것이며 활용 범위는 무궁무진하다.


아두이노 소프트웨어


아두이노의 개발 환경은 <그림 6>과 같이 특별히 설치하는 형태가 아니라 다운로드해 압축을 풀면 바로 실행시켜서 사용할 수 있다. 따라서 USB 메모리와 같은 저장장치에 가지고 다녀도 되니 매우 가벼운 개발 환경이라고 말할 수 있다. 아두이노라고 보이는 실행파일을 선택하면 곧바로 개발을 시작할 수 있다.


그림6. 아두이노로 구현한 도어락



아두이노 프로그래밍


아두이노 프로그래밍은 통합 개발 환경에서 프로그램을 작성해 USB로 아두이노 보드에 다운로드하는 형태로 이뤄진다. USB 포트는 PC에서 시리얼 포트로 인식돼 프로그램 다운로드뿐 아니라 동작 중 필요한 정보를 출력해주는 디버깅 창 역할도 한다. 아두이노 프로그래밍을 단계적으로 살펴보면 다음과 같다. 


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


<그림 8>처럼 아두이노 통합 개발 환경에는 쉽게 개발 방법을 익힐 수 있도록 다양한 예제를 선택해 테스트할 수 있도록 소스가 제공된다.


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


그림 8. 아두이노 프로그램 예제 선택 화면

그림 9. 아두이노 보드 선택 화면  


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


•‌프로그램 업로드 : USB 포트를 통해 프로그램을 보드에 업로드 하고 동작하게 만든다.


와이파이 연결


<그림 10>은 아두이노 메가 보드에 와이파이 연결 기능을 제공하는 와이파이 쉴드를 장착한 모습이다. 와이파이 쉴드는 아두이노 보드에서 인터넷 연결 기능을 제공하며, 이 기능을 사용해 스마트폰과 통신하는 기능을 구현할 수 있다. 스마트폰과 연결하는 방법에는 다음 2가지가 있다.


그림 10. 아두이노 보드에 와이파이 장치를 연결한 모습


•‌스마트폰과 직접 연결


•‌스마트폰과 인터넷 서비스를 통한 간접 연결


스마트폰과 직접 연결 방식은 와이파이 다이렉트를 사용하거나 아두이노 보드에서 서버를 구현하고 스마트폰에서 클라이언트 형태로 접속하는 방식을 사용한다. 하지만 이 경우 확장성 및 한계가 많기 때문에 인터넷 서비스를 통한 간접 연결 방식을 구현해 스마트폰과 연결하는 방식을 살펴보겠다. 연결에 대한 구체적인 내용은 다음과 같다.


•‌아두이노 보드는 와이파이 쉴드를 이용해 인터넷과 접속


•‌인터넷 서버는 구글 앱 엔진이나 웹서버를 통해 구현


•‌아두이노 보드는 REST(Representational State Transfer) 형식의 API를 통해 서버와 통신


•‌스마트폰은 REST 형식의 API를 통해 서버와 통신하고, 서버는 아두이노 보드와 통신. 다소 복잡한 모습이지만 향후 확장성 및 다양한 기능을 위해 접근한 방법이다.
 
REST API


REST API 혹은 RESTful API는 웹서비스 업체들이 자사의 서비스를 Open API 형태로 발표하면서 유행하게 된 통신 방식으로, 구현과 확장이 유연하다는 장점이 있다. 아두이노에서도 복잡한 프로그램이 없이 API 호출이 자유롭기 때문에 REST API 형태로 서버를 구현하고 스마트폰과 통신하는 형태를 많이 선택한다.


<그림 11>은 REST API의 예를 보여주고 있다. REST API는 http 프로토콜을 사용하고 명령과 인자 전달에 있어 XML과 같은 형태로 관리할 수 있기 때문에 접근 방법이 쉽다.


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


<리스트 1>은 아두이노에서 REST API를 사용해 서버와 통신하는 예제다. 복잡한 코드 구성없이 서버와 통신한다는 것을 알 수 있다.


그림 11. 삼성 artik 플랫폼



서버에 전달된 정보는 <그림 11>과 같이 서버에 기록되며, 마찬가지로 스마트폰에서는 본 서버와 동일한 REST API를 통해 서버와 접속하고 아두이노 보드를 제어하게 된다.


아두이노와 같은 오픈 하드웨어 플랫폼의 등장


아두이노 플랫폼은 하드웨어 동작 성능이 높지 않기 때문에 실제 업무에 적용하기 위해서는 무리가 있다. 하지만 고성능의 프로세서를 기반으로 한 오픈소스 플랫품이 등작하고 있고 상업적으로 적용 가능한 형태로 변화하고 있다. 대표적인 것인 삼성의 artik(https://www.artik.io/) 플랫폼이나 인텔의 Edison 플랫폼이 오픈 플랫폼에 진출하고 있다.


그림 12. 음식물의 상태를 검사하는 앱세서리



블루투스 4.0과 변화


아이폰에서 블루투스 4.0의 변화는 단순히 블루투스 버전의 변화만 의미하지는 않는다. 하드웨어 및 소프트웨어적인 변화를 이끌고 있다. 하드웨어적인 측면은 스마트폰과 연동되는 저렴한 장치를 만들 수 있게 되었고 이 장치를 통해 앱세서리(Appcessory)라는 새로운 시장이 형성되었다는 것이다.


그림 13. 각종 환경을 모니터링 하는 앱세서리



아이폰 블루투스 프로그래밍 


아이폰 블루투스 프로그래밍은 아이폰에 탑재된 프로파일 분석을 통해 어떠한 식으로 접근해 나가야 하는지 살펴볼 수 있다.


HFP(핸즈프리 프로파일) 1.6
핸즈프리 프로파일은 블루투스 헤드셋 및 차량용 핸즈프리 키트를 이용하여 휴대 전화로 통신할 수 있도록 해 준다.


PBAP(전화번호부 액세스 프로파일)

전화번호부 액세스 프로파일은 아이폰과 다른 블루투스 장비 사이에 전화번호를 교환할 수 있도록 해 준다. 차량용 키트와 휴대 전화는 프로파일을 사용하여 다음을 수행한다.


•전화를 건 발신자의 이름을 차량용 키트에 표시
•‌사용자가 차량용 디스플레이에서 전화를 걸 수 있도록 차량용 키트에 전화번호부 동기화


A2DP(고급 오디오 배포 프로파일)
고급 오디오 배포 프로파일은 블루투스 연결을 통해 하나의 장비에서 다른 장비로 고품질 오디오(스테레오 또는 모노)를 스트리밍할 수 있도록 해 준다. 이를 사용하여 iOS에서 무선으로 무선 헤드셋 또는 호환되는 카오디오 시스템으로 음악을 재생하도록 한다.


AVRCP 1.4(오디오/비디오 원격 제어 프로파일)
오디오/비디오 원격 제어 프로파일은 iOS 장비의 재생 기능을 원격으로 제어하여 호환되는 장비(보통 A2DP 프로파일을 사용하는 블루투스 장비)에서 사용할 수 있도록 해 줍니다. 최신 버전의 iOS는 일시정지, 재생, 중지, 다음 트랙, 이전 트랙, 탐색과 같은 명령을 지원한다.


PAN(개인 영역 네트워크) 프로파일
개인 영역 네트워크 프로파일은 블루투스를 통한 네트워크 연결을 제공한다. 이는 보통 iOS를 통해 아이폰의 멀티플레이어 게임 및 개인용 핫스팟에서 사용된다.


HID(휴먼 인터페이스 장비) 프로파일
휴먼 인터페이스 장비 프로파일은 iOS와 블루투스 키보드 간에 서로 통신할 수 있도록 해 준다.


MAP(메시지 액세스 프로파일)
메시지 액세스 프로파일은 장비에서 메시지를 교환할 수 있도록 해 준다. 이는 대부분 자동 핸즈프리용으로 사용된다.


블루투스 4.1, 4.2



그림 14. 장치별 지원 블루투스 프로파일



블루투스 SIG는 2013년 12월 블루투스 4.1의 새로운 기능을 발표했다. 블루투스 4.1의 주요 특징은 다음과 같다.


•‌공존성(coexistence) 향상 : 블루투스와 LTE 무선이 서로 통신 상태를 조정해 가까운 대역폭으로 인한 간섭 현상을 줄여준다.


•‌더 나은 연결(better connections) : 블루투스 연결 장치끼리의 거리가 증가해 잠시 연결이 끊어지게 되면, 4.1 블루투스 장치는 거리 내로 되돌아올 시 자동으로 재 연결된다.


•‌데이터 전송 개선(improved data transfer) : 블루투스를 사용하는 액세서리 장치(헬스 기구) 등과의 통신 전송 상태를 보다 효율적으로 개선했다.


•‌개발자에게 더 많은 유연성 제공(more flexibility to developers) : 앞으로 있을 웨어러블 기기 붐에 대비한 업데이트로, 블루투스 연결을 통해 웨어러블 기기가 스마트폰의 주변장치이자 동시에 다른 장치와의 허브 역할도 할 수 있게 해준다. 또한 장래를 위해 사물 인터넷(The Internet of Things)을 위한 새로운 IPV6 사용 표준도 들어가 있다.


라영호 _ 테뷸라 대표






주요파트너/추천기업