JMF(Java Media install #
JMF를 설치할 때 꼭 지켜줘야 하는 사항이 있는데, 웹캠을 연결한 상태로 설치를 해야한다는 것이다. 웹 캠을 연결한 상태로 설치를 해야하는 이유는 JMF가 설치될때 PC에 존재하는 Audio와 Video의 Device를 자동 검색해서 등록하기 때문이다. 만약 JMF 설치 시 웹캠을 연결하지 않고 설치를 하게 된다면, JMF의 Capture Device를 등록하지 못하기 때문에 꼭 웹캠을 연결한 상태로 JMF를 설치해야 한다.
그림 18. USN_PC환경 구축파일
가장 먼저 제공되는 JMF 설치 파일인 jmf-2_1_1e-windows-i586을 더블클릭해서 설치를 시작한다.
그림 19. 라이센스 동의 화면
그림 19는 라이센스에 동의에 관한 화면이다. "Yes"버튼을 클릭해서 다음 설치 화면으로
넘어간다.
그림 20. JMF 설치 경로 선택 화면
그림 20은 JMF의 설치위치를 지정해주는 화면이다. 기본으로 설정된 위치에 설치를 할 것이므로 “Next>"버튼을 클릭해서 다음 설치화면으로 화면으로 넘어간다.
그림 21. 컴포넌트 선택 화면
설치 시 인스톨시킬 컴포넌트들과 동작 시 필요한 DLL파일의 위치 그리고 JMF의 PATH와 라이브러리들이 위치하는 CLASSPATH등에 대한 옵션을 주는 화면으로 여기서는 Default로 해서 설치할 것이다. 추가 선택 없이 “Next>"를 클릭해서 다음 설치화면으로 넘어간다.
그림 22. JMF Installing 화면
그림 22는 인스톨링 화면이다. 이 그림은 현재 PC에 존재하고 있는 Audio와 Video 캡처 디바이스를 찾는 메시지를 확인할 수 있다. 앞서 언급했듯이 웹캠을 연결시키지 않으면 웹캠에 대한 video capture device를 찾지 못할 것이다. 인스톨이 완료되면 다음 그림 23과 같은 화면이 나타난다.
그림 23. JMF 설치 완료 화면
설치가 완료 되려면 PC를 다시 시작해야 한다. 기본적으로 체크되어있는 재부팅을 선택한 후에 “Finish"버튼을 눌러 PC를 다시 재부l팅한다. PC가 재부팅 되었다면, 프로그램이 성공적으로 설치가 되었는지 확인해야 한다. 바탕화면에 그림 24와 같은 아이콘이 나타날 것이다.
그림 24.
UBee430 구축환경 프로그램 폴더
“
JMStudio"아이콘을 클릭해서 프로그램을 실행 시킨다.
그림 25. JMF 실행 화면
실행된 화면에서 “File" > "Capture"항목을 선택한다.
그림 26. Capture Device 선택 화면
현재 JMF에 등록되어 사용할 수 있는 device가 확인할 수 있다.
UBee430 AP-kit을 이용한 Java 애플리케이션 프로그램을 동작시키기 위해서는 위의 그림 26에서 보이는
MicroSoftWDMImage Capture라고 보이는 video 디바이스를 사용한다. 위의 내용이 있으면 JMF가 성공적으로 설치가 된 것이다.
UBee430-AP-Kit Application Program Execution #
Eclipse라는 실행파일을 클릭하고, Eclipse에서 자바를 컴파일 될 파일들을 저장할 위치를 지정해준다.
그림 40. Eclipse 시작 화면
Eclipse에서 컴파일 될 파일들을 저장시킬 위치를 지정하고, “OK"를 클릭하게 되면 그림 과 같은 시작 메뉴가 나타난다.
그림 41. Eclipse 초기 화면
2.5 Eclipse에 실행소스와 리소스 import작업
Eclipse의 설치가 끝났다면,
UBee430 AP-Kit을 이용한 PC 응용 애플리케이션을 동작시킬 것이다. 먼저,
UBee430에서 제공하고 있는 PC응용 애플리케이션의 소스를 Eclipse에 Import시키는 방법에 대해서 설명해 보겠다.
2.5.1
SerialForwarder 실행 소스 Import
먼저, Eclipse를 실행시킨다. 그럼 그림 42와 같은 작업 화면이 나타난다. 소스를 import하기 위해서는 프로젝트를 생성해야한다.
그림 42. Eclipse File 메뉴 화면
프로젝트를 생성하면 그림 과 같이 “File->New->Project->Java->Java Project"를 선택한다.
그림 43. Eclipse New Java Project 생성 화면
그림 43은 새로운 Project를 생성화면이다. 먼저, Project의 이름을 입력한다. Project를 생성했다면, 두 번째로 해야 할 것은 프로그램 실행 시 적용할 JRE를 지정해주는 부분이다. 한 PC에는 여러 JRE를 사용자가 지정할 수 있다. 여기서는 Default로 생성할 것이므로 프로젝트의 이름만 지정한 후에 "Next>"버튼을 클릭해서 다음 설정 화면으로 이동한다.
그림 44. Eclipse New Java Project 라이브러리 선택 화면
그림 44는 본 프로젝트에서 사용되는 라이브러리들을 설정해 주는 화면이다.
SerialForwarder라는 프로젝트를 생성하기 위해서는 Project 생성 화면에서 기본적인 자바실행환경을 지정하고,
SerialForwarder를 하기 위해서는 추가적인 라이브러리들을 필요로 하기 때문에 화면 우측에 있는 “Add External
JARs"라는 버튼을 클릭해서 라이브러리를 빌드패스에 추가해야 한다. 여기서 프로젝트에 추가 해야할 라이브러리는
TinyOS 2.x에서 자바 애플리케이션을 지원해주는 ”tinyos.jar"라는 라이브러리를 추가시킨다. UBee430PC_실행파일 폴더에 있는 “tinyos.jar"를 선택한 후에 ”열기“버튼을 클릭한다. 그러면 그림 과 같이 라이브러리가 추가 된 것을 확인할 수 있다.
그림 45. JAR 파일 선택 화면
또한 이외에 추가로 해줘야 할 라이브러리는
SerialForwarder가 PC의
SerialPort와 통신을 하므로 PC의 환경을 읽어올 dll 파일이 필요하다. 이 역시
TinyOS 2.x에서 지원하고 있다.
그림 46. Add External
JARs 선택 화면
DLL 파일을 추가 시켜주려면 그림 과 같은 화면처럼 “Native library location:(None):을 선택한 후에 ”Edit"버튼을 클릭한다.
그림 47. DLL파일 추가 화면
그러면, 해당 dll파일이 존재하는 디렉터리를 지정해주는 화면이 그림 과 같이 나타난다. 파일이 “workspace"내에 존재하지 않으므로 ”External Folder"를 선택한 후에 파일이 존재하는 곳을 선택한다.
해당 dll 파일은 UBee430PC_실행파일 폴더 안에 저장되어 있다.
이렇게 “
SerialForwarder"에 필요한 모든 라이브러리를 추가 시킬 경우, 그림 과 같은 화면이 나타난다. 이제 ”Finish" 버튼을 클릭하면 프로젝트의 생성이 완료된다.
그림 는 프로젝트 생성이 완료되어, 라이브러리들이 추가되는 화면이다. 프로젝트 생성이 완료되면 실행소스를 import해야 한다.
프로젝트에 소스나 리소스를 외부에서 import하려면 그림 과 같이 프로젝트 내 "src->import" 항목을 선택한다.
그림 는 PC 내의 local file system으로부터, 실행소스나 리소스를 프로젝트에 import시켜주는 방법에 대해서 선택을 하는 화면이다.
여기서는 File System을 이용해서 리소스를 import할 것이므로, “File System"을 선택한 후 ”Next>"버튼을 클릭해서 다음 화면으로 이동한다.
local file system을 이용해서 리소스를 import 시켜주는 화면이다. “Browse.."버튼을 클릭해서 리소스가 존재하는 디렉터리를 지정한다.
그림 과 같이 해당 소스 파일 폴더를 선택한 후, “확인”버튼을 클릭한다.
해당 디렉터리에 존재하는 모든 리소스를 선택한 후에 “Finish"버튼을 클릭한다.
그림 는 소스 import까지 완료된 화면이다.
2.5.2 UBee430_UI 애플리케이션 실행 소스 Import
SerialForwarder의 소스 Import작업이 끝났으므로, UBee430_UI 애플리케이션의 소스와 리소스를 import시켜야 한다. 앞서
SerialForwarder에서 import하는 방법과 동일하다.
먼저, 프로젝트를 생성한다. “File->New->Project->Java->Java Project”를 선택한다.
기본 환경에서 개발을 진핼 것이므로 Project name을 입력하고, “Next>"버튼을 클릭한다.
UBee430_PC 애플리케이션은 JMF(Java Media Framework)를 사용하므로, JMF에 관련된 라이브러리를 빌드패스에 추가 시켜야 한다.
그림 는 빌드 라이브러리 패스를 잡아주는 화면이다. “Add External
JARs.."라는 버튼을 클릭하고, UBee430PC_실행파일 폴더에 있는 “tinyos.jar"를 선택한 후에 ”열기“버튼을 클릭한다.
JMF가 설치되어 있는 디렉터리의 lib폴더에 라이브러리가 존재 하므로 같은 방법으로 라이브러리를 추가시킨다. 여기서 한가지 더 필요한 사항이 있는데 JMF는 PC와 연결되어있는 Capture Device를 읽어오고 사용해야 하므로 이에 필요한 Device의 dll라이브러리가 필요하다. 이 dll파일은 “C:\Windows\system32" 디렉터리에 존재하므로 이곳을 path로 잡는다.
위 화면처럼 “Native library location:(None)"을 선택한 후 ”Edit"버튼을 눌러서 dll이 존재하는 디렉터리를 지정한다.
이렇게 빌드 패스를 추가하면 그림 과 같이 프로젝트가 생성된다.
이제 UBee430_UI 실행소스와 이미지관련 리소스파일들을 import한다.
생성한 프로젝트에서 “src->Import"메뉴를 선택한다.
PC의 File System을 이용해서 소스와 리소스 파일들을 import시킨다. 따라서 File System을 선택한 후에 “Next>"버튼을 클릭한다.
그림 과 같이 리소스와 소스가 들어있는 디렉터리를 선택하기 위해서 “Browse.."버튼을 클릭한다.
해당 실행파일과 리소스 파일들은
UBee430에서 제공하는 소스 폴더 안에, “USN_PC환경 구축 파일->실행소스 파일->UBee430_UI"내에 존재하므로 해당 디렉터리에 존재하므로 해당 파일을 추가한다.
그림 는 import시킬 해당 소스파일을 나타낸 화면이다.
그러므로 그림 과 같이 import할 폴더를 지정하고, “확인”버튼을 클릭한다.
화면의 우측에 보이는 실행소스(java파일)과 이미지(png파일)을 모두 선택한 후 “Finish"버튼을 클릭한다. 이로써 import작업이 완료되면, Project Explorer창에 실행소스 파일과 리소스파일들이 import된 것을 확인할 수 있다.
2.6
TinyOS 2.x가 지원하는 Java SDK를 이용한 애플리케이션
2.6.1.
SerialForwarder의 개념 및 실행
2.6.1.1
SerialForwarder의 개념
SerialForwarder는
TinyOS에서 제공해주고 있는 어플리케이션으로, PC와 Serial로 연결된
BaseMote와 통신을 하며
BaseMote가
SerialPort로 전달해 주는 모든 정보를 패킷단위로 받아서
SerialForwarder에 소켓통신으로 접속하고 있는 PC어플리케이션에게 패킷을 전달해주는 일종의 서버의 역할을 수행한다. 따라서 센서 네트워크에 접속하기 위한 어플리케이션들은
SerialPort에 직접 연결되어질 필요 없이
SerialForwarder의
ServerSocket에서 접속해서 Socket통신을 통해서 센서 네트워크와의 통신을 할 수 있다. 이러한
SerialForwarder의 장점은 어플리케이션의 개발자가 Serial의 통신규격을 잘 알지 못해도 일반적으로 Client-Server 프로그램처럼 어플리케이션을 개발해서 Field에 존재하는 Mote들과의 네트워크 프로그램을 개발 할 수 있다. 또한
SerialForwarder를 사용으로 인해 여러 어플리케이션이
SerialPort에 접속해서 사용할 수 있다.
그림 Serial Forwarder
위의 그림과 같이 우측의 환경설정 부분에서 Mote Communication을 PC의 시리얼 포트번호로 변경해주고 재시작 하면 패킷이 들어오는 것을 확인할 수 있다.
2.6.1.1
SerialForwarder의 실행
앞서
SerialForwarder에서 import한 실행소스 파일 중
SerialForwarder.java을 선택한 후에, 마우스 오른쪽 버튼을 클릭한다. 그리고 “Run as"라는 항목을 클릭하여 컴파일한다. 그러면 그림과 같이 실행화면이 자바 애플릿 화면으로 나타난다. 이 부분에서 중요한 것은 센서
BaseMote와 PC와의 연결을 위해서, 개인의 PC 컴퓨터 포트번호를 정확히 알아야 한다. 컴퓨터 포트번호 확인 후 실행화면 우측에 있는 Mote Communications라는 항목에서 serial@com3(개인PC포트번호):115200(패킷속도)부분을 정확히 수정해야 한다. 수정 후 Pcks Read의 숫자가 증가하는 것을 확인할 수 있다. 패킷 숫자가 계속 증가가 되는 것은 세서 Mote에 있는 센싱값이 PC로 전달이 잘 되고 있다는 의미이다.
2.6.2. UBee430_UI 애플리케이션의 개념 및 실행
2.6.2.1 UBee430_UI 애플리케이션의 개념
Serial Forwarder가 PC의 시리얼 포트로부터 패킷데이터를 받아오므로 Java 어플리케이션을 동작시켜서 센싱된 데이터값들을 가져와야한다.
UBee430 UI(User Interface)는 그래프를 그려줄 모트를 선택하는 콤보박스, 베이스모트에서 받아올 메시지를 등록해주는 버튼, 센싱정보를 표현하는 테이블로 구성된다. 현재 필드에 퍼져있는 모트들의 센싱정보를 표현해주는 화면으로 현재 필드에서 동작중인 모트들의 센싱값을 표로 표현해주고 있으면 상단에 있는 콤보박스에서 그래프로 보고 싶은 모트를 선택하게 되면, 센서에 들어있는 내부전압, 내부온도, 외부온도, 습도, 조도에 관한 그래프를 볼 수 있다.
그림
UBee430 User Interface
2.6.2.2 UBee430_UI 애플리케이션의 실행
앞서 UBee430_UI에서 import한 실행소스 파일 중
UBee430Default.java을 선택한 후에, 마우스 오른쪽 버튼을 클릭한다. 그리고 “Run as"라는 항목을 클릭하여 컴파일한다. 그러면 그림과 같이 실행화면이 자바 애플릿 화면으로 나타난다.
UBee430 UI를 기본 실행화면에는 Environment, HOMEAUTOMATION/RFID/BIO, TOPOLOGY와 같은 3가지의 탭 메뉴가 구성되어 있다. Environment에는 센서 값의 센서 모트를 선택 콤보박스와 선택된 센서 모트 값을 가져와서 그래프로 그려줄 수 있는 부분과 Mote_ID를 받아와서 Mote_ID, Device_Type, Node ID, RTC(날짜/시간), 내부전압, 내부온도, 외부온도, 습도, 조도,
ADC0(특정온도)와 같은 데이터 값을 테이블로 출력하는 부분, 베이스모트에서 받아올 메시지를 등록해주는 버튼 이 세 가지의 부분으로 구성이 된다. 그림 는 HOMEAUTOMATION/RFID/BIO 탭 메뉴의 화면이다. 여기서는 Door, Gas, Heat, Lamp, Bio(혈당측정), RFID를 응용프로그램 이용해서 제어하는 부분이다. Home이라는 항목의 Door, Gas, Heat, Lamp는 현재 Open 되어 진 상태이기 때문에 빨간색 이미지로 나타나고, close가 되면, 빨간색에서 파란색으로 이미지가 변한다. Bio라는 항목은 혈당측정기 기계를 이용하여 데이터 값을 UBee430_UI(응용 프로그램)로 보내면 현재 개인의 혈당상태를 확인 할 수 있다. 또한 RFID항목은 RFID태그를 RFID 리더로 접촉을 하게 되면, 리더기를 통해서 UBee430_UI로 태그 값을 보낸다. 태그 값을 받은 UBee430_UI는 Node ID, Serial Number, Product에 데이터를 출력한다.
그림 는 TOPOLOGY 탭 메뉴 화면이다. TOPOLOGY 탭 메뉴에서는 센서 Base모트와 같이 통신하고 있는 여러 개의 센서들의 위치를 Topology형식으로 나타내고, Mot ID, Device_Type, 전압, 조도의 값을 테이블로 출력하는 부분, 연결끊기와 close 버튼으로 구성되어 있다.