SlideShare a Scribd company logo
1 of 5
1
2017 스마트디바이스지능통신 중간 고사(100)
Smart Device M2M
Date: 2017-04-26
1. 여러 개의 Sensor 정보를 Server에 전달하기 위한 효율적인 방법을
Bluetooth를 포함하여 제안하고, 이 기능을 구현하기 위한 System 분해도/관
계도를 구체적으로 제시하시오. (15)
- 여러 Sensor 정보를 모으기 위해 Arduino Network을 사용; HW Serial을 최
소로 쓰기 위해 Daisy Chain Network으로 선택
- System 가격을 낮추기 위해 하나의 Arduino에만 Bluetooth Module을 연결
함
- Bluetooth는 Arduino와 Smartphone을 서로 연결하고, Smartphone Internet
을 이용해 Server로 연속적인 Sensor Data를 보냄
- Server로부터의 Control은 Data 전송과 반대 방향으로 각 Arduino까지 전
달함
2. Android Bluetooth 구현에 BluetoothAdapter, BluetoothDevice,
BluetoothSerialService 등의 Class가 쓰인다. OS(운영체제)와 관계된 각 Class
의 기능과 관계를 구체적으로 설명하라. (15)
1) BluetoothAdapter: 현재 Activity에 있는 Context를 통해 OS에 등록된 기
2
본 Bluetooth 장치의 Reference를 획득; 현재 Smartphone에 설치된
Bluetooth Reference가 BluetoothAdpater에 저장됨; BluetoothAdpater는 BT
통신을 위한 주된 역할을 함
2) BluetoothDevice: BluetoothDevice는 상대방 장치에 설치된 Bluetooth의
Reference를 가진 Class; BluetoothAdpater를 통해 Discovery를 시작하여 상
대방 Bluetooth의 MAC Address를 얻음
3) BluetoothSerialService: BluetoothDevice가 가진 MAC Address와
BluetoothAdapter 정보를 이용해 BluetoothSerialService의 연결 설정; 이후
BluetoothSocket과 StreamThread를 이용해 Serial 통신의 읽기/쓰기를 담당
함
3. Bluetooth를 지원하는 HC-05 Module과 Arduino Mega ADK를 연결하려
한다. (50)
1) HC-05와 Arduino의 HW 결선도(VCC, GND, TXD, RXD)를 그려라. (10)
2) HC-05 Module의 정상 동작 여부를 확인하기 위한 Arduino Serial Code를
작성하라. Smartphone에 Bluetooth Terminal은 이미 구동 중이라고 가정. (15)
#include <SoftwareSerial.h>
SoftwareSerial blueSerial(11, 10);
void setup()
{
Serial.begin(9600);
blueSerial.begin(115200);
}
3
void loop()
{
if (blueSerial.available())
Serial.write(blueSerial.read());
if (Serial.available())
blueSerial.write(Serial.read());
delay(100);
}
3) Keyboard로부터 사용자 입력을 받아 HC-05 Module의 이름(Name)을 바
꾸고 바뀐 이름을 확인하는 Code를 작성하라. HC-05는 이미 Configure
Mode로 설정되었으며, AT Command를 사용하라. (25)
#include <MyStringMega.h>
SoftwareSerial blueSerial(11, 10);
void setup()
{
Serial.begin(9600);
blueSerial.begin(38400);
Serial.print(“Insert your Bluetooth Name = “);
}
void loop()
{
String sName = getSerialInput();
if (!sName.isEmpty())
{
Serial.println(sName);
blueSerial.println(“AT+NAME=” + sName);
4
delay(100);
blueSerial.println(“AT+NAME?”);
String sBthName;
while (isEmpty(sBthName)) sBthName = getSerialInput(blueSerial);
Serial.println(“Your Bluetooth Name = “ + sBthName);
}
delay(100);
}
4. Android에서 “전등”이라는 사용자 음성 명령을 받아 “전등 켜기”와 “전등
끄기” 문자를 Toast로 출력하려 한다. 아래에 필요한 Code를 추가하라. (20)
public class MainActivity extends AppCompatActivity {
protected Button btSpeech; protected boolean bLightOn = false;
private static final int SPEECH_RECOG_INPUT = 1354;
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SPEECH_RECOG_INPUT) {
if (resultCode == RESULT_OK && data != null) {
ArrayList<String> result =
data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String sSpeech = result.get(0);
if (sSpeech.equals(“전등”)) {
bLightOn = !bLightOn;
String sMsg;
if (bLightOn) sMsg = “전등 켜기”; else sMsg = “전등 꺼기”;
Toast.makeText(this, sMsg, Toast. LENGTH_SHORT).show();
}
}
}
}
5
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btSpeech = (Button) findViewById(R.id.btSpeech);
btSpeech.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.KOREAN);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "음성 인식 중.");
startActivityForResult(intent, SPEECH_RECOG_INPUT);
}});
}

