1. 1
2016 스마트디바이스지능통신 기말 고사(110)
Smart Device M2M
Date: 2016-06-13
1. Android의 Location Manager와 Sensor Manager를 사용할 수 있는 ICT
Service를 하나 제안하시오. – Service명, Service 설명, Location & Sensor
Manager가 사용되는 원리(20)
[헬스장 운동량 측정 Service]
- 설명: 사용자가 헬스장에 있을 때만 운동량을 측정하고 기록하여, 사용자가
특정 헬스장의 운동 기구를 어느 정도로 이용하는지 분석하여 정밀한 운
동 효과 측정
- Location Manager 사용 원리: 현재 사용자의 위치를 분석하여 특정 헬스장
일 경우 Sensor Manager를 구동함
- Sensor Manager 사용 원리: Sensor Manager의 3-axis Accelerometer,
Gyroscope를 읽어 사용자가 사용하고 있는 운동 기구를 분석하고, 운동량을
예측함
2. Bluetooth IC인 HC-05 Module의 동작을 다음 관점으로 설명하라.(60)
1) HC-05 Module을 Arduino Mega ADK와 상호 연결하는 결선 구조(VCC,
GND, TXD, RXD)를 자세히 그리라.(15)
2) HC-05 Module의 이름을 바꾸기 위한 절차를 AT Command를 포함하여
2. 2
설명하시오.(15)
- HC-05의 Switch를 CFG로 바꾸어 AT Command가 동작할 수 있도록 한다.
- HC-05의 VCC 선을 제거했다 다시 붙여 HC-05를 껐다가 다시 킨다.
- AT Command가 동작할 수 있도록 HC-05와의 Data Rate을 38,400 bps로
맞춘다.
- 문자열 “AT”를 전송하여 “OK”가 출력되는지 확인한다. “OK”가 나오지 않으
면 이전 절차를 다시 실행한다.
- 문자열 “AT+NAME=MyName”을 전송하여 이름을 바꾼다.
3) HC-05 Module과 Arduino가 아래처럼 통신하기 위한 Code를 제시하시오.
다만 결선은 1)의 결과 사용할 것.(30)
- MyStringMega.h를 사용
- 시작시 Arduino는 HC-05 Module에 문자열 “Start”를 출력
- Keyboard로 입력한 문자열을 모두 대문자로 바꾸어 HC-05 Module로 전송
- 대문자 변환 예: String str(“test”); str.toUpperCase();
#include <MyStringMega.h>
SoftwareSerial blueSerial(11, 10);
void setup() {
Serial.begin(9600);
blueSerial.begin(115200);
blueSerial.println(“Start”);
}
void loop() {
String str = getSerialInput();
if (!isEmpty(str)) {
str.toUpperCase();
blueSerial.println(str);
}
delay(100);
3. 3
}
3. Daisy Chain으로 구성한 IoT Network이 아래처럼 동작하도록 Code를 구성
하라.(30)
- IoTNetworkMega.h를 사용
- Login 이름은 이미 알고 있다고 가정
- 수신자가 문자열 “!led”를 받으면 LED 13번을 켬
- 나머지 문자열은 Serial Monitor에 그대로 출력
#include <IoTNetworkMega.h>
SoftwareSerial mySrc(11, 12);
SoftwareSerial myDest(9, 10);
String myId, netTx, netRx, netCom;
void setup() {
Serial.begin(9600);
mySrc.begin(9600); myDest.begin(9600);
mySrc.listen();
pinMode(13, OUTPUT);
}
void loop() {
String sInput = getSerialInput();
if (!isEmpty(sInput)) netWrite(myDest, myId, sInput);
sInput = getSerialInput(mySrc);
if (!isEmpty(sInput) {
boolean bCom;
decodeNetworkStr(netTx, netRx, netCom, bCom, sInput);
if (netTx != myId) {
if (bCom && netCom == “led”) digitalWrite(13, HIGH);
else Serial.println(sInput);
myDest.print(sInput);
}