본문 바로가기
Arduino(아두이노) IoT 키트 강좌

Arduino XBee Shield 와 XBee Adapter 를 사용해서 XBee 통신 테스트 하기

by 오마이엔지니어 2018. 1. 18.
반응형

Arduino XBee Shield 와 XBee Adapter 를 사용해서 X-CTU 와 아두이노 IDE 시리얼 모니터로

XBee 통신으로 데이터를 주고 받는 채팅환경을 구성해 보는 프로젝트 입니다

아두이노는 여러가지 방법으로 무선통신(Bluetooth 또는 Wifi 등)을 할수 있습니다
그중에 Zigbee 는 다른 무선통신 방법에 비해 낮은비용과 저전력 2.4Ghz 주파수를 사용한 근거리 무선통신
이라는 특징이 있습니다
Zigbee는 저전력 모듈이기때문에 배터리의 크기를 축소할수 있게 하여 소형화가 쉽습니다
때문에 긴 배터리 수명과 보안성을요구하는 분야(무선 조명, 교통관리 시스템, 근거리 저속통신, 산업용 장치 등)에서 간단한 데이터 전송을 하는데 유용하게 사용되고 있습니다


FTDI 또는 CH340 드라이버를 사용하는 Arduino Uno 호환보드 (한국 또는 중국에서 생산하는 우노 호환보드는 대부분 FTDI 드라이버를 사용하고 있습니다)의 경우 XBee Shield 장착후 XBee 모듈을 연결했을때 X-CTU에서 비교적 디바이스 검색이 원활하게 진행이 됩니다
다만 Italy 정품 Uno (Arduino.org) 는 우노의 경우 우노에 업로드된 스케치를 초기화 해 주어야만 X-CTU에서 디바이스 인식이 가능합니다 
Italy 정품 Uno의 USB쪽 칩에 호환보드에 라이팅 되는 동일한 구버전의 펌웨어 또는 Arduino.cc 의 펌웨어를 라이팅해 주면 사용이 가능하지만 ISP장비가 필요하며, 굉장히 번거로운 작업이기 때문에 가능하면 Uno 호환 보드를 사용하길 권장합니다

<아두이노 우노 스케치 초기화 방법 - 위 이미지의 스케치 코드를 업로드 해주면 됩니다>
아두이노 IDE를 최초에 실행하면 나오는 코드이기도 하며 또는 아두이노 IDE 실행후 "파일--->예제--->Basic--->Bareminimum"
예제를 불러와서 스케치 업로드 해 주어도 됩니다

Arduino XBee Shield
Arduino Uno R3 호환보드
Orange Board (네패스 코코아팹)


오마이엔지니어에서 판매중인 위 두가지 보드로 이상없이 X-CTU에서 동작 테스트를 확인하였습니다


XBee USB Serial Adapter 를 사용하기 위해서는 FTDI 드라이버를 설치해 주어야 합니다 

XBee USB Serial Adapter

FTDI 드라이버 다운로드 하기

http://www.ftdichip.com/FTDrivers.htm


*어떤 FTDI 드라이버를 받아야 할지 모른다면 아래의 순서대로 진행 합니다*
DX22 드라이버 다운 링크를 클릭합니다

D2XX drivers please click here

셋업파일을 다운받아서 설치합니다(윈도우용)
WHQL Certified. Includes VCP and D2XX.
Available as a setup executable

XBee 모듈간 통신을 하려면 X-CTU 소프트 웨어가 필요 합니다

Digi 사 에서 다운로드가 가능합니다 하단 링크에서 각자의 OS에 맞는 다운로드 받아서 설치 합니다


X-CTU 소프트웨어 다운로드 하기

http://www.digi.com/products/xbee-rf-solutions/xctu-software/xctu

간단하게 이름, 회사, 연락처, 이메일 주소등만 적으면 다운로드가 가능합니다

준비가 끝났으면 XBee를 XBee Shield 에 장착 합니다 (방향을 주의해서 장착합니다, 방향은 XBee Shield PCB에 XBee

모양이 그려져 있습니다, 잘 살펴보고 모양과 맞게 장착합니다)

