November 19, 2024

디바이스마트 미디어:

[66호] 원하는 색상으로 제어가 가능한 아두이노 IoT 스마트 무드등 키트 -

2021-06-25

★2021 ICT 융합 프로젝트 공모전 결과 발표! -

2021-05-12

디바이스마트 국내 온라인 유통사 유일 벨로다인 라이다 공급! -

2021-02-16

★총 상금 500만원 /2021 ICT 융합 프로젝트 공모전★ -

2021-01-18

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

[61호]음성으로 제어하는 간접등 만들기 -

2020-08-26

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나 -

2020-06-30

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기 -

2020-06-30

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

[49호]간편한 IoT 프로젝트의 시작, 라즈베리파이 Grove IoT 스타터키트

  SEEED  

간편한 IoT 프로젝트의 시작,

라즈베리파이 Grove IoT 스타터키트

 

많은 개발자들에게 라즈베리파이에 IoT 프로젝트를 구축하는 것은 복잡한 하드웨어 연결과 소프트웨어 프로그래밍으로 인해 결코 쉬운 일이 아니다.
Seeed와 Microsoft는 Microsoft IoT Grove Kit를 도입하여 이러한 문제를 완화하기 위해 협력했다.
이 키트에 포함된 GrovePi+ 케이프는 Windows 10 IoT Core를 실행하는 라즈베리파이3 및 라즈베리파이2와 완벽하게 호환된다. 사용이 간편한 Grove 시스템을 사용하면 GrovePi+의 Grove 인터페이스를 통해 최대 15개의 Grove 모듈을 라즈베리파이에 연결할 수 있다.
그 외에도 이 키트에는 고성능 센서 및 액추에이터, 5인치 HDMI 디스플레이 및 백라이트가 있는 RGB LCD가 포함되어 있다. Microsoft IoT Grove Kit는 사물의 인터넷 탐색을 시작할 수 있는 강력한 플랫폼으로 앞으로 IoT 프로젝트에 있어 활용도가 높을 것으로 예상된다.
현재 디바이스마트 홈페이지(www.devicemart.co.kr)에서 구매 가능하며, IoT 프로젝트를 시작하려면 WindowsOnDevices.com 를 통해 확인할 수 있다.

Part list
· GrovePi+ X 1
· 5인치 HDMI 디스플레이(with USB TouchScreen) X 1
· Grove – 릴레이 X 1
· Grove – 온습도센서 X 1
· Grove – 초음파 레인저 X 1
· Grove – LED 바 v2.0 X 1
· Grove – 회전각도센서(P) X 1
· Grove – 부저 X 1
· Grove – 사운드센서 X 1
· Grove – 라이트센서 v1.2 X 1
· Grove – 버튼 X 1
· Grove – LCD RGB 백라이트 X 1
· Flat HDMI Male to Male 케이블 (1M) X 1
· Micro USB 케이블 (1200px) X 1
· 26AWG Grove 케이블 X 1

 

라즈베리파이 Grove IoT 스타터키트 [NT110060482] 제품군 구매하러 가기

 

 

[49호]다양한 외부 장치 동작 & 게임 실습을 즐길 수 있는 스크레치 코딩 키트 출시

  펌테크  

다양한 외부 장치 동작 &

게임 실습을 즐길 수 있는 스크레치 코딩 키트 출시

 

통신 모듈, 교육용 키트 등을 개발하고 판매하는 펌테크에서는 코딩 입문자에게 적합한 다양한 교육 시스템을 즐길 수 있는 ‘흥미진진 스크레치 코딩 키트 (Scratch KIT-100)’를 출시하였다.
아두이노 우노와 7개의 다양한 실드, 케이블, 매뉴얼 등 구성품으로 이루어져 있는 Scratch KIT-100은 스크레치(엠블럭)로 코딩하여 PC와 연결되어 있는 다양한 외부 장치 제어가 가능하며, 재미있는 동작 실습이 가능한 교육용 키트이다. 외부 장치 동작 실습과 게임 동작 실습을 기본적으로 제공한다.

외부 장치를 이용하여 LED, 스위치, LED&스위치, 센서, FND, 모터, 부저, 꼬마전구 등의 38가지 동작 실습이 가능하며 실습에 대한 엠블럭 소스와 그림 위주의 사용자 매뉴얼, 동영상이 담긴 DVD가 제공된다.

