TinyOS 사용법 및 nesC Programming (주) ED
교육 순서 1 TinyOS의 개요 2 TinyOS의 설치 3 TinyOS Programming Environment Setting 4 TinyOS Programming Lesson 1 Blink LEDs Lesson 2 Sensor Acquisition Lesson 3 Task Programming Lesson 4 Send & Receive Message using RF Lesson 5 How to debug Lesson 6 Data Display on PC Lesson 7 Command to node & Broadcasting Lesson 8 Saving data
TinyOs의 개요 ■ USN이란? USN이란 사물이나 사람에 부착된 태그와 센서에서 정보를 감지, 저장, 가공해 인터넷을 통해 전달하고 이를 인간생활에 폭넓게 활용하자는 것이다. 예를 들어 교량에 센서 Zigbee 노드를 달아 교통량이나 바람 때문에 해당 교량이 위험하지 않는지 쉽게 진단할 수 있을 것이다. 이 때 사물(또는 사람)에 부착되는 장치는 단순히 코드정보만 있는 RFID 태그일 수도 있고, 온도·압력·습도 등을 감지하는 컴퓨팅 기능을 갖춘 센서일 수도 있다. 정통부는 이런 USN을 통해 언제 어디서나 정보교류가 가능한 유비쿼터스 사회를 만든다는 계획이며 이에 따라 정통부는 RFID와 USN를 유비쿼터스 사회의 핵심기술로 보고, 핵심기술 개발과 수요활성화를 위한 시범사업을 의욕적으로 펴고 있다. 내년부터 2010년까지 총 사업비 3천994억원(국고 2천974억원)을 들여 인천 경제 자유구역 송도 지식정보산업단지 내 2만4천634평에 RFID/USN 클러스터를 구축할 예정이다.
TinyOS의 개요
TinyOS의 개요
TinyOS의 개요
TinyOS의 개요
TinyOS의 개요
TinyOS의 설치 Download Windows 클릭 http://www.tinyos.net 홈페이지 접속
TinyOS의 설치 http://www.tinyos.net/dist-1.1.0/tinyos/windows/를 type.
TinyOS의 설치 Tinyos-1.1.11-3is.exe 를 다운로드한다. 166Mb나 된다. Tinyos-1.1.11-3is.exe 를 다운로드한다.
TinyOS의 설치 더블클릭하여 실행 실행을 클릭 다운로드 완료
TinyOS의 설치 Next Next
TinyOS의 설치 Cygwin 설치가 끝나고 TinyOS를 설치한다. Continue
TinyOS의 설치 오랜 시간 설치가 끝나면 설치 완료 메시지가 뜬다.
TinyOS의 설치 설치가 완료되면 바탕화면에 아이콘이 생성되며, 시작 메뉴에 아래와 같이 나타난다. Windows Explorer창을 이용해서 Program Files 폴더를 보면 UCB 폴더가 생성되어 있다.
TinyOS의 설치 TinyOS 설치 확인 바탕화면의 Cygwin 바로가기를 클릭한다.
TinyOS의 설치 AVR Studio의 설치 (Download시 필요) “Astudio”검색한다. www.atmel.com 을 접속한다. AVR Studio 4.12(build 460)을 클릭한다.
TinyOS의 설치 AVR Studio의 설치 (Download시 필요) Next I agree후 Next Next
TinyOS의 설치 AVR Studio의 설치 (Download시 필요) Next
TinyOS Programming Environment Setting ED-ZigNet Porting 아직은 USN의 표준이 정립되지 않은 상태이기 때문에 여러 가지 USN 장비들이 출시되고 있다. 그 제품들의 Line-Up을 보면 아래와 같다. Mote Name 출시 Clock CPU Flash (Code KB) RAM (KB) Radio (kBaud) Radio Type WeC 1999 4MHz Atmel 8 0.5 10 RFM RENE 2000 DOT 2001 16 1 MCA 2002 128 4 40 MICA2 2003 7MHz Chip Con iMote 12MHz ARM 512 64 460 Zeevo btNode Enicsson BT Telos 2004 20MHz Motorola 60 250 ZigBee MICAz
TinyOS Programming Environment Setting ED-ZigNet Porting 이처럼 많은 USN Platform들이 출시되었다. 그 중 ED-ZigNet은 가장 최근에 개발된 Micaz Platform을 사용하고 있다. 동일한 platform을 사용한다는 것은 통신방식, Microprocessor 등이 동일하다는 것일 뿐이다. 따라서 Microprocessor 주변에 CC2420 chip(ZigBee Chip)과 연결이라든지 Sensor의 배치 등은 Micaz과 다르다. 따라서 ED-ZigNet만의 Porting이 필요한 것이다. 이러한 porting 과정은 Hardware의 구조와 응용프로그램을 분석함을 통해서 알 수 있다. 이러한 일련의 과정들을 생략하고, 같이 제공된 CD의 TinyOS 폴더를 복사함으로써 ED-ZigNet의 Porting 과정이 끝나게 된다.
TinyOS Programming Environment Setting ED-ZigNet Porting
TinyOS Programming Environment Setting ED-ZigNet Porting TinyOS 폴더를 찾아간다.(C:\Porgram Files\UCB\Cygwin\opt\)
TinyOS Programming Environment Setting ED-ZigNet Porting 모두 예(A)
TinyOS Programming - 1 Lesson 1 Blink LEDs Blink LEDs 모든 장비가 그러하듯이 가장 먼저 해야 다뤄 보아야 할 부분이다. 장비의 입,출력을 제어하는 방법에 대해 알아본다. ED-ZigNet에는 기본적으로 두 개의 LED를 가지고 있다. 이중 적색 LED를 깜빡거리는 프로그램을 작성해 보도록 한다.
TinyOS Programming - 1 Lesson 1 Blink LEDs Program Coding Windows Explorer를 이용하여 C:\Program Files\UCB\Cygwin\opt\tinyos-1.x\apps\ZigNet1\Blink 를 클릭한다.
TinyOS Programming - 1 Lesson 1 Blink LEDs Blink의 Configurature 파일 Module 파일 Blink.nc BlinkM.nc SingleTimer.nc파일을 연다
TinyOS Programming - 1 Lesson 1 Blink LEDs Ultra Editor를 이용하여 프로그램 소스를 open한다. 필요시 source를 수정한다. Source 작성은 Text Editor를 이용하여 작성한다. Notepad를 이용하여 소스를 open할 경우 source가 Linux 형식이기 때문에 이상하게 보일 수도 있다. Text Editor tools를 이용하기를 권장한다.
TinyOS Programming - 1 Lesson 1 Blink LEDs Compile 바탕화면의 Cygwin 아이콘을 클릭한다. (시작-Program-Cygwin-Cygwin Bash Shell)
TinyOS Programming - 1 Lesson 1 Blink LEDs Compile Blink 폴더로 이동한다. $ cd /opt/tinyos-1.x/apps/ZigNet1/Blink/ 대소문자를 구별한다. 그리고 tab를 이용하면 편리하다.
TinyOS Programming - 1 Lesson 1 Blink LEDs Compile 컴파일 한다. $ make micaz
TinyOS Programming - 1 Lesson 1 Blink LEDs Download 제대로 Compile 이 되었는지 확인하다. $cd build/micaz 폴더가 이동한다. 폴더의 내용을 Display한다. 컴파일이 완료된 후 생성되는 파일들이다. 우리가 ED-ZigNet에 다운로드 할 파일을 main.ihex파일이다.
TinyOS Programming - 1 Lesson 1 Blink LEDs Download AVR Studio를 실행한다.
TinyOS Programming - 1 Lesson 1 Blink LEDs Download Tools - Program AVR – Connect… 을 실행한다.
Device가 연결된 Com PORT를 설정한다. TinyOS Programming - 1 Lesson 1 Blink LEDs Download Programmer Device를 선택한다. Device가 연결된 Com PORT를 설정한다. 모르겠으면 Auto를 선택한다 JTAG ICE
TinyOS Programming - 1 Lesson 1 Blink LEDs Download Device를 선택한다. ATmega128 Flash 의 …을 누른다
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Sensor Acquisition 우리는 Lesson 1에서 LED를 출력하는 법에 대해 알아보았다. 이번 과제에서는 센서의 입력을 받아들이는 방법에 대해 알아보도록 한다. S/W를 통해서 입력하는 방법도 있겠지만 USN에서 스위치를 통한 입력은 무의미하다. 왜냐하면 센서네트워크에서는 물리적인 양을 입력받기 때문에 0 혹은 1의 입력은 무의미 하다 할 수 있다. 여기에서 cds를 통해서 빛의 양을 감지하여 LED를 통해서 Display하는 방법에 대해 알아보자.
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Program Coding Windows Explorer를 이용하여 C:\Program Files\UCB\Cygwin\opt\tinyos-1.x\apps\ZigNet1\Sense 를 클릭한다.
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Program Coding Sense의 Configurature 파일 Sense의 Module 파일
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Compile 바탕화면의 Cygwin 아이콘을 클릭한다. (시작-Program-Cygwin-Cygwin Bash Shell) 폴더를 이동한다. $cd /opt/tinyos-1.x/apps/ZigNet1/Sense
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Compile $ make micaz 를 입력한다.
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Compile Build/micaz 폴더로 이동한다. 파일을 확인한다. Main.ihex 파일을 확인한다
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Download AVR Studio를 실행한다.
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Download Tools - Program AVR – Connect… 을 실행한다.
Device가 연결된 Com PORT를 설정한다. TinyOS Programming - 2 Lesson 2 Sensor Acquisition Download Programmer Device를 선택한다. Device가 연결된 Com PORT를 설정한다. 모르겠으면 Auto를 선택한다 JTAG ICE
TinyOS Programming - 2 Lesson 2 Sensor Acquisition Download Device를 선택한다. ATmega128 Flash 의 …을 누른다
TinyOS Programming - 3 Lesson 3 Task Programming Task Programming 우리는 Lesson 2에서 cds를 통해 입력된 데이터를 LED를 이용하여 Display하는 방법에 대해 알아보았다. 이 방법은 센서로 부터 입력이 들어오면 바로 Display하는 방법이다. 즉 센서로부터 Event가 있을 때 바로 응답을 하는 경우이다. 이번 Lesson 3에서는 동일한 실험을 한다. 다만 센서로부터 Event가 있을 경우 동작하는 것이 아니라 Timer에 의해 일정 시간마다 센서값을 읽어서 Display하는 과정을 알아보도록 한다. 이것이 바로 Task이다.
TinyOS Programming - 3 Lesson 3 Task Programming Program Coding Windows Explorer를 이용하여 \opt\tinyos-1.x\apps\ZigNet1\Sensetask 를 클릭한다. Sense Task의 Configuration파일 Sense Task의 Module파일
TinyOS Programming - 3 Lesson 3 Task Programming Compile 바탕화면의 Cygwin 아이콘을 클릭한다. (시작-Program-Cygwin-Cygwin Bash Shell) 폴더를 이동한다. $cd /opt/tinyos-1.x/apps/ZigNet1/SenseTask
TinyOS Programming - 3 Lesson 3 Task Programming Compile 폴더를 이동한다
TinyOS Programming - 3 Lesson 3 Task Programming Compile Compile Build/micaz 폴더로 이동한다. 파일을 확인한다. Main.ihex 파일을 확인한다
TinyOS Programming - 3 Lesson 3 Task Programming Download AVR Studio를 실행한다.
TinyOS Programming - 3 Lesson 3 Task Programming Download Tools - Program AVR – Connect… 을 실행한다.
Device가 연결된 Com PORT를 설정한다. TinyOS Programming - 3 Lesson 3 Task Programming Download Programmer Device를 선택한다. Device가 연결된 Com PORT를 설정한다. 모르겠으면 Auto를 선택한다 JTAG ICE
TinyOS Programming - 3 Lesson 3 Task Programming Download Device를 선택한다. ATmega128 Flash 의 …을 누른다
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF 우리는 Lesson 3까지 센서로부터 입력을 받는 법과 LED를 통해 출력하는 법에 대해 알아보았다. 이젠 센서네트워크의 기본이 되는 RF(Radio Frequency)에 대해 알아보도록 한다. RF를 통해 정수를 전송하고, 그것을 전송 받아서 LED로 display하는 실습을 하도록 한다. 여기에서는 보내는 쪽(Transmission)과 받는 쪽(Receive)의 두 가지 Programming 을 실습한다.
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Program Coding - Transmission Windows Explorer를 이용하여 \opt\tinyos-1.x\apps\ZigNet1\CntToLedsAndRfm 를 클릭한다. CntToLedsAndRfm의 Configuration Module 파일
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Compile - Transmission 바탕화면의 Cygwin 아이콘을 클릭한다. (시작-Program-Cygwin-Cygwin Bash Shell) 폴더를 이동한다. $cd /opt/tinyos-1.x/apps/ZigNet1/CntToLedsAndRfm
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Compile - Transmission 폴더를 이동한다. $ cd /opt/tinyos-1.x/apps/ZigNet1/CntToLedsAndRfm/ 어떤파일이 있는지 본다. $ ls 컴파일한다. $ make micaz
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Download - Transmission AVR Studio를 실행한다.
Device가 연결된 Com PORT를 설정한다. TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Download - Transmission Programmer Device를 선택한다. Device가 연결된 Com PORT를 설정한다. 모르겠으면 Auto를 선택한다 JTAG ICE
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Download - Transmission Device를 선택한다. ATmega128 Flash 의 …을 누른다
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Program Coding - Receive Windows Explorer를 이용하여 \opt\tinyos-1.x\apps\ZigNet1\RfmToLeds 를 클릭한다. RfmToLeds의 Configuration Module 파일
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Compile - Receive 바탕화면의 Cygwin 아이콘을 클릭한다. (시작-Program-Cygwin-Cygwin Bash Shell) 폴더를 이동한다. $cd /opt/tinyos-1.x/apps/ZigNet1/RfmToLeds
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Compile - Receive 폴더를 이동한다. $cd /opt/tinyos-1.x/apps/ZigNet1/RfmToLeds 파일을 한번 본다. $ls
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Compile - Receive 컴파일 한다. $make micaz
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Download - Receive AVR Studio를 실행한다.
Device가 연결된 Com PORT를 설정한다. TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Download - Receive Programmer Device를 선택한다. Device가 연결된 Com PORT를 설정한다. 모르겠으면 Auto를 선택한다 JTAG ICE
TinyOS Programming - 4 Lesson 4 Send & Receive Message using RF Download - Receive Device를 선택한다. ATmega128 Flash 의 …을 누른다
TinyOS Programming - 5 Lesson 5 How to debug How to debug 우리는 Lesson 4까지 센서로부터 입력을 받아서 RF를 통해서 그 값을 전송하고 LED를 통해서 Display하는 방법까지 알아보았다. 지금까지 프로그램 해 온 Source는 이미 제공된 소스를 이용하여 사용하였다. 그러나 우리가 TinyOS를 이용해서 프로그램 하고자 할 경우에는 반드시 제공된 source로만 가지고 시행하기 어렵다. 따라서 우리는 새로운 Programming을 해야 한다. Programming 후 node에 Download하고 결과를 관찰하는데는 여러가지 어려움이 따른다. 따라서 이러한 일련의 과정들을 Simulation하는 방법을 알아본다. Simulation은 PC를 통해서 가상으로 node의 움직임을 알 수 있다.
TinyOS Programming - 5 Lesson 5 How to debug Program Coding Windows Explorer를 이용하여 \opt\tinyos-1.x\apps\ZigNet1\TestTinyViz 를 클릭한다.
TinyOS Programming - 5 Lesson 5 How to debug Compile 바탕화면의 Cygwin 아이콘을 클릭한다. (시작-Program-Cygwin-Cygwin Bash Shell)
TinyOS Programming - 5 Lesson 5 How to debug Compile 폴더를 이동한다. $ cd /opt/tinyos-1.x/apps/ZigNet1/TestTinyViz 폴더의 내용을 확인한다. $ ls
TinyOS Programming - 5 Lesson 5 How to debug Compile 컴파일한다 (make micaz 이 아닌 make pc이다) $ make PC
TinyOS Programming - 5 Lesson 5 How to debug Compile 폴더를 이동하여 파일을 확인한다.
TinyOS Programming - 5 Lesson 5 How to debug Simulation 컴파일을 위해서 Cygwin을 하나 더 연다
TinyOS Programming - 5 Lesson 5 How to debug Simulation 새로운 Cygwin에 java 폴더를 찾아간다. $ cd /opt/tinyos-1.x/tools/java 하위의 sim폴더를 찾아간다. $ cd net/tinyos/sim
TinyOS Programming - 5 Lesson 5 How to debug Simulation Java를 컴파일한다.. $ make 이로서 GUI (Graphic User Interface) debug tools가 완성되었다. 이 tinyviz를 Cygwin 어느곳에서도 쓸 수 있도록 /bin 폴더로 copy한다.
TinyOS Programming - 5 Lesson 5 How to debug Simulation Windows Explorer를 이용하여 sim 폴더를 찾아간다. Tinyviz 를 복사한다.
TinyOS Programming - 5 Lesson 5 How to debug Simulation Windows Explorer를 이용하여 bin 폴더를 찾아간다. 복사한 tinyviz를 붙여넣는다 이제 Cygwin 어디에서도 tinyviz를 실행 시킬 수 있다
TinyOS Programming - 5 Lesson 5 How to debug Simulation 첫 번째 Cygwin 창에서 컴파일 된 TestTinyviz를 실행 시켜보자 컴파일 할 사용자를 선택한다. 30개의 node를 Simulation 한다. $ ./main.exe –gui 30
TinyOS Programming - 5 Lesson 5 How to debug Simulation 두 번째 Cygwin창을 이용해서 TinyViz 파일을 실행한다.
TinyOS Programming - 5 Lesson 5 How to debug Simulation TinyViz 프로그램이 실행 되었다.
TinyOS Programming - 5 Lesson 5 How to debug