[49호]Smart Baby Helper
2018 ICT 융합 프로젝트 공모전 우수상
Smart Baby Helper
글 | 단국대학교 정의동
1. 심사평
칩센 실생활에서 얻은 아이디어와 통계자료 및 시장조사를 이용한 프로젝트 시작에 높은 평가를 줍니다. 실제 생각보다 흔하게 일어나는 영유아 질식사고를 예방한다는 컨셉에 많이 공감하였습니다. 실용성과 창의성등 대부분의 항목에서 높은 점수를 주었으나 보고서의 정리와 시스템 구성도 등이 좀 더 보완해야될 부분 같습니다.
뉴티씨 아기와 관련된 여러가지 상태를 IoT 환경에서 감시하고, 영상을 전송하는 등으로 아기를 원격지에서도 살펴볼 수 있도록 한 점은 좋은 응용이라고 생각됩니다. 또한, IoT를 학습하는 데도 좋은 작품이 되었습니다. 다만, 완성도를 조금 높여서 실제로 사용이 가능하도록 아이디어를 첨부하면 좀 더 좋은 작품이 되리라고 생각됩니다
위드로봇 3D 프린터로 목업을 제작하고, 이 크기에 맞춰 보드를 제작한, 실제 실용적인 측면을 많이 고려한 작품입니다. 전반적으로 완성도가 높으며, 동영상 데모가 있으면 더욱 좋을 것 같습니다.
2. 작품 개요
평소 기사, 뉴스, TV 등으로 워킹맘들이 육아를 하는데 큰 어려움을 겪고 있다고 알고 있어서 이를 어떻게 디바이스 해결할 수 있을지에 대해 고민을 많이 했었습니다.
우선 워킹맘들이 가장 어려움을 겪는 부분이 어디인지 조사한 결과 예상대로 육아부분 이였고, 육아하는데 가장 큰 걱정이 무엇인지 조사한 결과 영유아의 수면이 제일 걱정된다고 했습니다. 그 원인을 찾아보았더니 수면 중 아기의 호흡곤란 등으로 사고가 많이 일어났다는 것을 알 수 있었습니다. 이런 Desk Research 뿐만 아니라 직접 아기를 키우고 계시는 육아맘들을 직접 인터뷰 및 질의응답을 진행하였고, Field Research를 조사했더니 Desk Research와 비슷한 결과를 얻을 수 있었습니다.
즉, 자녀 양육이 부모들의 가장 큰 스트레스로 작용하였고 그 원인을 파헤쳐본 결과 아기의 건강, 수유, 목욕, 양육비 등이 있었습니다.
저는 이러한 문제를 해결하고자 스마트 디바이스를 제작하고자 하였고 만들기 전에 앞서 시장에 나와있는 비슷한 제품들을 조사하였습니다.
위의 제품들의 공통적으로 가장 큰 문제라고 생각되는 점이 몸에 부착하여야만 사용이 가능한 불편한 형태로 제작된 제품이라 생각되어 이를 해결한, 부착형이 아닌 비 부착형으로 센싱을 한 스마트한 Baby Helper를 만들고자 하였습니다.
3. 작품 설명
3.1. 주요 동작 및 특징
본 작품은 크게 두 부분으로 나눌 수 있습니다. 젖병 모듈과 건강관리(허브) 모듈로 나눌 수 있는데 젖병 모듈에서는 아기의 적정 수유량, 수유온도, 수유시간을 제공 및 알람을 해 줍니다.
건강관리 모듈에서는 아기의 호흡 및 맥박수를 체크하고, 아기 주변환경의 온습도 및 공기질 상태를 체크하며, 카메라 센서를 이용해 실시간 아기 모니터링이 가능하게 하였습니다.
3.1.1. 젖병 모듈 Part
동작 및 특징
· 적외선 온도센서를 통한 젖병 내부 온도 체크
· 압력센서를 통한 수유량 체크
· VFD를 통한 실시간 젖병 내부온도 및 수유시간 확인
· 서버 및 DB를 구축하여 권장 수유량, 수유시간을 제공 및 알람
· 쌓여가는 사용자의 DATA에 맞춰 수유량, 수유시간 Update
3.1.2. 건강관리(허브) 모듈 Part
위 테스트 사진은 실제 와이파이 센서를 이용하여 맥박수 및 호흡측정을 테스트하고 그래프로 나타낸 사진입니다.
위 과정도의 우측 아기사진은 MIT에서 실제 와이파이 센서를 이용하여 아기 수면중 호흡 및 맥박 측정을 테스트한 사진입니다.
간단하게 설명하자면 와이파이 센서에서 신호를 송수신 하는데 TV, 책상 등의 사물은 송수신의 Time 변화율이 0이고, 아기의 Time 변화율은 상수이므로 이 차이를 이용하여 다른것들은 배제한채 순수한 아기의 거리값을 구할 수 있습니다. 거리값에는 아기와 모듈간의 거리값이 나오는데 여기서 Time축을 더 쪼개면 아기의 호흡량을 구할 수 있고, 호흡량 그래프 안에서도 떨림이 보이는 그래프 모양이 발생하는데 바로 이 부분이 맥박(심박)입니다.
이를 이용하여 아기의 호흡량 및 맥박수를 구할 수 있습니다.
하지만 여기에서 아직 보완 및 발전해야 하는 부분은 여러명의 사람이 있을 때 각각의 사람의 호흡 및 맥박수를 분리하여 구분해서 구해야 합니다.
현재 개발중인 부분인데, 와이파이센서 여러개를 병렬(어레이 구조)로 만들어 사물의 위치를 파악하게 하여 분리합니다. 여러개의 와이파이 센서는 각각의 방위각 및 같은 사물에 대한 거리차를 구할 수 있어 실제 모듈과 대상간의 벡터 거리값을 구할 수 있습니다.
동작 및 특징
· 와이파이 센서를 통한 호흡 및 맥박수 측정
· 온습도 센서, 공기질 센서를 통한 주변 환경 체크
· 카메라 센서를 통한 아기 상황 실시간 모니터링
· 아기의 상황에 변화가 있을시 즉시 알람기능
3.2.3. 안드로이드 – 모듈 연동 Part
아기 상태 정보
· UWB 센서를 통한 호흡, 맥박수 측정
· 마이크 센서를 통한 아기 울음소리 감지
· 공기질, 온습도 센서를 통한 주변환경 감지
· 웹캠을 통한 아기 상태 확인
· 응급상황 알림 서비스
아기 성장 정보
· 아기의 성장 상태 확인
· 아기의 현재 상태 확인
실시간 아이 식사량 체크
· 비접촉 온도센서를 통한 수유 온도 확인
· 압력센서를 통한 수유 먹은 양 체크
· 자동으로 다음 먹을 시간 계산
3.2 전체 시스템 구성
3.3 개발 환경(개발언어, Tool, 사용시스템 등)
3.3.1. 개발언어 – C, C++, Java, Php, Python
개발 Tool : Arduino IDE, Vim, Andriod Studio
사용 시스템 : Wemos-Wifi 보드
사용 시스템 : 라즈베리파이3(Model B)
젖병모듈에는 아두이노 기반의 Wemos-Wifi보드가 올라가는데 c, c++기반입니다. 건강관리(젖병) 모듈은 라즈베리파이3를 쓰는데 c,python을 기반으로 작업하였습니다. 또한 안드로이드에서는 java로 작업하였고, 서버를 위해 php를 사용했습니다.
Wemos-wifi보드를 위한 Arduino IDE, 라즈베리파이를 위한 Vim, 어플제작을 위한 Android Studio를 썼습니다.
Wemos-Wifi를 선정한 이유는 기타 보드보다 아주 사이즈가 작으면서, 와이파이 쉴드가 내장되어 있고, gpio, adc, i2c, sci, spi 등 다양한 통신기능도 있어서 모듈로 제작하기에 아주 적합하였습니다.
라즈베리파이를 선정하게 된 이유는 900MHz의 빠른 속도와, 1GB의 넉넉한 램용량, 저렴한 가격 및 많은 GPIO핀을 보유하고 있어서입니다. 또한, 서버 환경을 구축하기에 아주 적합하고 호환성 또한 매우 훌륭합니다.
4. 단계별 제작 과정
4.1.1. 계획 세우기 및 사전조사(2017.09.02 ~ 2017.09.30)
대상을 정하고 대상의 가장 큰 관심사를 조사, 그에 따른 프로젝트 작품을 선정하고 기술적 차별성은 어떻게 할것인지 등을 조사합니다.
4.1.2. 해당 작품 공부 및 제작 준비(2017.10.01 ~ 2017.10.31)
와이파이 신호를 어떻게 받아오는지, 받아온 신호를 어떻게 처리를 해 야 하는지, 서버를 어떻게 구축하고, 어떻게 데이터를 송수신 하는지 등을 공부하고 하드웨어는 어떻게 제작할 것인지 등 준비를 합니다.
4.1.3. 센서 테스트(2017.11.01. ~ 2018.01.31)
와이파이 센서, 적외선 온도 센서, 압력 센서, 온습도 센서, 공기 질 센서, 카메라 센서를 각각 테스트합니다. 센서가 많고 센싱이 어려운 만큼 전체 기간중 가장 큰 비중을 차지합니다.
4.1.4. 젖병모듈 제작(2018.02.01. ~ 2018.02.14)
이전에 테스트 했던 온도, 압력센서를 이용하여 젖병 모듈을 만듭니다. 또한, 실제 분유를 타 온도, 무게값이 잘 나오는지 에러를 처리 합니다.
4.1.5. 건강관리(허브) 모듈 제작(2018.02.15. ~ 2018.03.07)
이전에 테스트했던 와이파이, 온습도, 공기질, 카메라 센서를 전체적으로 합병하고 모듈로 제작하고 호흡, 맥박수가 잘 측정되는지, 주변 환경이 모니터링이 잘 되는지 다시 에러 처리합니다. 또한 서버에 데이터가 잘 넘어가고 받아지는지 테스트 합니다.
4.1.6. 어플 제작 및 연동(2018.03.07. ~ 2018.03.29)
안드로이드 스튜디오를 이용한 어플을 제작하고 젖병, 건강관리 모듈과의 서버를 통한 데이터 통신을 하게 합니다. 또한, 어플을 통해 사용자에게 알림 및 정보를 제공해 줍니다.
4.1.7. 보완 및 Develop(2018.03.30. ~ )
와이파이 센서를 병렬구조로 제작 및 테스트하여 다수의 사람인 경우에도 구분 및 센싱이 가능하게 하고, 와이파이 센서를 넘어 마이크 센서로 제작하여 비가청 주파수를 이용해 센싱을 하여 전자파의 위험성을 해결해 주려 합니다.
5. 기타(소스코드, 참고문헌 등)
5.1. 소스코드
5.1.1. 젖병 모듈 전체 소스
#include <ESP8266WiFi.h>
#include <font5x7.h>
#include <LedDisplay.h>
#include <Adafruit_MLX90614.h>
#define dataPin D0 // connects to the display’s data in
#define registerSelect D4 // the display’s register select pin
#define clockPin D6 // the display’s clock pin
#define enable D5 // the display’s chip enable pin
#define reset 0 // the display’s reset pin
#define displayLength 8 // number of characters in the display
#define Weight A0 // Weight sensor
int brightness = 15;
LedDisplay myDisplay = LedDisplay(dataPin, registerSelect, clockPin,
enable, reset, displayLength);
Adafruit_MLX90614 temp = Adafruit_MLX90614();
const char *ssid = “dongdong”;
const char *password = “hello4826″;
const char *host = “192.168.1.13″; //서버 주소 입력
WiFiServer server(80);
void setup() {
Serial.begin(115200);
myDisplay.begin();
// set the brightness of the display:
myDisplay.setBrightness(brightness);
temp.begin();
Serial.print(“Connecting to “);
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(“.”);
}
Serial.println(“”);
Serial.println(“WiFi connected”);
// Start the server
server.begin();
Serial.println(“Server started”);
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
String ch_weight[6] = {“0%”, “20%”, “40%”, “60%”, “80%”, “100%”};
float Temp = temp.readObjectTempC();
int weight = analogRead(Weight);
int weight_state = 0;
if(weight > 910) weight_state = 5; //100%
else if(weight > 850) weight_state = 4; //80%
else if(weight > 800) weight_state = 3; //60%
else if(weight > 760) weight_state = 2; //40%
else if(weight > 650) weight_state = 1; //20%
else weight_state = 0; // 0%
WiFiClient client = server.available();
/*
if (!client) {
delay(500);
Serial.print(“.”);
return;
}
*/
/*
WiFiClient client;
const int httpPort = 80;
if (!client.connect(host, httpPort)) {
delay(500);
Serial.print(“.”);
return;
}
*/
client.print(“temperature = “);
client.print(Temp);
Serial.print(“Weight = “); Serial.print(ch_weight[weight_state]); //Serial.println(”
*C”);
//Serial.print(“Temp = “); Serial.print(Temp); Serial.println(” *C”);
Serial.println();
myDisplay.home();
// print the millis:
myDisplay.print(” “);
myDisplay.print(Temp);
myDisplay.print(“*C”);
}
5.1.2. 서버 데이터 전송
<?php
$servername = “localhost”;
$username = “root”;
$password = “raspberry”;
$dbname = “rpidb”;
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die(“Connection failed: ” . $conn->connect_error);
}
$sql = “SELECT time, humidity0, humidity1, temperature0, temperature1 FROM envdata ORDER BY time DESC LIMIT 0, 12″;
$result = $conn->query($sql);
$time = “”;
$humidity = “”;
$temperature = “”;w
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
//echo “time: ” . $row["time"]. ” – humidity: ” . $row["humidity0"]. “.” . $row["humidity1"]. ” – temperature: ” . $row["temperature0"]. “.” . $row["temperature1"]. “<br>”;
5.2. 참고문헌
· Smart Homes that Monitor Breathing and Heart Rate Fadel Adib Hongzi Mao Zachary Kabelac Dina Katabi Robert C. Miller Massachusetts Institute of Technology
· 3D Tracking via Body Radio Reflections : Fadel Adib, Zach Kabelac, Dina Katabi, and Robert C. Miller, Massachusetts Institute of Technology
· VITAL SIGN MONITORING OF A NON-STATIONARY HUMAN THROUGH IR-UWB RADAR Faheem Khan, Jeong Woo Choi, Sung Ho Cho
· Heartbeat Detection based on Signal Reflected from Antenna in Mobile Device Yong-Jun An., Gi-Ho Yun, Jong-Gwan Yook