1. 무선통신기술

 스마트폰이 등장하면서 현 음악 시장과 오디오 시장을 혁신적으로 바꾼 것은 반박의 여지가 없는 사실이다. 1993년에 MPEG-1의 오디오 규격에 맞게 개발된 압축 포맷인 MP3가 등장하게 되면서 더 이상 LP나 CD로 음악을 듣는 것은 구시대적 이야기가 되어 버렸고 여기에 스마트폰이 개발되면서 음악 시장을 송두리째 바꾸어 버렸다. 때문에 이러한 시대적 흐름에 따라 음반 가게는 찾아보기 힘들게 되었고 CD또한 잘 팔리지 않았으며, CD 플레이어나 턴테이블 같은 오디오 장비는 고리타분한 골동품으로 가치가 떨어지게 되었다. 대신에 그 자리를 스마트폰 같은 기기들이 차지하면서 음악 감상을 단순한 취미 생활이 아니라 사람들 생활 속의 일부로 대중화시키게 되었다.

 이처럼 음악이 대중화되고 생활화 되면서 사람들은 손실 없는 아날로그의 고음질을 추구하기 보다는 조금 음질이 떨어지더라도 음악을 언제 어디서나 간편하게 들을 수 있는 편리함을 추구하는 방향으로 수요가 변화하게 되었는데 이러한 흐름이 지속되면서 ‘무선통신’ 기술이 발전하게 되는 계기를 마련해주었다. 실제로 아래 통계를 살펴보면 무선통신기술을 활용한 오디오 시장이 기존의 스피커나 이어폰 시장보다 훨씬 커졌다는 사실을 알 수 있으며 또한 출하량과 사용 현황 그래프를 통해 예전에 LP나 CD에서 MP3로 트랜드가 변화한 것처럼 이제는 일반 오디오 장비에서 무선 기술을 활용한 시스템으로 사람들의 수요가 바뀌고 있음을 짐작할 수 있다.


Fig 1. 오디오 기기 시장 변화 추이


 그렇다면 무선통신기술이란 대체 무엇일까? 무선통신이란 이름 그대로 별다른 선 필요 없이 보다 음악을 편리하게 들을 수 있도록 해주는 것을 말한다. 단순히 스마트폰과 무선으로 연결해줄 수 있는 오디오 장비만으로도 간단하게 음악을 즐길 수 있게 되는 것이다. 이러한 기술은 비단 휴대성만 갖춘 것이 아니라 활용 가치 또한 매우 높다. 예를 들어 공연장에서 마이크나 악기에 무선통신기술을 적용하여 케이블 없이 공연을 할 수 있다는 것이나 여러 대의 스피커를 하나의 네트워크로 연결하여 같은 음악을 듣거나 각기 다른 음악을 듣는 등 음악이 필요한 모든 분야에 확장성 있게 적용 가능하다. 따라서 이러한 점들을 볼 때 무선통신분야는 앞으로 발전가능성이 무궁무진하며 하나의 트랜드로서 자리매김할 수 있을 것이라 기대해볼 수 있다.


2. 무선통신시스템 구조

 무선통신기술을 활용한 시스템은 통신 방법에 따라 차이가 있기는 하지만 기본적으로 다음과 같은 구성 요소를 공유한다. 먼저 오디오 소스란 오디오 신호를 포함하는 장치, 즉 음원을 저장하고 전송할 수 있는 스마트폰 같은 기기를 의미하며 오디오 송신부를 통해 신호를 무선으로 전송하게 된다. 다음으로 싱크 라고도 불리는 오디오 수신부가 전송된 신호를 수신하게 되고 이를 재생할 수 있는 재생장치로 전달함으로서 무선 오디오 전송이 완료된다.


Fig 2. 무선통신시스템 구조


 위 같은 구조의 가장 적절한 예가 바로 FM 라디오이며 비록 오디오 음질이 좋지는 않지만 전송 시스템이 비교적 간단하기 때문에 작은 송신기만으로도 신호를 전송할 수 있으며 전파가 도달하는 범위 이내라면 언제 어디서든지 수신기를 통해 신호를 들을 수 있다는 장점을 가진다.

