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

되는 프로그램이다.

2014년 5월 15일 목요일

Arduino Using

My development environment  Macbook Air 2009 mid.

Firstly download arduino program in http://arduino.cc
If you have many time, you can get every information which you want about Arduino.

Arduino is more easy than just like AVR128.
Arduino UNO use Atmega328.
Arduino is for even non-electronics people.

It is first my sentences in blogger. Actually I'm lazy. It is my fault.

I have 'The Arduino Starter Kit'. I have bought it in ArtRobot. It is useful. But I can't speak in English well. So It is elementary grade English. I have to use Arduino well. even my major is electronics. I know that Arduino is for non-professional. So I practice continuously. 

I have done 3 examples in Arduino projects book which is in Starter Kit. 
anyway, There were Switch - LED control, temperature sensor control and RGB LED control.

You need to have C language skill. So You can understand Source code. If you have this KIT and have English ability, You can use arduino well. I'm a non-native then It is hard to me. IF I want to use arduino well, I must spent a lot of time with arduino. 


It is Source code and a figure. I use 12, 11,10 pins of arduino as the OUTPUT and RGB LED pins.I use 8 pin as the servo motor. finally A0 pin is for gas sensor. 


It is simple diagram to use arduino and sensor. 
These circuits is to close the gas valve.
gas sensor read LPG then, If it leak LPG gas, LED will be RED then LED blink.
servo motor turn 90 degree clockwise.

.Korean. 
사실 영어도 엉망 진창일거다. 
디지털 설계실험에서 하는 실험이다. 중간밸브를 잠그는 기능을 하는 회로를 만들어 보는 것이다. 원래 지그비(Xbee) 도 추가하여야 하지만, 이부분을 하지 못했다. 지그비 사용에 대한 것이 다 영어로 나온데다가 어렵다. 읽기도 귀찮고.. 게으름의 문제도 크고 대책없이 미룬 문제도 크다. 하루종일 아두이노만 붙잡고 공부하고 싶지만 또 그렇게 할 수가 없다. 
회로는 간단하다. 모든 모듈들은 3.3V 혹은 5V 로 동작한다. 그리고 그 모듈들은 각각 Vcc, GND 그리고 기능을 수행하는 하나의 핀으로 구성되어있다. 간단하다. 디지털이니까 1이면 high 이면 동작 0이면 low이면 동작안함 으로 간단히 생각하면 된다. 아날로그 센서같은 경우는 이 수치가 0에서 1까지 0에서 5V까지 유연하게 나온다고 생각하면 되는 것이다. 디지털 개념자체는 간단하여, 출력을 하냐 입력을 할거냐 결정을하고, 명령어 쓸때는 어떠한 경우에 동작해라 안해라 라고 하면 되는 것이다. 맨처음 C 언어를 어느정도 다루는 것과 전에 AVR을 혼자 다뤄보려다가 제대로 다루지도 못했지만 했던 경험이 아두이노를 다룰 때 무척 쉽게 느끼게 만든 것도 한몫 하는 것 같다. 후에 ARM 다루게 되면 어떡하지. 
TI C2000이라는 킷도 가지고 있는데 다룰 수 있다면 다뤄보도록 해야겠다. 
제일 큰건 개발환경의 문제이다. 나의 맥북2009는 윈도우 부트캠프로 깔아지지도 않고 (USB로) 해서 맥으로 다룰 수 있는건 ARDUINO밖에 없기도 하며 아두이노 아두이노 말들이 많이 들려 다루게 되었다. 일단 프로젝트 북 전부 끝내보고,  또한 통신 모듈중 하나인 Zigbee 를 빨리 다뤄 봄으로써 어느정도 전자회로는 다뤄봤다고 할 정도가 되어야 할 것이다. 
 따라하는 것, 따라 만들어보고 소스를 보고 치는 것 자체가 도움이 별로 안될줄 알았다. 하지만 이것도 능력이고 정보검색 능력이며, 도움이 될 것이다. 머리를 써서 내가 전자회로책을 뒤적이며, OP AMP 사용법 CONVERTER 사용법, 귀환이니 부귀환이니 가산기니 등등의 기능을 숙지하고 머리속에서 짜내서 만드는 것이 가장 이상적인 것이나, 이미 생각하고 있는 것은 다 회로로 나와있고, 차라리 회로를 더 많이 봐보고, 이거든 저거든 다 만들어보고 하는 것이 이 현실에서 살아가는데는 더 유리한지도 모르겠다. 내가 학자나, 전자공학 원리 이론 탐구를 목적으로 하는 것이아니라, 모듈, 반도체 회로 등을 가져다 쓰는 대기업이나 만드는 기업에서는 해보는 것 자체에 의미가 있을지도 모르겠다. 일단 뭐든 만들어보자.

 뭔가 작성하는 방법에 대해 다시 한국어로 쓰려고했는데 한국어는 그냥 내 생각들을 적게되었네. 영어문법이 어긋날지 아닐지 모르나, 영어로는 방법을 대략 썼고, 앞으로 계속 쓰자는 글에 첫번 째 글이니 엉망이다. 노력해보자.