이번에는 본격적으로 지그비 통신을 활용하여 무선통신을 실습해보도록 하겠다. 아직 지그비 통신에 대한 정확한 개념을 잡지 못했다면 전에 포스팅한 글을 꼭 참고하기 바란다. 실습에서는 지그비 설정 툴인 X-CTU에 대한 사용법을 숙달하고 컴퓨터 상에서 간단하게 통신을 테스트해본 뒤에 아두이노 2개를 가지고 서로 데이터를 주고받아보는 순으로 진행할 것이다. 또한 지그비 검색 결과 XBee S1 모듈에 대한 예제들은 많이 있었지만 S2 모듈 설정에 대한 글은 찾기가 매우 힘들었다. 따라서 여기서는 미약하나마 도움이 될 수 있도록 S2 모듈을 가지고 진행하려고 한다.



1. 지그비 통신 준비


- XCTU 프로그램

XCTU 프로그램은 XBee 모듈을 다루고 설정하기 위해 필수로 필요한 소프트웨어이다. XBee 모듈에 대한 ID, CH 등을 설정하고 테스트할 수 있는 환경을 제공해주며 최근 1~2년 사이에 새로 업데이트 되면서 UI 부분이 많이 바뀌었다. 전 버전과 동일한 기능을 수행할 수 있으므로 이번 실습에서는 최신 버전의 프로그램을 사용하도록 한다.

다운로드 : http://www.digi.com/products/xbee-rf-solutions/xctu-software/xctu 


- XBee S2 모듈

안테나 유무나 PRO 등에 관계없이 S2 모듈이기만 하면 상관없다.


- 아두이노


- XBee Breakout 보드

XBee 모듈은 소형으로 제작되어 핀 배열이 좁기 때문에 활용하기 힘들다. 따라서 아두이노로 간단하게 사용할 수 있도록 위와 같은 보드가 필요하다.


- XBee FTDI 보드(인터페이스 보드)

모듈을 설정하기위해 필요한 인터페이스보드. 소켓 헤더와 led, USB 2 Serial 보드를 내장하고 있으며 제조사마다 다양한 제품이 있으므로 어떤 것을 사용해도 무방하다. 만약 아두이노 XBee 쉴드가 있다면 굳이 필요는 없지만 정신건강을 위해 하나 사는 것을 추천한다. 간단한 테스트환경을 제공해주며 안정된 통신을 보장한다.



2. XCTU 프로그램 설정


아래 화면은 XCTU 프로그램의 메인화면으로 왼쪽 상단의 Add devices 버튼을 클릭하면 XBee 모듈을 추가할 수 있다.



버튼을 클릭하면 현재 컴퓨터에 연결된 디바이스 정보가 표시된다. 해당하는 포트 선택후 아래 옵션은 그대로 놔둔채 Finish 버튼을 클릭한다.



성공적으로 XBee 모듈을 불러왔다면 불러온 모듈을 한번 클릭해주자. 그러면 해당하는 모듈의 다양한 정보가 표시될 것이며 설정된 값을 수정할 수 있다.



먼저 설정페이지 상단을 살펴보자. 여러개의 버튼 밑에 모듈 정보가 표시되는게 보일 것이다. 이는 각각 연결된 XBee 모듈의 명칭과 네트워크 역할, 펌웨어 버전을 의미하며 여기서 가장 중요한 것이 바로 네트워크 역할을 의미하는 Function set 이다. 앞서 지그비 개념 관련 포스팅에서 언급했던 네트워크 토폴로지의 개념이 여기서 적용되는 것으로 사용자는 이 부분을 변경함으로서 Star, Mesh 등 자신의 네트워크 환경에 적합한 토폴로지를 구축할 수 있다. Zigbee 통신에서 설정할 수 있는 Function set은 대표적으로 3가지가 있으며 서로 다른 역할을 하게 된다.


 Coordinator

  네트워크의 구성 및 보안을 담당하며 라우팅 구축을 지원해준다.

 Router

  거리가 멀어 직접 통신할 수 없는 노드 사이에서 데이터를 전달해주는 역할을 한다. 

 End Device

  데이터를 수집하거나 간단한 제어를 담당하며 수집된 정보를 전송해준다.



변경 방법은 상단 버튼 중 Update 버튼을 클릭하여 진행할 수 있으며 여기서 AT 모드, API 모드 설정과 함께 해당하는 최신 펌웨어 업데이트를 동시에 할 수 있다.


모듈의 기본적인 설정이 완료되었다면 이제 설정 페이지 밑의 다양한 항목들을 확인해보자. XCTU 프로그램은 지그비 통신의 주소, 접속, 제어 등을 처리하기 위한 여러가지 구성 설정을 제공해준다. 이를 통해 사용자는 모뎀 구성, 통신 테스트, 루프백 등으로 활용할 수 있다. 자세한 설정 방법이나 명령어들은 XBee 매뉴얼을 참고하기를 바라며 여기서는 중요한 설정값 몇개만 살펴보도록 하겠다.