테스트를 할때 XBee Shield 스위치 설정은 USB로 설정하고 테스트를 진행합니다~

XBee 는 기본 Digi사의 기본 클래식 XBee XB24-AWI-001사용하였습니다
본 테스트에서 꼭 위의 XBee를 사용해야 하는것은 아닙니다
최근 클래식 모듈이 단종되고 동일한 기능의 통신거리가 확장 된 신버전 XB24CAWIT-001 이 출시 되었습니다 (동일하게 테스트 가능합니다)
XBee 는 모듈간 직접 통신 하는 방식과 중계 통신 하는 방식 등에 따라서 여러가지 모델로 나뉩니다
각자의 프로젝트에 맞게 선별해서 사용하면 되겠습니다



위의 그림처럼 두개의 XBee를 Arduino Uno 와 적층 된 XBee Shield 와 XBee Adapter 에 장착후 컴퓨터에 연결합니다

(XBee Shield 의 스위치 설정은 USB로 향하도록 합니다)

FTDI 드라이버가 정상적으로 설치가 되어있다면 장치관리자에 시리얼 포트가 인식 됩니다
XBee Shield 에 장착된 XBee 포트가 COM11 이고 XBee Adapter 에 장착된 XBee 포트가 COM94 입니다



컴퓨터에 설치된 X-CTU를 실행 합니다

아래와 같이 실행화면이 나옵니다



위 그림처럼 왼쪽 상단의 XBee 모듈 모양의 돋보기 버튼을 눌러 시리얼 포트를 스캔해서 찾아 줍니다

그럼 위 그림처럼 COM11 과 COM94 에 연결 된 2개의 포트를 찾은것을 확인할수 있습니다

Next 를 눌러서 시리얼 포트 설정 단계로 넘어갑니다



위 그림 처럼 시리얼 포트 설정을 해주고 Finish 버튼을 눌러 줍니다 (Baud Rate 는 꼭 9600 으로 설정합니다)



위 그림 처럼 시리얼 포트 COM11과 COM94 에 연결 된 두개의 디바이스가 검색되는것을 확인할 수 있습니다

모두 선택 후 Add selected devices 눌러 줍니다

 



위 그림처럼 두개의 디바이스가 추가 되었습니다~

위쪽이 COM11 (XBee Shield) , 아래쪽이 COM94 (XBee Adapter) 에 연결된 XBee 모듈 입니다

XBee 통신세팅은 XB24-AWI-001 을 사용하였기 때문에 해줘도 되고 해주지 않아도 됩니다
XB24-AWI-001 은 1대1 & 1대n 통신 다 가능하기 때문에 리모트 모듈을 찾기전에 통신 세팅을 해줘도 되고 안해줘도 됩니다 

통신 세팅 하는 방법은 Arduino Uno 로 XBee Shield 를 사용해서 XBee 모듈간 통신 테스트 하기 포스팅을 참조 합시다



이제 위 그림처럼 두번째 XBee 모듈의 오른쪽 세개의 버튼중 가운데 버튼을 눌러 리모트 할수있는 디바이스를 검색합니다

그럼 검색과정 후 위와 같이 1개의 디바이스를 찾아 냅니다

MAC Address 를 보면 첫번째 XBee 모듈인것을 확인할수 있습니다


마지막으로 맨 아래 Add selected devices 버튼을 눌러 디바이스를 추가해 줍니다

주의: 리모트 할수있는 디바이스를 검색하지 못하는 경우 아두이노 우노에 스케치가 디폴트로 업로드 완료 되었는지 다시한번 확인해 봅니다
그래도 리모트 할수있는 디바이스를 검색하지 못하는 경우 X-CTU를 종료했다가 재실행후 위와 같은 방법으로 반복합니다

XBee 모듈은 기본 AT모드로 출고 되고 있습니다 XBee를 임의로 API모드로 세팅을 바꾸었다면

쉴드 사용시 X-CTU에서 디바이스 검색 및 리모트모듈 검색이 안될 수 있습니다 이점 주의해 주세요~


참고 <XBee 의 AT모드 와 API모드>

