Presentation is loading. Please wait.

Presentation is loading. Please wait.

드라군 통신 파트 조유진.

Similar presentations


Presentation on theme: "드라군 통신 파트 조유진."— Presentation transcript:

1 드라군 통신 파트 조유진

2 개발 개요 기본 목표는 Bluetooth 장치에 값을 송수신하여 조종할 수 있도록 한다
거의 누구나 편하게 사용할 수 있고, 재사용이 가능하도록 한다 통신!

3 수신 파트(Slave) 1. 모듈 및 ATmega2560 프로그램

4 Bluetooth?? 블루투스(Bluetooth)는 1994년 에릭슨이 최초로 개발한 개인 근거리 무선 통신(PANs)을 위한 산업 표준이다.(위키피디아) 최근에는 스마트폰이나 PC에도 내장되어 있음 제일 저렴해 보여서 시도

5 모듈 정보 모듈이름 : FB155BC 제작회사 : Firmtech 구동전압 : 3.3V
통신방법 : Bluetooth Specification V1.2 통신거리 : Up to 30 M 프로파일 : SPP(Serial Port Profile)

6 모듈 세팅 정보 VCC(3.3v), GND를 연결한다 Rx는 개발 보드의 Tx에, Tx는 개발 보드의 Rx에 연결한다
상태 핀은 기기의 현재 상태(대기 중, 검색 대기 중, 통신 중 등)를 나타내므로 LED를 연결하여 쉽게 알 수 있도록 한다. UART통신 환경을 설정한다(9600/8/None/1) 수신 인터럽트를 설정하여 수신 값을 그때 그때 처리할 수 있도록 한다 기기의 이름, PIN Number 등 기본 정보들을 설정한다. 일반적으로 Slave모드로 설정되어있다 AT+BTSCAN\r을 전송해 검색이 가능하게 설정한다

7 데이터 송수신 USART 0는 모터 제어에 사용되어 1을 이용
조도 센서의 값을 ADC로 변환하여 해당 값을 UART TX로 전송 수신 인터럽트로 들어온 값들은 switch문으로 처리한다

8 Atmega2560 프로그램 시작 시작 데이터가 들어오면 인터럽트 수신된 값을 읽어 들임 UART1 설정 및 모듈 설정
수신 인터럽트 수신된 값 값에 따른 움직임 처리 전/후/좌/우/1/2/3/4/5… 시작 수신된 값을 읽어 들임 시작 UART1 설정 및 모듈 설정 조도 센서 값 ADC while(1) 변환된 값 전송 데이터가 들어오면 인터럽트

9 송신 파트(Master) 2. Android 어플리케이션

10 Android 란? Linux를 기반으로 한 휴대용 기기 OS 오픈 소스이며, 무료이다 전세계적으로 뛰어난 점유율을 가짐
버전 명을 디저트 이름으로 쓰는 것도 특징 (E)이클레어→(F)프로요→(G)진저브레드→(H)허니컴 →(I)아이스크림 샌드위치→(J)젤리빈→(K)키라임파이 Java나 C/C++로 개발이 가능하다 개발 프로그램도 무료로 제공되며 편리하게 개발할 수 있게 되어있음 Eclipse+ADT, Android Studio

11 어플리케이션 개발 환경 지원 Android 버전 개발 OS 사용 프로그램 개발 언어 기기 스펙
API 8(프로요) ~ API 16(아이스크림 샌드위치) 개발 OS 윈도우 XP, 윈도우 7 사용 프로그램 Eclipse + ADT Bundle 개발 언어 Java(App), C(AVR) 기기 스펙 Android 2.3.4(진저브레드) → Android 4.0.4(아이스크림샌드위치) Bluetooth 3.0(모듈은 1.2)

12 App 개요 사용 기능 사용된 파일 목표 Android API를 통한 Bluetooth SPP 통신
Source(Java 파일) 9개, Layout(XML 파일) 6개 목표 버튼을 클릭하거나 터치할 때 값을 전송 조도 센서 등의 값을 수신해 화면에 출력 기기 정보를 알아냄 일정시간 이상 대기 시 새로운 값을 전송

13 화면(1)

14 화면(2) 게임기 조이스틱에서 모티브를 따왔음 (현재 Control Type 추가 됨)

15 Bluetooth 통신 기본적으로 안드로이드에서 API를 통해 통신 방법을 제공함
통신 방법은 기존의 TCP/IP와 매우 유사함 연결 시 connect(), 종료 시 close() write()함수와 read()함수를 이용함 장치 검색→연결→데이터 송수신→연결 종료 데이터는 드라군 모드와 자동차 모드에 따라 조금 다른 방식으로 전송된다(드라군 모드-클릭에 반응, 자동차 모드-터치에 반응) 장치와 연결을 좀 더 효율적으로 사용 Singleton 패턴을 이용하여 단일 객체 매니저 클래스를 생성함

16 통신에 앞서서… 블루투스가 허용 상태인지, 기기가 블루투스를 지원하는 지 알아야 하므로 이를 먼저 체크한다.
1. 장치가 블루투스를 지원하는가? O : 다음으로 진행 X : Toast를 띄우며 프로그램을 종료 2. 장치의 블루투스가 Disable상태인가? O : Enable해준다 X : 바로 진행

17 장치 검색 및 접속 3. 주변에 있는 모든 검색 가능한 블루투스 장치들을 찾아 목록으로 보여줌
ArrayList를 통해 관리되며 ListView(목록형 UI)로 볼 수 있다 각각의 항목은 장치 이름/MAC 주소로 이루어진다 4. 클릭 시 접속할 지 알림 창을 띄워준다 O : 블루투스 소켓을 만들어 접속 시도 소켓은 UUID(범용 장치 ID)를 통해 생성(SPP) 오류가 일어났을 시, 거리상 제약이 있거나 UUID의 문제일 확률이 높다 X : 아무 일도 일어나지 않음

18 메시지 송수신 5. 4에서 연결한 것을 기반으로 InputStream(수신에 이용), OutputStream(송신에 이용)을 생성 6. (송신)OutputStream의 write(Bytes[]) 이용 인자는 전송할 버퍼를 의미, 버튼 터치 및 클릭 시 입력 됨 문자열도 전송 가능 본 어플리케이션에선 기기와 효율적인 통신을 위해 unsigned char에 대응 7. (수신)InputStream의 read(Bytes[]) 이용 인자는 저장할 버퍼를 의미, 반환 값은 읽어 들인 길이를 의미 블로킹 함수이므로 Thread를 이용 단, 화면을 그리는 것도 Thread이므로 충돌해 수신된 값을 출력시키는 데에 문제가 생긴다. 때문에 Handler를 이용

19 뒤처리 TCP/IP통신에서도 close()를 해주었듯이 블루투스 소켓도 close()를 사용하여 닫아준다.

20 Android App 주요 클래스 블루투스 관리 액티비티(화면) 블루투스 장치를 관리하며, 수신된 값이 들어 있음
BluetoothManager 블루투스 수신 데이터를 UI에 반영 BluetoothHandler 블루투스 데이터를 다른 작업에 지장을 주지 않고 수신 BluetoothThread 제일 처음 어플리케이션을 실행했을 때 MainActivity 장치 검색 SearchActivity 블루투스 장치에 데이터를 송수신 RemoteActivity 블루투스 관리 액티비티(화면)

21


Download ppt "드라군 통신 파트 조유진."

Similar presentations


Ads by Google