어떤분으로부터 다음과 같은 내용에 대한 메일을 받았습니다.
>> 저는 센서네트워크 미들웨어 관련하여 과제를 수행중인데 zigbee에 궁금한게 있어서..
>> zigbee를 tinyos에 심어서 micaz에 올리려고 하는데요 자료가 많이 부족하네요.
...
>> z-stack이라는 걸 무료로 배포 하고 있는데 그걸 바로 사용해도 될까요?

아무래도 정리도 할겸 해서 블로그를 통해서 답변을 드리겠습니다.
먼저 ZigBee, TinyOS, Micaz라는 것에 대해서 명확해야겠죠.

1. ZigBee: 간단히 ZigBee Alliance에서 표준화하고 있는 프로토콜이라고 할 수 있습니다.
즉 프로토콜이죠. IEEE 802.15.4라는 MAC단까지 정립되어 있는 프로토콜 상위에 Network
Layer와 Application Layer를 추가하였죠. 좀더 자세히 보면 세분화 되어 있지만 크게는
이렇습니다. 그리고 ZigBee는 Industry 컨소시엄이며 실제 칩벤더에서 스택을 제공하고
있죠. 

2. TinyOS: 말 그래도 OS즉 플랫폼이며, Sensor Network를 위한 설계된 플랫폼이라고
보시면 됩니다. 그렇다면 ZigBee와 TinyOS는 어떠한 관계일까요? ZigBee가 TCP/IP를
기반으로 하는 프로토콜이라고 보신다면 TinyOS는 윈도우 운영체제라고 보시면 됩니다.
물론 많은 비약이 있지만 이해하기는 쉬울 것입니다.

3. Micaz: 그냥 하드웨어죠. 아마 모트(?)라고 부르죠. 먼저 Micaz는 ATmega128L+CC2420
으로 크게 구성이 되어 있네요. 그렇다면 Micaz에 ZigBee나 TinyOS가 올라갈까요? 물론
둘다 올라갑니다. 먼저 따로 따로 올라간다고 말씀 드리겠습니다. <= 요거는 뒷부분을 읽으
면 내용이 조금 이해하실 겁니다.

여기서 부터 아마 답변이 될거 같네요.
TinyOS는 ZigBee보다 먼저 나왔죠. 정확한건 모르겠지만 WSN이라는 개념이 성립되고
이후 버클리의 한랩에서 주도적으로 이에 대한 WSN을 실제 구현할 수 있고 적용할 수 있는
플랫폼의 필요성을 느끼게 되었죠. 그리고 얼마 시간이 지나서 WSN의 시장이 커질거라는
예측과 수요의 발생으로 인해서 정형화된 그 무엇인가가 필요했던거죠. 즉 각각이 제품을
만들면 제품간의 호환성이 가장 문제죠. 우리가 매일 사용하는 USB관련 제품이 이를 잘
설명합니다. 그냥 USB관련 제품끼리는 잘 동작하죠.. 어디에서 만들던지요. 그래서 ZigBee
Alliance에서 ZigBee라는 프로토콜을 제정하게 되었고 이에 참여하는 칩 벤더나 업체들은
자사의 이익을 위해서 ZigBee Stack(ZigBee Software)를 만들어서 쉽게 개발자들이 개발
할 수 있도록 제공했죠. 그러자 ZigBee 시장이 상당히 커지고 사람들도 조금씩 ZigBee라는
것을 알게 되었습니다. 그렇다면 TinyOS에서는? 네 ZigBee 프로토콜을 TinyOS라는 플랫폼
에서 지원하기 위해서 구현을 시작합니다. 왜냐구요? 음... 이건 문화의 차이와 오픈소스의
생태계와 그 뭐랄까... ^^^

ZigBee와 TinyOS의 관계 및 IEEE 802.15.4와 TinyOS의 관계 간단 설명
http://www.tinyos.net/faq.html#SEC-77

네 결론입니다. 이미 TinyOS기반의 ZigBee 프로토콜이 Open Source형태로 구현이
되었으며 되고 있는 중인 듯 합니다. 다음의 URL을 참조하시면 원하는 것울 얻으실
수 있을 겁니다.

http://www.hurray.isep.ipp.pt/activities/ZigBee_WG/default.aspx?AspxAutoDetectCookieSupport=1
http://www.open-zb.net/

그리고 두번째로 Micaz의 H/W에 TI사의 ZStack을 TinyOS에 올리는 것은 감히 불가능이라고
말씀 드릴 수 있습니다. 물론 Micaz가 아닌 다른 센서 하드웨어를 직접 설계하시면 방향을
다르게 하여 TinyOS <--> TI Zstack간의 인터페이스 공유를 통해서 가능은 하지만 그건
조금 Funny한 구현이라서요.. 아니라고 단언할 수 있습니다. 