More Related Content

Viewers also liked

Android - Phone Calls
Android - Phone CallsAndroid - Phone Calls
Android - Phone CallsYong Heui Cho
 
Android - Broadcast Receiver
Android - Broadcast ReceiverAndroid - Broadcast Receiver
Android - Broadcast ReceiverYong Heui Cho
 
Android - Application Framework
Android - Application FrameworkAndroid - Application Framework
Android - Application FrameworkYong Heui Cho
 
ICT+UD IoT App 융합작품 개발문서(스마트디바이스구조)
ICT+UD IoT App 융합작품 개발문서(스마트디바이스구조)ICT+UD IoT App 융합작품 개발문서(스마트디바이스구조)
ICT+UD IoT App 융합작품 개발문서(스마트디바이스구조)Yong Heui Cho
 
TestECD2017-1(answer)
TestECD2017-1(answer)TestECD2017-1(answer)
TestECD2017-1(answer)Yong Heui Cho
 
Introduction to Bluetooth
Introduction to BluetoothIntroduction to Bluetooth
Introduction to BluetoothYong Heui Cho
 
스마트디바이스구조(강의계획서)2017-2
스마트디바이스구조(강의계획서)2017-2스마트디바이스구조(강의계획서)2017-2
스마트디바이스구조(강의계획서)2017-2Yong Heui Cho
 
Introduction to RTOS
Introduction to RTOSIntroduction to RTOS
Introduction to RTOSYong Heui Cho
 
ICT+UD 융합작품 개발문서(전자회로설계)
ICT+UD 융합작품 개발문서(전자회로설계)ICT+UD 융합작품 개발문서(전자회로설계)
ICT+UD 융합작품 개발문서(전자회로설계)Yong Heui Cho
 
Introduction to Smart Devices
Introduction to Smart DevicesIntroduction to Smart Devices
Introduction to Smart DevicesYong Heui Cho
 
Smart Device RF & Antennas
Smart Device RF & AntennasSmart Device RF & Antennas
Smart Device RF & AntennasYong Heui Cho
 

Viewers also liked (15)

Android - Phone Calls
Android - Phone CallsAndroid - Phone Calls
Android - Phone Calls
 
Android - Broadcast Receiver
Android - Broadcast ReceiverAndroid - Broadcast Receiver
Android - Broadcast Receiver
 
Android - Application Framework
Android - Application FrameworkAndroid - Application Framework
Android - Application Framework
 
ICT+UD IoT App 융합작품 개발문서(스마트디바이스구조)
ICT+UD IoT App 융합작품 개발문서(스마트디바이스구조)ICT+UD IoT App 융합작품 개발문서(스마트디바이스구조)
ICT+UD IoT App 융합작품 개발문서(스마트디바이스구조)
 
TestECD2017-1(answer)
TestECD2017-1(answer)TestECD2017-1(answer)
TestECD2017-1(answer)
 
Introduction to IoT
Introduction to IoTIntroduction to IoT
Introduction to IoT
 
Basic Android OS
Basic Android OSBasic Android OS
Basic Android OS
 
Introduction to Bluetooth
Introduction to BluetoothIntroduction to Bluetooth
Introduction to Bluetooth
 
스마트디바이스구조(강의계획서)2017-2
스마트디바이스구조(강의계획서)2017-2스마트디바이스구조(강의계획서)2017-2
스마트디바이스구조(강의계획서)2017-2
 
Introduction to RTOS
Introduction to RTOSIntroduction to RTOS
Introduction to RTOS
 
ICT+UD 융합작품 개발문서(전자회로설계)
ICT+UD 융합작품 개발문서(전자회로설계)ICT+UD 융합작품 개발문서(전자회로설계)
ICT+UD 융합작품 개발문서(전자회로설계)
 