XBee는 AT와 API 모드를 지원하는데, AT모드는 투명(Transparent)모드라고도 하며, 공장 출하시 초기 세팅으로 제공된다
AT모드는 메시지 데이터 자체를 보내고 받을 수 있으며 단순한 전송 및 수신이 가능하다
API모드에서는 프로그래머가 필요한 정보인 도착 주소, 패킷의 형태, 그리고 체크섬과 데이터를 패키지화 한다
또한 수신 노드는 소스 주소, 패킷의 종류, 신호 강도, 그리고 체크섬과 같은 정보와 함께 데이터로 접수한다

초보자라면 별도의 프로그래밍 및 패키지화가 필요하지 않은 AT모드를 사용하는 것이 편리하다
다만, Radio Signal Strength Indicator (RSSI) 등의 신호 세기 및 특정 주소를 프로그래밍화하여 노드간에 다이나믹하게 통신을 하기 위해서는
유연성이 있는 API모드를 사용하는 것이 적절할 것이다

AT모드에서는 RX로 받은 모든 신호는 XBee의 안테나를 통해 전송이 되고, 들어오는 신호는 TX로 받게 된다
하지만, API 모드에서는 시리얼 인터페이스를 통해 정확한 명령어셋이 아니면 신호를 받지 않게 된다




위의 그림처럼 두번째 XBee 모듈 아래에 리모트 모듈이 생겼습니다


MAC Address 를 보면 첫번째 XBee 모듈인것을 확인할수 있습니다



다음으로 아두이노 IDE 에서 시리얼 모니터를 켜도록 합니다
(물론 미리 보드는 당연히 Arduino Uno 로 선택 되어있어야 하겠고, 포트는 COM11, 그리고 스케치는 디폴트 업로드 되어 있어야 합니다)



시리얼 모니터를 켜면 아두이노 우노와 연결된 COM11 인것을 확인할수 있고 보드 레이트는 9600으로 설정되어 있는것을 확인할수 있습니다



다시 X-CTU 로 와서 상단 오른쪽 모니터 모양의 메뉴를 선택해서 창 전환을 합니다


그 다음 두번째 XBee 모듈을 선택후 오른쪽 연결 버튼을 누릅니다

연결에 성공하면 위 그림처럼 녹색으로 바뀌게 되면서 Close 글자가 나옵니다

연결에 성공하였으면 Console log 에 글자를 입력해 봅니다 (글씨색으로 송신 과 수신을 구분할수 있습니다)

파란색 글씨가 송신, 빨간색 글씨가 수신 입니다


Hello rjtech 를 입력합니다




그럼 아두이노 IDE 의 시리얼 모니터로 수신된 데이터 Hello rjtech 를 출력해 줍니다

XBee Adapter 에 연결된 XBee 로 송신을 하고 (X-CTU로 송신) XBee 쉴드 에 연결된 XBee 로 수신 (Arduino IDE로 수신)

을 한것이 되는 것 입니다




이 상태에서 X-CTU로 송수신을 해봐야지 하는 마음으로 첫번째 XBee 모듈의 오른쪽 메뉴 연결 버튼을 누르면
연결이 실패하면서 에러가 뜹니다 (이미 어플리케이션에서 포트를 사용중이기 때문에 안된다는 메세지 입니다)

이 경우 Arduiono IDE 의 시리얼 모니터를 종료해 주면 X-CTU 로 송수신 가능합니다




두번째 XBee 모듈을 선택하고 연결 후 hello rjtech 를 Console log 에 입력해 줍니다

파란색 글씨가 송신, 빨간색 글씨가 수신 입니다




첫번째 XBee 모듈을 선택하고 연결 후 hello arduino 를 Console log 에 입력해 줍니다

파란색 글씨가 송신, 빨간색 글씨가 수신 입니다


간단하게 XBee Shield 와 XBee Adapter 를 사용해서 X-CTU 와 Arduino IDE 시리얼 모니터를 통해서
데이터를 주고 받는 채팅 환경을 만들어 보는 프로젝트를 진행해 보았습니다~


테스트 동영상


연관포스팅

Arduino XBee Shield 와 XBee Adapter 를 사용해서 XBee 통신으로 아두이노의 LED 제어해 보기


반응형

댓글