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

Arduino XBee Shield 와 XBee Adapter, 1602캐릭터 LCD를 사용해서 XBee 통신으로 LCD에 문자 출력해 보기

by 오마이엔지니어 2018. 8. 11.
반응형

Arduino XBee Shield 와 XBee Adapter, 1602캐릭터 LCD를 사용해서 XBee 통신으로

X-CTU에 문자를 입력해서 LCD에 문자 출력해 보는 프로젝트입니다

 

 


아두이노는 여러가지 방법으로 무선통신(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

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

1602 Character LCD - (QAPASS 1602A)
1602 캐릭터 LCD (LC1621-SMLYH6)

테스트 방법
먼저 아두이노 우노에 시리얼 통신으로 1602 캐릭터 LCD에 데이터를 전송해서 출력해 주는 예제 파일을 업로드해 줍니다

사용된 예제파일

XBee 1602LCD.txt


#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
String inData;

void setup() {
  Serial.begin(9600);      
    lcd.begin(16, 2);
    lcd.print("Welcome!");
    delay(3000);
    lcd.clear();
}
void loop() {
 int i=0;
  char commandbuffer[100];

  if(Serial.available()){
     delay(100);
     while( Serial.available() && i< 99) {
        commandbuffer[i++] = Serial.read();
     }
     commandbuffer[i++]='\0';
  }

  if(i>0)

     Serial.println((char*)commandbuffer);
     lcd.print((char*)commandbuffer);
     delay(10000);
     lcd.clear();
}


예제는 위 첨부된 파일을 확인해 보면 알수 있듯이 간단합니다
LiquidCrystal.h 라이브러리를 사용하며 1602 캐릭터 LCD 데이터통신 핀모드는 12, 11, 5, 4, 3, 2 입니다
시리얼 통신속도는 9600이며 시리얼 통신으로 데이터를 받아서 1602 캐릭터 LCD에 출력해 줍니다
여기서 만약 테스트를 하면서 X-CTU에 문자입력을 하는데 딜레이 타임이 너무 짧아서

문자 입력전에 너무 빠르게 데이터가 전송 되어 버린다면 첨부 된 예제 코드의 delay(10000); 이 부분을 적당하게 늘려 주면 됩니다
본 테스트에서는 딜레이 타임 10000 으로 설정해서 테스트 하였습니다

아두이노 IDE 버전에 따른 LiquidCrystal.h 관련 컴파일 에러가 난다면 기본 아두이노 IDE 설치시에 설치되는
LiquidCrystal 라이브러리 말고 추가로 임의로 라이브러리 폴더에 다른 LiquidCrystal 라이브러리를 설치한것은 아닌지 확인해 보도록 합시다


아두이노에 스케치 업로드가 끝났으면 XBee를 XBee Shield 에 장착 합니다 (방향을 주의해서 장착합니다, 방향은 XBee Shield PCB에 XBee

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

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

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

구성배선도

 

 

 

위의 그림처럼 데이터를 수신할 XBee를 Arduino Uno 와 적층 된 XBee Shield 와 XBee Adapter 에 장착후 컴퓨터에 연결합니다
물론 데이터를 전송할 나머지 다른 XBee 는 XBee 어댑터에 장착해서 검퓨터에 연결하면 됩니다
배선은 위 그림을 참조해서 배선하면 됩니다 
캐릭터 LCD가 잘 나오지 않는다면 가변저항을 돌려서 콘트라스트를 잘 맞춰 줍니다
USB 허브를 사용하거나 노트북의 전류가 약하다거나 하면 캐릭터 LCD출력이 약하거나 출력이 안될수 있습니다

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

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

 

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

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

 

 


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

 


그럼 아래 그림처럼 COM4 과 COM185 에 연결 된 2개의 포트를 찾은것을 확인할수 있습니다

 


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

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

 

 

아래 그림 처럼 시리얼 포트 COM4 에 연결 된 한개의 디바이스가 검색되는것을 확인할 수 있습니다

 

포스팅 상단부에서도 설명 했지만 아두이노에 어떤 스케치가 업로드 되어 있는경우 X-CTU 에서 장치 검색이 안됩니다

(아두이노 우노에 시리얼 통신 예제를 업로드 한 상태이므로 아두이노 우노에 적층 된 엑스비 쉴드에 연결 된

XBee는 X-CTU에서 당연히 장치 검색이 안됩니다)
모두 선택 후 Add selected devices 눌러 줍니다 (1개만 선택 되겠습니다)

 

 

위 그림처럼 XBee Adapter에 연결 된 COM4 포트의 한개의 디바이스가 추가 되었습니다~

 

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

 

 

왼쪽의 접속 버튼을 눌러서 통신 접속을 해줍니다

 

 

딜레이 타임을 잘 수정했다면 보정 타임에 맞춰서 적당한 문자를 입력하면 됩니다
(rj tech 를 입력했습니다 캐릭터 LCD에 전송이 되면 파란글씨 옆에 빨간 글씨가 표시됩니다)

 

XBee 통신으로 캐릭터 LCD에 입력한 rj tech 문자가 출력 되었습니다

이런 방법을 활용해서 XBee 통신으로 아두이노에 연결 된 LED, 센서, 모터 등등의 다양한 모듈을 제어할 수 있습니다

프로젝트 동영상

 

XBee 1602LCD.txt
0.0MB
반응형

댓글