안녕하세요! SW Maestro 서포터즈입니다. 우리의 일상에서 많이 사용되고 있는 사물 인터넷!
그 사물인터넷을 누구나 쉽게 개발할 수 있는 플랫폼을 SW Maestro의 팀 중 한 팀이 만들었다고 하는데요.
바로 그 주인공! “SW Maestro 7기 모두의 임베디드 팀의 Block-Bee”에 대해 소개하려고 합니다.
한정민 팀장을 필두로 이호연, 이상준 팀원이 함께 개발에 참여했습니다.
IOT를 아주 쉽게 만들 수 있는 Block-Bee, 과연 이속에 어떤 기술이 들어가 있는지 알아볼까요?
Block-Bee에 들어가는 기술은 크게 세 부분으로 나누어져 있습니다.
직접 조립할 수 있는 Sensor Module과 통신을 담당하는 Node 그리고 Sensor Module을 하나로 통제하는 Local Hub
마지막으로 Local Hub와 통신을 하는 API Server 이렇게 세 부분입니다.
그럼 각 부분에 대해 자세히 살펴보죠.
1) Sensor Module 과 Node
기존의 개발자들이 많이 사용하는 Arduino와 차이점을 두기 위해 리드 선을 사용하지 않고 Po Go Pin과 자석을 이용하여 H/W를 설계했다고 합니다.
<기존 제품과 Block-Bee 비교>
PoGo Pin은 리드 선과 같이 전류나 신호를 전달하는 역할은 같지만, 부피가 작고 연결하기가 쉽습니다.
여기서 자석과 함께 적용되면서 사용자가 편하게 Sensor Module을 Node에 부착할 수 있게 되는 거죠.
그리고 Node와 Sensor Module을 완벽히 구분하여 서로의 역할을 분명히 나누게 됩니다.
이렇게 진행한 이유는 동작하는 과정을 사용자가 명확히 이해하는 것을 돕고, Node들이 각 Sensor Module을 관리하기 위해서입니다.
이러한 역할 분담에 따라 어떤 Sensor Module이 부착되어 있는지 쉽게 확인이 가능합니다.
또한, 각 Sensor Module은 Node로부터 전원을 공급받아 사용하므로 제품 관리에 있어서 편의성을 가지게 됩니다.
Block-Bee 팀은 Sensor Module과 Node를 직접 만들면서 이런 H/W들이 물리적으로 제공되는 UI라 보고
사용자의 편의성을 많이 생각하면서 설계를 했다고 하였습니다. 실제로 H/W를 보니 그 진심이 느껴졌습니다.
2) Local Hub
Node들이 Hub와 통신하는데 거리라는 제약 조건이 있습니다.
이 부분을 해결하기 위해 Block-Bee 팀은 새로운 네트워크 환경을 개발하였습니다.
사용자가 자신이 원하는 위치에 Node를 위치시켜 놓으면, Hub는 자신이 연결 가능한 Node들을 검색하게 되고,
다시 이 Node들이 연결 가능한 Node들을 검색하도록 명령합니다.
이런 과정을 통해, 수집한 모든 연결 가능성을 Dijkstra's Algorithm을 사용하여 최적의 경로를 찾습니다.
이에 대한 가중치 값은 각 Node들 사이의 RSSI(Received Signal Strength Indication) 수치를 이용하여 계산합니다.
이렇게 네트워크가 구성되면, 각 Node와 Sensor Module에 대한 ID가 부여되고, 이는 사용자가 웹에서 소스 코드를 만들 때 이용하게 됩니다.
만약 동일한 거리에 다른 Sensor Module이 존재한다면 사용자는 이 ID 값 변경을 통해 다른 Sensor Module을 사용할 수 있게 구성되어 있습니다.
IOT를 아주 쉽게 만들 수 있는 Block-Bee, 과연 이속에 어떤 기술이 들어가 있는지 알아볼까요?
Block-Bee에 들어가는 기술은 크게 세 부분으로 나누어져 있습니다. 직접 조립할 수 있는 Sensor Module과 통신을 담당하는 Node 그리고 Sensor Module을 하나로 통제하는 Local Hub, 마지막으로 Local Hub와 통신을 하는 API Server 이렇게 세 부분입니다.
그럼 각 부분에 대해 자세히 살펴보죠. 1) Sensor Module 과 Node 기존의 개발자들이 많이 사용하는 Arduino와 차이점을 두기 위해 리드 선을 사용하지 않고 Po Go Pin과 자석을 이용하여 H/W를 설계했다고 합니다. PoGo Pin은 리드 선과 같이 전류나 신호를 전달하는 역할은 같지만, 부피가 작고 연결하기가 쉽습니다. 여기서 자석과 함께 적용되면서 사용자가 편하게 Sensor Module을 Node에 부착할 수 있게 되는 거죠. 그리고 Node와 Sensor Module을 완벽히 구분하여 서로의 역할을 분명히 나누게 됩니다. 이렇게 진행한 이유는 동작하는 과정을 사용자가 명확히 이해하는 것을 돕고, Node들이 각 Sensor Module을 관리하기 위해서입니다. 이러한 역할 분담에 따라 어떤 Sensor Module이 부착되어 있는지 쉽게 확인이 가능합니다. 또한, 각 Sensor Module은 Node로부터 전원을 공급받아 사용하므로 제품 관리에 있어서 편의성을 가지게 됩니다.
Block-Bee 팀은 Sensor Module과 Node를 직접 만들면서 이런 H/W들이 물리적으로 제공되는 UI라 보고 사용자의 편의성을 많이 생각하면서 설계를 했다고 하였습니다. 실제로 H/W를 보니 그 진심이 느껴졌습니다.
2) Local Hub
Node들이 Hub와 통신하는데 거리라는 제약 조건이 있습니다. 이 부분을 해결하기 위해 Block-Bee 팀은 새로운 네트워크 환경을 개발하였습니다. 사용자가 자신이 원하는 위치에 Node를 위치시켜 놓으면, Hub는 자신이 연결 가능한 Node들을 검색하게 되고, 다시 이 Node들이 연결 가능한 Node들을 검색하도록 명령합니다. 이런 과정을 통해, 수집한 모든 연결 가능성을 Dijkstra's Algorithm을 사용하여 최적의 경로를 찾습니다. 이에 대한 가중치 값은 각 Node들 사이의 RSSI(Received Signal Strength Indication) 수치를 이용하여 계산합니다.
이렇게 네트워크가 구성되면, 각 Node와 Sensor Module에 대한 ID가 부여되고, 이는 사용자가 웹에서 소스 코드를 만들 때 이용하게 됩니다. 만약 동일한 거리에 다른 Sensor Module이 존재한다면 사용자는 이 ID 값 변경을 통해 다른 Sensor Module을 사용할 수 있게 구성되어 있습니다.
3) Web Server Web Server에서는 사용자가 블록을 이용하여 프로그래밍을 하게 되는데요. 여기서 Block-Bee 팀은 오픈소스인 blocky를 활용하여 사용자들이 이용하는 블록들 자체적으로 개발하였다고 합니다. |
사용자가 만든 로직 블록들을 python 언어로 변환시키고 API 서버로 전송하여 이 코드를 바탕으로 app을 만들게 되는 구성이죠.
그렇게 완성된 app은 mqtt를 통해 hub로 보내지는데 app manager을 따로 개발하여 각 app을 프로세스화하고 실행시켜 관리합니다.
web에서 사용자가 사용하는 자세한 데모 영상을 준비했으니 한번 보고 가시죠~
Block-Bee 제품은 web을 통해 세 가지 기능을 제공합니다.
1. 기존 스크래치와 같이 블록을 drag-and-drop 하는 방식으로 프로그래밍을 할 수 있으며 블록 프로그래밍한 코드에 대해서 Python으로 변환된 Code를 우측 화면으로 바로 확인할 수 있습니다. (~1분 03초까지)
2. Make를 통해 제작한 프로젝트는 App 단위로 관리할 수 있습니다. (~1분 17초까지)
3. App은 사용할 Sensor와 Node를 결정 후 App을 On 함으로써 동작 시킬 수 있습니다.
동작된 이후에는 설정한 Sensor 들에 대해서 데이터를 확인하는 동시에 제어가 가능합니다. (~1분 35초까지)
마지막으로 App의 동작 결과들을 Log를 통해 확인할 수 있고 Node들의 실제 Network를 확인할 수 있습니다
모두의 임베디드를 만들기 위한 moem 팀의 Block-Bee에는 정말 다양한 기술들이 들어가 있었습니다.
그리고 사용자들의 편의를 위한 많은 노력이 보이는 팀이었습니다.
지금까지 “SW Maestro 서포터즈 이승빈” 이였습니다. 감사합니다!