마지막으로
그리고 직접 TinyOS를 분석하시고 ZigBee Pro프로토콜을 분석하시어 실제 구현을 하시면
많은 것을 얻게 되실거라고 확실히 말씀드리고 싶습니다.
아무쪼록 좋은 연구가 되시고 가끔식 연락 주셔도 됩니다. ^^ <== 질문자에게 드리는 글.. ^^
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by sound79 사운드친구

댓글을 달아 주세요

  1. jinmabus 2009.05.21 22:27 신고  댓글주소  수정/삭제  댓글쓰기

    open-zb사이트는 가봤었는데 답이 거기 있을 줄이야 ...
    많은 도움 되었습니다.
    답변 감사합니다.^^

  2. 상상의공간 2010.01.04 21:49 신고  댓글주소  수정/삭제  댓글쓰기

    그럼 zigbex 모트에는.. 128L 과 센서와 CC2420 이 올려져있고 tinyOS 로 통해서 통신하는거라고 생각하면 되는건가요...?

    제 블로그는 01099496543.tistory.com 입니다..


무선 센서 네트워크를 연구하고 있다면 아마도 TinyOS에 대해서는 한번쯤 이상은 들어보지 않았을까 한다.
http://tinyos.net/

TinyOS를 기반으로 IP와의 인터그레이션한 기술과 제품을 하고 있는 회사는 Archrock 사이다.
TinyOS의 코어 기술 개발자들과 David E. Culler 교수님도 참여하고 있는 걸로 알고 있다.
http://www.archrock.com/

근래에 Archrock에서 Energy Optimizer라는 전력 모니터링 시스템을 내놓았다.
물론 기존에도 이와 유사한 형태로 Web-Based 형태로된 개발된 산출물이 있었지만 요즘 대세가 전력에 대한
솔루션 수요가 많은 것도 한 몫을 한것 같다.
Energy Optimizer를 이용한 기능으로는 다음과 같은 것이 있다.
- specialized circuit-mountable energy sensors
- a web-based Energy Visibility Portal
- data gathered by the sensors appears on the portal in the form of actionable reports
- users can see exactly when and where a building is consuming energy

이 중 마지막의 사용자는 각 빌딩의 특정 지역의 에너지 소비량을 시간과/장소별로 모니터링 하여 제어를 할
수 있다.

Archrock사의 모든 제품군이 지향하는 목표는 다음과 같다.
- energy-focused
- multi-sensor
- real-time visibility
- cost effective
- non-disruptive
- IP enabled

위의 6가지 Features 중 마지막 IP enabled에 대해서 생각해 보면 다음과 같다.
현재까지 가장 널리 이용되고 있는 네트워크 인프라는 TCP/IP를 기반으로 하고 있다. 즉 이는 기존 시스템과
인터그레이션시 가장 쉽게 접근할 수 있으며 통일성을 유지할 수 있다는 장점도 가질 수 있다. 그리고 이러한
모니터링 시스템은 유선과 무선이 혼재할 수 있는 상황이 발생하고 대규모의 네트워크가 구성이 되어야 한다.
이럴경우 IP라는 공통된 주소 메커니즘도 중요한 키포인트로 작용할 수 있다.


그리고 마지막으로 Energy Optimizer의 컴포넌트는 크게 3가지로 나뉜다.
- The Energy Visibility Portal: Web-based의 어플리케이션으로 에너지의 사용량을 그래픽적으로 보여줌
- The PhyNet Router: 표준화된 저전력 무선통신 기술을 이용하여 네트워크 형성을 하는 디바이스
- ArchRock IP power Nodes: AC power를 측정하는 회로.

현재도 스마트 그리드와 같은 기술이 많이 이슈화 되고 있다.
이에 무선 센서 네트워크의 입장에서도 In-Building과 같은 에너지의 전체적인 사용량을 모니터링 할 수 있는
기술이 점차 확산 될것으로 생각된다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by sound79 사운드친구

댓글을 달아 주세요


이번에 하버드에서 2009년도 봄학기 과정으로 Wireless Sensor Networks의 과정이
개설되었다. 대학원 과정인듯...
http://www.eecs.harvard.edu/~mdw/course/cs263/


기본적으로 TinyOS와 센서네트워크를 위한 저전력 OS에 관해서 다룬다고 한다.
그리고 Harvard에서 구현한 MoteLab이라는 테스트베드에 대해서도 언급하고 있다.

간단히 과정을 보니 센서네트워크의 개념과 MAC 프로토콜 그리고 응용분야에 초점을 맞추고
있는 듯 하다.