Fig 3. FM라디오 구조


3. 무선통신기술 종류

▪ 블루투스 통신

 블루투스(Bluetooth) 통신은 본래 오디오 신호 전송이 아닌 근거리 데이터 통신을 위해 개발된 기술이다. 때문에 초기에는 이러한 물리적 기반을 바탕으로 무선 키보드나 마우스, 혹은 디바이스간 데이터 전송을 위해 사용되었으며 오디오 신호 전송과 관련해서는 HFP라는 휴대전화 통신간에 음성을 송수신할 수 있는 프로파일을 지원하였다. 하지만 이러한 부분은 단순한 음성 전달에 불과했으며 주파수 대역폭이 불과 8Khz로 제한되기 때문에 고음질의 오디오 전송을 위한 용도는 아니었다. 따라서 오디오에 대응할 수 있도록 만든 블루투스용 프로파일이 별도로 만들어지게 되었는데 이것이 바로 A2DP(Advanced Audio Distribution Profile) 이다.

 A2DP란 블루투스 통신의 대역폭 내에서 오디오 신호를 전송할 수 있도록 신호를 SBC(Sub Band Coding) 코덱을 통해 압축하여 보내는 프로파일을 의미하며 이렇게 보낸 신호는 오디오 수신부에서 다시 SBC 코덱을 통해 디코딩하여 소리를 재생시킬 수 있다. 비록 신호를 압축하는 과정에서 음질의 저하가 있지만 오디오 신호의 무선 전송을 가능하게 했기 때문에 스마트폰과 블루투스 스피커 및 헤드셋에 표준기능으로 적용되었다.


Fig 4. Source-Sink 간 블루투스 통신 과정


 그런데 사실 SBC 코덱은 다른 코덱에 비해 압축 효율이 뛰어나지 않으며 음질이 초창기 MP3 수준에 불과하여 비효율적인 요소가 많다. 또한 대역폭 자체가 좁아서 고역대의 소리를 제대로 전송하기 힘들다는 단점을 지닌다. 때문에 최근에는 보다 효율적인 압축 알고리즘을 활용한 애플의 AAC(Advanced Audio Coding)이나 소니의 LDAC가 대안으로 활용되고 있으며 이 가운데에서 오디오 대역폭을 늘리고 지연시간을 최소화한 CSR의 apt-X 코덱이 가장 대중적인 주목을 받고 있다.


Fig 5. apt-X Codec


 우리의 귀는 어느 한 주파수에서 큰 소리가 울릴 때, 이와 동시에 발생하는 주변 주파수의 약한 소리가 들리지 않는 특성을 가진다. 이를 마스킹 효과(Masking effect)라고 하는데 apt-X 코덱은 이와 같은 특성을 응용하여 마스킹되는 주파수의 정보를 삭제하여 데이터량을 줄일 수 있는 알고리즘을 토대로 구현되었다. 이는 결과적으로 보다 효율적인 데이터 전송을 가능하게 해주었을 뿐만 아니라 CD수준의 고음질 오디오 신호를 무선으로 전송할 수 있게 하였다.

 그리고 코덱에 따른 차이는 비단 음질뿐만이 아니라 지연시간에서도 나타난다. SBC 코덱은 패킷이 전송될 때 정해진 양의 패킷이 전송되기 전까지 디코딩을 진행하지 않는 방식인 반면에, apt-X코덱의 경우 ‘apt-X 워드’ 라는 작은 데이터로 분할 전송하고 이를 수신 단계에서 순차적으로 받아서 처리하는 방식으로 동작한다. 이러한 차이는 각 코덱의 지연시간을 보면 명확해지는데 apt-X 코덱의 지연시간이 40ms인 것에 비해 SBC 코덱은 250ms로 확연하게 차이가 난다는 사실을 알 수 있다.

 물론 아직까지 통상적인 블루투스 오디오 장비들은 대부분이 SBC 방식이며 apt-X 방식의 경우 같은 코덱의 장비끼리만 적용이 가능하다는 단점이 있기는 하지만 사람들의 음악에 대한 편리함과 음질에 대한 수요가 점점 증가하는 추세를 감안해 봤을 때 앞으로 기술이 점점 더 발전하여 압축 코덱의 표준으로 인정받을 수 있을 것이라 기대해볼 수 있다.