Introduction to Smart Devices
Introduction to Smart DevicesIntroduction to Smart Devices
Introduction to Smart Devices
 
Android - Message
Android - MessageAndroid - Message
Android - Message
 
Android Programming
Android ProgrammingAndroid Programming
Android Programming
 
Smart Device RF & Antennas
Smart Device RF & AntennasSmart Device RF & Antennas
Smart Device RF & Antennas
 

Similar to TestSDIC2017-1(answer)

Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Yong Heui Cho
 
IoT at the Edge: AWS IoT & Greengrass 활용 방법
IoT at the Edge: AWS IoT & Greengrass 활용 방법IoT at the Edge: AWS IoT & Greengrass 활용 방법
IoT at the Edge: AWS IoT & Greengrass 활용 방법Amazon Web Services Korea
 
TestSDIC2016-1(answer)
TestSDIC2016-1(answer)TestSDIC2016-1(answer)
TestSDIC2016-1(answer)Yong Heui Cho
 
아두이노 RC카 만들기
아두이노 RC카 만들기아두이노 RC카 만들기
아두이노 RC카 만들기Chiwon Song
 
Wiznet Academy - WizFi250 기초교육 및 실습
Wiznet Academy - WizFi250 기초교육 및 실습Wiznet Academy - WizFi250 기초교육 및 실습
Wiznet Academy - WizFi250 기초교육 및 실습Steve Kim
 
아두이노 bluetooth
아두이노 bluetooth아두이노 bluetooth
아두이노 bluetoothJungHoon Lee
 
Beacon ble.-leejunwoo@gmail.com
Beacon ble.-leejunwoo@gmail.comBeacon ble.-leejunwoo@gmail.com
Beacon ble.-leejunwoo@gmail.comJunwoo Lee
 
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...Amazon Web Services Korea
 
AWS Greengrass V2와 신규 IoT 서비스를 활용한 개방형 edge 소프트웨어 환경 구축 - 이세현 AWS IoT 스페셜리스트 ...
AWS Greengrass V2와 신규 IoT 서비스를 활용한 개방형 edge 소프트웨어 환경 구축 - 이세현 AWS IoT 스페셜리스트 ...AWS Greengrass V2와 신규 IoT 서비스를 활용한 개방형 edge 소프트웨어 환경 구축 - 이세현 AWS IoT 스페셜리스트 ...
AWS Greengrass V2와 신규 IoT 서비스를 활용한 개방형 edge 소프트웨어 환경 구축 - 이세현 AWS IoT 스페셜리스트 ...Amazon Web Services Korea
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
Tcp server / client
Tcp server / clientTcp server / client
Tcp server / client문익 장
 
NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기TaeYoung Kim
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약세빈 정
 
한글시계웍샵_ SW
한글시계웍샵_ SW한글시계웍샵_ SW
한글시계웍샵_ SW영광 송
 
사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드봉조 김
 
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.chcbaram
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD활 김
 
판교 개발자 데이 – 쉽고 안전한 Aws IoT 플랫폼 활용하기 – 이창수
판교 개발자 데이 – 쉽고 안전한 Aws IoT 플랫폼 활용하기 – 이창수판교 개발자 데이 – 쉽고 안전한 Aws IoT 플랫폼 활용하기 – 이창수
판교 개발자 데이 – 쉽고 안전한 Aws IoT 플랫폼 활용하기 – 이창수Amazon Web Services Korea
 
20140219 techdays mini 앱 개발 세미나(4)
20140219 techdays mini  앱 개발 세미나(4) 20140219 techdays mini  앱 개발 세미나(4)
20140219 techdays mini 앱 개발 세미나(4) 영욱 김
 

Similar to TestSDIC2017-1(answer) (20)

Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)Test-SDIC2018-2(answer)
Test-SDIC2018-2(answer)
 
IoT at the Edge: AWS IoT & Greengrass 활용 방법
IoT at the Edge: AWS IoT & Greengrass 활용 방법IoT at the Edge: AWS IoT & Greengrass 활용 방법
IoT at the Edge: AWS IoT & Greengrass 활용 방법
 
Zimiidle
ZimiidleZimiidle
Zimiidle
 
TestSDIC2016-1(answer)
TestSDIC2016-1(answer)TestSDIC2016-1(answer)
TestSDIC2016-1(answer)
 