키보드, 스위치, 모터, 센서를 활용하여 공 받기 게임, 공 피하기 게임, 두더지 찾기 등 22가지의 게임 실습도 가능하다. 게임 실습에도 소스, 매뉴얼, 동영상이 같이 제공된다.
Scratch KIT-100은 14세 이상의 코딩 입문자 또는 코딩을 가르치는 선생님들의 제품으로 최적화되었다. 코딩 교육뿐만 아니라 코딩을 통해 직접 눈앞에서 여러 가지 실습을 통해 흥미를 유발할 수 있는 교육키트이다.

현재 디바이스마트에서는 ’Scratch KIT-100’ 1개의 시리즈 제품이 판매되고 있지만 추후 드론이 추가된 ‘Scratch KIT-200’이 출시될 예정이다.

 

흥미진진 스크레치 코딩 키트(Scratch KIT-100) 제품 구매하러가기

 

 

[49호]제이씨넷, 실습 키트 JMOD-128-1 키트 2종(Basic, Full 세트) 출시

  제이씨넷  

‘마이크로컨트롤러 ATmega128 DIY 여행’(도서) &

실습 키트 JMOD-128-1 키트 2종(Basic, Full 세트) 출시

 

제이씨넷은 최근 ‘마이크로컨트롤러 ATmega 128 DIY 여행’ 도서를 출간하면서, 이의 실습 키트인 ‘JMOD-128-1 키트 – 베이직(Basic) 세트’와 ‘JMOD-128-1 키트 – 풀(Full) 세트’, 2종을 함께 선보였다.

‘마이크로컨트롤러 ATmega128 DIY 여행’은 ATmega128을 기반으로 LED, FND, 버저, 모터, 센서 등의 기본 전자부품을 결합하여 간단한 생활용품을 직접 제작하는 과정을 초급자의 입장을 고려하여 제시한 기술 도서이다. 12개로 나누어진 코스를 통하여, LED를 이용한 특별한 크리스마스트리, FND를 응용한 자동차 전화번호 표시기, 거리센서와 CLCD를 이용한 키 측정 장치, 노래하는 버저 등 재미있는 생활용품을 DIY로 제작해 볼 수 있도록 원리와 실습의 과정을 제시한다.

JMOD-128-1 키트 – 베이직(Basic) 세트는 위 도서의 실습에 필요한 기본 전자 부품을 모아 놓은 세트이다. JMOD-128-1 모듈을 가지고 있는 경우, 이 세트를 이용하면 위 도서의 1장부터 10장(6장 일부 제외)까지의 실습을 DIY로 실행해 볼 수 있다.

JMOD-128-1 키트 – 풀(Full) 세트는 위 도서의 실습에 필요한 전체 부품을 모아 놓은 세트로 위 도사와 JMOD-128-1 기본 모듈도 함께 포함하고 있다. 이 세트를 이용하면 위 도서의 전체 내용(1장부터 12장까지)의 모든 실습을 DIY로 실행해 볼 수 있다.

3시간씩 12번, 36시간을 투자하여 ATmega128 마이크로컨트롤러의 이론과 실전 능력을 빠르게 갖추고 싶은 초급자에게 강력 추천한다.

 

 

 

JMOD-128-1 키트 – 베이직(Basic) 세트 제품 구매하러 가기

JMOD-128-1 키트 – 풀(Full) 세트 제품 구매하러 가기

 

 

 

[49호]장애인 주차구역 불법단속 시스템

Cap 2018-07-12 14-10-54-440

Cap 2018-07-12 14-10-54-440

  2018 ICT 융합 프로젝트 공모전 우수상  

장애인 주차구역 불법단속 시스템

글 | 경상대학교 박주형

 

1. 심사평

칩센 실용적인 아이디어로 판단됩니다. 사실 주차장에 대한 초음파 감지 장치와 주차관리를 위한 번호판독기는 모두 구현되어 있는 기술이지만, 공공질서를 위한 형태로 융합한 형태가 좋다고 판단됩니다.

