BT 통신 - cchamchi/cansat GitHub Wiki

캔 위성은 BT 모듈(Serial)과 BT어댑터를 통해 지상국과 통신을 한다. 캔위성의 Serial port를 USB에 연결하여 serial.print 하던 작업을 BT 무선을 통해 수행하는 개념이다.

Step 1 : 캔위성의 SW 스위치 변경

캔위성은 USB,ISP,BT를 이용하여 통신을 할수 있다. 아래 그림처럼 SW4,SW6번을 셋팅해야 BT통신이 가능하다

간단히 보면 SW6번만 조절하면 USB / BT 전환이 가능하다.

Step 2 : BT모듈 프로그래밍

사용된 BT 모듈은 chipsen 사(http://chipsen.com/)의 제품이다. 제품명은 ESD110B-DU으로 제공되는 1dB 안테나로는 100m 거리에서 통신이 가능하다. 안테나를 바꾸면 최대 1km까지 통신이 가능하다. 자세한 사용법은 http://disk.chipsen.com/download/bt/ESD_manual_chipsen_v.2.0.4.pdf 를 참조한다.

AT command 기반의 명령을 사용하여 모듈을 제어 할수 있다. 아래 코드는 115200으로 동작하도록 셋팅한후 지상국의 BT어댑터의 연결을 기다린다. 지상국과 연결된 후에는 지상국의 터미널에 쓴 text가 캔위성으로 전송된후 다시 loopback되어 지상국으로 터미널에 찍힌다.

아래 프로그램을 캔위성에 업로드 하려면 SW6번을 USB위치에 놓는다. 업로드가 완료되면 캔위성은 OFF하고 SW6를 BT 위치에 놓고 ON 한다.

#include <CansatSystem.h>

void setup() {
  CansatSystemInit();  
  // 블루투스 초기화 함수
  // 1. UART1 초기화        : 9600
  // 2. BT MODE 3(수신 상태) : AT+BTMODE,3
  // 3. BT 통신 속도 초기화  : AT+UARTCONFIG,115200,N,1
  // 4. BT 재 설정          : ATZ
  Serial.begin(115200);  
  Serial.begin(9600); 
  Serial.write("+++\r\n"); //change to command state
  Serial.print("at+btmode,3\r\n");
  Serial.print("at+uartconfig,115200,N,1,0\r\n");
  Serial.print("atz\r\n");
  Serial.begin(115200);

}

void loop() {
  // loopback 
  while(Serial.available()) Serial.write(Serial.read());
   
}

Step 3 : 지상국 BT 어댑터 연결

지상국 BT 어댑터 (Parani-SD1000U) 또한 칩센사의 제품이다.

우선 어댑터의 속도를 Dip 스위치로 셋팅한다. 4개의 스위치가 있는데 위쪽 2개를 ON으로 아래쪽 2개를 OFF 로 위치시킨다.

어댑터를 PC에 연결하고 COM port를 확인한다.(장치관리자). USB드라이버가 없다면 http://www.ftdichip.com/Drivers/VCP.htm 에서 다운 받는다. 자세한 셋팅은 http://disk.chipsen.com/download/manual/manual_sd1000u_chipsen.pdf 를 참고한다.

하이퍼 터미널 대신에 arduino IDE의 시리얼 모니터를 사용하여 셋팅해 보자. Arduino IDE의 툴/포트 를 위에서 확인한 COM port로 맞춘다. 터미널 속도를 115200 로 맞춘다. Both NL&CR임을 확인하세요.

어댑터 접속확인

터미널에 at 라고 쓰고 엔터 하면 OK 라고 대답이 온다. PC와 연결이 된 상태이다.

BT 모듈 검색

캔위성의 BT모듈을 검색해 보자. (캔위성에 BT모듈 프로그램을 업로드하고 SW6을 BT상태로 켜 놓았는지 확인)

터미널에 at+btinq? 라고 치면

주변에 있는 블루투스 장치들을 찾아 그 장치들의 BD 주소, 장치이름, 장치종류(Class of Device) 정보를 표시합니다. 검색대기상태에 있는 블루투스 장치만 검색됩니다. 약 30초 동안 최대 15개까지 주변 블루투스 장치들을 검색하며, 검색이 완료되면 ‘OK’ 응답메시지가 출력됩니다.

아래 처럼 출력될 것이다. BD의 주소는 각각 다를 것이다.

0001953D04A9,ESD100V2_v2.0.6-3D04A9,001F00

BT 모듈 연결

터미널에 atd0001953D04A9 라고 치면 해당 BT모듈에 연결된다. BD주소는 각자의 것을 사용하세요

CONNECT 0001953D04A9 라고 출력되면 연결이 된 것이다.

이제 터미널에 아무 글자나 치면 캔위성에서 loopback 되어 다시 터미널에 찍힐것이다.

BT모듈 재 연결

한번 연결된 BT모듈의 주소는 기억되어 있어서 재 연결시에는 atd 라고만 치면 간단히 연결된다.

BT 감도 측정

우선 BT를 ATD로 연결된 상태에서 명령어 모드로 전환 한다.

+++ 창에 치고 AT+RSSI,1 이라고 친다.

안드로이드 폰에 아두이노,하이퍼터미널(multi_terminal)을 설치하면 핸드폰에서 쉽게 로깅이 가능합니다.

https://play.google.com/store/apps/details?id=com.ft.multi.serial&hl=ko 참고