▪ Wi-Fi 통신

 와이파이 통신은 알다시피 IEEE 802.11을 기반으로 서로 다른 장치들 간의 데이터 전송 규약이다. 즉 네트워크 개념을 토대로 이더넷 방식의 랜 연결을 통해 데이터를 주고받는 통신이다. 음향분야에서는 이 데이터가 오디오와 비디오를 전송하는 기술을 표준으로 만들어진 DLNA (Digital Living Network Alliance) 방식을 기반으로 한다. DLNA란 쉽게 말해 와이파이 공유기를 중심으로 각 기기들을 호환하여 연결시키는 가정용 네트워크를 의미하며 전자 기기들 간에 AP(Wireless Access Point)를 경유해 오디오와 비디오를 재생할 수 있게 해준다. 이와 같은 기술은 TCP/IP 기반의 네트워크상에서 UPnP(Universal Plug and Play)라는 자동으로 무선 장비를 인식하고 추가해주는 프로토콜을 통해 기기간의 접속이 이루어져 데이트를 주고받게 된다.


Fig 6. DLNA/UPnP Media Server


 위와 같은 특징 덕분에 DLNA 방식은 데이터 재생에 있어서 대역폭의 제한이 거의 없다. 앞에서 설명한 블루투스 통신의 경우 정해진 대역폭 내에서 오디오 신호를 전송해야 했기 때문에 SBC나 apt-X 코덱 같이 압축 알고리즘이 중요했던 반면 와이파이 통신은 오디오의 변형 없이 원본 그대로 전송이 가능하다. 즉 인코딩이나 디코딩이 필요 없이 원본 파일 그대로 무선으로 보낼 수 있다는 점에서 음질 부분이 비교할 수 없을 정도로 뛰어나다는 장점을 가진다.


 

Bluetooth

Wi-Fi 

주파수 

2.4GHz

2.4 / 5GHz 

요구조건 

1:1 Paring

같은 네트워크 상에서

연결된 Device 

전송음질

16bit 44.1KHz 

24bit 192KHz 

통신범위 

~10m 

~100m 

대역폭 

512Kbps 

수십 Mbps 

소비전력 

매우 낮음 

중간 

Fig 7. 블루투스-와이파이 통신 비교


 정확한 수치를 통해 블루투스 통신과 와이파이 통신을 비교해보면 차이점을 확연히 알 수 있다. 블루투스 통신의 경우 아무리 좋은 코덱과 압축 알고리즘을 사용한다고 해도 기본적으로 16bit 44.1KHz의 CD 수준의 음질에서 벗어날 수 없으며 대역폭 또한 A2DP 방식에서 전송폭의 상한선이 512Kbps로 제한된다. 반면에 와이파이 통신의 경우 전송 대역폭이 수십 Mbps 수준으로 매우 넓고 이로 인해 음질 또한 24bit 192KHz의 고음질 및 고용량 음원 전송이 가능하다.

 물론 음질이나 대역폭 같은 특성들을 가지고 어떤 통신이 좋은지 판단할 수는 없다. 중요한 것은 제한된 기술이든 기능이 좋은 기술이든 그 쓰임새에 맞게 쓰여야 된다는 것이다. 하이파이를 대체할 오디오 시스템을 찾는다면 블루투스 스피커는 반드시 피해야할 제품일 것이다. 반면에 스마트폰과 연계되는 간편하게 들고 다닐 수 있는 스피커를 찾는다면 무선 랜 연결이 필수적인 와이파이 스피커는 쓸모가 없다. 이러한 점들을 볼 때 단순히 기술적인 부분뿐만 아니라 사용 편의성과 사용 용도 같은 요소들을 먼저 파악하는 것이 선행되어야 할 것이며 용도와 목적에 맞게 쓰는 것이 효과적으로 자기에게 맞는 기술을 사용하는 법이다.