뉴티씨 장애인 주차구역에 등록되지 않은 비장애인 차량이 주차할 경우, 경보를 일으킨다는 컨셉으로 만들어졌는데 차량 번호판 인식, 차량 접근 인식, 경보 울림 등의 여러가지 기술들을 잘 구현한 듯 합니다. 다만, 보고서의 완성도가 많이 부족하여, 실제 구현을 잘 한 것이라는 부분에 대한 인식을 확실히 하기 어렵습니다. 잘 만드는 것도 중요하지만, 보고서로 다른 사람들도 잘 이해할 수 있도록 하는 부분도 매우 중요하다는 점을 인식하셔서, 다음에는 꼭 보고서도 잘 작성하시기 바랍니다. 전반적으로 높은 점수를 드렸습니다.

위드로봇 불법 주차 단속을 무인으로 할 수 있다는 점에서 작품성이 높다고 생각합니다. 서버에서 문자 인식을 하도록 되어 있는데, 이럴 경우라면 단순히 사진을 찍어서 압축한 뒤 서버에서 처리하는 것이 나으며, 더 좋은 방법은 라즈베리파이에서 직접 문자 인식을 수행하도록 구성하면 완성도가 높은 작품이 될 것 같습니다. 보고서 내용 만으론 어느 정도 인식률로 동작했는지 알 수가 없어 완성도 부분에서 점수가 차감되었습니다.

2. 작품 개요
2.1. 작품 소개
장애인 전용주차구역에 장애인 차량 외의 차량이 주차할 경우 경보음을 내고, 차량의 번호판을 관리자 서버에 바로 전송합니다.
2.1.1. 기획의도
· 매년 장애인 구역에 불법주차차량증가
· 장애인 전용주차 구역에 불법주차 된 차량이 보여도 애플리케이션을 다운받아서 신고해야하는 번거로움이 있어 대부분 그냥 보고 넘김
· 장애인 전용주차구역에 불법 주차된 차량의 수들을 감소시키고, 장애인 분들의 편의 제공을 목표로 함
· 불법주차를 할 수 없게 만들어 주차를 할 수 없는 문화로 만들어서 시민의식을 높여 선진국으로 발전

2.2. 작품의 개발 배경 및 필요성

49 ICT_불법단속 (1)
장애인 주차구역은 걷기가 불편한 사람들을 위해 만들어진 주차시설로 일반 주차 구역에 비해 약 1.5배가 크다. 크기가 넓은 이유는 걷기가 불편한 사람들이 목발이나 휠체어를 이용하는 경우 차를 타고 내릴 때 더 많은 공간을 필요로 하며, 보행 안전 통로가 확보되어야 하기 때문이다. 하지만 다리가 불편한 사람들을 위한 장애인 전용 주차구역에 위반사례들이 매년 급증하고 있다. 대구 지역에서만 보더라고 2014년에는 3,687건, 2015년에는 6,990건, 그리고 2016년에는 10,502건으로 해가 지날수록 거의 2배의 값으로 증가하고 있다.
일일이 단속하는 것에도 어려움이 있다. 장애인 주차 표지를 대여하거나 위변조한 차량은 일일이 근접해서 관찰하지 않으면 식별하기 어렵다. 인력 부족 또한 심각하다. 지난 18일부터 오는 5월 20일까지 실시하는 올 상반기 장애인전용주차구역 집중 점검 기간동안 불법주차 단속에 나서는 복지부 소속 장애인정책과 직원은 8명이 전부다.
현재 시행되고있는 장애인 주차구역신고에 대한 행정망 또한 비효율적이다. 장애인 주차구역 위반 차량을 신고하기 위해서는 생활불편 신고 앱을 다운 받아서 글을 쓰고 사진과 위치까지 올려야 한다. 이것을 올린다 해도 바로 처리되는 것이 아니라 행정업무의 분할로 1건을 처리하는 20~60분 걸린다. 그러면 처리되는 시간동안 그 차량이 빠져나갈 수가 있다. 따라서 이런 현재의 문제상황을 인식하고 증가하는 불법주차 사례를 감소시키기 위해 프로젝트를 하게 되었다.

