강좌 전체보기

.

1. 사물 인터넷

인터넷이 폭발적으로 성장하던 90년대 말과 2000년대에는 가상 현실이라는 단어가 자주 사용되었던 기억이 납니다. 분자적, 물리적 구조 위에서 동작하던 서비스와 정보들이 인터넷으로 이식되면서 비트에 기반한 정보 네트워크의 중요성이 커진걸 빗댄 표현이겠죠. 업무의 효율을 위해서는 필기감 좋은 펜보다 터치감 좋은 키보드가 필요한 세상이 됐으니까요.

좋은 펜과 키보드 중 당신의 선택은?

하지만 ‘가상 현실’ 시절의 정보들은 아직 공간에 한정적이었습니다. 고정적인 유선 통신망이 제공되는 사무실이나 집이라는 공간에서만 접속이 가능한 네트워크였기 때문에 아직은 데스크탑-PC의 시대였습니다.

2000년 초반에도 사람들의 주머니엔 휴대폰이란게 있었고, 일부 얼리 어댑터들은 PDA(Personal Digital Assistant, 개인 정보 단말기) 란 기기를 적극 활용하기도 했습니다. 어찌보면 현재의 ‘스마트 폰’ 이란게 그 시절에도 2개의 기기로 나뉘어 존재했었다고 볼 수 있습니다. 다만 우리는 (적어도 저는) ‘이동 통신’과 ‘PDA’ 결합의 의미를 알지 못했고, 그 파장도 예상치 못했을 뿐입니다. 아이폰의 등장 이전까지는 이런 변화가 올바른 방향인가에 대한 확신 또는 공감대가 부족했을 수도 있겠습니다.

15661315_1360968182.jpg

지금은 누구도 모바일의 위력을 과소평가하지 못할겁니다. 수많은 전통의(?) IT 강자들이 몰락하며 그 자리를 신흥 모바일 회사들이 대체하고 있으니까요. ‘이동 통신’ 기술과 ‘모바일 기기’의 결합으로 정보의 물길이 바뀌고 확장된다는 것이 얼마나 큰 의미가 있는지를 지난 10년간 몸소 체험할 수 있었습니다.

근래들어 ‘사물 인터넷'(IoT, Internet of Things) 란 단어가 자주 들리는 것도 이런 맥락에서 이해할 수 있을겁니다. 인터넷 확산과 모바일 혁명처럼 또 한번 정보의 흐름이 변화하길 기대하며 그 속에서 기회를 찾고자 하는 이에게 보이는 아지랭이 속 오아시스. 표현이 조금 시니컬했지만 우린 2000년대 흔히 들어왔던 유비쿼터스(Ubiquitous)의 기억이 있잖습니까. 단어도 생소한 유비쿼터스는 눈 앞의 미래처럼 소개되던 개념이지만 결국 기술적 실체보다는 시대를 풍미한 마케팅 트렌드로 기억되듯 ‘사물 인터넷’이란 단어도 이런 의구심에서 자유로울 순 없을겁니다. 어찌보면 사물 인터넷은 유비쿼터스의 또 다른 이름이며, 사람들이 항상 바래왔던 미래의 ‘실행가능해 보이는’ 조각들인지도 모릅니다.

하지만 사물 인터넷은 ‘모바일’이라는 훌륭한 유산을 상속받았습니다. 스마트 폰 탓에 인터넷은 사람들의 일상에까지 침투해서 정보들을 수집하고 새로운 서비스를 만들어 심어두었습니다. 트렌드에 발맞춰 임베디드 장치들은 더욱 소형화되었고 저전력으로 동작하며, 스마트 폰을 허브로 인터넷 연결 통로도 갖추게 되었습니다. 정보 네트워크는 손바닥이라는 제약을 벗어나 생활 곳곳으로 스며들 준비가 된 것처럼 보입니다.

그리고 이런 변화가 생활 가전에도 적용되기 사작했습니다. 샤오미의 이름으로 나오는 수많은 가전 제품들이 좋은 예가 될 것입니다. 샤오미의 공기 청정기는 모바일 앱을 통해 실내의 공기질을 모니터링해서 알려주고, 모바일 앱으로 언제 어디서나 제어가 가능합니다. 로봇 청소기는 스스로 인지한 실내 지형정보를 서버로 전송하고, 사용자는 모바일 앱을 통해 확인할 수 있습니다. 어느 부분을 세심히 청소할지 설정할 수도 있습니다. 이제 보일러를 모바일 앱으로 제어하는 것은 별로 새로운 것도 아닙니다.