4. 오디오 시장의 향후 전망

 서두에서도 언급했지만 오디오 시장이 급격히 축소된 이유에는 몇 가지 이유가 있다. 먼저 스마트폰의 등장으로 사람들이 보다 편리하게 음악을 듣고 싶어 하는 추세로 바뀌었고 값비싼 오디오 시스템을 구입하기 보다는 스마트폰에 연결하여 간편하게 들을 수 있는 오디오 장비를 구입하게 되었다. 또한 현대에 들어오면서 1인 가구, 핵가족화 되면서 가족 구성원 수가 줄어들어 인원이 적다보니 자연스럽게 주거공간이 작아지게 되었고 이 때문에 덩치 큰 오디오 시스템을 필요로 하는 이가 줄어들었다.

 오디오 기기 관련 매출을 살펴보면 스마트폰과 더불어 헤드폰·이어폰의 판매량이 큰 폭으로 늘었고 소형 오디오 기기들과 사운드바의 판매량이 크게 늘었다. 입문용 소형 오디오 시스템과 무선통신 기술이 접목된 오디오 기기들의 판매는 늘었지만, 유선으로 동작하며 설치가 복잡하고 덩치 큰 제품의 수요는 상대적으로 감소한 것이다.


Fig 8. 스피커 시장 규모 및 향후 전망


 이러한 점들을 종합해볼 때 앞으로 오디오 시장은 ‘무선 오디오 시스템’시대가 본격적으로 도래 할 것으로 전망된다. 과거에는 스피커 자체 기술이 중요했기 때문에 오디오 전문 업체가 시장을 주도했지만, 디지털음원의 등장과 IT기술을 활용한 사용 편의성 및 디자인 등에 강점을 지니고 있는 IT기업으로 주도권이 넘어가고 있는 것이다. 무선통신기술 또한 과거에 비해 발전을 거듭해 오면서 더 이상 유무선의 차이를 느끼지 못할 정도 음질 부분에서 많은 성과를 거두고 있다. 음향 오디오 시장에서 무선통신분야가 얼마나 빠른 속도로 성장할 수 있을 것인지 그 가능성에 대해 앞으로 주목해 볼 필요가 있을 것이다.

본 포스팅에서는 라즈베리파이와 아두이노를 지그비 통신을 활용하여 무선으로 연결하고 이를 통해 온습도 센서 데이터를 전송받아 파이의 웹서버에 차트로 뿌려주는 프로젝트에 대한 내용을 서술하려고 한다. 또한 여기에 추가적으로 웹서버 접속을 통해 집밖에서도 전등을 제어할 수 있도록 할 것이다.(여기서는 실제 전등 대신 LED로 대체) 말은 거창하지만 실상 그다지 어려운 부분은 없으며 최대한 상세하게 설명하고자 하니 파이를 활용한 스마트홈 구축이나 기타 IOT와 관련된 프로젝트를 진행하고자 하는 사람들에게 도움이 되길 바란다.

 

우선 지그비 통신에 대한 기본 개념과 설정 방법의 경우에는 아두이노 카테고리에 자세히 포스팅 해놓았기 때문에 꼭 참고하기 바라며 지그비 모듈에 대한 모든 설정이 마쳐진 상태에서 시작하도록 하자. 필요 준비물은 라즈베리파이와 아두이노, 설정이 완료된 지그비 모듈 2개, 마지막으로 온습도센서(여기서는 DHT11 사용)가 필요하다.

 

 

1. 동작흐름도


시작하기에 앞서 어떤 방식으로 어떻게 구현할 것인지 소개하기 위해 간단하게 흐름도를 만들어보았다. 먼저 센서부의 경우에는 아두이노와 온습도 센서로 구성되며 센서 데이터를 측정하고 라즈베리파이에 지그비 모듈을 통해 전송하게 될 것이다. 그리고 라즈베리파이에서는 파이썬 프로그램을 통해 전송받은 센서 데이터를 MySql DB로 저장하게 되며 마지막으로 php 기반의 자체 웹서버와 저장된 DB를 연결하여 아두이노로 부터 받은 센서 데이터를 차트로 도식화하여 보여주게 된다.

 

 

2. 아두이노 설정 



