포트폴리오

[ 대학 일기 2-1 ] IOT Smart Grid

Yun.SH 2020. 1. 13. 23:00

IOT

 

이번 팀 프로젝트는 7명으로 팀을 이루었고 1년 동안 진행된 프로젝트입니다. 당시에 저는 복학을 했던 상태라 정신없었던 기억납니다. 저는 팀원으로써 참여하였고 비록 많은 도움을 주지는 못하였지만 기억에 많이 남는 프로젝트였습니다. 또한 저에게는 처음 진행하였던 프로젝트라서 기록을 해보고 싶었습니다.

 

1. IOT Smart Grid

조금 어려운 말들이 모인 것일 수도 있습니다. IT는 계속해서 변해가고 있는데 저희가 프로젝트에 주제를 선정하고 있을 때쯤 IOT 사물인터넷이 화두였습니다.

 

저 IoT란 Internet of Things의 약자로 사물인터넷을 뜻합니다. 우리가 일상에서 접하는 전자기기, 건물, 센서등 물리적 장치가 네트워크를 통해 인터넷에 연결되어 각종 데이터를 수집하고 기기간에 정보를 주고받음을 말합니다.

 

Smart Grid 지능형 전력망은 전력 부문에 정보기술, 통신기술이 결합되는 산물로서 에너지 인터넷의 중심이 됩니다. 기존 전력망 기술에 사물인터넷 기술을 적용함으로써 스마트 그리드가 탄생하게 됩니다.

 

그렇게 두 개의 주제를 가지고 프로젝트를 진행하였는데 당시 많은 스마트 그리드 기기가 출시되어 있었습니다. 기존 시스템은 무선랜 기반으로 동작하여 보안성이 부족하고 노이즈에 취약하며, 대규모 시스템 구축에 불리합니다. 본 시스템은 전력선 통신 기반으로 스마트 그리드 시스템을 구현하여 기존 장비의 단점을 보완하는 기기를 만드는 것이 목표였습니다.

 

저희가 만들고자 한 IOT Smart Grid는 콘센트, 스위치와 전구 형태의 전력 소모를 할 수 있는 디바이스를 아두이노로 제작합니다. 전력량을 분석하여 홈페이지에 위젯을 통하여 수치를 계산하여 나타내어주며. 이를 데이터베이스에 기록합니다. 그리하여 사용자는 집에서 사용하는 전력량 분석 그래프를 통해 보다 전력 관리에 편리함을 가질 수 있습니다.

 

이번 프로젝트의 특징은 총 4가지

1. 유선 통신 기반으로 시스템을 구축하여 안정성과 보안성이 뛰어나고

2. 저렴한 가격으로 구현이 가능합니다.

3. 기존 시설물(전력선)을 그대로 사용할 수 있고

4. 중간단에 서버를 두어 반응성이 우수합니다.

 

 

2. 서버, 웹, DB, 아두이노

프로젝트에는 3가지의 기본적인 시스템이 있다는 것을 알게 되었습니다. 사용자에게 제공하는 웹페이지와 그 정보를 저장하는 DataBase, 이 모든 것을 총괄하는 서버입니다.

 

(1) 서버

 

서버는 팀장이 맡았으며 장치, 웹 클라이언트, 데이터베이스를 관리합니다.

 

장치 접속 인터페이스, 웹 클라이언트 접속 인터페이스를 제공합니다.

 

Key Data형식으로 된 프로토콜을 사용하며 서버 내부에서 옵저버 패턴으로 요청을 라우팅 하여 적절한 모듈에서 처리합니다.

 

웹 <-> 서버, 장치 <-> 서버 간 통신을 이벤트 기반으로 처리하도록 서버를 작성했습니다.

 

(2) 웹 

 

웹은 저를 포함한 3명이서 맡았고.

위젯 제작, CSS, HTML, JS를 각각 나누어 웹 프로젝트를 진행하였습니다. 

 

장치의 실시간 상태, 상태 DB를 조회할 수 있고, 장치를 제어할 수 있습니다. 웹 소켓을 통해 서버와 통신합니다.

 

먼저 스토리보드를 작성하여 실시간 전력 그래프, 장치별 전력 사용량 비율, 전력 평균 사용량 & 전기요금을 구현하겠다는 계획을 세웠습니다.

 

XE와 Javascript 동적 웹을 이용하여 웹사이트를 개설하였습니다. 처음부터 웹을 짜는 것은 힘들다고 생각하였고 XE를 이용한다면 읽기 편한 웹페이지를 쉽게 만들 수 있다고 생각했습니다.

 

자바스크립트가 강력해지면서DOM을 다루는 스크립트를 많이 사용하곤 합니다.

 

Ajax를 하면 특히 많이 사용하기도 하고 그 외에 편리한 UI를 위해서 동적(Dynamic)으로 자바스크립트를 이용해서 HTML의 내용을 바꾸거나 구조를 변환하거나 한다.

 

여기서 동적이라는 의미는 HTML문서를 작성할 때 입력한 것이 아니라 HTML페이지의 랜더링 후에 페이지를 사용하면서 스크립트를 이용해서 순간순간 바꾼다는 뜻입니다.

 

 

 

 

 

 

 

 

(3) DB

 

기기의 전력량, 온도, 습도 등 다양한 데이터를 중복을 최소화하여 저장할 수 있도록 설계하였습니다.

 

프로젝트 당시에 데이터베이스 설계에 대해서 이해가 부족하고 지식이 없어서 설명이 간소합니다.

 

(4) 아두이노

 

 

UDP 기반 서버에서 장치 간 통신 연습, 아두이노 서버로 통신과 서버에서 아두이노로 양방향으로 통신하는 연습, 시리얼 통신을 통하여 통신하는 방법을 구현 및 연습, 하드웨어의 기초작업(전선 납땜 작업 후 콘센트와 연결)

 

 

Visual Studio로 아두이노 제어를 위한 C++형식 코딩 시작, 패킷을 함수로 만드는 것 아두이노로 구현 중, 조도센서를 이용한 아두이노 전구 제어, 납땜 연습, 릴레이를 이용한 아두이노 전구 제어, 서버 담당이 사용할 서버 <-> 아두이노 통신을 위한 테스트용 장비 제작 UDP 기반 서버 <-> 장치 통신 연습 및 아두이노 구현 연습.

 

3. 프로젝트 평가

목표 달성도 : ★

아이디어 :

팀워크 :

 

기초 지식을 공부하기 힘들었던 프로젝트였다고 생각합니다. 3학년 학생을 제외한 나머지 학생은 2학년이었고 멘토는 없으며 C언어를 배운 상태에서 만들어야 했기 때문입니다. 아이디어는 IOT의 장점을 잘 살렸다고 생각합니다. 팀워크 또한 강의를 같이 듣는 학생들끼리 만드는 것에 대해서 좋았습니다. 팀원들이 각자 맡은 역할에 대해 정확히 인지하지 못하고 공부가 부족했던 것은 단점이었습니다. 이더넷 기반으로 시스템을 구축했지만 저비용의 시리얼 통신 기반으로 시스템을 구축하여 시장성을 좀 더 키울 수 있습니다. 수천, 수 만개의 장치들을 일괄적으로 관리함으로써 얻는 데이터들을 의미 있는 곳에 사용할 수 있었으면 좋겠습니다. 저에게 첫 프로젝트이고 어려웠던 주제였었던 만큼 재미있었던 프로젝트였기에 기억에 남았다고 생각합니다.