AWS는 Amazon Web Service EC2는 Elastic Compute Cloud로 컴퓨터를 빌려 사용하는 서비스입니다. AWS EC2로 컴퓨터(환경)을 대여시에 장점은 상황을 고려해서 그에 맞는 성능(사양)에 맞춰 대여가 가능하다는 점입니다. 사용 중 상황에 맞에 유연하게 수정도 가능합니다. 이제 클라우드에 존재하는 빌린 컴퓨터를 원격으로 제어할 수 있으므로 저는 이 장점들을 활용해서 어디서든 작업할 수 있는 개발 환경을 구축해보려 합니다.
라즈베리파이에서 직접 작업 후 빌드해서 실행하거나 그냥 집에 있는 데스크톱을 켜놓은 상태로 원격 접속을 통해 해도 되지만 EC2를 사용하는 것이 더 나을 수 있다고 생각했습니다.
이제 EC2를 통해 우분투 환경을 대여 후 그 안에서 빌드 후 라즈베리 파이로 실행파일을 전달하여 사용하려 합니다. 이 우분투 환경 안에서 Git을 통해 소스 관리도 해보고 가능하다면 Jenkins 같은 자동화 도구도 사용해보려 합니다.
예전에 대학생 때 스마트홈 프로젝트를 진행하면서 많은 공부를 했었고 실생활에서도 유용하게 사용했었습니다.
이에 다시 한번 이와 비슷한 주제를 다시 한번 진행해 보려고 합니다. 기존 프로젝트와 겹치는 기능도 많지만 공부를 위해 다른 기술과 공부를 많이 병행하면서 진행할 예정입니다. 글을 보시다 더 좋은 방향이나 잘못된 부분 있을 시 피드백 부탁드리겠습니다.
기본 구조는 위와 같이 진행할 예정입니다.
라즈베리파이에서 센서 데이터를 수집하고 어플에서 확인하는 기본 기능은 같지만 전 프로젝트에서는 1:1 TCP 소켓 통신을 통해 주고 받았다면 AWS Database를 이용해볼 예정입니다. Zigbee 통신을 이용해 여러 아두이노 모듈을 붙여 각 방들의 센서 정보 확인과 스위치 제어를 합니다.
개발 환경은 그냥 데스크톱에서 VirtualBox를 사용하거나 라즈베리파이에 바로 Qt Build를 할 수도 있지만 EC2 Ubutntu 인스턴스를 생성해서 Build 후 파이에 전달하려고 합니다.
소스 관리는 Github 사용합니다. 혼자 repository를 사용하지만 일부러 branch, tag, trunk 등을 사용할 예정입니다.
위 기능이 다 마무리 된다면 추가로 해보고 싶은 것은 실제 유통되고 있는 IoT 제품들과 연동을 통해 어플이나 라즈베리파이에 연결된 터치스크린으로 조작, openCV를 통해 카메라 데이터 처리, IR 센서 이용 등이 있습니다.
프로젝트 진행을 위해 먼저 AWS 관련 공부부터 시작하려 합니다. 고로 다음 포스팅은 AWS 관련 내용입니다. 감사합니다.
기본 trunk/branches/tags 폴더 구조를 사용하기 위해 Create folder structure도 선택 후 OK를 눌러줍니다.
이제 클라이언트쪽을 담당할 디렉토리에서 우클릭 후 checkout을 해줍니다.
이제 위 구조를 보면 trunk는 소스코드를 관리하는 기본 몸통, 토대이면서 여기서 작업이 이루어집니다. 작업 프로로젝트에서 따로 관리하면서 작업하고 싶을 때 branches에 branch 후 작업을 하고 merge를 하게 됩니다. tag 폴더에는 프로젝트를 버전별로 보관하기 위해 사용됩니다.
간단히 trunk에 프로젝트를 하나 생성 후 commit 해보겠습니다. Create Project를 통해 Gui Project를 하나 생성해줍니다. 작업이 끝났다고 가정하고 trunk 폴더에서 작업 폴더에 우클릭 > Add 해줍니다.
설치 후 CMake를 실행 후 source code에 설치한 opencv 폴더 안의 sources 폴더를 build the binaries에는 빌드된 결과물을 저장할 폴더를 지정 후 Configure를 클릭합니다.
다음 화면에서 아래와 같이 체크 후 Next를 클릭합니다.
다음으로 Compilers에서 C에는 Qt/Qt5.9.3/Tools/mingw530_32/bin/gcc.exe C++에는 Qt/Qt5.9.3/Tools/mingw530_32/bin/g++.exe을 선택합니다.
마지막으로 Configurate를 클릭합니다.
한번의 과정이 끝나고 아래처럼 항목들이 생겼다면 BUILD_QT, BUILD_OPENGL을 체크, CMAKE_BUILD_TYPE에 Debug 후 다시 Configure를 해줍니다.
Configure이 끝났다면 마지막으로 Generate를 해줍니다.
build the binaries에 설정한 경로에 Makefile이 생긴지 확인합니다.
이제 Qt for Desktop (MinGW 5.3.0 32bit)를 실행 후 Makefile이 생성된 경로로 이동 mingw32-make를 실행합니다.
마지막으로 mingw32–make install를 실행합니다.
이제 설정한 경로 안 bin 폴더에 dll 파일이 생긴 것을 확인할 수 있습니다.
다음으로 환경 변수에 해당 라이브러리 파일들이 있는 경로도 추가해줍니다.
위 과정을 마치셨다면 Qt Creator를 실행 후 New Project > Qt Widgets Application 후 프로젝트를 생성합니다.
pro 파일을 아래와 같이 설정합니다.
#-------------------------------------------------
#
# Project created by QtCreator 2021-11-29T22:35:26
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Start
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
imageload.cpp
HEADERS += \
imageload.h
FORMS += \
imageload.ui
INCLUDEPATH += C:\OpenCV4.5.4\opencv\Qt_Lib\install\include
LIBS += \
C:\OpenCV4.5.4\opencv\Qt_Lib\bin\libopencv_core454d.dll \
C:\OpenCV4.5.4\opencv\Qt_Lib\bin\libopencv_highgui454d.dll \
C:\OpenCV4.5.4\opencv\Qt_Lib\bin\libopencv_imgproc454d.dll \
C:\OpenCV4.5.4\opencv\Qt_Lib\bin\libopencv_imgcodecs454d.dll \