2.3. 작품의 특징 및 장점
가. 단속 신고 자동화
장애인을 위한 주차 관리 시스템은 장애인 주차 구역 내 차량 주차 시 차량 번호를 추출하고 기존 데이터베이스와 대조하여 장애인 차량인지 확인한다. 미등록 차량일 경우 즉시 데이터를 전송하여 신고를 자동화한다.

나. 장애인 차량 주차증 불필요
기존의 장애인 주차 구역 단속은 장애인 등록 차량이라도 장애인 주차증을 분실하거나 부착하지 않을 경우 단속의 대상이 된다. 또한 주차증의 허점을 이용해 차량 번호와 장애인 자동차 스티커에 새겨진 번호가 다른 경우나 주차증을 위변조하여 부착하는 등 단속을 피한 장애인 주차 구역 주정차 위반 사례가 발견되고 있다.
하지만 장애인을 위한 주차 관리 시스템은 장애인 주차 구역에 차량 주차 시 장애인 차량인지 확인하고 미등록 차량임을 인식하는 즉시 신고하기 때문에 스티커 부착 유무나 위변조와 관련 없이 정확한 단속을 할 수 있다.

다. 일반 주차 관리 시스템과 차이
기존에 상용화된 주차 관리 시스템은 주차장 입구에서 차량 번호 영상을 인식하는 것에 비해 장애인을 위한 주차 관리 시스템은 장애인 주차 구역 내 주차 시 데이터를 추출한다. 이로 인해 현재 특정 차량이 어느 구역에 주차되어 있는지를 알 수 있다.

라. 장애인 주차 구역 관리 시스템 부재 해결
장애인 주차 구역에 대해서는 대수롭지 않다는 인식이 만연하여 주차 위반에 대한 문제점 또한 크게 의식되지 않고 있기 때문인지 장애인 주차 구역 통제 시스템이 제대로 마련되어 있지 않다. 장애인을 위한 주차 관리 시스템은 이러한 부재를 메꿀 새로운 시스템이다.

3. 작품 설명
3.1. 주요 동작 및 특징

49 ICT_불법단속 (1)

차량이 들어오면 일단 인지를 하고, 카메라를 이용하여 차량 번호 판을 인식하여 이 차량이 장애인 차량인지 비장애인 차량인지 구별을 한다. 만약 비장애인 차량이라면 경보음을 울리고 데이터가 관리자에게 전송된다.
3.2. 전체 시스템 구성

49 ICT_불법단속 (2)

차량이 들어오면 일단 인지를 하고, 카메라를 이용하여 차량 번호판을 인식하여 이 차량이 장애인 차량인지 비장애인 차량인지 구별을 한다. 만약 비장애인 차량이라면 경보음을 울리고 데이터가 관리자에게 전송된다.

49 ICT_불법단속 (3)

3.3. 개발 환경

49 ICT_불법단속 (4)
4. 단계별 제작 과정
초음파센서 알고리즘

49 ICT_불법단속 (5)

쉘스크립트 알고리즘

49 ICT_불법단속 (6)

데이터베이스 저장화면

49 ICT_불법단속 (2)

번호판 인식화면

49 ICT_불법단속 (3)

홈페이지 저장화면

49 ICT_불법단속 (7)

5. 기타
5.1. 작품의 기대효과
가. 단속 인력 최소화 및 효율적 행정 처리
장애인을 위한 주차 관리 시스템은 단속 신고 자동화를 내세우고 있어 단속 관련 업무를 최소화하고 업무 처리에 소비되는 시간을 단축시킬 수 있다. 또한 신고 자동화로 인한 항시 단속으로 단속 인력 부족에 대한 문제를 해결할 수 있으며 단속 신고 포상과 관련된 비용을 축소할 수 있다.

나. 인식 개선
단속 업무 자동화로 인해 불법 주차 차량에 대한 확실한 증거를 확보하게 되고, 확증이 생긴 단속 대상은 결격 사유에 해당하지 않기 때문에 자동으로 과태료 부과 대상이 된다. 항시 단속하여 불법 주차 차량이 신속히 적발되어 처벌되면 장애인 주차 구역에 대한 인식 개선을 노릴 수 있다.

다. 불법 주차 감소
수시로 단속하여 쉽게 처벌 대상이 되고 주차 구역 위반에 대한 인식이 변화하면 불법 주차 차량의 감소를 기대할 수 있다. 이로 인해 장애인 전용 주차 구역이 필요한 이들이 마땅한 자리를 얻을 수 있다.