아두이노 회로 구성에 경우 위와 같이 온습도 센서(DHT11)와 지그비 모듈을 결선하도록 하며 코드는 다음과 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <DHT11.h>
#include <SoftwareSerial.h>
SoftwareSerial xbee(23); 
int pin=4;
DHT11 dht11(pin); 
 
void setup()
{
  xbee.begin(9600); 
}
 
void loop()
{
  int err;
  float temp, humi;
  if((err=dht11.read(humi, temp))==0)
  {
    xbee.print(temp);
    xbee.print(",");
    xbee.print(humi);
    xbee.println();
    delay(60000);
  }
}
cs


 

3. 라즈베리파이 설정


필자도 이 부분에서 많이 애를 먹었다. 아두이노에서는 간단하게 코드 몇 줄이면 지그비 모듈을 사용할 수 있는 반면에 라즈베리파이의 경우 UART 통신을 하려면 따로 설정이 필요하기 때문이다. 또한 파이1에서는 2로 넘어오면서 설정 방법이 바뀌는 바람에 시간을 많이 날려버렸다. 여기서는 파이2에 대한 방법을 서술하도록 하겠다.

 

먼저 초기 설정값을 default로 만들기 위해 ttyAMA0에 대한 모든 설정을 삭제하도록 한다. 여기서 ttyAMA0는 우리가 지그비 통신을 위해 사용하게될 시리얼 포트 이름이다.


  $ sudo nano /boot/cmdline.txt


모두 삭제가 완료되면 다음과 같은 코드만 남아있어야 한다. 물론 기존의 것이 아래와 같다면 수정할 필요는 없다.


  dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait


또한 라즈베리파이 아크 리눅스 환경에서는 ttyAMA0 포트가 이미 설정된 상태로 시스템 콘솔에서 동작하고 있다. 따라서 포트를 사용하기 위해서는 기존의 동작하고 있는 상태를 disable 시켜주어야 하므로 터미널에 다음과 같은 명령어를 쳐서 포트를 정지시키도록 한다.


  $ sudo systemctl mask serial-getty@ttyAMA0.service


마지막으로 라즈베리파이의 회로 구성은 다음과 같이 진행하여 설정을 모두 마치도록 하자.




4.  웹서버 환경 구축


라즈베리파이를 외부에서도 접속하고 관리할 수 있도록 웹서버를 구축해보도록 하자. 여기서는 웹서버의 표준 구성이라고 할 수있는 APM(Apache + PHP + MySQL)을 설치하려고한다. APM은 라즈베리파이를 강력한 웹서버로 활용할 수 있게 해줄 뿐만아니라 웹사이트를 보다 쉽게 운영하고 관리할 수 있도록 도와줄 것이다. 따라서 파트별로 간단하게 어떤 역할을 하는지와 설치 방법을 알아보도록 하며 언어 문법이나 보다 자세한 내용은 따로 검색해 볼 것을 추천한다.


1) Apache

아파치는 우리가 구축할 웹서버을 동작시키는데 있어서 가장 중요한 역할을 하는 웹 서버 어플리케이션이다. 리눅스 기반으로 만들어져 있으며 확장성이 좋아 여러 모듈을 통해 수많은 기능을 덧붙일 수 있다.(PHP, MySQL 등) 또한 매우 단순하면서 강력한 무료 웹서버를 무료로 제공하기 때문에 서버 애플리케이션 중에서 가장 인지도가 높다.


$ sudo apt-get update

$ sudo apt-get install apache2


위 명령어를 통해 설치가 완료되면 자동으로 설정되는 기본위치인 /var/www경로를 사용할 수 있도록 권한 설정을 하자.


$ sudo chown pi -R /var/www

$ sudo chmod 0777 /var/www


마지막으로 라즈베리파이가 부팅시에 프로그램이 가동될 수 있도록 설정해준다.


  $ sudo update-rc.d apache2 defaults


2) MySQL

데이터베이스(DB)란 데이터를 쉽게 저장하고 검색할 수 있는 시스템을 말하며 이 데이터를 삽입하고 검색할 수 있는 언어가 바로 SQL이다. 따라서 MySQL은 데이터를 보다 쉽게 관리하게 해주며 데이터 저장에 특화되어 있는 오픈소스 애플리케이션이다.


  $ sudo apt-get install mysql-server mysql-client libmysqlclient-dev


