자바/라즈베리파이의 통신을 통한 아파트 홈 제어앱 프로젝트로 라즈베리파이 센서의 데이터를 중심으로, 전등 관리·LED ON/OFF, 커튼조작 서보모터 (ON/OFF), 부저경고음, 온/습도센서를 이용한 화재 감지, 인체 감지 센서를 통한 외출 중 침입자 감지 (사용자의 외출 설정 필요)
| 항목 | 내용 |
|---|---|
| 팀명 | 테크 홈 이노베이션 |
| 프로젝트명 | 삑뽁삑(BBig BBog BBig) |
| 목표 | 라즈베리파이 센서 입력 데이터를 통합해 내 아파트 정보 조회,기기 제어/ 마트 물품구입 / 입주민 게시판 조회 기능을 콘솔로 제공 |
| 주요성과 | 입주민 커뮤니티 게시판, MQTT통신으로 기기제어, 아파트 세대별 실시간 정보 콘솔 출력 |
| 기간 | 2025.10.21 – 2025.10.29 |
| 사용 센서 목록 (18) |
LED(6), Buzzer(2), Button(3), 9G servo(2), PIR 센서(HC-SR501)(1), 초음파센서(Ultrasonic ranging)(1), LCD1602 디스플레이(2), 온습도센서(DHT11)(1), 미니 워터펌프(1), 2채널 모터드라이버(L9110S)(1), RFID리더기(RC522)(1) |
| 산출물 | 라즈베리파이 구현물 ,Java 앱, 데이터베이스 , PPT, README 문서 ,시연영상 |
| 이름 | 역할 및 담당 업무 | 개인 Git |
|---|---|---|
| 이다온 | 콘솔UI 구현 백엔드 DB 설계 및 디자인 자바 MQTT통신 DAO/DTO 기반 데이터 구조를 설계 Java 콘솔 UI와 Raspberry Pi 센서 제어 연동 |
GitHub |
| 노건우 | 라즈베리파이 모듈 기능구현 Python MQTT 통신구현 하드웨어 아키텍처 설계 IoT구조물 설계 |
GitHub |
| 안창석 | 자바 MQTT통신구현 결과 발표 깃허브구축 |
GitHub |
| 작업 항목 | 시작 날짜 | 종료 날짜 | 기간(일) |
|---|---|---|---|
| 프로젝트 정의 및 계획 수립/센서선택 | 2025-10-21 | 2025-10-21 | 1 |
| jdbc sql연동/센서입력구현 | 2025-10-21 | 2025-10-22 | 1 |
| 라즈베리파이 모듈 기능 테스트 및 클래스 작업 | 2025-10-22 | 2025-10-26 | 5 |
| 게시판완성 및 라즈베리와 통합 | 2025-10-23 | 2025-10-24 | 1 |
| 자바-라즈베리파이 MQTT 통신 | 2025-10-24 | 2025-10-28 | 5 |
| 콘솔 레이아웃 설계 | 2025-10-25 | 2025-10-26 | 1 |
| 라즈베리파이-브래드보드 모듈 구축 작업 | 2025-10-27 | 2025-10-28 | 2 |
| 콘솔 시각화 구현 | 2025-10-27 | 2025-10-27 | 1 |
| 최종 점검 및 README 작성 | 2025-10-28 | 2025-10-28 | 1 |
| 구조물 약식 구현 및 결과 발표 | 2025-10-29 | 2025-10-29 | 1 |
시스템 구성 요약
로그인 기반 사용자 식별
MQTT로 IoT 장치 실시간 제어/수신
Java ↔ DB 연동으로 사용자 맞춤형 기능 제공
Raspberry Pi에서 센서 상태 지속 감지 및 전송
보안 기능 강화 가능 (침입자 감지, 외출모드)
로그인 / 회원가입 흐름
- 회원가입
- 사용자가 콘솔 앱에서 회원가입기능을 선택
- ID, 비밀번호 입력, 사용자 고유 정보(세대번호 등)도 등록 → Java 앱에서 DB로 전송
- 로그인
- 입력된 ID/PW → DB에서 조회
- 성공 시 세션 생성 (간단한 사용자 상태 유지 가능)
- 회원 정보 기반 기능 연동
- 로그인된 사용자만 제어 기능/입주민 게시판조회 가능
- 각 사용자별 데이터 필터링: 세대별 센서 정보 조회
데이터 흐름 요약
| 기능 | 흐름 |
|---|---|
| 회원가입 | Java 앱 → JDBC → DB user 테이블 |
| 로그인 | Java 앱 → DB 비밀번호 검증 → 성공 시 사용자 로그인 유지 |
| 센서 이벤트 감지 | Raspberry Pi → MQTT Publish → Java App Subscribe → 팝업 알림 출력 |
| 장치 제어 | Java 앱 → MQTT Publish → Raspberry Pi Subscribe → 제어 실행 |
| 센서 데이터 저장 | Raspberry Pi → MQTT Publish → Java App Subscribe → 콘솔 출력 + DB 저장 |
| 계층 | 기술 / 도구 |
|---|---|
| UI (사용자 콘솔) | Java 콘솔 앱 |
| 사용자 인증 | Java + JDBC + MySQL (user 테이블) |
| 통신 계층 | MQTT (Mosquitto 브로커) |
| IoT 제어 | 사용모델 및 언어 : Raspberry Pi + Python 사용 라이브러리 : GPIO, Adafruit-DHT(DHT11) |
| DB 계층 | MySQL (회원정보, 세개별 정보, 입주민 게시판, 경고 로그) |
| MQTT 라이브러리 | Paho |
- 사용자 콘솔 UI (Java App)
| 항목 | 설명 |
|---|---|
| 역할 | 사용자 인터페이스 제공 |
| 기능 | 로그인/회원가입, 센서 조회, 제어 명령, 아파트 커뮤니티 게시판 조회 |
| 기술 | Java , JDBC |
| 연동 | - MySQL DB (회원 정보, 데이터 조회) - MQTT 브로커 (제어 명령 송신) |
│
[1] JDBC 요청 (회원 정보, 커뮤니티 글 조회)
│
▼
- 데이터베이스 (MySQL)
| 항목 | 설명 |
|---|---|
| 역할 | 시스템 전체 데이터 저장 및 조회 |
| 기능 | 회원정보, 센서로그, 호수정보, 게시판 내용 저장 |
| 기술 | MySQL |
| 연동 | - Java 앱과 JDBC로 연결 - Raspberry Pi에서 온 센서 로그 저장 |
| 주요 테이블 | 설명 |
|---|---|
user |
사용자ID, 비밀번호, 사용자 기본 정보 |
notice |
아파트 커뮤니티 게시판 글 |
warning |
침입자/화재 감지 기록 |
room |
아파트 동/호수 정보 |
│
[2] MQTT 메시지 송/수신
▼
- MQTT 브로커 (Mosquitto)
| 항목 | 설명 |
|---|---|
| 역할 | 센서 데이터 송신 및 제어 명령 중계 |
| 기능 | MQTT 프로토콜을 통해 메시지 송수신 |
| 기술 | MQTT (Mosquitto 브로커 사용) |
| 연동 | - Raspberry Pi ↔ 브로커 (센서 publish, 제어 subscribe) - Java 앱 ↔ 브로커 (제어 publish) |
| 주요 토픽 + 메시지 예시 | 설명 |
|---|---|
/home/warning Fire Outbreak |
온습도 센서 값 |
/home/warning Intruder Detection |
인체감지 센서 상태 |
home/201/5001/ kitchen/led_on |
LED 제어 명령 |
home/201/5001/ room2/window_on |
서보모터 제어 명령 |
/home/warning security_on |
부저 제어 명령 |
│
[3] MQTT 메시지 송/수신
▼
- Raspberry Pi (Python)
| 항목 | 설명 |
|---|---|
| 역할 | 센서 데이터 수집 및 제어 장치 동작 |
| 기능 | 센서 Publish, 제어 Subscribe |
| 기술 | Python, paho-mqtt, RPi.GPIO |
| 연동 | - MQTT 브로커: 센서 데이터 전송 |
| 하드웨어 구성 | 동작 설명 |
|---|---|
| 온습도 센서 | 온도/습도 측정 → MQTT Publish |
| PIR 센서 | 움직임 감지 → MQTT Publish |
| LED, 서보, 부저 | MQTT 수신 시 GPIO로 제어 |
| 문제 | 원인 | 해결 방안 |
|---|---|---|
| RFID 리더기 기능 미사용 | 시간 관리 미흡 | 리더기 ID별로 아파트 현관 및 각 호실 도어락 제어 기능 구현 |
| 스마트 화분 물 펌프 고장 | 펌프 하드웨어 고장 | 펌프 하드웨어 교체 및 연결 확인 |
| 비밀번호 해시 미적용 | 로그인 기능 개발 시 암호화 고려 부족 | SHA-256 또는 BCrypt 적용, DB 저장 방식 개선 |
| 관리자 계정 관리 불가 | 프로젝트 일정분배 미흡 | 관리자 계정 CRUD 기능 구현 |
| 마트 물품 구입 기능 미구현 | 일정 분배 및 개발 우선순위 문제 | 마트 테이블 생성, 구매/결제 기능 구현 |
| 기능 | 구현 결과 | 개선 필요점 | 개선 방안 | 순위 |
|---|---|---|---|---|
| 스마트 화분 제어 | 부분 성공 (하드웨어 고장) | 펌프 고장으로 제어 불가 | 하드웨어 교체 및 연결 확인 | 🔴 상 |
| 로그인/회원가입 | 구현 성공 | 비밀번호 해시 미적용으로 보안 취약 | SHA-256 또는 BCrypt 적용 | 🔴 상 |
| MQTT 통신 | 구현 성공 | 토픽 명명 규칙 체계화 필요 | MQTT 토픽 명명 규칙 고도화 | 🟠 중 |
| Threads 연결 | 구현 성공 | Thread 연결 불안정 | Thread 재사용 방지 및 실행 시 새 Thread 생성 | 🟠 중 |
| 관리자 기능 | 부분 성공 (게시글 관리 가능) | 계정 추가/삭제 불가 | 관리자 전용 CRUD 기능 추가 | 🟠 중 |
| 마트 물품 구입 | 미구현 | 결제 및 재고 관리 관련 모듈 및 테이블 구축 필요 | DB 테이블 생성 및 결제 기능 구현 | 🟠 중 |
| 전등/창문 제어 | 구현 성공 | 센서 데이터 처리 및 명령 반응속도 향상 필요 | 데이터 처리 로직 최적화 | 🟡 하 |
| 침입자 감지 팝업 | 구현 성공 | 센서 데이터 처리 실시간 반응속도 향상 필요 | 데이터 처리 알고리즘 최적화 | 🟡 하 |
| 화재 감지 팝업 | 구현 성공 | 센서 데이터 처리 실시간 반응속도 향상 필요 | 데이터 처리 코드 개선 | 🟡 하 |
- https://koreascience.kr/article/JAKO201532742223692.pdf
- https://wnsgml972.github.io/mqtt/2018/03/05/mqtt/
- https://www.sci-gifted-festival.kr/data/file/pro1/3552203508_Mh2AiI5l_eed8d51609c9c514a6cfbf297243a00a988c8fd9.pdf
- https://github.com/suryamurugan/MQTT-to-MYSQL-DB---Python-
- https://koreascience.kr/article/CFKO202433162507491.view
- https://machbase.medium.com/about-mqtt-30600ec1cbe9
- https://techblog.woowahan.com/2540/