라. 시민의식 함양
불법 주차 감소함에 따라 불법에 대하여 하지 못하도록 사회 인식을 바꾸고 대한민국 사회에서 불법을 하지 않는 나라로 바뀌어 시민의식을 깨우치고 조금 더 선진국으로 나아가는 방향을 기대하여 본다.

마. 불법 주차 처리성
지금 현재 불법 주차 시에 어플리케이션으로 신고를 하게 되면 신고를 처리하면 신고처리를 하는 시간이 1시간정도의 시간이 걸리는 데 주차공간에 있는 차량이 빠져나오는데 이렇게 오랜 시간이 걸리게 되면 정작 주차를 하려고 하였던 장애인 차량은 기다리기만 할 수도 없는 노릇이다. 하지만 이 시스템을 사용하게 되면 불법 주차로 간주되는 즉시 바로 경고음과 주차관리자 및 교통과 관리자에게 통보가 되므로 불법주차 차량을 바로 빠져나오게 할 수 있다. 이렇게 되면 기다리는 사람도 발생하지 않아 고생하지 않아도 된다.

5.2. 프로젝트를 통해 배우거나 느낀 점
비효율적인 행정 처리
민원은 많지만 이를 수용할 인력도 효율적인 프로세스도 없다. 또한 20%가량의 민원은 정보가 부족하다는 이유로 처리되지 않는다. 이러한 문제점은 민원이 민원을 만들어 낸다고 생각했다. 즉각 단속이 가능해 진다면 처리 속도는 물론이고 단속 인원도 필요없다. 무엇보다 중요한 것은 정보가 부족하다는 이유로 민원이 처리 되지 않는 일은 없을 것이다.

인식 개선
많은 기사를 통해 놀라운 문구를 접했다.
“장애인 구역에 주차하면 어때서?”, “장애인 주차 구역에 주차한 시장”, “장애인 주차 구역 주차 후 과태료 물자 도리어 화를 낸다.” 이렇듯 많은 사람들이 장애인 주차공간에 주차하는 것을 별것 아니라고 생각한다. 이런 생각들이 쌓여서 현재 수많은 민원과 민원에 따른 행정 업무가 필요해졌다. 불법 주차 시 즉각 단속을 할 수 있다면 장애인 주차 구역에 주차를 하지 않을 것이며 추후에는 인식 개선으로 이어질 것이다. 장애인 주차 구역뿐만 아니라 무단 행단과 음주 운전 같이 쉽게 어겨지는 행위들도 즉각 단속을 통한 인식 개선이 필요하다고 느낀다.

5.3. 영상처리 소스코드

#include <opencv2/opencv.hpp>

#include <iostream>
#include <cstdlib>
#include <stack>

using namespace cv;
using namespace std;

