1. UBee430TM Programming Guide
Document Version : 1.8
Last Update : 2011.1.18
TinyOS2.x 기반
유비쿼터스 센서 네트워크
설계 및 응용
Copyright 2011, Huins Co.Ltd
● 본 교재에서는 UBee430, UBee-Dust, UBee430-BN Platform 및
UBee430-AP-KIT에 대하여 TinyOS 2.0.2 설치 및 예제 코드를 제공
합니다.
● 본 교재는 휴인스의 동의나 허락 없이 어떠한 형태의 출판이나 무단
배포를 할 수 없습니다.
Document History
Revision Date Description
Rev 1.0 2008-1-4 First Edition
Rev 1.6 2009-4-23 패킷 데이터 수정
Rev 1.7 2010-4-22 환경설치 매뉴얼 수정
Rev 1.8 2011-1-18 RFID 모듈 수정
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 1
2. UBee430TM Programming Guide
- 목차 -
I. UBee430에 대해서 ··························································································· 11
1. UBee430 하드웨어 설명 ························································································ 11
1.1. UBee430 ······················································································································ 11
1.2. 블록도 ··························································································································· 11
1.3. 특징 ······························································································································· 12
1.4. 구성도 ··························································································································· 13
1.5. 설정 및 전원 ··············································································································· 14
1.5.1. 전원 스위치 설정 ··································································································· 14
1.5.2. USB 모듈 결합 ······································································································· 14
1.6. Memory Map ( DS28DG02 ) ················································································ 15
1.7. 기구도 ··························································································································· 16
2. UBee-Dust 하드웨어 설명 ··················································································· 17
2.1. UBee-Dust ·················································································································· 17
2.2. 블록도 ··························································································································· 17
2.3. 특징 ······························································································································· 18
2.4. 구성도 ··························································································································· 18
2.5. 설정 및 전원 ··············································································································· 19
2.5.1. 전원 스위치 설정 ··································································································· 19
2.5.2. USB 모듈 결합 ······································································································· 19
2.6. Pin Map ······················································································································· 20
2.7. 기구도 ··························································································································· 20
3. UBee430-BN 하드웨어 설명 ·············································································· 21
3.1. UBee430-BN ·············································································································· 21
3.2. 블록도 ··························································································································· 21
3.3. 특징 ······························································································································· 22
3.4. 구성도 ··························································································································· 22
3.5. 설정 및 전원 ··············································································································· 23
3.6. 기구도 ··························································································································· 23
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 2
3. UBee430TM Programming Guide
II. UBee430 개발환경 구축 ··········································································· 24
1. TinyOS 2.x 개발환경 구축 ··················································································· 24
1.1. Install Java 1.5 JDK (JDK 5.0 Update 12) ····················································· 26
1.2. Install Cygwin ············································································································ 28
1.3. Installing Graphviz ···································································································· 32
1.4. Huins UBee430 mote 설치 ···················································································· 34
1.4.1. Huins_UBee430 - USB to serial Converter 드라이버 설치 ····················· 34
1.4.2. Huins_UBee430 - USB Serial Port ································································· 36
1.5. Install native compilers ··························································································· 38
1.5.1. Atmel AVR toolchain 설치 ·················································································· 38
1.5.2. MSP430 toolchain 설치 ······················································································· 38
1.6. Install TinyOS 2.x toolchain ·················································································· 39
1.6.1. nesC toolchain 설치 ···························································································· 39
1.6.2. TinyOS tools 설치 ································································································· 39
1.7. Install the TinyOS 2.x Source tree ····································································· 40
1.7.1. TinyOS 2.x 소스트리 설치 ·················································································· 40
1.7.2. 환경변수 등록 ········································································································· 40
1.8. 자동 설치 ··················································································································· 42
1.9. 테스트 ························································································································· 43
1.9.1. mote 연결 테스트 ································································································ 43
1.9.2. TinyOS 개발 환경 테스트 ···················································································· 43
1.9.3. 컴파일 및 설치 테스트 ····················································································· 44
1.9.4. 자바 프로그램 실행 테스트 ················································································· 44
1.9.5. C언어 SDK 컴파일 및 테스트 ·········································································· 44
III. 컴파일 ·························································································································· 46
1. 컴파일 및 인스톨 방법 ··························································································· 46
IV. Tutorial ····················································································································· 48
1. Lesson1[Getting Started with TinyOS and nesC] ······························ 48
2. Lesson2[Modules and the TinyOS Execution Model] ······················ 65
3. Lesson3[Mote-mote radio communication] ··········································· 81
4. Lesson4[Mote-PC serial communication and SerialForwarder]101
5. Lesson5[Sensing] ·································································································· 125
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 3
4. UBee430TM Programming Guide
6. Lesson6[TinyOS Boot and System Initialization] ······························ 135
7. Lesson7[Permanent Data Storage] ···························································· 141
8. Lesson8[Resource Arbitration and Power Management] ·········· 153
V. TinyOS Programming Guide ······························································ 167
1. TinyOS 2.0 OverView ··························································································· 167
2. TinyOS 2.x Boot Sequence ············································································· 174
3. TinyOS_Programming ··························································································· 184
VI. 기본 예제를 통한 UBee430 마스터 ········································· 257
1. Null ·································································································································· 257
1.1. 목적 ···························································································································· 257
1.2. 소스 파일들의 역할 ································································································ 257
1.2.1. Makefile ··············································································································· 257
1.2.2. NullAppC.nc ········································································································ 257
1.2.3. NullC.nc ················································································································· 258
1.3. TinyOS 시뮬레이터 - TOSSIM ············································································ 259
1.3.1. TOSSIM 설정 ········································································································ 259
1.3.2. 시뮬레이션 수행 ··································································································· 260
2. Blink ································································································································ 263
2.1. 목적 ···························································································································· 263
2.2. 실행방법 ···················································································································· 263
2.3. 결과 ···························································································································· 263
2.4. 코드설명 ···················································································································· 263
2.4.1. BlinkAppC.nc ········································································································ 263
2.4.2. BlinkC ····················································································································· 265
2.5. Blink 시뮬레이션 ··································································································· 266
3. BlinkToRadio ·············································································································· 270
3.1. 목적 ···························································································································· 270
3.2. 실행방법 ···················································································································· 270
3.3. 실행결과 ·················································································································· 270
3.4. 코드설명 ···················································································································· 270
3.4.1. BlinkToRadio.h ····································································································· 270
3.4.2. BlinkToRadioAppC.nc ························································································ 272
3.4.3. BlinkToRadioC.nc ······························································································· 273
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 4
5. UBee430TM Programming Guide
3.5. BlinkToRadio 시뮬레이션 ······················································································ 276
4. BlinkToSerial ·············································································································· 278
4.1. 목적 ···························································································································· 278
4.2. 실행방법 ···················································································································· 278
4.3. 수행결과 ···················································································································· 279
5. BaseStation ················································································································ 281
5.1. 목적 ···························································································································· 281
5.2. 실행방법 및 결과 ···································································································· 281
5.3. 코드설명 ···················································································································· 283
5.3.1. Makefile ················································································································· 283
5.3.2. BaseStationC.nc ·································································································· 283
5.3.3. BaseStationP.nc ·································································································· 284
6. Sense ····························································································································· 291
6.1. 목적 ···························································································································· 291
6.2. 실행방법 ···················································································································· 291
6.3. 수행결과 ···················································································································· 291
6.4. 코드설명 ···················································································································· 291
6.4.1. SenseAppC ··········································································································· 291
6.4.2. SenseC ·················································································································· 292
6.4.3. DemoSensorC ······································································································ 293
6.5. Sense 시뮬레이션 ··································································································· 294
7. Oscilloscope ·············································································································· 296
7.1. 목적 ···························································································································· 296
7.2. 실행방법 및 결과 ···································································································· 296
7.3. 코드설명 ···················································································································· 298
7.3.1. Oscilloscope.h ····································································································· 298
7.3.2. OscilloscopeAppC.nc ························································································ 299
7.3.3. OscilloscopeC.nc ································································································ 299
8. BlinkConfig ················································································································· 304
8.1. 목적 ···························································································································· 304
8.2. 실행방법 ···················································································································· 304
8.3. 코드설명 ···················································································································· 305
8.3.1. 주요 실행 흐름 ····································································································· 305
8.3.2. BlinkConfigAppC.nc ··························································································· 306
8.3.3. BlinkConfigC.nc ··································································································· 306
8.4. BlinkConfig 시뮬레이션 ························································································· 311
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 5
7. UBee430TM Programming Guide
VII. 실전 예제 ············································································································ 351
1. InternalSense ············································································································· 351
1.1. 목적 ···························································································································· 351
1.2. 실행방법 및 결과 ···································································································· 351
1.3. 코드 설명 ·················································································································· 352
1.3.1. InternalSense.h ···································································································· 353
1.3.2. InternalSenseAppC.nc ······················································································· 355
1.3.3. InternalSenseC.nc ······························································································· 356
1.3.4. Makefile ················································································································· 359
2. Sht11Sensing ············································································································ 361
2.1. 목적 ···························································································································· 361
2.2. 실행방법 및 결과 ···································································································· 361
2.3. 코드 설명 ·················································································································· 363
2.3.1. Sht11SensingAppC ····························································································· 364
2.3.2. Sht11SensingC.nc ······························································································ 364
3. DS28DG02 ················································································································ 368
3.1. 목적 ···························································································································· 368
3.2. 실행방법 ···················································································································· 369
3.2.1. ID ····························································································································· 369
3.2.2. RTC / Calendar ··································································································· 372
3.2.3. GPIO ······················································································································· 375
3.2.4. EEPROM ················································································································ 378
4. UserSwitch ·················································································································· 383
4.1. 목적 ···························································································································· 383
4.2. 실행방법 ···················································································································· 383
4.3. 결과 ···························································································································· 383
4.4. 코드설명 ···················································································································· 383
4.4.1. TestUserSwitchAppC.nc ·················································································· 383
4.4.2. TestUserSwitchC.nc ··························································································· 385
5. LightToVoltageSensor ·························································································· 387
5.1. 목적 ···························································································································· 387
5.2. 실행방법 ···················································································································· 388
5.3. 코드설명 ···················································································································· 388
6. ADCZeroSensor ······································································································· 390
6.1. 목적 ···························································································································· 390
6.2. 센서특징 ···················································································································· 390
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 7
8. UBee430TM Programming Guide
6.2.1 지자기센서 ·············································································································· 390
6.2.2 소리센서 ·················································································································· 391
6.2.3 진동센서 ·················································································································· 392
6.2.4 가속도센서 ·············································································································· 392
6.2.5 인체감지센서 ·········································································································· 392
6.3 실행방법 ······················································································································ 393
6.4 코드설명 ······················································································································ 393
VIII. UBee430-AP-KIT 응용 ········································································· 396
1. UBee430-AP-KIT 개요 ························································································ 396
1.1. 개요 ···························································································································· 396
1.2. 블록도 ························································································································ 396
1.3. POWER FLOW ········································································································· 397
1.4. 시스템 구성 ·············································································································· 398
1.5. 전원 ···························································································································· 400
1.5.1. 전원 케이블 연결 방법 ······················································································· 400
1.5.2. 전원 스위치 ON ··································································································· 401
1.6. xStation <-> 베이스 노드 연결 ·········································································· 402
2. UBee430-AP-KIT 주변 장치 ············································································ 403
2.1. RFID ··························································································································· 403
2.1. 가스밸브 ···················································································································· 406
2.1. 난방밸브 ···················································································································· 407
2.1. AC램프 ······················································································································· 409
2.1. 디지털도어락 ············································································································ 410
2.1. 혈압계 ························································································································ 411
3. TinyOS 응용 프로그램 설치 ·············································································· 414
3.1. 응용 프로그램 목록 ································································································ 414
3.2. Protocol ····················································································································· 414
3.2.1. 전체 패킷 구조 ····································································································· 414
3.2.2. UBee430 -> 호스트[ Payload ] ···································································· 415
3.2.3. UBee430 -> 호스트[ Payload ] ···································································· 415
3.2.4. 호스트 -> UBee430[Payload] ········································································ 415
3.3. RFID ··························································································································· 416
3.3.1. 목적 ························································································································· 416
3.3.2. 컴파일 및 다운로드 방법 ··················································································· 416
3.3.3. 결과 ························································································································· 417
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 8
9. UBee430TM Programming Guide
3.4.1. 가스밸브 ················································································································· 418
3.4.2. 목적 ························································································································· 418
3.4.3. 컴파일 및 다운로드 방법 ··················································································· 418
3.4.4. 결과 ························································································································· 419
3.5. AC램프 ······················································································································· 420
3.5.1. 목적 ························································································································· 420
3.5.2. 컴파일 및 다운로드 방법 ··················································································· 420
3.5.3. 결과 ························································································································· 420
3.6. 난방밸브 ···················································································································· 420
3.6.1. 목적 ························································································································· 420
3.6.2. 컴파일 및 다운로드 방법 ··················································································· 420
3.6.3. 결과 ························································································································· 421
3.7. 디지탈도어락 ············································································································ 421
3.7.1. 목적 ························································································································· 421
3.7.2. 컴파일 및 다운로드 방법 ··················································································· 421
3.7.3. 결과 ························································································································· 421
3.8. 혈압계 ························································································································ 421
3.8.1. 목적 ························································································································· 422
3.8.2. 컴파일 및 다운로드 방법 ··················································································· 422
3.8.3. 결과 ························································································································· 423
3.9. 센서노드 ···················································································································· 424
3.9.1. Magnetic Sensor Module ················································································· 424
3.9.2. Sound Sensor Module ······················································································ 424
3.9.3. Ultra-sonic Sensor Module ············································································· 424
3.9.4. Vibration Sensor Module ·················································································· 424
3.9.5. Acceleration Sensor Module ··········································································· 425
3.9.6. Motion-Detector Sensor Module ··································································· 425
3.10. BaseStation ············································································································ 425
3.10.1. 목적 ······················································································································ 425
3.10.2. 컴파일 및 다운로드 방법 ················································································ 425
3.10.3. 결과 ······················································································································ 425
IX. 자바 응용 ··········································································································· 426
1. USN PC 응용프로그램 개발 준비 ·································································· 426
2. PC 환경 구축 ············································································································· 428
2.1. 자바 설치 ·················································································································· 428
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 9
10. UBee430TM Programming Guide
2.2. PC에 웹캠 설치하기 ······························································································· 433
2.3. Java Media FrameWork 2.1버젼 설치 ····························································· 436
2.4. USB to Serial 드라이버 설치 ·············································································· 440
3. 제공 어플리케이션 실행 ······················································································· 433
4. PC 어플리케이션 개발 환경_Eclipse 환경구축 ······································ 448
5. Eclipse에 실행소스와 리소스 Import 작업 ··············································· 452
5.1. SerialForwarder 실행소스 Import ······································································· 452
5.2. UBee430_PC 어플리케이션 Import ···································································· 460
6. Eclipse에서 실행 및 유의 사항 ······································································· 466
7. TinyOS 2.x 가 지원하는 Java SDK를 이용한 어플리케이션 ········· 467
7.1. SerialForwarder ······································································································· 467
7.2. UBee430_PC ············································································································ 477
X. Appendix ················································································································· 489
1. 운용환경 설정 팁 ····································································································· 489
1.1. gvim 설치 ·················································································································· 489
1.1.1. 다운로드 ················································································································· 489
1.1.2. 설치 ························································································································· 489
1.2. 시그윈 쉘 환경 꾸미기 ·························································································· 493
1.2.1. Bash에 대해서 ····································································································· 493
1.2.2. 한글 입출력 문제 해결 및 alias 설정 ···························································· 494
1.2.3. 프롬프트 변경 ······································································································· 496
2. 초저전력 임베디드 설계에서 위험 요소를 피하는 방법 ···················· 498
3. UBee430 RF 설정 방법 ······················································································· 502
3.1 CC2420_DEF_CHANNEL 설정 ·············································································· 502
3.2 CC2420_DEF_RFPOWER 설정 ·············································································· 503
4. UBee430 UART 설정 방법 ················································································ 504
4.1 UBee430 UART0 설정 ···························································································· 504
4.2 UBee430 UART1 설정 ···························································································· 505
5. UBee430 SHT11(온/습도)센서 Calibration ·············································· 506
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 10
11. UBee430TM Programming Guide
I. UBee430에 대해서
1. UBee430 하드웨어 설명
1.1. UBee430
UBee430은 MSP430와 CC2420을 기반으로 설계
된 USN RF 모듈입니다. IEEE 802.15.4를 지원하
며, TinyOS2.0.2가 탑재되어 있습니다. UBee430
은 보드 내에 온도/습도 및 조도센서가 기본적으
로 내장되어 있습니다. 또한 사용자가 실제 어플
리케이션 구현 시 유용할 수 있는 주변장치를 제
공하고 있습니다.
주변 장치로는 External Flash(1MBytes), EEPROM(2KBytes) , RTC, Unique ID,
User Switch 등이 있으며, 강력한 배터리 모니터링 기능을 지원 합니다. 또한 GPIO
(General Purpose Input Output) 확장을 위하여 MSP430 GPIO 외에 포트 확장 IC
를 이용하여 추가적인 12개의 GPIO를 제공 합니다. 확장된 GPIO는 입력 또는 출
력 , 오프 드레인 또는 푸시풀로 동작이 가능 합니다.
1.2. 블록도
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 11
12. UBee430TM Programming Guide
1.3. 특징
● 250Kbps 2.4Ghz IEEE 802.15.4 Chipcon Wireless Transceiver
- CC2420
● Texas Instruments MSP430 Micro controller
- 16bit RISC
- Memory : Internal Flash - 48Kbyte , internal RAM - 10Kbyte
- Ultra low current consumption
● USB Interface
- USB를 이용한 노드 프로그래밍
- USB To Serial Interface 제공
● ANTENNA
- PCB ANTENNA / EXTERNAL ANTENNA ( 최대 150M , Open Area )
● Peripheral Device
- External FLASH1 ( 1Mbyte )
- External EEPROM ( 2Kbyte ) : SPI Interface
- RTC ( Real Time Clock ) : SPI Inerface , RTC/Calender/Alarm
- Battery Monitor : 다양한 전압 모니터링 기능을 제공 한다.
① MSP430 Internal voltage sensor
② ADC를 이용한 Voltage Sensing
③ 외부 Batter Monitor 장치를 이용한 전압 감시 기능 :
2.5V / 2.25V / 2.0V / 1.75V 설정된 전압 이하로 Drop시 알람 기능
- Unique ID : UBee430은 각각의 노드가 64-BIT의 개별적인 ID를 제공
- GPIO 확장 : SPI Interface , MSP430 GPIO 외에 추가적인 12개의 GPIO를 확장
INPUT / OUTPUT , Open-Drain / Push-Pull
- LED : 3EA
- USER SWITCH : 2 개 ,
- RESET Switch
- Power Switch
● Sensor
- Temperature Sensor
- Humidity Sensor
- Light Sensor ( Light to Voltage )
● USER I/O
- ADC 6채널
- I2C / SPI
- UART RX/TX 2채널
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 12
13. UBee430TM Programming Guide
- GPIO 19EA ( MSPGPIO 7EA , 확장 GPIO 12EA )
- JTAG
● 확장 모듈
- AC Control B/D , DC Control B/D
- Gas Gear Control B/D
- RFID Interface B/D
- 혈압계 Interface B/D
● 확장 센서
- 초음파 , 지자기 , 진동 , 가속도 , 인체감지 , 사운드 센서 모듈
- RS232모듈 , USB 모듈 , GPIO 테스트 모듈
- User Interface 모듈 ( 만능 기판형 )
● TinyOS Support
- TinyOS 2.0.2
1.4. 구성도
< Top View >
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 13
14. UBee430TM Programming Guide
<Bottom View >
1.5. 설정 및 전원
1.5.1. 전원 스위치 설정
UBee430의 전원 스위치는 USB 전원 및 배터리 전원을 선택 하도록 설계 되었다.
그러므로 USB 연결 시에는 반드시 전원 스위치를 USB 방향으로 전환 시키고, 독
립적인 배터리 사용 시에는 BAT 방향으로 전환 시켜야 한다.
배터리 전원 사용
USB 전원 사용
프로그램 다운로드
1.5.2. USB 모듈 결합
USB를 이용하여 프로그램 다운로드 시에는 UBee430 USB 모듈을 결합하여야 하
며, USB 모듈을 연결하기 전에 반드시 전원을 OFF/USB 상태로 먼저 설정 한 뒤
USB 모듈을 결합해야 한다.
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 14
15. UBee430TM Programming Guide
<UBee430 USB 모듈 > <UBee430 + USB 모듈 >
1.6. Memory Map ( DS28DG02 )
UBee430은 EEPROM , RTC, Unique ID, 확장 GPIO ,배터리 모니터링 등의 추가
적인 기능을 지원하기 위하여 DS28DG02라는 One-Chip을 사용하고 있다.
DS28DG02는 MSP430의 GPIO와 연결되어 있다. UBee430에서 제공하는
DS28DG02 컴포넌트는 다음 메모리맵을 기준으로 만들어 졌다.
ADDRESS TYPE ACCESS DESCRIPTION
000h to 03Fh EEPROM R/W User memory block 0.
040h to 07Fh EEPROM R/W User memory block 1.
080h to 0BFh EEPROM R/W User memory block 2.
0C0h to 0FFh EEPROM R/W User memory block 3.
100h to 109h — — Reserved, contents undefined.
10Ah EEPROM R/W Power-on default for PIO output state (PIO0 to PIO7).
10Bh EEPROM R/W Power-on default for PIO output state (PIO8 to PIO11).
10Ch EEPROM R/W Power-on default for PIO direction (PIO0 to PIO7).
10Dh EEPROM R/W Power-on default for PIO direction (PIO8 to PIO11).
10Eh EEPROM R/W Power-on default for PIO read-inversion (PIO0 to PIO7).
Power-on default for PIO read-inversion (PIO8 to PIO11),
10Fh EEPROM R/W PIO output type (PIO0 to PIO11 in groups of 4 PIOs),
PIO output mode (same mode for all PIOs).
110h to 117h — — Reserved, contents is undefined.
118h to 11Fh ROM R 64-bit unique registration number.
120h SRAM R/W PIO output state (PIO0 to PIO7).
121h SRAM R/W PIO output state (PIO8 to PIO11).
122h SRAM R/W PIO direction (PIO0 to PIO7).
123h SRAM R/W PIO direction (PIO8 to PIO11).
124h SRAM R/W PIO read-inversion (PIO0 to PIO7).
PIO read-inversion (PIO8 to PIO11), PIO output type
125h SRAM R/W (PIO0 to PIO11 in groups of 4 PIOs), PIO output mode
(same mode for all PIOs).
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 15
16. UBee430TM Programming Guide
R
126h — PIO read access (PIO0 to PIO7).
R
127h — PIO read access (PIO8 to PIO11).
128h — — Reserved, contents undefined.
129h to 12Fh NV SRAM R/W RTC and calendar.
130h to 133h NV SRAM R/W RTC alarm.
134h NV SRAM R/W Multifunction control/setup register.
135h NV SRAM R/Clear Alarm and status register.
136h and
— — Reserved, contents undefined.
above
추가적인 내용을 확인하려면 DS28DG02 데이터시트를 참고 하시길 바랍니다.
제품 출고시 동봉된 CD에 Datasheet 첨부됨.
1.7. 기구도
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 16
17. UBee430TM Programming Guide
2. UBee-Dust 하드웨어 설명
2.1. UBee-Dust
UBee-Dust는 MSP430와 CC2420을 기반으로 설
계된 USN RF 모듈입니다. IEEE 802.15.4를 지원
하며, TinyOS2.0.2가 탑재되어 있습니다.
UBee-Dust는 초소형, 저전력, Low-Cost를 목적
으로 설계된 모듈입니다.
UBee-Dust는 UBee430과 같은 플랫폼 구조를 가지고 있습니다. 컴파일 및 다운로드
시 UBee430과 똑같이 사용 됩니다. 하지만 UBee-Dust는 초소형 및 저전력을 구현하
기 위하여 UBee430에 구현된 일부 Peripheral Device는 제외 되었습니다.
2.2. 블록도
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 17
18. UBee430TM Programming Guide
2.3. 특징
● 250Kbps 2.4Ghz IEEE 802.15.4 Chipcon Wireless Transceiver
- CC2420
● Texas Instruments MSP430 Micro controller
- 16bit RISC
- Memory : Internal Flash - 48Kbyte , internal RAM - 10Kbyte
- Ultra low current consumption
● USB Interface
- USB를 이용한 노드 프로그래밍
- USB To Serial Interface 제공
● ANTENNA
- 칩 안테나
● Peripheral Device
- LED : 3EA
- USER SWITCH , Power-Path Switch
● Sensor
- Internal Voltage , Internal Temperature , Light
● User IO
- JTAG , REST , 3V , GPIO 3EA , ADC CH-3
● Power
- 3V Coin Battery ( CR2032 )
2.4. 구성도
칩 안테나
유저 스위치
전원 스위치
조도센서
CC2420
User I/O User I/O
(RESET, UART , JTAG) (GPIO 3EA, ADC 3EA ,
POWER )
< TOP VIEW >
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 18
19. UBee430TM Programming Guide
배터리
MSP430
(배터리 홀더 하단 )
< BOTTOM VIEW >
2.5. 설정 및 전원
2.5.1. 전원 스위치 설정
UBee-Dust의 전원 스위치는 USB 전원 및 배터리 전원을 선택 하도록 설계 되었
다. 그러므로 USB 연결 시에는 반드시 전원 스위치를 USB 방향으로 전환 시키고,
독립적인 배터리 사용 시에는 ON 방향으로 전환 시켜야 한다.
배터리 전원 사용 시
USB 전원 사용 시
2.5.2. USB 모듈 결합
USB를 이용하여 프로그램 다운로드 시에는 UBee430 USB 모듈을 결합하여야 하
며, USB 모듈을 연결하기 전에 반드시 전원을 OFF/USB 상태로 먼저 설정 한 뒤
USB 모듈을 결합해야 한다.
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 19
20. UBee430TM Programming Guide
<UBee-Dust + USB 모듈 >
2.6. Pin Map
J4 J5
PIN SIGNAL NAME PIN SIGNAL NAME
1 VCC3.3V ( USB ) 1 VCC3V ( BATTERY )
2 MSP430_TCK 2 ADC0
3 RESET 3 GPIO 1.2
4 MSP430_TMS 4 ADC1
5 UART1RX 5 GPIO 2.5
6 MSP430_TDI 6 ADC2
7 UART1TX 7 GPIO 4.0
8 MSP430_TDO 8 GND
2.7. 기구도
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 20
21. UBee430TM Programming Guide
3. UBee430-BN 하드웨어 설명
3.1. UBee430-BN
UBee430-BN은 호스트 시스템과 각각의 RF모듈
을 인터페이스 시키는 USB 동글 형태의 보드입니
다. UBee430-BN는 USB 관련 부품과 MSP430,
CC2420등의 핵심적인 부품만을 적용하여 구성된
모듈이며, TinyOS2.0.2가 탑재되어 있습니다.
UBee430-BN은 각각의 센서 노드와 무선으로 인터페이스 되며 각 노드에서 전달한
센서 및 기타 무선 데이터를 Host PC 또는 xStation과 같은 임베디드 시스템에 전달
합니다.
3.2. 블록도
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 21
22. UBee430TM Programming Guide
3.3. 특징
● 250Kbps 2.4Ghz IEEE 802.15.4 Chipcon Wireless Transceiver
- CC2420
● Texas Instruments MSP430 Micro controller
- 16bit RISC
- Memory : Internal Flash - 48Kbyte , internal RAM - 10Kbyte
- Ultra low current consumption
● USB Interface
- USB를 이용한 노드 프로그래밍
- USB To Serial Interface 제공
● ANTENNA
- EXTERNAL ANTENNA ( 최대 150M , Open Area )
● Peripheral Device
- LED : 3EA
- RESET Switch
3.4. 구성도
RX LED
TX LED
MSP430 LED
RESET SWITCH CC2420
EXTERNAL
ANTENNA
< TOP VIEW >
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 22
23. UBee430TM Programming Guide
MSP430
FT232BM
< BOTTOM VIEW >
3.5. 설정 및 전원
UBee430-BN은 독립적인 배터리를 사용하지 않고 USB 포트로부터 전원을 공급 받
아 동작을 한다.
3.6. 기구도
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 23
24. UBee430TM Programming Guide
II. UBee430 개발환경 구축
휴인스에서는 쉬운 개발환경 설치를 위하여 Vmware 기반의 Virtual Image를 제공
한다.
이 이미지는 TinyOS 사용을 위한 rpm 및 기타 유틸리트가 모두 설치 되었으며,
UBee430 사용을 위한 모든 포팅 과정 및 설정이 완료된 이미지 이다.
1. 설치에 필요한 프로그램
UBee430 배포용 CD는 다음 프로그램을 제공 한다.
( UBee430[Rev 1.3 이상]_CD2 )
1. VMware-player-2.0.2-59824.exe : VMware Player
2. Xubuntos 2.0-UBee430-080117.exe : 압축된 Virtual Image
2. VMware Player 설치
1.1. VMware-player-2.0.2-59824.exe 를 더블 클릭하여 설치를 시작
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 24
26. UBee430TM Programming Guide
1.2. VMware Player에서 loading할 폴더를 만든다.
윈도우 탐색기를 이용하여 내 문서에 My Virtual Machines 폴더를 만든다.
My Virtual Machines 폴더에 Xubuntos 2.0-UBee430-080117 이미지를 복사한
다.
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 26
27. UBee430TM Programming Guide
3. Virtual Image 복사 및 압축해제
1.3. 휴인스에서 제공하는 Xubuntos 2.0-UBee430-080117 이미지를 My
Virtual Machines 폴더에 복사하여 붙여넣기 한다. Xubuntos
2.0-UBee430-080117 이미지는 배포용 CD에 압축된 상태로 제공된
다.
1.4. Xubuntos 2.0-UBee430-080117.exe 파일을 내 문서 My Virtual
Machines 폴더에 복사 한다.
1.5. Xubuntos 2.0-UBee430-080117.exe 파일을 더블클릭하여 압축을
해제 한다.
Xubuntos 2.0-UBee430-080117.exe 파일을 더블 클릭 ( 자동 압축 풀림 )
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 27
28. UBee430TM Programming Guide
1.6. VMware Player 실행
바탕화면의 바로가기 아이콘을 더블 클릭 한다
VMware Player가 실행되면 Image를 loading 한다.
Open 클릭
C: ₩Documents and Settings ₩<유저계정> ₩My Documents ₩My Virtual
Machines ₩Xubuntos2.0-UBee430- 080117 폴더의 Xubuntos 2.0.vmx 파일
을 선택한 후 열기를 누른다.
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 28
29. UBee430TM Programming Guide
xubuntu 가 실행이 된다.
Username를 입력 한다
마우스 커서를 입력란에 클릭한 후 Username은 "xubuntos"를 입력 한다.
그리고 엔터를 입력 한다
Password를 입력 한다.
"tinyos"를 입력 한다. 그리고 엔터를 입력 한다.
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 29
30. UBee430TM Programming Guide
loading이 완료되었다면 다음 화면을 볼수 있을 것이다.
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 30
31. UBee430TM Programming Guide
4. 테스트
1.7. UBee430 연결 테스트
UBee430을 현재 개발환경이 설치된 PC의 USB 포트에 장착 한다.
터미널을 실행 시킨다.
motelist를 입력하여 UBee430이 연결되었는지 확인 한다.
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 31
32. UBee430TM Programming Guide
만약 UBee430이 검색이 안되면 xubuntos에 Future Devies USB Device 아이콘
을 클릭하여 재인식 시킨다.
이때 VMware Player에서 윈도우로 탈출하려면 키보드의 ctrl + Alt를 동시에 눌러
야 한다.
5. 컴파일 및 설치 테스트
터미널을 실행 시킨다. ( 현재 터미널이 실행되어 있으면, 현재의 터미널에서 수행
한다.)
TinyOS 어플리케이션을 컴파일하고 UBee430에 다운로드 한다.
$ cd /opt/opt/tinyos-2.x/apps/tests/TestSerial
$ make UBee430 install
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 32
33. UBee430TM Programming Guide
자바 프로그램 실행 테스트
$ java net.tinyos.tools.Listen -comm serial@/dev/ttyUSB0:UBee430
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 33
34. UBee430TM Programming Guide
III. 컴파일
어플리케이션을 작성하여, 사용하기 위해서 컴파일을 해주어야 한다. 이번 챕터에서
는 작성한 어플리케이션을 컴파일하고, 모트에 설치하는 방법을 다루고자 한다.
1. 컴파일 및 인스톨 방법
TinyOS에서는 make를 명령을 사용하여 컴파일과 mote에 설치하는 작업을 수행한
다. 아래에 자주 사용되는 make 명령을 예로 들었다.
make [ 플랫폼 이름 ] [ 옵션 ]
make UBee430 컴파일
make UBee430 install 컴파일 후 설치
make UBee430 reinstall 컴파일 없이 재설치
make clean 컴파일 결과들을 삭제
make UBee430 reinstall,1 mote의 ID를 1로 하여 재설치
make UBee430 bsl,6 reinstall COM7에 연결된 mote에 재설치
make UBee430 docs NesC 문서를 생성 ( html 파일 )
Null 어플리케이션을 컴파일하고 설치해보자. 우선 Null 어플리케이션 디렉터리로 이
동한다. 그리고 어플리케이션을 컴파일 하기 위해 필요한 3가지 파일이 있는지 확
인한다. make 명령을 사용하여 컴파일을 후, 모트로 프로그램을 다운로드한다.
$ cd /opt/tinyos-2.x/apps/Null
$ ls ..................................................... ① 파일확 인
Makefile NullAppC.nc NullC.nc
$ make UBee430 install .................... ② 컴파 일 후 인 스톨
mkdir -p build/UBee430
compiling NullAppC to a UBee430 binary
ncc -o build/UBee430/main.exe -Os -O -mdisable-hwmul -Wall -Wshadow
-DDEF_TOS_AM_GROUP=0x7d -Wnesc-all -target=UBee430
-fnesc-cfile=build/UBee430/app.c -board= -DIDENT_PROGRAM_NAME=₩"NullAppC₩"
-DIDENT_USER_ID=₩"이정주₩" -DIDENT_HOSTNAME=₩"nautes₩"
-DIDENT_USER_HASH=0xbcec09c4L -DIDENT_UNIX_TIME=0x46d4c282L -DIDENT_UID
_HASH=0xf759d9b3L NullAppC.nc -lm
compiled NullAppC to build/UBee430/main.exe
1418 bytes in ROM
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 34
35. UBee430TM Programming Guide
4 bytes in RAM
msp430-objcopy --output-target=ihex build/UBee430/main.exe build/UBee430/main.ih
ex
writing TOS image
cp build/UBee430/main.ihex build/UBee430/main.ihex.out
found mote on COM7 (using bsl,auto)
installing UBee430 binary using bsl
tos-bsl --telosb -c 6 -r -e -I -p build/UBee430/main.ihex.out
MSP430 Bootstrap Loader Version: 1.39-telos-8
Mass Erase...
Transmit default password ...
Invoking BSL...
Transmit default password ...
Current bootstrap loader version: 1.61 (Device ID: f16c)
Changing baudrate to 38400 ...
Program ...
1450 bytes programmed.
Reset device ...
rm -f build/UBee430/main.exe.out build/UBee430/main.ihex.out
정상적으로 컴파일이 되고, 장치 설정이 정상적으로 되어있다면, 위와 같은 메시지
를 볼 수 있을 것이다.
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 35
36. UBee430TM Programming Guide
IV. Tutorial
번역 과정에서 오역이 있을 수 있으니 원문 Tutorial을 참고 하시길 바랍니다.
본 tutorial은 원문 tutorial을 UBee430에 맞추어 재구성 한 번역본입니다. 번역 과정에서 삭제
및 추가한 부분이 있습니다. 이점 참고 바랍니다.
1. Lesson 1: Getting Started with TinyOS and nesC
소개
이번 lesson에서는 TinyOS 프로그램을 컴파일하고 mote에 설치하는 방법에 대해 설
명 한다. 그리고 TinyOS 컴포넌트 모델의 기본적인 개념과 구문(syntax)에 대해 소개
한다. 또한 TinyOS의 소스 코드 문서를 생성하고 찾는(navigate) 방법에 대해 설명 한
다.
컴파일과 설치
첫 번째 연습으로써 매우 간단한 TinyOS 어플리케이션인 Blink를 컴파일하고 설치해
볼 것이다. mote 하드웨어가 없다면, TinyOS 시뮬레이터인 TOSSIM을 위해 컴파일을
하면 된다.
TinyOS 어플리케이션은 make 프로그램을 사용하여 컴파일 한다. TinyOS는 강력하고
확장성 있는 make system을 사용함으로써 새로운 플랫폼이나 컴파일 옵션을 쉽게 추
가 할 수 있다. make system 정의는 /opt/tinyos-2.x/support/make에 위치해 있다.
첫 번째 단계로 TinyOS 환경이 올바르게 셋업이 되었는지 체크해야 한다.
tos-check-env 명령을 실행 시킨다.
$ tos-check-env
이 스크립트는 TinyOS 환경에서 필요로 하는 모든 것을 체크한다. 정상적으로 설치되
었다면, tos-check-env 실행 후, 아래 문구를 볼 수 있다.
tos-check-env completed without error.
UNIX 환경에 익숙하다면 대부분의 경고들은 여기서 따로 설명할 필요가 없을 것이다.
경고들로 문제를 겪는다면 이메일 리스트에 가입해서 질문하기를 권장한다. 문제를 겪
SOC・Embedded System・Ubiquitous Sensor Network・ARM
CopyrightⒸ Huins All rights reserved. 36