Waspmote ZigBee Networking Guide
XBee 모듈 정보 및 종류
XBee 모듈 종류
XBee 모듈은 크게 Series1과 Series2 두 종류로 나눌 수 있다. 두 시리즈 제품은 기본적으로 동일한 특징들을 많이 가지고 있지만 몇 가지에서 서로 다른 차이점을 보이는 데 먼저 S1 같은 경우에는 별도의 설정이 필요하지 않기 때문에 즉시에 사용할 수 있다는 편리성이 있으며 IEE 802.15.4 프로토콜을 사용한다. 이 프로토콜은 무선 개인 영역 네트워크로 노드 사이의 데이터 처리를 1초당 250kbps까지 제공하는 특징이 있다. 또한 네트워크 토폴로지의 경우에는 P2P 또는 스타 네트워크 사용이 가능하다. 반면에 S2의 경우에는 802.15.4 프로토콜에 네트워크 계층과 응용 계층을 더 추가한 지그비 프로토콜을 지원한다. 이로 인해 초기에 사용하기 위해서는 별도의 설정이 필요하며 더 적은 전력으로 사용할 수 있고 추가적인 기능과 네트워크 사용이 가능하다.
구분 | Series1 | Series2 |
---|---|---|
형태 | ||
통신규약 | IEEE 802.15.4 | Zigbee |
토폴로지 | ||
실내 통신거리 | 30m | 40m |
실외 통신거리 | 100m | 120m |
공급전압 | 2.8~3.4V | 2.8~3.6V |
공급전류 | 45mA | 40mA |
통신종류 | 일대일 통신, 스타방식 통신 | 일대일 통신, 스타방식 통신, 메쉬네트워크, 멀티 홉 통신 |
XBee 모듈은 일반 모듈과 프로 모듈로도 구분할 수 있다. 두 모듈의 차이는 크기와 무선전력의 차이가 있으며 작동과 기능은 거의 동일하다고 볼 수 있다. 프로 모듈의 경우 일반 모듈보다 크기가 크고 소비전력을 많이 소비하며 그만큼 더 먼 거리까지의 통신을 지원한다.
마지막으로 XBee 모듈은 안테나를 통해서도 구분할 수 있는데 사실 안테나 종류에 따른 다양한 모델들이 있긴 하지지만 성능을 따져봤을 때 큰 의미는 없다. 즉 어떤 제품이든지 간에 잘 동작한다는 소리이다. 물론 안테나 유무에 따라서 신호의 세기를 감지하는 패턴이 달라지기 때문에 사용 용도에 따라 구분할 수 있겠지만 이 또한 그다지 큰 성능 향상을 기대하기 힘들다. 따라서 이 부분은 개인의 취향대로 구매하면 될 듯하다.
XBee 통신 모드
XBee모듈은 AT모드와 API모드를 모두 지원한다. 먼저 AT모드의 경우 전달 모드(Transpatent)라고도 불리며 간단하게 메시지 데이터를 보내고 받을 수 있다. 쉽게 말해 RX와 TX를 통해 데이터를 주고받는 직렬 데이터의 단순한 전송과 수신이 가능해진다. 따라서 별도의 프로그래밍이나 패키지화가 필요하지 않으며 간단하게 무선 통신을 진행할 수 있다는 장점이 있다. 반면에 API모드의 경우에는 AT모드에서 주고받는 직렬 데이터뿐만 아니라 도착 주소, 패킷 형태, 신호 강도 등의 정보를 같이 패키지화하여 전송한다. 이는 사용자가 필요로 하는 다양한 정보를 설정을 통해 데이터와 함께 보낼 수 있는 개념으로 각 노드간에 유연성있고 다이나믹한 통신망을 구축할 수 있게 해주며 상화에 따라 신뢰성 또한 크게 향상시킬 수 있게 해준다.
두 노드간 서로 통신을 설정할 때는 양측이 모두 같은 모드일 필요는 없으며 API 모드에서 AT모드로 데이터 전송이 가능하고 그 반대도 가능하다. 모드는 XBee 모듈 사이에서 결정하는 것이 아니라 메인 컨트롤러와 XBee 모뎀 사이의 연결을 정의하는 것이기 때문이다.
XBee 핀 배치
1) DOUT/DIN
직렬데이터 송수신 핀. 이 데이터는 XBee의 환경 설정을 설정하고 읽을 수 있으며 기본 데이터 속도는 비동기 직렬 통신을 사용하여 9600baud이다.
2) CTS/RTS/DTR
일반적으로 XBee 모듈에 펌웨어 업데이트를 다운로드할 때 사용되며 오직 Serial 통신을 활용한 XBee 어댑터 보드를 사용할 때만 동작한다.
3) DIO
표준 3.3V 디지털 입력 및 출력으로 사용되며 핀의 상태의 설정을 조절할 수 있다.
4) AD
10비트의 아날로그를 디지털로 변환하여 XBee에 입력하는 역할을 하며 값을 읽을 수는 없지만 전압의 양(PWM)으로 나타낼 수 있다.
5) RSSI
PWM 출력으로 수신된 신호의 강도를 확인할 수 있다.
6) PWM
아날로그 출력에 사용할 수 있는 10비트 펄스 폭 변조 출력을 위해 설정 할 수 있다.
7) ASSOC
XBee가 기존의 네트워크에 가입할 수 있도록 설정하고 할당할 수 있는 매개 변수 이다.
Pin# | Name | Direction | Description |
---|---|---|---|
1 | VCC | - | Power supply |
2 | DOUT | Output | UART Data Out |
3 | DIN/CONFIG | Input | UART Data In |
4 | DO8* | Output | Digital Output 8 |
5 | RESET | Input | Module Reset(reset pulse must be at least 200 ns) |
6 | PWM0/RSSI | Output | PWM output 0 / RX Signal Strength Indicator |
7 | PWM1 | Output | PWM Output 1 |
8 | [reserved] | - | Do not connect |
9 | DTR/SLEEP_RQ/DI8 | Input | Pin Sleep Control Line or Digital Input 8 |
10 | GND | - | Ground |
11 | AD4/DIO4 | Either | Analog Input 4 or Digital I/O 4 |
12 | CTS/DIO7 | Either | Clear-to-Send Flow Control or Digital I/O 7 |
13 | ON/SLEEP | Output | Module Status Indicator |
14 | VREF | Input | Voltage Reference for A/D Inputs |
15 | Associate/AD6/DIO5 | Either | Associated Indicator, Analog Input 5 or Digital I/O 6 |
16 | RTS/AD6/DIO6 | Either | Request-to-Send Flow Control, Analog Input 6 Digital I/O 6 |
17 | AD3/DIO3 | Either | Analog Input 3 of Digital I/O 3 |
18 | AD2/DIO2 | Either | Analog Input 2 of Digital I/O 2 |
19 | AD1/DIO | Either | Analog Input 1 of Digital I/O 1 |
20 | AD0/DIO0 | Either | Analog Input 0 of Digital I/O 0 |
출처: http://creamp.tistory.com/15
지그비 무선 통신하기
지그비 통신 준비
-XCTU 프로그램
XCTU 프로그램은 XBee 모듈을 다루고 설정하기 위해 필수로 필요한 소프트웨어이다. XBee 모듈에 대한 ID, CH 등을 설정하고 테스트할 수 있는 환경을 제공해주며 최근 1~2년 사이에 새로 업데이트 되면서 UI 부분이 많이 바뀌었다. 전 버전과 동일한 기능을 수행할 수 있으므로 이번 실습에서는 최신 버전의 프로그램을 사용하도록 한다.
다운로드 :https://www.digi.com/products/xbee-rf-solutions/xctu-software/xctu#productsupport-utilities
XCTU 설치
Linux
XCTU v. 6.3.10 Linux x64 => Download
다음과 같은 파일을 다운로드하면 40002881_K.run 이라는 파일이 생기게 됩니다.
# 실행시킬 수 있게 권한 주기
chmod a+x 40002881.run
#설치
./40002881.run
1. Welcome to the XCTU setup Wizard => Next
2. License Agreement => I accept the agreement => Next
3. Linux selection path info => Next
4. Installation Directory => /opt/gopath/src/github.com/hyperledger => Next
5. Ready yo install => Next
6. Installing
7. Problem running post-install step. Installation may not complete correctly Error writing file /home/hyper/Desktop/XCTU.desktop
8. Completing the X CTU Setup Wizard => Finish
9. Launch XCTU
Device 추가하기
1. 빨간색으로 표시된 아이콘을 클릭합니다.(Add devices)
2. Add a radio module
위의 버튼을 누르면 뜨는 창이다. 현재 포트에 연결된 장치들이 뜬다.
아래 옵션에서는 통신 대역폭, 비트, 패리티비트 등 여러가지 설정을 할 수 있지만 신경쓰지 않고 Finish를 누르면 검색과정을 거쳐 목록에 추가 된다.
3. Action required
Finish버튼을 누르고 모듈을 추가하는 과정에서 다음과 같은 오류창이 뜰 수 도 있는데, 사용해보니 아두이노에 다른 코드가 업로드된 상태일 때 이런 오류창이 떴다.
아두이노에 업로드 된 코드를 초기화하고 올리면 창이 뜨지 않는다.(다른 이유도 있을 수 있겠지만 아직까지는 사용과정에서 발견하지 못했다)
소개(Introduction)
이 가이드는 XBee ZigBee의 특징 및 기능을 설명합니다. 이 제품은 Waspmote v12 용으로 설계되었으며 Waspmote v15는 계속 변경되지 않습니다. 2016 년 10 월에 출시 된 새 제품 라인 Waspmote v15에 대한이 라이브러리에는 큰 차이가 없습니다.
어쨌든 이전 버전의 제품을 사용하는 경우 개발 가이드 웹 사이트에있는 해당 안내서를 사용하십시오.
세대 변경에 대한 더 자세한 정보는 "새로운 세대의 Libelium 제품 라인"문서에서 얻을 수 있습니다.
하드웨어(Hardware)
Module | Frequency | Transmission Power | Sensitivity | Number of channels | Range* |
---|---|---|---|---|---|
XBee-PRO ZigBee | 2.40 - 2.47 GHz | 17 dBm | -102 dBm | 14 | 3200m |
* 범위를 결정하려면 작동 조건에서 범위 테스트를 수행하십시오
참고 : 2014 년 2 월부터 Libelium은 Standard 또는 Normal 버전에서 XBee ZigBee 무선 모듈을 더 이상 제공하지 않습니다. 이 날짜부터 XBee ZigBee는 PRO 버전에서만 제공됩니다. 표준 버전은 출력 전력 레벨이 낮고 감도가 더 낮습니다. 반면 표준 버전은 더 많은 채널 (16)에서 방사 할 수 있습니다. 기본적으로 두 버전 모두 동일한 방식으로 작동하므로이 안내서는 표준 버전 사용자에게 여전히 유용합니다.
ZigBee는 IEEE 802.15.5 링크 계층에서 지원되므로 이전 섹션에서 설명한 것과 동일한 채널을 사용하며 XBee-ZB-PRO 모델은 채널 수를 14로 제한합니다. XBee-ZB 모듈은 ZigBee-PRO v2007 표준을 준수합니다. 이 모듈은 ZigBee가 제공 한 기능에 다음과 같은 특정 기능을 추가합니다.
- 노드 탐색(Node discovery) : 동일한 네트워크 내의 다른 노드를 검색 할 수 있도록 일부 머리글이 추가됩니다. 이는 노드 발견 메시지가 전송되도록하여 나머지 네트워크 노드가 자신의 특정 정보를 나타내는 응답을합니다(노드 식별자, @MAC, @ 16 비트, RSSI).
- 중복 패킷 탐지(Duplicated packet detection): 이 기능은 표준에서 설정되지 않고 XBee 모듈에 의해 추가됩니다.
일반 고려사항( General Considerations )
Waspmote Libraries
Waspmote XBee Files
WaspXBeeCore.h, WaspXBeeCore.cpp, WaspXBeeZB.h, WaspXBeeZB.cpp
이 모듈을 사용할 때는 Xbee ZB 라이브러리를 포함시켜야합니다. 코드 시작 부분에 다음 줄을 삽입해야합니다.
#include <WaspXBeeZB.h>
Constructor
Waspmote XBee 라이브러리를 사용하려면 'WaspXBeeZB'클래스의 개체를 만들어야합니다. xbeeZB라는이 객체는 Waspmote XBee 라이브러리 내에 생성되며 모든 라이브러리에 공개됩니다. 가이드를 통해 Waspmote XBee 라이브러리의 작동 방식을 보여줍니다. 이 생성자를 만들 때 일부 변수는 기본적으로 값으로 정의됩니다.
API Functions
이 가이드를 통해 매개 변수를 사용하는 많은 예제가 있습니다. 이 예제에서 API 함수는 명령을 실행하기 위해 호출되며 관련 변수에 각 경우에 매개 변수 값을 저장합니다.
사용예
{
xbeeZB.getOwnMacLow (); // MAC 주소의 하위 32 비트 가져 오기
xbeeZB.getOwnMacHigh (); // MAC 주소의 상위 32 비트 가져 오기
}
관련 변수
xbeeZB.sourceMacHigh [0-3] → MAC 주소의 상위 32 비트 저장
xbeeZB.sourceMacLow [0-3] → MAC 주소의 하위 32 비트 저장
'xbeeZB.getOwnMacLow'에서 돌아오면 관련 변수 'xbeeZB.sourceMacLow'가 적절한 값으로 채워집니다. 함수를 호출하기 전에 관련 변수가 만들어 지지만 비어 있습니다. 거의 모든 함수는 관련된 변수를 가지고 있으며 함수가 설명될 때 표시됩니다.
함수가 실행될 때 채워지는 세 가지 오류 플래그가 있습니다.
- error_AT : AT 명령 기능 실행 중 오류가 발생했는지 여부를 저장합니다.
- error_RX : 패킷 수신 중 에러가 발생 하였는지를 저장한다.
- error_TX : 패킷 전송 중에 오류가 발생했는지 여부를 저장합니다.
모든 함수는 호출 된 함수가 성공했는지 여부를 알기위한 플래그를 반환합니다. 이 플래그에 사용할 수있는 값 :
- 0 : 성공. 함수가 오류없이 실행되었고 변수가 채워졌습니다.
- 1 : 오류. 함수가 실행되었지만 실행 중 오류가 발생했습니다.
- 2 : 실행되지 않습니다. 함수를 실행하기 전에 오류가 발생했습니다.
- -1 :이 모듈에서는 기능을 사용할 수 없습니다.
전원을 껐다 켠 후에 매개 변수 변경 사항을 저장하려면 writeValues() 함수를 실행해야합니다.
사용예
{
xbeeZB.writeValues(); // Keep values after rebooting
}
API extension
모든 XBee 명령을 트랜시버에 직접 보낼 수 있지만 관련되고 유용한 모든 기능이 Waspmote API에 포함되었습니다.
사용 예
{
xbeeZB.sendCommandAT ( "CH #"); // ATCH 명령을 실행합니다.
}
관련 변수
xbeeZB.commandAT [0-99] → 모듈에 의해 주어진 응답을 최대 100 바이트로 저장합니다.
명령 보내기 예 :
http://www.libelium.com/development/waspmote/examples/zb-13-send-atcommand
Waspmote reboot
Waspmote가 다시 부팅되면 응용 프로그램 코드가 다시 시작되어 처음부터 모든 변수와 객체가 만들어집니다.
Constants pre-defined
'WaspXBeeCore.h'라는 파일에 미리 정의 된 상수가 있습니다. 이 상수는 최대 데이터 크기와 같은 일부 매개 변수를 정의합니다. 가장 중요한 상수는 다음에 설명됩니다.
- MAX_DATA : (기본값은 300) 패킷에 사용할 수있는 최대 데이터 크기를 정의합니다. 이 상수는 각 패킷에서 데이터가 전송되는 것과 같거나 커야합니다. 이 크기는 1500보다 커야합니다.
- MAX_PARSE : (기본값은 300) treatData ()에 대한 각 호출에서 파싱되는 최대 데이터를 정의합니다. 더 많은 데이터가 수신되면 treatData ()에 대한 다음 호출이있을 때까지 UART 버퍼에 저장됩니다. 그러나 UART 버퍼가 가득차면 다음 데이터가 버퍼에 기록되므로 이 문제에주의하십시오.
- MAX_BROTHERS : (기본값은 5) 저장 될 수있는 형제의 최대 수를 정의합니다.
초기화( Initialization )
모듈을 사용하기 전에 초기화해야합니다. 이 과정에서 모듈과 통신 할 UART가 열리고 XBee 스위치가 켜져 있어야합니다.
Setting ON
ON() 함수는 모든 전역 변수를 초기화하고 해당 UART를 열고 XBee를 ON으로 전환합니다. UART를 여는 데 사용되는 보오율은 라이브러리에서 정의됩니다 (기본적으로 115200bps).
그것은 아무것도 반환하지 않습니다.
초기화 된 변수는 다음과 같습니다.
- protocol : 사용된 프로토콜을 지정합니다(이 경우 ZIGBEE).
- pos : 수신 된 패킷에서 사용할 위치를 지정합니다.
- discoveryOptions : 노드 검색의 옵션을 지정합니다.
- awakeTime : 잠자기 전에 깨어있는 시간을 지정합니다.
- sleepTime : 잠자기 시간을 지정합니다.
- scanChannels : 검사 할 채널을 지정합니다.
- scanTime : 각 채널을 검색 할 시간을 지정합니다.
- timeEnergyChannel : 채널을 검색 할 시간을 지정합니다.
- encryptMode : 암호화 모드가 활성화되었는지 여부를 지정합니다.
- powerLevel : 동력 전달 수준을 지정합니다.
- timeRSSI : RSSI LED가 켜지는 시간을 지정합니다.
- sleepOptions : 잠자기 옵션을 지정합니다.
- parentNA : 부모의 주소를 지정합니다.
- deviceType : 장치 유형을 지정합니다.
- extendedPAN : 확장 PAN ID를 지정합니다.
- maxUnicastHops : 유니 캐스트 전송의 최대 홉 수를 지정합니다.
- maxBroadcastHops : 브로드 캐스트 전송의 최대 홉 수를 지정합니다
- stackProfile : 사용 된 ZigBee 프로토콜 스택을 지정합니다.
- joinTime : 코디네이터가 네트워크 참여 노드를 허용하는 시간을 지정합니다.
- channelVerification : 라우터가 네트워크에서 유지 관리 코디네이터를 필요로하는지 여부를 지정합니다.
- joinNotification : 노드가 네트워크에 참여할 때 메시지가 전송되도록 지정합니다.
- aggregateNotification : 연속적인 총 경로 브로드 캐스트 메시지 사이의 시간을 지정합니다.
- encryptOptions : 암호화 모드에 대한 옵션을 지정합니다.
- networkKey : 네트워크 키를 지정합니다.
- powerMode : 사용 된 전원 모드를 지정합니다.
사용 예
{
xbeeZB.ON ();
}
확장 라디오 보드 (XBee ZigBee)
확장 보드를 사용하면 Waspmote 센서 플랫폼에서 두 개의 통신 모듈을 동시에 연결할 수 있습니다. 이는 Waspmote에서 사용할 수있는 무선 라디오를 사용하여 여러 가지 조합이 가능하다는 것을 의미합니다. 802.15.4, ZigBee, DigiMesh, 868MHz, 900MHz, LoRa, WiFi, GPRS, GPRS + GPS, 3G, 4G, Sigfox, LoRaWAN , 블루투스 프로, 블루투스 저에너지 및 RFID / NFC. 또한 RS-485 / Modbus, RS-232 직렬 / Modbus 및 CAN 버스와 같은 산업용 프로토콜 모듈을 사용할 수 있습니다.
가능한 조합은 다음과 같습니다.
- LoRaWAN - GPRS
- 802.15.4 - Sigfox
- 868MHz - RS-485
- RS-232 - WiFi
- DigiMesh - 4G
- RS-232 - RFID / NFC
- WiFi - 3G
- CAN bus - 블루투스
- etc.
참고 : GPRS, GPRS + GPS, 3G 및 4G 모듈은 확장 보드가 Waspmote에 연결될 필요가 없습니다. 소켓 1에 직접 꽂을 수 있습니다.
다음 사진에서 할당 된 UART와 함께 사용할 수있는 소켓을 볼 수 있습니다.
한편, SOCKET0은 UART0을 통해 모든 종류의 무선 모듈을 연결합니다. 반면, SOCKET1은 UART1을 통해 무선 모듈을 연결할 수 있습니다.
Setting OFF
OFF () 함수는 UART를 닫고 XBee를 끕니다.
사용 예
{
xbeeZB.OFF();
}
지그비, Wi-Fi, 블루투스 비교
ZigBee | Wi-Fi | Bluetooth | |
Application | Monitoring and Control | Email, Web, Video | Cable replacement |
Physical/ MAC layers | IEEE 802.15.4 | IEEE 802.11 | IEEE 802.15.1 |
Data Rate | 250 Kbits/s | 11 & 54 Mbits/sec | 1 Mbits/s |
Range | 10-100 meters | 50-100 meters | 10 meters |
Networking Topology | Mesh | Point to hub | Ad-hoc, very small networks |
Operating Frequency | 2.4 GHz | 2.4 and 5 GHz | 2.4 GHz |
Complexity (Device and application impact) | Low | High | High |
Power Consumption | low | High | Medium |
Number of devices for Network | 64K | 액세스 포인트 당 32 개 | 7 |
Network Latency
New slave enumeration |
30 ms | - | 20 sec |
Network Latency
Sleeping slave changing to active |
기기는 30ms 이내에 기존 네트워크에 조인 할 수 있습니다. | 기기 연결에는 3-5 초가 필요 | 기기 연결에는 최대 10 초가 필요 |
Typical Applications | Industrial control and monitoring, sensor networks, building automation, home control and automation, toys, games | Wireless LAN connectivity, broadband Internet access | Wireless connectivity between devices such as phones, PDA, laptops, headsets |
'IT > IoT' 카테고리의 다른 글
Waspmote 802.15.4 (0) | 2017.12.28 |
---|---|
Waspmote PRO v1.2 실습 (0) | 2017.12.28 |
Waspmote event-sensor-board 2.0 (0) | 2017.12.28 |
Waspmote-SD Examples (0) | 2017.12.28 |
Waspmote Quickstart Guide (0) | 2017.12.28 |