int main()
{
Mat image, image1, image2, image3, drawing;
Rect rect, temp_rect;
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
double ratio, delta_x, delta_y, gradient;
int select, plate_width, count, friend_count = 0, refinery_count = 0;
stack<int> Stack;
stack<int> Stack2;
image = imread(“C:\\Users\\aucun\\Documents\\Visual Studio 2018\\Projects\\opencv_basic\\Plates\\3.JPG”); // 이미지 읽기

imshow(“Original”, image);
waitKey(0);

image.copyTo(image2); // 이미지 복사
image.copyTo(image3);

cvtColor(image2, image2, CV_BGR2GRAY); // 회색으로 변환
imshow(“Original->Gray”, image2);
waitKey(0);

Canny(image2, image2, 100, 300, 3); // 외각선 추출
imshow(“Original->Gray->Canny”, image2);
waitKey(0);

 

// Finding contours.
findContours(image2, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point());
vector<vector<Point> > contours_poly(contours.size());
vector<Rect> boundRect(contours.size());
vector<Rect> boundRect2(contours.size());

for (int i = 0; i< contours.size(); i++) {
approxPolyDP(Mat(contours[i]), contours_poly[i], 1, true);
boundRect[i] = boundingRect(Mat(contours_poly[i]));
}

drawing = Mat::zeros(image2.size(), CV_8UC3);

for (int i = 0; i< contours.size(); i++) {

ratio = (double)boundRect[i].height / boundRect[i].width;

if ((ratio <= 2.5) && (ratio >= 0.5) && (boundRect[i].area() <= 700) && (boundRect[i].area() >= 100)) {

drawContours(drawing, contours, i, Scalar(0, 255, 255), 1, 8, hierarchy, 0, Point());
rectangle(drawing, boundRect[i].tl(), boundRect[i].br(), Scalar(255, 0, 0), 1, 8, 0);

boundRect2[refinery_count] = boundRect[i];
refinery_count += 1;
}
}

boundRect2.resize(refinery_count);

imshow(“Original->Gray->Canny->Contours&Rectangles”, drawing);
waitKey(0);

// Bubble Sort accordance with X-coordinate.
for (int i = 0; i<boundRect2.size(); i++) {
for (int j = 0; j<(boundRect2.size() – i); j++) {
if (boundRect2[j].tl().x > boundRect2[j + 1].tl().x) {
temp_rect = boundRect2[j];
boundRect2[j] = boundRect2[j + 1];
boundRect2[j + 1] = temp_rect;
}
}
}
for (int i = 0; i< boundRect2.size(); i++) {
rectangle(image3, boundRect2[i].tl(), boundRect2[i].br(), Scalar(0, 255, 0), 1, 8, 0);
count = 0;
// Snake moves to right, for eating his freind.
for (int j = i + 1; j<boundRect2.size(); j++) {

delta_x = abs(boundRect2[j].tl().x – boundRect2[i].tl().x);

if (delta_x > 150) // Can’t eat snake friend too far ^-^.
break;
delta_y = abs(boundRect2[j].tl().y – boundRect2[i].tl().y);
if (delta_x == 0) {
delta_x = 1;
}
if (delta_y == 0) {
delta_y = 1;
}
gradient = delta_y / delta_x;
//cout << i << endl;

if (gradient < 0.25) {
count++;

if (!Stack.empty()) {
if ((boundRect2[j].tl().x > (boundRect2[Stack.top()].tl().x + (boundRect2[Stack.top()].width / 2)))) {
Stack.push(j);
}
}
else {
Stack.push(j);
}
}
}
if (count > friend_count) {
while (!Stack2.empty()) Stack2.pop();
while (!Stack.empty()) {
Stack2.push(Stack.top());
Stack.pop();
cout << Stack2.top() << endl;
}
select = i;
friend_count = count;
rectangle(image3, boundRect2[select].tl(), boundRect2[select].br(), Scalar(255, 0, 0), 1, 8, 0);
plate_width = delta_x;
}
while (!Stack.empty()) Stack.pop(); //스택 비우기
} // 네모칸을 이미지에 표시
rectangle(image3, boundRect2[select].tl(), boundRect2[select].br(), Scalar(0, 0, 255), 2, 8, 0);
line(image3, boundRect2[select].tl(), Point(boundRect2[select].tl().x + plate_width, boundRect2[select].tl().y), Scalar(0, 0, 255), 1, 8, 0);

imshow(“Rectangles on original”, image3);
waitKey(0);
image(Rect(boundRect2[select].tl().x, boundRect2[select].tl().y , boundRect2[select].width, boundRect2[select].height)).copyTo(image1);//차번호판 부분만 복사
resize(image1, image1, Size(image1.cols*4, image1.rows*4), 0, 0, CV_INTER_LINEAR);//크기 조정

int k;
for (int i = 0; i < friend_count-1; i++) {
if (!Stack2.empty()) {
k = Stack2.top();
Stack2.pop();
image(Rect(boundRect2[k].tl().x, boundRect2[k].tl().y, boundRect2[k].width, boundRect2[k].height)).copyTo(image1);//숫자나 문자 하나씩 추출
resize(image1, image1, Size(image1.cols * 4, image1.rows * 4), 0, 0, CV_INTER_LINEAR);//크기 조정
imwrite(“C:\\Users\\aucun\\Desktop\\test\\” + to_string(i + 2) + “.JPG”, image1);//잘려진 사진을 저장
}
}
// Shows license plate, and save image file.
imshow(“Region of interest”, image1);
waitKey(0);
//imwrite(“C:\\Users\\aucun\\Desktop\\test\\1.JPG”, image1);
exit(0);
}