아두이노 RC카 만들기
아두이노 RC카 만들기아두이노 RC카 만들기
아두이노 RC카 만들기
 
Wiznet Academy - WizFi250 기초교육 및 실습
Wiznet Academy - WizFi250 기초교육 및 실습Wiznet Academy - WizFi250 기초교육 및 실습
Wiznet Academy - WizFi250 기초교육 및 실습
 
아두이노 bluetooth
아두이노 bluetooth아두이노 bluetooth
아두이노 bluetooth
 
Beacon ble.-leejunwoo@gmail.com
Beacon ble.-leejunwoo@gmail.comBeacon ble.-leejunwoo@gmail.com
Beacon ble.-leejunwoo@gmail.com
 
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
스마트 팩토리: AWS 사물인터넷과 인공지능을 활용한 스마트 팩토리 구축 – 최영준 AWS 솔루션즈 아키텍트, 정현아 AWS 솔루션즈 아키...
 
AWS Greengrass V2와 신규 IoT 서비스를 활용한 개방형 edge 소프트웨어 환경 구축 - 이세현 AWS IoT 스페셜리스트 ...
AWS Greengrass V2와 신규 IoT 서비스를 활용한 개방형 edge 소프트웨어 환경 구축 - 이세현 AWS IoT 스페셜리스트 ...AWS Greengrass V2와 신규 IoT 서비스를 활용한 개방형 edge 소프트웨어 환경 구축 - 이세현 AWS IoT 스페셜리스트 ...
AWS Greengrass V2와 신규 IoT 서비스를 활용한 개방형 edge 소프트웨어 환경 구축 - 이세현 AWS IoT 스페셜리스트 ...
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
Tcp server / client
Tcp server / clientTcp server / client
Tcp server / client
 
NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기NodeJs로 디바이스 통신하기
NodeJs로 디바이스 통신하기
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
한글시계웍샵_ SW
한글시계웍샵_ SW한글시계웍샵_ SW
한글시계웍샵_ SW
 
사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드사물인터넷서비스와 클라우드
사물인터넷서비스와 클라우드
 
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
컵드론 멀티콥터 펌웨어 분석 2015. 3.28.
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
 
판교 개발자 데이 – 쉽고 안전한 Aws IoT 플랫폼 활용하기 – 이창수
판교 개발자 데이 – 쉽고 안전한 Aws IoT 플랫폼 활용하기 – 이창수판교 개발자 데이 – 쉽고 안전한 Aws IoT 플랫폼 활용하기 – 이창수
판교 개발자 데이 – 쉽고 안전한 Aws IoT 플랫폼 활용하기 – 이창수
 
20140219 techdays mini 앱 개발 세미나(4)
20140219 techdays mini  앱 개발 세미나(4) 20140219 techdays mini  앱 개발 세미나(4)
20140219 techdays mini 앱 개발 세미나(4)
 

More from Yong Heui Cho

Android - Sensor Manager
Android - Sensor ManagerAndroid - Sensor Manager
Android - Sensor ManagerYong Heui Cho
 
Android - Broadcast Receiver
Android - Broadcast ReceiverAndroid - Broadcast Receiver
Android - Broadcast ReceiverYong Heui Cho
 
TestBCD2018-2(answer)
TestBCD2018-2(answer)TestBCD2018-2(answer)
TestBCD2018-2(answer)Yong Heui Cho
 
TestSDS2018-2(answer)
TestSDS2018-2(answer)TestSDS2018-2(answer)
TestSDS2018-2(answer)Yong Heui Cho
 
TestEC2018-2(answer)
TestEC2018-2(answer)TestEC2018-2(answer)
TestEC2018-2(answer)Yong Heui Cho
 
TestEC2018-1(answer)
TestEC2018-1(answer)TestEC2018-1(answer)
TestEC2018-1(answer)Yong Heui Cho
 
TestBCD2018-1(answer)
TestBCD2018-1(answer)TestBCD2018-1(answer)
TestBCD2018-1(answer)Yong Heui Cho
 
TestSDS2018-1(answer)
TestSDS2018-1(answer)TestSDS2018-1(answer)
TestSDS2018-1(answer)Yong Heui Cho
 
BJT - Analysis of Bias
BJT - Analysis of BiasBJT - Analysis of Bias
BJT - Analysis of BiasYong Heui Cho
 