CH

  지그비 통신의 2.4GHz의 대역내에서 동작 주파수 채널을 설정할 수 있는 항목이다. XBee 모듈

  서는 통신할 모듈끼리 채널이 같아야하기 때문에 중요한 지표이지만 S2 모듈의 경우에는 같지않 

  아도 통신이 가능하 설정값 또한 변경할 수 없다.

ID

  실질적인 네트워크 ID를 설정할 수 있는 항목을 지칭하며 이부분을 다르게 설정함으로서 각각의

  네트워크를 구별하는데 활용할 수 있다. 

DH, DL

  데이터가 전송되는 목적지 주소를 나타내며 데이터 전송 노드를 정의하기 위해 사용된다.

SH, SL

  XBee 모듈 고유의 시리얼 넘버를 말하며 수정할 수 없다. DH, DL과 같이 쓰인다.

MY

  노드 자체의 주소(나의 주소)를 설정하는 항목이다.



3. 테스트 환경 구축


그럼 이제 XBee 모듈 2개를 서로 다르게 설정하여 지그비 통신할 수 있도록 해보자. 모듈이 2개이므로 간단한 Peer to Peer 토폴로지로 네트워크를 구축할 것이며 하나는 기본 노드인 Coordinator AT로 설정하고 다른 하나는 Router AT로 구성하도록 한다. 앞서 언급했던 것 처럼 Update 버튼을 통해 설정할 수 있으며 펌웨어는 최신버전으로 업데이트 하도록 한다. 또한 2개의 모듈이 서로 통신할 수 있도록 다음과 같이 설정값을 변경하고 Write 해야 한다.


 

 Coodinator

Router 

 ID

 1234

1234

 DH

Router의 SL 값

Coordinator의 SH 값

 DL

Router의 SH 값

Coordinator의 SL 값


위와 같이 Coordinator와 Router의 DH, DL을 맞춰주면 2개의 노드가 오직 서로만 통신하게 된다. 이렇게 되면 설정은 모두 완료되었다. 만약 XBee 인터페이스 보드 혹은 아두이노 쉴드가 2개 있다면 설정된 모듈을 모두 연결하여 간단하게 통신이 정상적으로 되는지 테스트 해보자. 프로그램 상단 오른쪽에 터미널 모양의 버튼을 클릭하고 두 개의 모듈을 모두 Open 한다. 



그리고 콘솔에 글자를 입력하게 되면 정상적으로 데이터 송신과 수신이 되고 있음을 알 수 있다. 만약 테스트가 성공적이라면 이제 설정은 모두 완료되었다. 이제 우리는 Peer to Peer 토폴로지를 활용하는 모든 프로젝트에서 본 XBee 모듈을 활용할 수 있다.



4. 지그비 통신 실습


그러면 이제 배운 것들을 토대로 아두이노간의 지그비 무선 통신 실습을 진행해보도록 하자. 사실 실습이라 하기에는 그저 간단한 테스트에 불과하지만 성공한다면 이를 응용하여 할 수 있는 것들이 매우 다양해질 것이다. 회로는 아두이노 2개를 각각 다음과 같이 구성하도록 하며 지그비 모듈은 전원이 3.3V에서 동작하도록 설계되어 있으므로 5V 전원 인가시 고장날 수 있기 때문에 이 점에 유의해서 연결하도록 한다.


코드는 심플하다. 송신부에서는 1초마다 A 문자를 전송하며 수신부에서는 문자를 받을때 마다 조건 판별후 테스트 성공 문자를 시리얼 모니터에 출력하는 방식이다. 



1
2
3
4
5
6
7
8
9
10
11
12
// Node1_지그비 송신 코드
 
#include <SoftwareSerial.h>
SoftwareSerial xbee(23); 
 
void setup() {
xbee.begin(9600); 
}
void loop() {
xbee.print('A');
delay(1000);
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Node2_지그비 수신 코드
 
#include <SoftwareSerial.h>
SoftwareSerial xbee(23); 
 
void setup() {
Serial.begin(9600);
xbee.begin(9600); 
}
void loop() {
if(xbee.available()){
  char data = xbee.read();
  if(data == 'A'
    Serial.print("Zigbee test OK!"); 
  }
}
cs


이로서 지그비 통신에 대한 개념 포스팅을 모두 마친다. 내용이 부실하고 미흡하지만 그래도 필요로하는 사람들에게 도움이 되길 바라는 바이다. 다음에는 라즈베리파이와 아두이노를 지그비로 연결한 스마트홈 구축을 주제로 포스팅해볼 예정이며 후에 시간이 가능하다면 지그비 통신의 API 모드 설정법과 활용 방안에 대해서도 글을 올려보고 싶다.



'Electronic > Arduino' 카테고리의 다른 글

XBee 모듈 정보 및 종류  (0) 2016.01.17
지그비 통신의 개념 (네트워크의 이해)  (8) 2016.01.16
[Galileo] 초음파센서 사용하기  (0) 2016.01.08