2014년 5월 29일 목요일

XBEE 사용하기 - 기본 연결 및 통신 확인

 개발 도구(Development equipments)는 Arduino, ZTerm, 이고,

사용 하게 되는 장비
Sparkfun Xbee explorer x1
Sparkfun Xbee shield x1
Sparkfun Xbee module x2
USB to Mini-B cable x1
Arduino Uno x1
(PC)Macbook air 2009 mid x1

 references sites
https://www.sparkfun.com/tutorials/192
http://bildr.org/2011/04/arduino-xbee-wireless/
http://ardadv.blogspot.kr/2012/03/using-xbee-with-arduino-on-mac-os-x.html

특히 2번째 3번째 링크는 Mac OS X 에서는 X-CTU프로그램을 사용하지 못하므로,
ZTerm 의 사용법에 대해 잘 나와있으니 참고하면 좋습니다.

기본 Xbee 연결에서 발생한 문제들 *
1. Xbee shield 사용 시에 데이터 전송 및 프로그램 업로드 시에는 DLINE 에 스위치를 위치시키고, 통신 사용시에는 UART 로 스위치를 위치 시켜야 함.
2. ZTerm 프로그램 사용시 Setting - Connection 에서 9600 속도 로 맞추어야함.
3. Xbee Shield 를 Solding없이 그냥 끼워서 사용하려 했는데 접촉불량, 말도안되는 행동임. 납땜을 하고 사용할 것 (첫번째 링크내의 첫번째 링크에 나와있음.현재 Sparkfun 서버점검으로 확인 불가)
4. Xbee explorer 사용시에 드라이버를 PC에 다운받고 사용한다. 안그러면 Zterm 사용시 usb 인식이 안됨.

실험 절차
1.Arduino.cc 에서 Arduino 프로그램을 다운로드.
2. Xbee explorer Driver 다운 PC에 맞는 버전으로 다운받을 것 (Windows or Mac OS or Linux)
3. Arduino Xbee Shield Solding(납땜)
4. Aruduino Xbee Shield + Arduino Uno 결합.
5. Aruduino Program 작성 및 컴파일  업로드
6. PC + Usb to Mini-B cable + Xbee explorer + Xbee module.
7. Zterm 실행후 Setting- Connection  속도(Data rates) 9600 설정
8  Setting - Modem Preferences     Serial Port 제대로 연결되었는지 확인
(Windows 에선 내컴퓨터 장치관리자 에서 연결된 COM단자 확인 가능하며 맥에서는
Usb가 한두개 이므로 usb 어쩌고 바로 있을 것임.)

의문 : Xbee 는 Data Rates 가 9600에 코드 고정이라서 딱히 상관없이 무조건 데이터 연결되는 것인가 부분이 의문임. 다시말해 여러개의 Xbee 사용시 전부다 혼란을 일으키는 것인지 의문. 데이터 전송시 패리티 등의 오류 검사 부분은 어떻게 처리된건지 의문.


Source Code

//////////////////////////////////////////////////////////////////
//©2011 bildr
//Released under the MIT License - Please reuse change and share
//Monitors the serial port to see if there is data available.
//'a' turns on the LED on pin 13. 'b' turns it off.
//////////////////////////////////////////////////////////////////

void setup() {
  Serial.begin(9600);     //initialize serial
  pinMode(12, OUTPUT);  
  pinMode(13, OUTPUT); //set pin 13 as output
}

void loop() {
  while(Serial.available()){  //is there anything to read?
char getData = Serial.read();  //if yes, read it

if(getData == 'a'){  
   digitalWrite(12, HIGH);
          digitalWrite(13, LOW);a
}else if(getData == 'b'){
   digitalWrite(12, LOW);
          digitalWrite(13, HIGH);
}
  }
}

이프로그램은 PC Zterm 으로
명령어 a 입력시 13번 LED OFF 12번 LED ON

명령어 b 입력시 13번 LED ON   12번 LED OFF

되는 프로그램이다.

댓글 없음:

댓글 쓰기