TestCloud2018-2(answer)
TestCloud2018-2(answer)TestCloud2018-2(answer)
TestCloud2018-2(answer)Yong Heui Cho
 
TestECD2018-1(answer)
TestECD2018-1(answer)TestECD2018-1(answer)
TestECD2018-1(answer)Yong Heui Cho
 
TestCloud2018-1(answer)
TestCloud2018-1(answer)TestCloud2018-1(answer)
TestCloud2018-1(answer)Yong Heui Cho
 
RF 증폭기 설계(Design of RF Amplifier)-rev1
RF 증폭기 설계(Design of RF Amplifier)-rev1RF 증폭기 설계(Design of RF Amplifier)-rev1
RF 증폭기 설계(Design of RF Amplifier)-rev1Yong Heui Cho
 
Computing Paradigm - rev1
Computing Paradigm - rev1Computing Paradigm - rev1
Computing Paradigm - rev1Yong Heui Cho
 
Cloud Deployment Model
Cloud Deployment ModelCloud Deployment Model
Cloud Deployment ModelYong Heui Cho
 
Cloud Computing Architecture
Cloud Computing ArchitectureCloud Computing Architecture
Cloud Computing ArchitectureYong Heui Cho
 

More from Yong Heui Cho (20)

Android - Sensor Manager
Android - Sensor ManagerAndroid - Sensor Manager
Android - Sensor Manager
 
Android - Broadcast Receiver
Android - Broadcast ReceiverAndroid - Broadcast Receiver
Android - Broadcast Receiver
 
Android - Message
Android - MessageAndroid - Message
Android - Message
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Computing Paradigm
Computing ParadigmComputing Paradigm
Computing Paradigm
 
TestBCD2018-2(answer)
TestBCD2018-2(answer)TestBCD2018-2(answer)
TestBCD2018-2(answer)
 
TestSDS2018-2(answer)
TestSDS2018-2(answer)TestSDS2018-2(answer)
TestSDS2018-2(answer)
 
TestEC2018-2(answer)
TestEC2018-2(answer)TestEC2018-2(answer)
TestEC2018-2(answer)
 
TestEC2018-1(answer)
TestEC2018-1(answer)TestEC2018-1(answer)
TestEC2018-1(answer)
 
TestBCD2018-1(answer)
TestBCD2018-1(answer)TestBCD2018-1(answer)
TestBCD2018-1(answer)
 
TestSDS2018-1(answer)
TestSDS2018-1(answer)TestSDS2018-1(answer)
TestSDS2018-1(answer)
 
BJT - Analysis of Bias
BJT - Analysis of BiasBJT - Analysis of Bias
BJT - Analysis of Bias
 
TestCloud2018-2(answer)
TestCloud2018-2(answer)TestCloud2018-2(answer)
TestCloud2018-2(answer)
 
TestECD2018-1(answer)
TestECD2018-1(answer)TestECD2018-1(answer)
TestECD2018-1(answer)
 
TestCloud2018-1(answer)
TestCloud2018-1(answer)TestCloud2018-1(answer)
TestCloud2018-1(answer)
 
Cloud Service Model
Cloud Service ModelCloud Service Model
Cloud Service Model
 
RF 증폭기 설계(Design of RF Amplifier)-rev1
RF 증폭기 설계(Design of RF Amplifier)-rev1RF 증폭기 설계(Design of RF Amplifier)-rev1
RF 증폭기 설계(Design of RF Amplifier)-rev1
 
Computing Paradigm - rev1
Computing Paradigm - rev1Computing Paradigm - rev1
Computing Paradigm - rev1
 
Cloud Deployment Model
Cloud Deployment ModelCloud Deployment Model
Cloud Deployment Model
 
Cloud Computing Architecture
Cloud Computing ArchitectureCloud Computing Architecture
Cloud Computing Architecture
 