ㅇ라즈베리파이 쉘스크립트
#/!/bin/bash

flag=1
for((;;))

do
echo $flag
check=`./test`
echo $check

if [ $check = "carin" -a ${flag} == 1 ] then
flag=0
raspistill -o car.jpg

var=`curl -F myfile=@/home/pi/test/car.jpg http://han.mysterlee.com/a.jsp`

echo $var

if [ $var = "8" ] then
echo “장애인차”
echo $var

else
echo “비장애인차”
echo $var
./jong

#else if [ $var = "1" ] #echo “인식안됨 or 오류”
#./jong

fi

fi
if [ $check = "carout" ] then
flag=1
fi
done

exit 0

 

 

 

 

[49호]Smart Baby Helper

Cap 2018-07-12 14-10-54-440

Cap 2018-07-12 14-10-54-440

  2018 ICT 융합 프로젝트 공모전 우수상  

Smart Baby Helper

글 | 단국대학교 정의동

1. 심사평
칩센 실생활에서 얻은 아이디어와 통계자료 및 시장조사를 이용한 프로젝트 시작에 높은 평가를 줍니다. 실제 생각보다 흔하게 일어나는 영유아 질식사고를 예방한다는 컨셉에 많이 공감하였습니다. 실용성과 창의성등 대부분의 항목에서 높은 점수를 주었으나 보고서의 정리와 시스템 구성도 등이 좀 더 보완해야될 부분 같습니다.

뉴티씨 아기와 관련된 여러가지 상태를 IoT 환경에서 감시하고, 영상을 전송하는 등으로 아기를 원격지에서도 살펴볼 수 있도록 한 점은 좋은 응용이라고 생각됩니다. 또한, IoT를 학습하는 데도 좋은 작품이 되었습니다. 다만, 완성도를 조금 높여서 실제로 사용이 가능하도록 아이디어를 첨부하면 좀 더 좋은 작품이 되리라고 생각됩니다

위드로봇 3D 프린터로 목업을 제작하고, 이 크기에 맞춰 보드를 제작한, 실제 실용적인 측면을 많이 고려한 작품입니다. 전반적으로 완성도가 높으며, 동영상 데모가 있으면 더욱 좋을 것 같습니다.

2. 작품 개요

49 ict_smart babyhelper (1)
평소 기사, 뉴스, TV 등으로 워킹맘들이 육아를 하는데 큰 어려움을 겪고 있다고 알고 있어서 이를 어떻게 디바이스 해결할 수 있을지에 대해 고민을 많이 했었습니다.
우선 워킹맘들이 가장 어려움을 겪는 부분이 어디인지 조사한 결과 예상대로 육아부분 이였고, 육아하는데 가장 큰 걱정이 무엇인지 조사한 결과 영유아의 수면이 제일 걱정된다고 했습니다. 그 원인을 찾아보았더니 수면 중 아기의 호흡곤란 등으로 사고가 많이 일어났다는 것을 알 수 있었습니다. 이런 Desk Research 뿐만 아니라 직접 아기를 키우고 계시는 육아맘들을 직접 인터뷰 및 질의응답을 진행하였고, Field Research를 조사했더니 Desk Research와 비슷한 결과를 얻을 수 있었습니다.
즉, 자녀 양육이 부모들의 가장 큰 스트레스로 작용하였고 그 원인을 파헤쳐본 결과 아기의 건강, 수유, 목욕, 양육비 등이 있었습니다.
저는 이러한 문제를 해결하고자 스마트 디바이스를 제작하고자 하였고 만들기 전에 앞서 시장에 나와있는 비슷한 제품들을 조사하였습니다.

49 ict_smart babyhelper (2)

위의 제품들의 공통적으로 가장 큰 문제라고 생각되는 점이 몸에 부착하여야만 사용이 가능한 불편한 형태로 제작된 제품이라 생각되어 이를 해결한, 부착형이 아닌 비 부착형으로 센싱을 한 스마트한 Baby Helper를 만들고자 하였습니다.

