728x90

Github Link : https://github.com/psy1064/DJU_OSP

 

psy1064/DJU_OSP

대전대학교 오픈소스프로젝트. Contribute to psy1064/DJU_OSP development by creating an account on GitHub.

github.com

DJU_OSP

2019 대전대학교가 주최하는 Open Source Project 경진대회에 제출하는 작품입니다.

프로젝트 소개

  • 프로젝트명 : 라즈베리파이를 이용한 스마트홈 및 원격관리 어플리케이션
  • 개발기간 : 19.10.01 ~ 19.12.05
  • 개발인원 : 박세용

작품 기능

  • 라즈베리파이를 이용한 스마트 홈 구축
    • 실시간 환경 정보(온도, 습도, 미세먼지) 데이터 수집
    • Qt Programming과 LCD를 이용해 GUI 형태로 출력
    • Pi camera로 CCTV 영상 촬영 및 적외선 촬영 가능
    • 서보모터로 전등 스위치 ON/OFF
    • 인체감지센서를 통해 사람 인식
  • 안드로이드 어플리케이션으로 실시간 모니터링 및 제어
    • 라즈베리파이에서 수집한 데이터를 실시간 모니터링
    • Pi camera로 촬영한 영상을 실시간 스트리밍
    • CCTV 원격 ON / OFF
    • 원격으로 전등 스위치 ON / OFF
    • 알람 기능을 활용하여 원하는 시간에 전등 스위치 ON
    • 어플 내 감시모드 활성화 시 사람이 감지되었을 때 Push 알람

작품 구조도

라즈베리파이 실행화면

안드로이드 어플리케이션 실행화면

  • lodingActivity.java

    • Splash Activity로 2초 뒤 MainActivity로 이동
  • MainActivity

    • 어플리케이션의 메인화면

    • 어플 상단에는 라즈베리파이로부터 받아온 환경정보(미세먼지, 습도, 온도) 데이터 출력

    • 어플 하단에는 4가지 부가기능(전등제어, CCTV 확인, 알람, 감시모드 활성화) 버튼이 있음

    • 미세먼지 값은 등급에 따라 색과 등급을 표시해줌

       

    • 실시간 데이터들은 Notification Bar에 띄워줌

    • 전등제어 이미지 버튼 클릭 시 메세지 창이 뜨게 되고 명령에 따라 전등을 ON OFF 시켜줌

    • 감시모드 이미지 버튼 클릭 시 ''감시모드가 활성화 되었습니다'' ToastMessage 출력 후 버튼의 색 변경

    • 감시모드가 활성화 되었을 때 라즈베리파이의 인체감지센서에 사람이 감지되면 Notification Bar에 사람이 감지되었다는 알림이 생성되고 알림 클릭 시 cctvActivity로 바로 이동함

  • cctvActivity

    • MainActivity의 CCTV 확인의 이미지 버튼을 클릭하면 실행되는 Activity
    • CCTV ON / OFF 버튼을 클릭 시 CCTV를 원격으로 ON / OFF 할 수 있음
    • 신고하기 버튼 클릭 시 메세지 창이 뜨게되고 Yes 클릭 시 112로 전화걸수 있는 다이얼로 이동하게 됨
  • alarmActivity

    • 설정한 알람시간이 되었을때 실행되는 액티비티
    • MainActivity에서 알람 ON의 이미지 버튼을 클릭하면 시간을 설정할 수 있는 창이 나옴
    • 알람을 설정하면 이미지 버튼의 색이 바뀌고 Notifcation Bar에 설정한 알람시간을 띄움
    • 알람이 울리면 상단의 시계가 실시간으로 출력되고 아래의 Swipe Button을 밀어서 해제하면 종료됨

     

변경사항

20.02.04) 상시 데이터를 출력, 보내주는 것에서 수집된 데이터의 값이 변동이 있을 때만 수행하도록 했습니다.

20.03.03) 어플이 서버로 최초 접속시 서버에서 데이터를 한번 보내주도록 수정했습니다.

20.03.04) 전등 ON/OFF 기능을 제거하고 cctv의 각도를 조절하는 기능을 추가했습니다.

 

관련 링크

https://1d1cblog.tistory.com/21?category=806242

 

안드로이드 스튜디오 WebView 이용하여 motion 스트리밍하기

라즈베리파이에서 파이 카메라와, motion을 이용해 웹에서 스트리밍을 할 수 있다. 그 스트리밍 된 영상을 WebView를 이용해 어플에서 볼 수 있게 하려 한다. https://1d1cblog.tistory.com/18 라즈베리파이 mo

1d1cblog.tistory.com

https://1d1cblog.tistory.com/110?category=806242

 

안드로이드 스튜디오 notification 소리 진동 설정

어플을 개발하다보면 notification이 주기적으로 갱신되는 기능이 필요할 때가 있습니다. 기본 설정으로 설정하면 갱신할때마다 notify를 해주게 되면 매번 소리나 진동이 울리게 됩니다. 이럴 경우 소리나 진동을..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/44?category=806242

 

안드로이드 스튜디오 MediaPlayer 사용하기