설치가 완료되면 MySQL 접속에 필요한 비밀번호를 2번 입력하도록 한다. 또한 외부에서 데이터베이스에 접속할 수 있게 바인드 어드레스를 비활성화 한다. 여기서 바인드 어드레스란 해당 주소에서만 접속을 허용하며 그 외는 접속을 차단해주는 주소를 의미한다.


  $ sudo nano /etc/mysql/my.cnf



위처럼 bind-adreess 앞에 #을 붙여주면 주석처리되어 비활성된다.


3) PHP

PHP는 웹페이지에 동적 기능을 불어넣어 주는 서버단에서 동작하는 프로그래밍 언어이다. 사실 HTML 만으로는 사용자의 입력에 유연하게 반응하지 못하기 때문에 PHP는 이러한 정적 HTML에 동적으로 동작할 수 있도록 개발되었다. 때문에 HTML의 처리에 강점을 가지며 다양한 데이터베이스를 지원하기 때문에 데이터베이스와 사용자간의 중간 다리 역할도 훌륭히 수행한다.


  $ sudo apt-get install php5


설치 후 PHP를 효과적으로 관리할 수 있도록 도와주는 PHP MyAdmin도 설치하도록 하자. 이때 웹서버 인증은 apache2를 선택하고 웹에서 사용할 비밀번호를 3번 정도 입력하면 설치가 완료된다.


  $ sudo apt-get install phpmyadmin



4) Python 

마지막으로 파이썬의 경우 지그비 통신을 통해 온습도 데이터를 수신받는 역할을 할 것이며 이 데이터를 MySQL의 데이터베이스로 만들어 줄 것이다. 따라서 파이썬에서 MySQL로 접속할 수 있도록 연동해주어야하며 아래와 같은 라이브러리 설치가 필요하다.


  $ sudo apt-get install libmysqlclient-dev

$ sudo apt-get install python-dev

$ sudo pip install MySQL-python


설치가 모두 마무리되면 제대로 동작하는지 확인을 위해 파이썬 쉘을 실행시키고 import MySQLdb 를 입력해보자. 에러없이 그대로 임포트 된다면 성공적으로 설치가 완료 되었으므로 파이썬에서 DB를 생성할 수 있다. 반면에 에러 발생시에는 실수한 것은 없는지 순서대로 확인해보도록 한다.


이제 필요한 모든 설정을 마쳤다. 다음 포스팅에서는 위 프로그래밍 언어들을 사용하여 온습도 데이터를 기반으로 하는 스마트홈 구축과 관련된 내용을 서술하도록 하겠다.


이번에는 본격적으로 지그비 통신을 활용하여 무선통신을 실습해보도록 하겠다. 아직 지그비 통신에 대한 정확한 개념을 잡지 못했다면 전에 포스팅한 글을 꼭 참고하기 바란다. 실습에서는 지그비 설정 툴인 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


최근에 무선통신 기술중 지그비 통신을 활용하게 되어 관련된 자료를 찾아보았는데 괜찮은 정보를 찾기가 매우 어려웠다. 제대로 검색하지 못한 필자의 탓일 수도 있지만 찾아본 대부분의 자료들은 대체 핵심은 어디 갖다 팔아먹었는지 그저 이러저러 해라 식의 단순 지식만 늘어놓고 있었으며 중복되는 내용 또한 심심찮게 발견할 수 있었다. 이러한 글을 읽고 제대로 이해될리 만무하다. 물론 구글을 활용해 해외 사이트에서 검색한다면 원하는 정보를 쉽게 찾을 수 있겠지만 국내에서 지그비와 관련된 간단한 설정법조차 찾기 힘들다는 사실은 매우 안타까울 뿐이다.


때문에 답답한 나머지 지그비 통신에 대해서 필자가 찾아보고 공부한 내용을 정리하여 공유하고자 한다. 순서는 네트워크와 지그비에 대한 개념부터 시작해서 지그비 모듈 종류 및 설정 방법, 아두이노를 활용한 무선 통신 실습 순으로 포스팅할 생각이며 부디 처음으로 지그비 통신을 공부하고 활용하고자 하는 사람들에게 도움이 되길 바란다.