.

2. 사물 인터넷의 4 요소

사물 인터넷은 흥미로운, 그리고 기술적인 주제입니다. 추억의 ‘카오스’ 세탁기처럼 마케팅 트렌드로 사용되거나 개념적인 접근에만 치우치는 면이 있지만 임베디드 장치들 뿐 아니라 저전력 통신 기술, 관련된 오픈소스들의 진화 덕택에 기술적인 기반도 다져지고 있습니다. 마음만 먹으면 직접 사물 인터넷 서비스를 만들고 테스트 해볼 수 있는 여건이 되었습니다.

이 강좌에서 다루고자 하는 내용이 바로 이겁니다. 상업적인 수준의 제품이나 서비스를 제작하기 위한 완성된 기술이나 솔루션보다는, 각자가 생각하는 사물 인터넷의 컨셉을 구현한 프로토타입을 빠르게 제작해서 잠재적 가치를 테스트 해볼 수 있도록 하는겁니다.

이를 위해 강좌에서는 사물 인터넷을 구성하는 요소를 4 가지로 구분하고, 다음과 같은 플랫폼과 언어을 이용해 강좌가 원하는 목표를 구현합니다.

  • 센서장치
    공기 청정기, 로봇 청소기, 보일러 등 전통적인 생활 가전이나 센서장치, 제품을 통칭합니다. 다루는 범위가 방대하고 제품의 종류에 따라 전문적인 구현 기술이 필요하지만 본 강좌에서는 간략하게 구현하기 위해 아두이노 개발환경을 이용합니다. 또한 각 센서장치가 네트워크에 참여할 수 있도록 통신 모듈을 사용하며, 대부분의 경우 ESP32 모듈을 이용할 것입니다. ESP32 모듈의 펌웨어 제작도 아두이노 개발환경에서 C/C++을 이용합니다.
  • 서버
    사물 인터넷 서비스에 참가하는 장치들의 허브인 서버 기능을 구현하기 위해 라즈베리파이와 Node.js 를 사용합니다. 서버 외에 라즈베리파이에서 구동되는 여러 기능들은 Python(v3.x)을 이용해서 구현합니다.
  • 모바일
    안드로이드 플랫폼이 자유도가 더 높기 때문에 안드로이드 플랫폼과 Android Studio(IDE)를 기준으로 강좌를 진행합니다. 대부분의 예제는 Kotlin 언어를 기준으로 작성되었지만, 오래된 라이브러리나 코드를 참조하는 경우 Java를 사용합니다. 아이폰의 경우 동작 방식은 유사하고 플랫폼만 다르기 때문에 해당 기능을 구현한 Swift 코드만 제공됩니다.
  • 네트워크와 통신 프로토콜
    사물 인터넷 네트워크 구성을 위해 통신 프로토콜의 핵심 내용과 특징을 이해해야 합니다. 센서장치, 서버, 모바일 각각의 플랫폼에서 해당 통신을 구현하는 방법과 기본 코드가 제공됩니다.

아무래도 다루는 주제가 ‘사물 인터넷’ 이다보니 물리적인 장치부터 통신, 프로토콜, 서버, 모바일, UI 까지 언급해야 할 기술 범위가 넓을 수 밖에 없습니다. 따라서 본 강좌에서 각각의 플랫폼의 특징이나 프로그래밍 언어의 상세 부분을 다루지는 못합니다.  대신 통신 프로토콜 및 네트워크 기능을 구현하는 방법과 참고할 수 있는 예제 코드를 제공할 것입니다. 이 강좌에 언급되지 못한 플랫폼-프로그래밍 언어의 세부적인 내용들은 인터넷을 통해 더 깊이있게 연구하실 수 있을 겁니다.

.

강좌 관련 안내

주의!!! [사물 인터넷 네트워크와 서비스 구축 강좌] 시리즈 관련 문서들은 무단으로 내용의 일부 또는 전체를 게시하여서는 안됩니다. 계속 내용이 업데이트 되는 문서이며, 문서에 인용된 자료의 경우 원작자의 라이센스 문제가 있을 수 있습니다.

.

강좌 전체보기