먼저 res폴더에 우클릭을 하여 Android Resource Directory를 생성해줍니다. 이름과 type을 raw로 설정해줍니다. raw 폴더 안에 원하는 음악 파일을 넣어준 다음 Java 코드를 작성해줍니다. setLooping 값을 tru..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/43?category=806242

 

안드로이드 스튜디오 Swipe Button 사용하기

먼저 build.gradle 파일을 아래와 같이 수정합니다. minSdkVersion을 16으로 수정하고 dependencies에 아래처럼 코드를 추가해줍니다. apply plugin: 'com.android.application' android { compileSdkVersion 28 d..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/42?category=806242

 

안드로이드 스튜디오 Nofication 클릭하여 실행중인 어플 불러오기

Notification 설정에서 저는 주로 아래와 같은 코드처럼 Notification bar를 눌렀을 때 액티비티를 불러오는 식으로 사용합니다. detectPendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, n..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/48?category=806242

 

안드로이드 스튜디오 알람 사용하기

MainActivity의 버튼을 클릭하면 TimePickerDialog가 나오고 설정한 시간으로 알람을 설정하도록 해보겠습니다. 그 전에 TimePickerDialog 사용하는 방법입니다. https://1d1cblog.tistory.com/40 안드로이드 스튜..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/47?category=806242

 

안드로이드 스튜디오 뒤로가기 버튼으로 홈으로 이동하기

@Override public void onBackPressed() { Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/41?category=806242

 

안드로이드 스튜디오 Tcp 소켓통신하기(클라이언트)

이 포스팅은 앞서 작성한 라즈베리파이 Qt가 서버이고 어플이 클라이언트로 구성되어 있습니다. https://1d1cblog.tistory.com/39 라즈베리파이 Qt Tcp 소켓통신하기(서버) #ifndef DIALOG_H #define DIALOG_H #in..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/40?category=806242

 

안드로이드 스튜디오 TimePickerDialog 사용하기

TimerPickerDialog를 자바 코드에서 사용하는 방법입니다. public class MainActivity extends AppCompatActivity { ImageButton alarmButton; int alarmHour=0, alarmMinute=0; @Override protected void onCreat..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/38?category=806245

 

라즈베리파이 부팅 후 자동 실행(autostart 이용)

GUI 프로그래밍한 프로그램을 부팅 시에 자동 실행해보기 위해 /etc/rc.local 파일에도 등록해보고 /etc/profile.d/안에 넣어보기도 했지만 잘 되지 않았다. 부팅이 다 된 후에 자동실행하는 법을 찾아봤

1d1cblog.tistory.com

https://1d1cblog.tistory.com/20?category=806245

 

라즈베리파이에서 인체감지센서(SIS612P) 사용하기

1. 인체감지센서(SIS612P) SIS612P는 사람에게서 나오는 적외선을 감지해주는 센서이다. SIS612P의 사양은 다음과 같다. 항목 사양 측정 범위 100º 최대 감지 거리 7m 사용 전압 +5 ~ 24V 2. SIS612P 연결..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/16?category=806245

 

라즈베리파이에서 PMS7003 사용하기

1. PMS7003 이란? 공기중의 미세먼지를 측정할 수 있는 센서이다. 측정 범위 0.3~1.0(극초미세먼지) / 1.0 ~ 2.5(초미세먼지) / 2.5 ~ 10(미세먼지) 유효 범위 0 ~ 500 최대 범위 > 1000 2. PMS7003 연결 핀 배..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/11?category=806245

 

라즈베리파이에서 DHT11 사용하기

1. DHT11이란? DHT11은 온도와 습도를 모두 측정할수 있는 센서이다. DHT11의 측정 범위는 다음과 같다. 온도 0 ~ 50 ℃ ± 2℃ 습도 20 ~ 90 % ± 5% 2. DHT11 연결 위 처럼 4개의 Pin 중 1번 Pin..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/34?category=823445

 

Qt QThread 사용하기(화면 실시간 갱신하기)

센서값을 수집해서 실시간으로 실행창에서 최신화하고 갱신하는 방법에 대해 소개해 드리겠습니다. 먼저 QThread를 상속받는 클래스를 하나 만들어 줍니다. 생성된 qTh.h 파일에 소스코드를 아래와 같이 써줍니다..

1d1cblog.tistory.com

https://1d1cblog.tistory.com/37?category=823445

 

Qt QLabel에 사진 넣기

먼저 QPixmap 변수를 만들어 사진 경로를 지정해 줍니다. 저는 온도, 습도, 미세먼지 사진을 넣기 위해 3개의 QPixmap 변수를 생성했습니다. QPixmap을 사용하기 위해서는 QPixmap 헤더파일이 선언되어 있

1d1cblog.tistory.com

https://1d1cblog.tistory.com/39?category=823445

 

Qt Tcp 소켓통신하기(서버)

먼저 헤더파일입니다. 헤더파일에서는 데이터를 수집하는 함수를 처리하기 위한 쓰레드, QTcpServer, QTcpSocket이 선언되어 있습니다. #ifndef DIALOG_H #define DIALOG_H #include #include <qtnetwor..< p=""> </qtnetwor..<>

1d1cblog.tistory.com

 

728x90

+ Recent posts