TestSDIC2017-1(answer)

  • 1. 1 2017 스마트디바이스지능통신 중간 고사(100) Smart Device M2M Date: 2017-04-26 1. 여러 개의 Sensor 정보를 Server에 전달하기 위한 효율적인 방법을 Bluetooth를 포함하여 제안하고, 이 기능을 구현하기 위한 System 분해도/관 계도를 구체적으로 제시하시오. (15) - 여러 Sensor 정보를 모으기 위해 Arduino Network을 사용; HW Serial을 최 소로 쓰기 위해 Daisy Chain Network으로 선택 - System 가격을 낮추기 위해 하나의 Arduino에만 Bluetooth Module을 연결 함 - Bluetooth는 Arduino와 Smartphone을 서로 연결하고, Smartphone Internet 을 이용해 Server로 연속적인 Sensor Data를 보냄 - Server로부터의 Control은 Data 전송과 반대 방향으로 각 Arduino까지 전 달함 2. Android Bluetooth 구현에 BluetoothAdapter, BluetoothDevice, BluetoothSerialService 등의 Class가 쓰인다. OS(운영체제)와 관계된 각 Class 의 기능과 관계를 구체적으로 설명하라. (15) 1) BluetoothAdapter: 현재 Activity에 있는 Context를 통해 OS에 등록된 기
  • 2. 2 본 Bluetooth 장치의 Reference를 획득; 현재 Smartphone에 설치된 Bluetooth Reference가 BluetoothAdpater에 저장됨; BluetoothAdpater는 BT 통신을 위한 주된 역할을 함 2) BluetoothDevice: BluetoothDevice는 상대방 장치에 설치된 Bluetooth의 Reference를 가진 Class; BluetoothAdpater를 통해 Discovery를 시작하여 상 대방 Bluetooth의 MAC Address를 얻음 3) BluetoothSerialService: BluetoothDevice가 가진 MAC Address와 BluetoothAdapter 정보를 이용해 BluetoothSerialService의 연결 설정; 이후 BluetoothSocket과 StreamThread를 이용해 Serial 통신의 읽기/쓰기를 담당 함 3. Bluetooth를 지원하는 HC-05 Module과 Arduino Mega ADK를 연결하려 한다. (50) 1) HC-05와 Arduino의 HW 결선도(VCC, GND, TXD, RXD)를 그려라. (10) 2) HC-05 Module의 정상 동작 여부를 확인하기 위한 Arduino Serial Code를 작성하라. Smartphone에 Bluetooth Terminal은 이미 구동 중이라고 가정. (15) #include <SoftwareSerial.h> SoftwareSerial blueSerial(11, 10); void setup() { Serial.begin(9600); blueSerial.begin(115200); }
  • 3. 3 void loop() { if (blueSerial.available()) Serial.write(blueSerial.read()); if (Serial.available()) blueSerial.write(Serial.read()); delay(100); } 3) Keyboard로부터 사용자 입력을 받아 HC-05 Module의 이름(Name)을 바 꾸고 바뀐 이름을 확인하는 Code를 작성하라. HC-05는 이미 Configure Mode로 설정되었으며, AT Command를 사용하라. (25) #include <MyStringMega.h> SoftwareSerial blueSerial(11, 10); void setup() { Serial.begin(9600); blueSerial.begin(38400); Serial.print(“Insert your Bluetooth Name = “); } void loop() { String sName = getSerialInput(); if (!sName.isEmpty()) { Serial.println(sName); blueSerial.println(“AT+NAME=” + sName);
  • 4. 4 delay(100); blueSerial.println(“AT+NAME?”); String sBthName; while (isEmpty(sBthName)) sBthName = getSerialInput(blueSerial); Serial.println(“Your Bluetooth Name = “ + sBthName); } delay(100); } 4. Android에서 “전등”이라는 사용자 음성 명령을 받아 “전등 켜기”와 “전등 끄기” 문자를 Toast로 출력하려 한다. 아래에 필요한 Code를 추가하라. (20) public class MainActivity extends AppCompatActivity { protected Button btSpeech; protected boolean bLightOn = false; private static final int SPEECH_RECOG_INPUT = 1354; protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == SPEECH_RECOG_INPUT) { if (resultCode == RESULT_OK && data != null) { ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); String sSpeech = result.get(0); if (sSpeech.equals(“전등”)) { bLightOn = !bLightOn; String sMsg; if (bLightOn) sMsg = “전등 켜기”; else sMsg = “전등 꺼기”; Toast.makeText(this, sMsg, Toast. LENGTH_SHORT).show(); } } } }
  • 5. 5 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btSpeech = (Button) findViewById(R.id.btSpeech); btSpeech.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.KOREAN); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "음성 인식 중."); startActivityForResult(intent, SPEECH_RECOG_INPUT); }}); }