앞으로도 계속 업데이트가 될것 같으니, 관심 있게 지켜보면서 이걸로 나도 공부 좀 해야겠다.

요즈음은 해외 유명 대학의 수업이나 과정이 오픈되어 있는 것이 많이 있는 거 같다. 수업 자체를
동영상 형태로 제작하여서 Youtube형태로 제공이 되고도 있다.

어쨌든 이분야가 분명 앞으로의 전망이 있기는 한듯...

Course명인 CS263에 관한 블로그는 다음과 같다. 센서네트워크에 대해서 괜찮은 글들이
앞으로도 많이 올라 올듯..
http://harvard-cs263.blogspot.com/


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by sound79 사운드친구

댓글을 달아 주세요

  1. 통제불능 2009.03.31 17:33 신고  댓글주소  수정/삭제  댓글쓰기

    하버드에 센서네트워크에 관한 커리큘럼있네요. 확실히 대세이긴 하나보네요. 좋은 정보 감사합니다.
    음..교수가 많이 들어본 이름인데 찾아보니 런닝 리눅스 4판 저자였네요. 쩝.. 저기 올라온 문서만 출력해도 웬만한 국내 교재들은 저리가라 하겠네요.

    • sound79 사운드친구 2009.03.31 22:46 신고  댓글주소  수정/삭제

      그렇네요. 러닝 리눅스 저자였네요.^^ 빡신건 학생들은 매주 2-4개의 해당 페이퍼를 읽고 요약을 해야 된다는 거죠. 1개 제대로 이해하고 읽는데에만 일주일 넘게 걸릴지도 모르겠네요. 감사합니다. ^^

  2. choimosi 2009.07.20 13:12 신고  댓글주소  수정/삭제  댓글쓰기

    좋은글 감사합니다^^


1단계
1. Cygwin 설치하기 (cvs, gcc, gdb, openssh, perl, rpm, vim은 기본적으로 설치해야 함)
2. Sun의 최신의 JDK 설치하기
3. Sun's javax.comm package 설치하기
4. graphviz 설치하기
5. Eclipse나 기타 사용자 맘대로 edit 툴 설치



2단계
1. 다음의 TinyOS RPM 설치하기

설치 방법은 $rpm --ignoreos -ivh *.rpm


3단계
sourceforge의 TinyOS 저장소로부터 CVS를 통해서 최신 소스 내려 받기
 $ cd /opt
 $ cvs -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos login
 $ cvs -z3 -d:pserver:anonymous@tinyos.cvs.sourceforge.net:/cvsroot/tinyos co -P tinyos-1.x tinyos-2.x



4단계
Makelocal 파일을 /opt/tinyos-1.x/tools/make에 저장
washu.sh, tinyos.sh 파일을 /etc/profile.d에 저장
locate-jre 파일을 /usr/local/bin에 저장



5단계
java 코드 컴파일
 $ cd /opt/tinyos-1.x/tools/java
 $ make



6단계
TinyOS에서 java의 JNI 설치
 $ cd /opt/tinyos-1.x/tools/java/jni
 $ make install



7단계
AVR Cross compiler 설치

 $ rpm --ignoreos -ivh *.rpm
 $ rpm --ignoreos --nodeps -ivh *.rpm


이로써 Cygwin 기반의 TinyOS 1.x 2.x의 양버전의 설치가 된다. 이후 국내 레퍼런스 TinyOS보드 Specific한 부분은 해당 부분만 따로 설치하면 된다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by sound79 사운드친구

댓글을 달아 주세요

  1. sound79 사운드친구 2010.07.19 23:45 신고  댓글주소  수정/삭제  댓글쓰기

    여기를 참고하세요.. http://www.mobilab.unina.it/TinyOSLinuxHOWTO.htm
    참고로 너무 오래되어서 저두 기억이 잘 안나지만,, 대충 검색해보니 여기서 원하시는 정보를 얻을 수 있을 거 같네요..

  2. sound79 사운드친구 2010.07.19 23:46 신고  댓글주소  수정/삭제  댓글쓰기

    그리고 비밀글 보다는 공개로 댓글을 다는게 좋지 않을까요? ^^ 부디 열심히 하셔서 좋은 결과 바랍니다. ^^ 오랫만에 쓰는 댓글이네요..


공식 TinyOS 설치 관련: http://docs.tinyos.net/index.php/Getting_started
TinyOS는 Windows, Linux에서 설치가 가능하며 Live CD 혹은 Image를 통한 VMware를 운영이 가능하다..

일단 WinXP에서 Cygwin 플랫폼을 통한 설치를 하기로 했다. 
 