3. 작품 설명
3.1. 주요 동작 및 특징
본 작품은 크게 두 부분으로 나눌 수 있습니다. 젖병 모듈과 건강관리(허브) 모듈로 나눌 수 있는데 젖병 모듈에서는 아기의 적정 수유량, 수유온도, 수유시간을 제공 및 알람을 해 줍니다.
건강관리 모듈에서는 아기의 호흡 및 맥박수를 체크하고, 아기 주변환경의 온습도 및 공기질 상태를 체크하며, 카메라 센서를 이용해 실시간 아기 모니터링이 가능하게 하였습니다.

3.1.1. 젖병 모듈 Part

49 ict_smart babyhelper (1) 49 ict_smart babyhelper (3)
동작 및 특징
· 적외선 온도센서를 통한 젖병 내부 온도 체크
· 압력센서를 통한 수유량 체크
· VFD를 통한 실시간 젖병 내부온도 및 수유시간 확인
· 서버 및 DB를 구축하여 권장 수유량, 수유시간을 제공 및 알람
· 쌓여가는 사용자의 DATA에 맞춰 수유량, 수유시간 Update

3.1.2. 건강관리(허브) 모듈 Part

49 ict_smart babyhelper (4) 49 ict_smart babyhelper (2)

49 ict_smart babyhelper 55549 ict_smart babyhelper (6)

위 테스트 사진은 실제 와이파이 센서를 이용하여 맥박수 및 호흡측정을 테스트하고 그래프로 나타낸 사진입니다.

49 ict_smart babyhelper (7)

위 과정도의 우측 아기사진은 MIT에서 실제 와이파이 센서를 이용하여 아기 수면중 호흡 및 맥박 측정을 테스트한 사진입니다.

49 ict_smart babyhelper (8) 49 ict_smart babyhelper (9)
간단하게 설명하자면 와이파이 센서에서 신호를 송수신 하는데 TV, 책상 등의 사물은 송수신의 Time 변화율이 0이고, 아기의 Time 변화율은 상수이므로 이 차이를 이용하여 다른것들은 배제한채 순수한 아기의 거리값을 구할 수 있습니다. 거리값에는 아기와 모듈간의 거리값이 나오는데 여기서 Time축을 더 쪼개면 아기의 호흡량을 구할 수 있고, 호흡량 그래프 안에서도 떨림이 보이는 그래프 모양이 발생하는데 바로 이 부분이 맥박(심박)입니다.
이를 이용하여 아기의 호흡량 및 맥박수를 구할 수 있습니다.
하지만 여기에서 아직 보완 및 발전해야 하는 부분은 여러명의 사람이 있을 때 각각의 사람의 호흡 및 맥박수를 분리하여 구분해서 구해야 합니다.
현재 개발중인 부분인데, 와이파이센서 여러개를 병렬(어레이 구조)로 만들어 사물의 위치를 파악하게 하여 분리합니다. 여러개의 와이파이 센서는 각각의 방위각 및 같은 사물에 대한 거리차를 구할 수 있어 실제 모듈과 대상간의 벡터 거리값을 구할 수 있습니다.

동작 및 특징
· 와이파이 센서를 통한 호흡 및 맥박수 측정
· 온습도 센서, 공기질 센서를 통한 주변 환경 체크
· 카메라 센서를 통한 아기 상황 실시간 모니터링
· 아기의 상황에 변화가 있을시 즉시 알람기능

3.2.3. 안드로이드 – 모듈 연동 Part

49 ict_smart babyhelper (15)

아기 상태 정보
· UWB 센서를 통한 호흡, 맥박수 측정
· 마이크 센서를 통한 아기 울음소리 감지
· 공기질, 온습도 센서를 통한 주변환경 감지
· 웹캠을 통한 아기 상태 확인
· 응급상황 알림 서비스

49 ict_smart babyhelper (10)

아기 성장 정보
· 아기의 성장 상태 확인
· 아기의 현재 상태 확인

49 ict_smart babyhelper (14)

실시간 아이 식사량 체크
· 비접촉 온도센서를 통한 수유 온도 확인
· 압력센서를 통한 수유 먹은 양 체크
· 자동으로 다음 먹을 시간 계산

3.2 전체 시스템 구성

49 ict_smart babyhelper (11)

49 ict_smart babyhelper (12) 49 ict_smart babyhelper (13)

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