1. 네트워크 이해


지그비에 대한 개념을 설명하기 앞서 네트워크에 대한 이야기를 잠시 해볼까 한다. 워낙 방대한 주제인 만큼 여기서는 간단하게 개념만 짚고 넘어가도록 하자. 네트워크란 Net + Work의 합성어로 컴퓨터들이 통신기술을 이용하여 그물망처럼 연결된 형태를 의미한다. 쉽게 말해 여러 대의 컴퓨터들이 서로 통신하는 것을 말하는 것으로 여기서 통신기술이란 프로토콜(Protocol)을 뜻하며 사전적으로 '규약', '약속'등을 의미한다. 컴퓨터 네트워크에서 서로 통신하기 위한 사전의 약속같은 것으로 해석할 수 있다. 예를 들어 식당에서 음식을 주문하는 상황을 가정해보자. 한 손님이 메뉴판에서 자신이 먹을 음식을 결정했고 바로 주문하려고한다. 하지만 웨이터는 다른 손님의 주문을 받고 있으며 다른 웨이터들 또한 보이지 않는다. 당신이라면 이 상황에서 어떻게 하겠는가? 아마도 당신이 조금의 기다림을 참지 못하는 몰상식한 사람이 아니라면 웨이터가 주문을 다 받을때 까지 기다린 후에야 자신의 주문 내용을 말할 것이다. 


그렇다. 방금 당신은 훌륭하게 사람들 간에 지켜야 할 프로토콜을 잘 지킨 셈이다. 만약 프로토콜을 지키지 않고 웨이터를 억지로 불렀다면 자신과 웨이터 뿐만 아니라 다른 손님과의 소통 또한 제대로 될리가 없다. 이렇듯 사람들이 말을 할 차례를 지켜 주는 것이 중요한데 이러한 개념은 네트워크 통신에서도 똑같이 적용된다. 네트워크 측면에서 위와 같이 통신의 순서를 정해주는 것을 미디어 접근(Media Access)라고 하며 동시에 여러 통신이 발생하는 상황을 다중 접근(Multi Access)라고 한다. 그리고 이러한 상황과 유사한 프로토콜이 바로 CSMA/CD 이다.


   · CSMA/CD (Carrier Sense Multi Access / Collision Detection)

   LAN(이더넷)에서 각 단말기 간 자료를 전송하고 있는 동안 회선을 감시하여 충돌이 감지되면 즉각 전송을 멈

   추고 재전송을 위해 기다렸다가 다시 시도하는 방식


위 방식은 여러 단말기가 통신을 시도했을 때의 충돌 상황을 완화시키는 역할을 한다. 쉽게 말해 앞서 언급한 웨이터의 일이 끝날때 까지 기다려 서로의 통신이 끊어지지 않도록 도와주는 것이다.


또한 네트워크 통신에서 단말기간 특정 주소를 가지는 개념은 매우 중요하다. 각 컴퓨터가 자신의 고유 주소인 IP를 할당받는 이유는 다른 컴퓨터와 구별되기 위해서임을 우리는 이미 알고있다. 따라서 각 단말기간 어떤 통신이 진행되기 위해서는 특정한 수신자의 주소가 지정되 있어야 데이터 보내기가 가능하다. 이러한 주소는 네트워크상에서 숫자로 할당받게 된다.



2. 네트워크 토폴로지(Network Topology)


네트워크 토폴로지란 단말기 상호 간에 데이터를 전송할 수 있도록 연결된 형태를 말한다. 이는 데이터가 잘 보내지고 받을 수 있도록 어떻게 네트워크를 구축할 것인가 라는 네트워크 전략과도 일맥상통하며 어떤 형태를 구축하느냐에 따라서 데이터의 흐름이 결정되게 된다. 따라서 다양한 형태와 방법이 존재하지만 여기서는 지그비 통신과 관련된 몇가지만 소개하고자 한다.


일대일 통신 (Peer to Peer)