1단계: JAVA SDK 설치.
TinyOS에 따라서 Java SDK 버전을 결정해야 한다. TinyOS 2.1이면 Java 1.6 SDK를 TinyOS 2.0.2 는 Java 1.5 SDK를 설치해야 한다. ==> 이는 TinyOS Source Platform내의 Java 버전과 Mismatch가 될경우 괜히 삽질하게 되기 때문이다.
설치는: http://java.sun.com
설치후 Java의 패스를 설정.

2단계: Cygwin 설치
setup.exe파일과 구해서 인터넷 Mirror사이트를 통해서 설치를 하여도 되지만, 좀더 편리하고 안정적으로 플랫폼을 구현하기 위해서 미리 적절하게 압축해둔 cygwin을 구해서 압축을 풀고 설치를 해도 된다.
해당 파일은: http://cone.informatik.uni-freiburg.de/people/aslam/cygwin-files.zip
다운로드 후 압축을 풀고 setup.exe를 실행하면 아래와 같이 Imstall from Local Directory 를 선택한다.



이후 Local Package Directory는 실제 다운 받은 Release 폴더를 선택하여 주면 된다.
그럼 다음과 같이 미리 정해진 파일들을 cygwin에 설치할 수 있다.


3단계: 툴체인, 소스, tinyos 설치
TinyOS의 개발도 분명 Embedded 환경의 개발이다. 그러므로 타겟의 컴파일 환경을 구축해야 한다. 또한 TinyOS의 특징인 nesc compiler도 설치해야 한다. 타겟의 CPU에 따라서 다음의 툴들을 설치해야 한다.
 * AVR 계열 설치
  - avr-binutils
  - avr-gcc
  - avr-libc
  - avarice
  - insight
 * MSP430 계열 설치
  - ~~~
 * PXA27X 계열 설치
  - ~~~
기본적으로 툴체인의 설치는 TinyOS의 홈페이지나, 타겟보드 회사의 홈페이지에서도 Download를 제공해 줄것이다. 이를 참조하여 설치하면 된다.
다음으로 nesc, tinyos-tools, tinyos source를 설치해야 한다.
*** 즉 정리하자면 다음과 같다. 만약 micaz와 같은 ATmega128 계열의 프로세스를 사용하는 보드라면, 설치해야 하는 툴들은 아래와 같다.

Atmel AVR Tools

Tool Windows/Cygwin Linux
avr-binutils avr-binutils-2.15tinyos-3.cygwin.i386.rpm avr-binutils-2.15tinyos-3.i386.rpm
avr-gcc avr-gcc-3.4.3-1.cygwin.i386.rpm avr-gcc-3.4.3-1.i386.rpm
avr-libc avr-libc-1.2.3-1.cygwin.i386.rpm avr-libc-1.2.3-1.i386.rpm
avarice avarice-2.4-1.cygwin.i386.rpm avarice-2.4-1.i386.rpm
insight (avr-gdb) avr-insight-6.3-1.cygwin.i386.rpm avr-insight-6.3-1.i386.rpm

TinyOS-specific Tools

Tool Recommended Windows/Cygwin Other Windows/Cygwin Linux Command
NesC nesc-1.2.8a-1.cygwin.i386.rpm nesc-1.2.8b-1.cygwin.i386.rpm> nesc-1.2.8a-1.i386.rpm rpm -Uvh
rpm -Uvh --ignoreos (if Cygwin complains)
Tool Windows/Cygwin 32-bit Linux 64-bit Linux Command
tinyos-tools tinyos-tools-1.2.4-2.cygwin.i386.rpm tinyos-tools-1.2.4-3.i386.rpm tinyos-tools-1.2.4-3.i686.rpm rpm -ivh --force (1.x tree)
rpm -Uvh (no 1.x tree)

TinyOS 2.x

Windows/Cygwin Linux
TinyOS tinyos-2.0.2-2.cygwin.noarch.rpm tinyos-2.0.2-2.noarch.rpm

4단계: 업체에서 제공하는 TinyOS Sample Code, 패치 설치
아마 국내에서 판매하고 있는 TinyOS 관련 보드들을 사용한다면 해당 회사에서 제공하는 샘플코드나 패치들이 있을 것이다. 혹은 이와는 다르게 한번에 개발환경을 구축할 수 있도록 제공도 할 것이다.

5단계: Graphviz 설치

6단계: 설치후 테스트
설치후 /opt/tinyos-2.x/apps/Blink <= 의 폴더에서
make micaz 와 같이 컴파일이 완료되는지 확인..

예외 사항
1. 혹시 /opt 폴더가 없을 경우 생성하여 준다.
2. TOSSIM 관련해서는 TinyOS의 11장 TOSSIM의 맨하단부분에 수정사항이 나와 있다.

저작자 표시
신고
Posted by sound79 사운드친구

댓글을 달아 주세요