SlideShare a Scribd company logo
2018 스마트디바이스지능통신 중간 고사(100)
Smart Device M2M
Date: 2018-04-18
1. 10 개의 Sensor 정보를 Server에 지속적으로 전달하기 위한 현실적인 방
법을 제안하라. 이 기능을 구현하기 위한 System 분해도를 구체적으로 제시
하시오. (20)
- 10개의 Sensor는 Arduino에 부착할 수 있으므로 1개의 Arduino만 사용; 이
Arduino에 무선(WiFi 혹은 Bluetooth) Module을 장착함
- WiFi로 연결한 경우는 직접 Internet을 통해 Server로 정보를 보내고,
Bluetooth인 경우는 Smartphone의 Internet 기능을 이용해 Server로 정보
를 보냄
- 10개의 Sensor 정보를 구분하기 위해 자체적인 Sensor 제어 문법을 정의
하고 전체 정보를 SW적으로 합하여 무선으로 정보 전송
2. Bluetooth를 지원하는 HC-05 Module과 Arduino Mega ADK를 연결하려
한다. (60)
1) HC-05와 Arduino의 HW 결선도(VCC, GND, TXD, RXD)를 그려라. (10)
2) 1)과 같이 Arduino에 연결된 HC-05가 정상 동작하는지 확인하는 Arduino
Sketch Code를 제시하라. (10)
[기본 함수 사용]
수업 시간에 제시한 Code를 써도 정답 처리
[StringTok 사용]
#include <StringTok.h>
SoftwareSerial serialBth(11, 10);
void setup() {
Serial.begin(9600);
serialBth(115200);
}
void loop() {
StringTok stInput;
// Tx
stInput.inputSerial();
if (!stInput.isEmpty()) serialBth.print(stInput.toString());
// Rx
stInput.inputSerial(serialBth);
if (!stInput.isEmpty()) Serial.print(stInput.toString());
delay(1000);
}
3) 1)과 같이 연결된 Bluetooth를 통해 Sensor 정보를 무선으로 보내려 한다.
이러한 통신을 지원하기 위한 Arduino Sketch Code를 제시하라. Sensor 정보
를 얻는 함수는 double getSensor() {}로 가정한다. (20)
#include <StringTok.h>
SoftwareSerial serialBth(11, 10);
void setup() {
Serial.begin(9600);
serialBth(115200);
}
void loop() {
double sen = getSensor();
String sSen = String(sen, 5) + “ “;
Serial.print(sSen);
serialBth.print(sSen);
delay(1000);
}
4) Sensor 정보에 실린 불필요한 잡음을 최대한 제거하면서 Sensor 정보를
보내려 한다. 3)에 제시한 Code를 어떻게 수정해야 하나? (20)
#include <StringTok.h>
#define MAX_AVG (10)
SoftwareSerial serialBth(11, 10);
void setup() {
Serial.begin(9600);
serialBth(115200);
}
void loop() {
double sen = getSensorAvg(MAX_AVG);
String sSen = String(sen, 5) + “ “;
Serial.print(sSen);
serialBth.print(sSen);
delay(1000);
}
double getSensorAvg(int nAvg) {
double ans = 0.;
for (int i = 0; i < nAvg; i++) ans += getSensor();
return ans;
}
3. 아래 Arduino Code를 가독성, 협업, 유지 보수 등을 고려하여 수정한 새
로운 Code를 제시하라. 4곳 이상에 수정을 가해야 함. (20)
int a = 6;
int b[] = {31,28,31,30,31,30};
long c = 24, d;
void setup() {
Serial.println(“6개월 동안 시간 계
산”);
}
void loop() {
d = 0;
d = b[0] + b[1] + b[2] + b[3] +
b[4] + b[5];
Serial.begin(9600);
Serial.println(c*d);
delay(1000);
}
#define MAX_MONTH (6)
#define HOUR_PER_DAY (24)
#define SERIAL_BPS (9600)
#define DELAY_MS (1000);
void setup() {
Serial.begin(SERIAL_BPS);
Serial.println(“6개월 동안 시간 계산”);
}
void loop() {
static int nMonthDay[MAX_MONTH] = {31,28,31,30,31,30};
long nHour = getTotalHour(nMonthDay, MAX_MONTH);
Serial.println(nHour);
delay(DELAY_MS);
}
long getTotalHour(int nMonthDay[], int nMaxMonth) {
long nDay = 0;
for (int i = 0; i < nMaxMonth; i++) nDay += nMonthDay[i];
return nDay*HOUR_PER_DAY;
}