일대일 네트워킹은 두 노드 (여기서 노드는 연결점을 의미하며 단말 장치나 통신 처리 장치 등을 뜻한다.) 사이에 데이터를 전송하기 위한 가장 간단한 형태이다. 다양한 채널을 사용할 수 있으며 서로 다른 주파수에 작동하는 무선조종자동자가 좋은 예이며 또한 개인과 개인이 직접 연결되어 파일을 공유하는 P2P도 이러한 개념의 연장선이라고 이해할 수 있다.



스타형 토폴로지 (Star Topology)

스타형은 이더넷 LAN에 가장 널리 사용되는 물리적 네트워크 구조로 중앙의 연결 지점에 허브나 라우터 같은 중심 노드(Coordinator)가 배치되어 모든 노드들을 관리하게 된다. 모든 데이터가 중앙 지점으로 모여지는 중앙 제어 방식이기 때문에 관리가 편하고 확장이 용이하지만 그만큼 부하가 많이 걸리게 되며 중앙 노드에 장애가 발생하면 전체 네트워크 사용이 불가능하게 되는 단점이 있다.


 메쉬형 토폴로지 (Mesh Topology)

메쉬형은 모든 노드가 네트워크상에서 혹은 개별적으로 현결된 그물망 형태로 다수의 노드 쌍이 동시에 통신할 수 있다. 이는 특정 노드의 장애가 다른 노드에 영향을 주지 않기 때문에 장애에 유연한 대처가 가능해지고 가용성이 극대화 되는 장점으로 작용한다. 하지만 그만큼 회선구축 비용이 많이 들게 되며, 새로운 노드를 추가할 시에 선로 구성이 복잡해지고 비용부담이 발생한다.

                        


토폴로지는 상황에 맞게 적절한 방식을 선택하는 것이므로 좋고 나쁨을 떠나 자신이 구축할 네트워크 환경에 적합한 것을 써야 한다.


3. ZigBee 통신


서론이 생각보다 길었다. 그럼 이제 본격적으로 지그비 통신이 무엇인지 알아보도록 하자. 지그비는 근거리 저전력 무선 통신을 위한 프로토콜을 일컫는다. 앞서 프로토콜의 개념을 제대로 이해하였다면 지그비 통신 또한 여러 개의 노드가 서로 통신하기 위해 만들어진 통신 규약이라는 것을 알 수 있을 것이다. 그럼 다른 무선 통신 방법과 비교하여 지그비의 특징을 살펴보자.


 

Zigbee

 Bluetooth

Wi-Fi 

NFC 

전송거리

 ~100m

~10m 

~100m 

~20cm

 전송속도

~250Kbps 

~24Mbps 

 11M / 54Mbps

106~848Kbps 

최대 채널 수

 32000

 14

 1

 소비전력

Very Low

Medium

High

Low

복잡성

Low

Low

High

Low

 비용

Low

Low

High

Low


위 표를 통해 지그비 통신은 복잡하지 않은 시스템 구조로 구성되어 있으며 적은 소비전력으로 인해 소형화가 가능함을 알 수 있다. 비록 전송 속도면에서 블루투스나 와이파이 통신이 우수하긴 하지만 가격이 비싸기 때문에 상대적으로 저렴하고 간단한 무선 네트워크를 구축할 수 있다. 또한 네트워크 규모도 방대하기 때문에 다수의 센서를 활용하거나 모듈을 사용하는 시스템에 적합한 형태를 보인다.


지그비 통신 모듈은 시중에서 다양한 형태로 판매되고 있으나 여기서는 가장 대중적인 제품인 Digi 사의 XBee모듈에 대해서 설명하겠다.  Xbee란 지그비 프로토콜을 바탕으로 보다 쉬운 설정과 사용을 위해 개발된 별개의 프로토콜이다. 따라서 지그비 통신을 기반으로 하고는 있지만 XBee 전용의 프로토콜을 따로 제공하고 있다는 점을 염두해 두어야 한다. 이러한 XBee 모듈의 설명은 다음 포스팅에서 이어서 설명하도록 하겠다.


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

지그비 무선 통신하기  (13) 2016.01.26
XBee 모듈 정보 및 종류  (0) 2016.01.17
[Galileo] 초음파센서 사용하기  (0) 2016.01.08