Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TestSDIC2017-1(answer)

1,329 views

Published on

TestSDIC2017-1(answer)

Published in: Engineering
  • D0WNL0AD FULL ▶ ▶ ▶ ▶ http://1lite.top/1Xb1l ◀ ◀ ◀ ◀
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

TestSDIC2017-1(answer)

  1. 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. 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. 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. 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. 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); }}); }

×