본 발명은 상기한 문제점을 해결하기 위해 제안된 것으로, 무선 센서 네트워크(WSN)에서 특정 센서 노드 하드웨어 플랫폼에 의존적인 특성이나 제공되는 라이브러리(OS)의 세부 사항에 대하여 잘 알지 못해도 빠르고 쉽게 사용자의 센서 노드 플랫폼에 맞는 센서 네트워크용 응용 프로그램의 프로토타입을 개발할 수 있는, 실행 가능한 센서 네트워크 프로토타입 자동 생성 방법을 제공하는데 그 목적이 있다.
본 발명의 목적을 달성하기 위하여, 본 발명은 실행 가능한 센서 네트워크 프로토타입 자동 생성 방법으로서, (a) 센서 네트워크 응용 분야별 노드 간 패킷 정의 단계; (b) 센서 노드의 OS에서 지원하는 하드웨어 모듈의 종류를 선택하는 센서 노드 속성 지정 단계; (c) 센서 네트워크를 구성하는 각 센서 노드별로 응용 소프트웨어에서 동작할 하나 이상의 쓰레드의 행위를 모델링하여 실행 코드를 생성하는 센서 노드별 행위 모델링 단계; 및 (d) 상기 실행 코드를 컴파일하여 실행 가능 한 센서 노드의 프로토타입 자동 생성 단계를 포함한다.
상기 단계 (a)는, 상기 센서 네트워크 응용 분야별 센서 노드와 싱크 노드간 전송되는 패킷의 종류 및 데이터와 메시지 전송 순서, 센서 네트워크 통신 채널, PAN ID를 정의하고, 사용자가 작성한 패킷 전송 모델을 센서 네트워크 응용 분야별 패킷 전송 패턴 데이타베이스로 저장하는 것을 특징으로 한다.
상기 단계 (a)에서 센서 노드와 싱크 노드간 전송되는 패킷의 종류는 센서 정보(SENSOR_INFO), 센서 데이터(SENSOR_DATA), 및 배터리 데이터(BATTERY_DATA)를 포함하고, 상기 센서 정보는 센서 노드 ID와 센서 타입을 포함한다.
상기 센서 데이터는, 센서 노드 ID 및 센싱 값을 포함하는 것을 특징으로 한다.
상기 배터리 데이터는, 센서 노드 ID와 배터리 값을 포함하는 것을 특징으로 한다.
상기 단계 (b)는, 상기 센서 노드의 OS에서 지원하는 하드웨어 독립적 모듈과 하드웨어 종속적 모듈에서 사용하고자 하는 모듈의 종류를 선택하는 것을 특징으로 한다.
상기 하드웨어 플랫폼 독립적 모듈은, 라우팅 모듈, MAC 통신 모듈, 태스크 스케쥴링 모듈, 세마포어 모듈, 메시지 큐 모듈, 보안 모듈, 저전력 지원 모듈, 및 DB 지원 모듈 중 하나 이상의 모듈을 포함하는 것을 특징으로 한다.
상기 하드웨어 플랫폼 종속적 모듈은, 센서 드라이버 모듈, UART 모듈, LED 모듈, EEPROM 모듈, 배터리 모듈, LCD 드라이버 모듈, 및 RF 드라이버 모듈 중 하 나 이상의 모듈을 포함하는 것을 특징으로 한다.
상기 단계 (c)는, 쓰레드 ID, 우선순위, 반복주기를 정의하여 쓰레드의 행위 모델링을 그래피컬하게 제공하도록 행위 모델(Statechart) 다이어그램을 사용하는 것을 특징으로 한다.
상기 단계 (d)는, 생성된 실행 코드들을 함께 컴파일하여 실제 센서 노드상에 탑재되거나, 행위 모델(Statechart)과 연계되어 개별 센서 노드 또는 센서 노드간의 동작을 시뮬레이션 하는데 사용하는 것을 특징으로 한다.
이상에서 설명한 바와 같이, 사용자가 센서 네트워크 응용마다 달라질 수 있는 사항, 센서 노드의 하드웨어 플랫폼마다 달라질 수 있는 항목들을 상위 레벨에서 설정하고, 그래픽한 모델을 이용하여 이해하기 쉬운 형태로 센서 노드의 동작을 명세하면 하드웨어 플랫폼에 맞는 실행 가능한 코드를 생성하는 방법을 정의하였다.
또한, 사용자가 설정한 센서 노드의 하드웨어 종류 및 필요 기능에 따라 쉽게 재구성되는 센서 네트워크 OS의 구조와 센서 네트워크 응용 소프트웨어 프로토타입 생성 과정과 연계시켜 실행 가능한 코드를 생성하는 효과가 있다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명 한다.
도 1은 본 발명에 따른 실행 가능한 센서 네트워크 프로토타입 자동 생성 방법을 설명한 순서도이다.
본 발명에 따른 실행 가능한 센서 네트워크 프로토타입 자동 생성 방법은 센서 네트워크 응용 분야 선택 단계(S10), 노드간 패킷 정의 단계(S20), 센서 노드 속성 지정 단계(S30), 센서 노드별 행위 모델링 단계(S40), 컴파일 및 실행가능한 프로토타입 자동 생성 단계(S50)를 포함한다.
1. 센서 네트워크 응용 분야 선택 단계
먼저, 사용자는 센서 네트워크 응용 분야를 선택한다(S10).
센서 네트워크 응용 분야는 온도 측정 시스템, 조도 측정 시스템, 환경 모니터링 시스템, 생태 모니터링 시스템, 음향 감지 시스템, 군용 감시 시스템, 물품 추적 시스템, 의료용 모니터링 시스템, 지능화 공간(smart space) 등으로 분류할 수 있으며, 계속적인 피드백 과정을 통해 추가되거나 삭제될 수 있다.
노드간 패킷 정의 단계를 위한 가능한 시나리오를 제시하여 센서 네트워크 응용 분야별로 많이 사용되는 센서 노드간 통신 패턴을 제시하여 준다. 이 단계의 결과는 2단계의 입력으로 사용되어 사용자가 사용될 패킷의 종류 및 노드간 패킷 전송 시나리오를 결정하는데 도움을 준다.
2. 센서 노드간 패킷 정의 단계
센서 노드간 패킷 정의 단계는 센서 네트워크 응용 분야별 센서 노드와 싱크 노드간 전송되는 패킷의 종류 및 데이터와 메시지 전송 순서, 센서 네트워크 통신 채널과 PAN ID를 정의하고, 센서 노드간 패킷 전송 시나리오에 따라 작성된 패킷 전송 모델을 센서 네트워크 응용 분야별 패킷 전송 패턴 데이타베이스로 저장한다(S20).
도 2에 도시된 바와 같이, 센서 노드와 싱크 노드로 전송되는 패킷의 종류는 센서 정보(SENSOR_INFO), 센서 데이터(SENSOR_DATA) 및 배터리 데이터(BATTERY_DATA)를 포함하고, 메시지 전송 순서를 상위 레벨에서 나타낼 수 있도록 시퀀스 다이어그램을 이용한다. 사용되는 패킷 종류나 전송 순서는 사용자가 선택한 센서 네트워크 응용 분야에 따라 달라질 수 있다.
센서 정보(SENSOR_INFO)는 센서 노드 ID(nodeID)와, 온도 센서, 습도 센서, 조도 센서 등의 센서 타입(Sensor_type)을 포함한다.
센서 데이터(SENSOR_DATA)는 센서 노드 ID(nodeID) 및 센싱 값(value)를 포함한다.
배터리 데이터(BATTERY_DATA)는 센서 노드 ID(nodeID)와, 배터리 값(value)를 포함한다.
객체 하나는 센서 노드에 올라가는 응용 프로그램 1개에 해당한다. 그러므로, 이 단계에서 센서 네트워크 응용에 사용될 총 센서 노드의 갯수가 정해지며, 시퀀스 다이어그램에 명시된 패킷 정보를 바탕으로 각 센서 노드용 어플리케이션의 패킷의 타입을 정의한 헤더 파일이 생성된다. 그리고, 이 단계의 결과는 센서 네트워크 응용분야에 따른 패킷 전송 패턴을 저장하는 데이터베이스에 저장한다.
실행 가능한 센서 네트워크 응용 소프트웨어 프로토타입을 생성하기 위해 각 패킷이 어떠한 내용을 포함하고 있는지 기술한다.
다음 표 1은 패킷의 종류 및 패킷에 포함되는 내용에 대한 명세 예이다.
패킷 이름 |
SENSOR_INFO |
SENSOR_DATA |
BATTERY_DATA |
포함 항목 |
nodeId, Sensor_type |
nodeId, value |
nodeId, value |
센서 네트워크 구성을 위해 기본적으로 필요한 기술 항목은 통신 채널과 PAN ID이다.
3. 센서 노드 속성 지정 단계
센서 노드별로 달라질 수 있는 하드웨어 독립적 속성과 종속적 속성들을 개별적으로 정의한다(S30). 여기서 정해진 속성은 센서 네트워크 응용 프로그램 컴파일시 선택될 OS의 모듈을 결정하여, 필요한 모듈만을 실행 바이너리 파일 생성에 포함시킬 수 있도록 한다.
다음 표 2는 선택할 수 있는 센서 노드의 속성을 제시한다.
하드웨어 독립적 속성 |
OS에서 지원하는 하드웨어 독립적 모듈 |
라우팅 모듈 |
MAC 통신 모듈 |
태스크 스케쥴링 모듈 |
세마포어 모듈 |
메시지 큐 모듈 |
보안 모듈 |
저전력 지원 모듈 |
DB 지원 모듈(센서 노드상에서 데이터 저장 및 검색) |
하드웨어 종속적 속성 |
하드웨어에 따라 선택 가능한 모듈 |
센서 드라이버 모듈 |
UART 모듈 |
LED 모듈 |
EEPROM 모듈 |
배터리 모듈 |
LCD 드라이버 모듈 |
RF 드라이버 모듈 |
센서 네트워크 하드웨어 플랫폼 독립적 모듈은 라우팅 모듈, MAC 통신 모듈, 태스크 스케쥴링 모듈, 세마포어 모듈, 메시지 큐 모듈, 보안 모듈, 저전력 지원 모듈, 및 DB 지원 모듈을 포함한다.
센서 네트워크 하드웨어 플랫폼 종속적 모듈은 센서 드라이버 모듈, UART 모듈, LED 모듈, EEPROM 모듈, 배터리 모듈, LCD 드라이버 모듈, 및 RF 드라이버 모듈을 포함한다.
선택된 센서 노드는 하드웨어 속성에 맞게 센서 노드용 OS가 선택적인 컴파일을 지원할 수 있는 모듈을 포함해야 한다. 이를 지원하는 OS 모듈의 구조는 다음과 같다.
도 3은 센서 노드의 응용 프로그램과 API, 하드웨어 플랫폼 독립적 모듈과 플랫폼 종속적 모듈을 도시한 구성도이다.
사용자가 사용하고자 하는 하드웨어 플랫폼 독립적 모듈의 종류를 선택하고, 하드웨어 플랫폼 종속적 모듈의 종류를 선택하면, 시스템은 컴파일시 포함해야 할 모듈과 사용자가 사용할 수 있는 모듈의 API가 결정된다(S30). 센서 네트워크 OS는 스케쥴링 기능을 제공하므로 해당 모듈을 선택하면 멀티쓰레딩을 위한 API를 제공한다.
4. 센서 노드별 행위 모델링 단계
센서 네트워크를 구성하는 각 센서 노드가 소프트웨어적으로 반드시 가져야 할 속성을 결정한 후, 센서 노드별 센서 네트워크 응용 소프트웨어는 동작할 쓰레드의 행위를 모델링한다(S40). 행위 모델링은 동시성(concurrency)을 제공하는 쓰레드 ID, 우선순위(Priority), 반복주기(Period)를 정의하여 thread의 행위 모델링을 그래피컬하게 제공하도록 상위 레벨에서 모델링 하는데 적합한 행위 모델(Statechart) 다이어그램을 이용한다. 이러한 그래피컬한 다이어그램을 모델링에 사용하는 이유는, 센서 노드의 행위를 좀 더 쉽게 표현하고 이해할 수 있도록 하고, 최종적으로 생성될 코드와 연계하여 그래피컬한 시뮬레이션을 하기 위한 것이다.
센서 노드별 행위 모델링시, 외부 이벤트는 2단계에서 모델링 한 패킷의 이름과 내용을 사용하며, 내부 이벤트로는 3단계에서 결정된 모듈의 API를 사용한다.
노드별 설정내용 |
Thread별 설정 내용 |
노드 ID |
쓰레드 ID |
무선 통신을 위한 전력 수준 (RF power level) |
우선 순위(Priority) |
연결 허용 노드 ID의 범위 |
반복 주기(Period) |
<2개의 쓰레드를 실행시키는 센서 노드 모델링 예 >
1) 노드 응용 전체 및 각 Thread 관련한 설정 항목 작성
노드간 통신 관련 설정항목 |
아이디 |
무선 통신을 위한 전력 수준 (RF power level) |
연결 허용 센서 노드ID의 범위 |
1 |
31(최대값, 특정 값을 설정하지 않을 경우 디폴트로 최대로 설정됨) |
1 ~ 100 |
Thread 설정 항목 |
Thread 1 |
Thread 2 |
아이디 |
1 |
2 |
우선 순위 |
Normal |
Normal |
반복 실행 |
Yes |
Yes |
시간 간격 |
1000ms |
2000ms |
2) 행위 모델링
도 4는 본 발명의 일실시예에 따라 센서 데이터와 배터리 데이터 감지시 액션을 정의한 2개의 쓰레드(thread)를 실행시키는 센서 노드의 행위 모델링을 나타낸 도면이다.
쓰레드 1은 센서 노드로 온도 센서를 사용하는 경우, 설정된 주기(Peroid: thread 반복 주기마다 설정된 시간 간격)마다 센서 데이터를 감지하고 SENSOR_DATA.value로 get_temp_data()에 의해 감지된 온도 센서 데이터 값을 할당하고, SENSOR_DATA.Node_id로 센서 노드 ID를 할당한 후, send_to_nwk(SINK_ID, SENSOR_DATA) 함수에 의해 싱크 노드(SINK NODE)로 감지된 센서 데이터를 전송한다.
쓰레드 2는 설정된 주기(Peroid: thread 반복 주기마다 설정된 시간 간격)마다 BATTERY_DATA.value로 get_battery_data()에 의해 획득한 배터리 데이터 값을 할당하고, SENSOR_DATA.Node_id로 센서 노드 ID를 할당한 후, send_to_nwk(SINK_ID, BATTERY_DATA) 함수에 의해 싱크 노드(SINK NODE)로 배터리 데이터를 전송한다.
5. 실행 가능한 프로토타입 자동 생성 단계
최종적으로, 시스템은 각 단계별 사용자가 작성한 내용을 바탕으로 실제 컴파일 및 동작 가능한 코드를 생성한다(S50).
1) 2단계 결과물을 이용한 패킷 정의 코드를 생성
시스템은 2단계 결과물을 이용한 패킷 정의 코드를 생성하여 도 5에 도시된 바와 같이, 센서 네트워크의 통신 채널과 PAN ID를 정의하고, 각 노드가 송수신하는 패킷을 분석하여 센서 데이터 구조와 배터리 데이터 구조 등의 각 센서 노드별 패킷의 형태를 정의하는 헤더 파일을 생성한다.
2) 3단계 결과물을 이용한 하드웨어 속성별 포함 모듈 정의 코드를 생성
시스템은 3단계 결과물을 이용한 하드웨어 속성별 포함 모듈 정의 코드를 생성하여 도 6에 도시된 바와 같이, 사용자가 정의한 하드웨어 속성과 사용할 기능 모듈의 종류에 따라 컴파일시 함께 컴파일 될 모듈을 정의하는 헤더 파일을 생성한다.
도 6은 사용자가 정의한 센서 노드의 플랫폼 모듈과 하드웨어 속성을 정의한 헤더 파일이다. 이 헤더 파일은 4단계에서 생성되는 응용 프로그램을 최종적으로 컴파일 할 때 함께 컴파일 될 OS의 모듈을 명시한다.
3) 4단계에 결과물을 이용한 실행 코드 생성
센서 노드용 응용 프로그램에서 포함되는 모듈에 따라 기본적으로 포함해야 할 부분(센서나 통신 초기화 등)과 4단계에서 모델링한 노드마다 다르게 작성되는 thread 행위를 참고하여 실제 동작하는 실행 코드를 도 7에 도시된 바와 같이 생성한다.
도 7은 본 발명의 일실시예에 따른 메인 코드와 2개의 쓰레드의 행위를 정의한 센서 노드 응용 프로그램을 나타낸다.
본 발명의 실시예에 따른 센서 네트워크는 2개의 싱크 노드와 1~99까지의 센서 노드 아이디를 가진 센서 노드를 포함하는 경우이다. 각 노드의 무선 통신 전력 레벨은 최대로 설정되어 있다.
센서 노드 응용 프로그램(prototype)은 노드간 패킷을 정의한 packet_def.h 헤더 파일과 센서 노드의 하드웨어 속성을 정의한 nos.h를 포함하고, 메인 함수에서 전원 ON 후에, 센서 네트워크 통신 채널과 PAN ID에 기초하여 센서 ID와 감지된 온도 데이터를 싱크 노드로 전송하는 thread1_task() 함수와, 센서 ID와 감지된 배터리 데이터를 싱크 노드로 전송하는 thread2_task() 함수의 기능을 제공한다.
생성된 코드들은 함께 컴파일되어 실제 센서 노드상에 탑재될 수도 있으며, 행위 모델(Statechart)과 연계되어 가시화된 형태로 개별 센서 노드 또는 센서 노드간의 동작을 시뮬레이션 하는데 사용할 수 있다.
이상에서 설명한 바와 같이, 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 하기의 특허청구범위에 기재된 본 발명의 기술적 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 또는 변형하여 실시할 수 있다.