More Related Content

DOCX
TestSDIC2016-2(answer)
DOCX
TestSDIC2017-1(answer)
DOCX
Test-SDIC2018-2(answer)
DOCX
TestSDIC2015-1(Answer)
DOCX
TestSDIC2017-2(answer)
DOCX
TestSDS2018-2(answer)
PDF
아두이노 2015-2 한동대학교 공학설계입문
DOCX
TestSDIC2015-2(Answer)
TestSDIC2016-2(answer)
TestSDIC2017-1(answer)
Test-SDIC2018-2(answer)
TestSDIC2015-1(Answer)
TestSDIC2017-2(answer)
TestSDS2018-2(answer)
아두이노 2015-2 한동대학교 공학설계입문
TestSDIC2015-2(Answer)

Similar to Test-SDIC2018-1(Answer) (20)

PPTX
Wiznet Academy - WizFi250 기초교육 및 실습
PPTX
Tcp server / client
PDF
Start io t_with_raspberrypi
PPTX
2017 Software Edu Fest - 생활속데이터 이야기 @ 세상을 변화시키는 소프트웨어 기술
PDF
소프트웨어의 계층구조
PDF
Blockchain 4th dapp programming
PPTX
메이커 페어 서울 2018 - 측우자격루(개발자용)
PPTX
2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx
PDF
Meteor IoT
PPTX
ARTIK 710 IoT class 02
PDF
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
PDF
라즈베리파이 Circulus API 가이드
PPTX
20140219 techdays mini 앱 개발 세미나(4)
PPTX
아두이노 RC카 만들기
PPTX
Zimiidle
DOCX
TestBCD2018-2(answer)
DOCX
TestSDS2016-2(Answer)
PPTX
[devil's camp] - 알고리즘 대회와 STL (박인서)
PDF
IoT at the Edge: AWS IoT & Greengrass 활용 방법
PDF
Beacon ble.-leejunwoo@gmail.com
Wiznet Academy - WizFi250 기초교육 및 실습
Tcp server / client
Start io t_with_raspberrypi
2017 Software Edu Fest - 생활속데이터 이야기 @ 세상을 변화시키는 소프트웨어 기술
소프트웨어의 계층구조
Blockchain 4th dapp programming
메이커 페어 서울 2018 - 측우자격루(개발자용)
2020.07.14 PWJ SunTechI IoT 소개자료 (최종) (2).pptx
Meteor IoT
ARTIK 710 IoT class 02
//BUILD/ Seoul - .NET의 현재와 미래. 그 새로운 시작
라즈베리파이 Circulus API 가이드
20140219 techdays mini 앱 개발 세미나(4)
아두이노 RC카 만들기
Zimiidle
TestBCD2018-2(answer)
TestSDS2016-2(Answer)
[devil's camp] - 알고리즘 대회와 STL (박인서)
IoT at the Edge: AWS IoT & Greengrass 활용 방법
Beacon ble.-leejunwoo@gmail.com
Ad

More from Yong Heui Cho (20)

PPTX
Android - Sensor Manager
PPTX
Android - Broadcast Receiver
PPTX
Android - Message
PPTX
Cloud Computing
PPTX
Computing Paradigm
DOCX
TestEC2018-2(answer)
DOCX
TestEC2018-1(answer)
DOCX
TestBCD2018-1(answer)
DOCX
TestSDS2018-1(answer)
PPTX
BJT - Analysis of Bias
DOCX
TestCloud2018-2(answer)
DOCX
TestECD2018-1(answer)
DOCX
TestCloud2018-1(answer)
PPTX
Cloud Service Model
DOCX
RF 증폭기 설계(Design of RF Amplifier)-rev1
PPTX
Computing Paradigm - rev1
PPTX
Cloud Deployment Model
PPTX
Cloud Computing Architecture
PPTX
Cloud Computing Fundamentals
PDF
클라우드서비스(강의계획서,2018-1)
Android - Sensor Manager
Android - Broadcast Receiver
Android - Message
Cloud Computing
Computing Paradigm
TestEC2018-2(answer)
TestEC2018-1(answer)
TestBCD2018-1(answer)
TestSDS2018-1(answer)
BJT - Analysis of Bias
TestCloud2018-2(answer)
TestECD2018-1(answer)
TestCloud2018-1(answer)
Cloud Service Model
RF 증폭기 설계(Design of RF Amplifier)-rev1
Computing Paradigm - rev1
Cloud Deployment Model
Cloud Computing Architecture
Cloud Computing Fundamentals
클라우드서비스(강의계획서,2018-1)
Ad

Test-SDIC2018-1(Answer)

  • 1. 2018 스마트디바이스지능통신 중간 고사(100) Smart Device M2M Date: 2018-04-18 1. 10 개의 Sensor 정보를 Server에 지속적으로 전달하기 위한 현실적인 방 법을 제안하라. 이 기능을 구현하기 위한 System 분해도를 구체적으로 제시 하시오. (20) - 10개의 Sensor는 Arduino에 부착할 수 있으므로 1개의 Arduino만 사용; 이 Arduino에 무선(WiFi 혹은 Bluetooth) Module을 장착함 - WiFi로 연결한 경우는 직접 Internet을 통해 Server로 정보를 보내고, Bluetooth인 경우는 Smartphone의 Internet 기능을 이용해 Server로 정보 를 보냄 - 10개의 Sensor 정보를 구분하기 위해 자체적인 Sensor 제어 문법을 정의 하고 전체 정보를 SW적으로 합하여 무선으로 정보 전송 2. Bluetooth를 지원하는 HC-05 Module과 Arduino Mega ADK를 연결하려 한다. (60) 1) HC-05와 Arduino의 HW 결선도(VCC, GND, TXD, RXD)를 그려라. (10)
  • 2. 2) 1)과 같이 Arduino에 연결된 HC-05가 정상 동작하는지 확인하는 Arduino Sketch Code를 제시하라. (10) [기본 함수 사용] 수업 시간에 제시한 Code를 써도 정답 처리 [StringTok 사용] #include <StringTok.h> SoftwareSerial serialBth(11, 10); void setup() { Serial.begin(9600); serialBth(115200); } void loop() { StringTok stInput; // Tx stInput.inputSerial(); if (!stInput.isEmpty()) serialBth.print(stInput.toString()); // Rx stInput.inputSerial(serialBth); if (!stInput.isEmpty()) Serial.print(stInput.toString()); delay(1000);
  • 3. } 3) 1)과 같이 연결된 Bluetooth를 통해 Sensor 정보를 무선으로 보내려 한다. 이러한 통신을 지원하기 위한 Arduino Sketch Code를 제시하라. Sensor 정보 를 얻는 함수는 double getSensor() {}로 가정한다. (20) #include <StringTok.h> SoftwareSerial serialBth(11, 10); void setup() { Serial.begin(9600); serialBth(115200); } void loop() { double sen = getSensor(); String sSen = String(sen, 5) + “ “; Serial.print(sSen); serialBth.print(sSen); delay(1000); } 4) Sensor 정보에 실린 불필요한 잡음을 최대한 제거하면서 Sensor 정보를 보내려 한다. 3)에 제시한 Code를 어떻게 수정해야 하나? (20) #include <StringTok.h> #define MAX_AVG (10) SoftwareSerial serialBth(11, 10);
  • 4. void setup() { Serial.begin(9600); serialBth(115200); } void loop() { double sen = getSensorAvg(MAX_AVG); String sSen = String(sen, 5) + “ “; Serial.print(sSen); serialBth.print(sSen); delay(1000); } double getSensorAvg(int nAvg) { double ans = 0.; for (int i = 0; i < nAvg; i++) ans += getSensor(); return ans; } 3. 아래 Arduino Code를 가독성, 협업, 유지 보수 등을 고려하여 수정한 새 로운 Code를 제시하라. 4곳 이상에 수정을 가해야 함. (20) int a = 6; int b[] = {31,28,31,30,31,30}; long c = 24, d; void setup() { Serial.println(“6개월 동안 시간 계 산”); } void loop() { d = 0; d = b[0] + b[1] + b[2] + b[3] + b[4] + b[5]; Serial.begin(9600); Serial.println(c*d); delay(1000); } #define MAX_MONTH (6)
  • 5. #define HOUR_PER_DAY (24) #define SERIAL_BPS (9600) #define DELAY_MS (1000); void setup() { Serial.begin(SERIAL_BPS); Serial.println(“6개월 동안 시간 계산”); } void loop() { static int nMonthDay[MAX_MONTH] = {31,28,31,30,31,30}; long nHour = getTotalHour(nMonthDay, MAX_MONTH); Serial.println(nHour); delay(DELAY_MS); } long getTotalHour(int nMonthDay[], int nMaxMonth) { long nDay = 0; for (int i = 0; i < nMaxMonth; i++) nDay += nMonthDay[i]; return nDay*HOUR_PER_DAY; }