- NAME : Head Metal
- MEAN : 비록 단단한 안전모를 만들 수는 없겠지만, 사고 발생 후에 빠른 대처로 당신의 머리를 단단하게 지키겠습니다. 음악 헤비메탈 장르 이름을 모방하여 짓게 됨.
역할 | 이름 | Github | 담당 파트 | 수행 내용 |
---|---|---|---|---|
팀장 | 조민석 | @Jo-Minseok | PM, BE, APP, HW |
PM
|
팀원 | 전진호 | @right5625 | APP, BE |
BE
|
팀원 | 채승룡 | @chaeseungryong | APP, DOCS |
APP
|
동의대학교 2024학년도 캡스톤디자인(시스템설계)
PERIOD: [정규 기간] 2024.03.01 - 2024.06.14 (3 Month) + [추가 기간]2024.07.20 - 2024.08.20 (1 Month)
📃 머리 'Head' + 하드웨어 'Hardware' + 인공지능 (Artificial Intelligence) = 'HEADWARE INTELLIGENCE'
약어로 HI(Headware Intelligence). 사고가 발생해도 빠른 대응과 치료로 근로자의 목숨을 지켜 가족의 품으로 안전하게 돌아가 인사하라는 의미
🥇 연간 발생하는 중대재해로 인한 사망자 수를 감소시키기 위해 안전모에 다양한 기능을 추가하여 애플리케이션과 연동함으로써 부상자에 대한 골든 타임을 확보하는 것. 주 고객층은 도심지의 건설 현장에서 근무하는 근로자
📃 안전모와 ESP32-S3-CAM을 결합하여 시제품을 제작, 사고 발생 시 다양한 기능으로 빠른 안전 조치를 취할 수 있도록 안전 관리자가 알 수 있다. 안전 관리자는 안전에 대해 효율적으로 관리할 수 있는 어플리케이션 개발
Develop Version : 1.0.0
BackEnd Server : Uvicorn
💡 HARDWARE
- 충격 센서를 활용하여 사고 감지 및 사고 알림 HTTP 통신을 이용
- BLE 통신을 이용하여 애플리케이션 데이터 통신 및 애플리케이션 제어 (GPS, WIFI, USER ID, WORK ID)
- 웹소켓 통신을 이용하여 스피커와 카메라 모듈을 이용하여 안전 관리자가 사고자의 카메라와 스피커를 작동할 수 있도록 웹소켓 통신을 이용
- 조도 센서를 이용하여 주변 빛 양을 감지를 통해 LED 자동으로 제어
- 긴급 버튼을 누를 경우 백엔드 서버로 HTTP 통신
- OLED 디스플레이를 이용하여 헬멧 상태 출력
💡 APP
- 하드웨어에서 전송된 위치정보를 이용하여 사고자의 위치를 지도로 확인
- 머신러닝을 활용하여 안전 관심도 추세 확인
- 사고 다발 구역 표시
- 담당 근로자들의 헬멧의 카메라, 스피커를 제어
- BLE를 이용하여 하드웨어와 데이터 통신
- 사고 처리내역 확인 가능
- 사고 내역 처리 기능
- 사고 발생 시 FCM 알림
💡 BACKEND
- 사고 감지 데이터 저장, 긴급 호출 및 FCM 신호 알림 전송
- 사고 내역 전송
- 웹소켓을 이용하여 하드웨어와 애플리케이션 통신
- 계정 관련(로그인, 회원가입, 계정 정보 변경) 통신
- 머신러닝 활용하여 추세 데이터 전송
- 사고 처리 내역 전송
- 카메라 촬영 이미지 저장
├─ App
│ └─ app
│ └─ src
│ └─ main
│ └─ java
│ └─ com.headmetal.headwareintelligence
│ ├─ ApiAction.kt
│ ├─ ApiService.kt
│ ├─ BluetoothLeService.kt
│ ├─ CommonAction.kt
│ ├─ CommonComposable.kt
│ ├─ CommonMap.kt
│ ├─ CompanyInfo.kt
│ ├─ Countermeasures.kt
│ ├─ Etc.kt
│ ├─ FindId.kt
│ ├─ FindPw.kt
│ ├─ Helmet.kt
│ ├─ License.kt
│ ├─ Loading.kt
│ ├─ Login.kt
│ ├─ Main.kt
│ ├─ MainActivity.kt
│ ├─ Map.kt
│ ├─ Menu.kt
│ ├─ MyFirebaseMessagingService.kt
│ ├─ NavigationBar.kt
│ ├─ NullMap.kt
│ ├─ Privacy.kt
│ ├─ Processing.kt
│ ├─ RetrofitInstance.kt
│ ├─ Signup.kt
│ ├─ Trend.kt
│ ├─ Work.kt
│ └─ WorkList.kt
├─ Arduino
│ ├─ ESP32-S3-WROOM-CAM
│ │ ├─ ESP32-S3-WROOM-CAM.ino
│ │ ├─ camera_pins.h
│ │ └─ module_pins.h
│ └─ Firebeetle-2-ESP32-S3-CAM
│ ├─ Firebeetle-2-ESP32-S3-CAM.ino
│ ├─ camera_pins.h
│ └─ module_pins.h
├─ Backend
│ ├─ accident
│ │ ├─ uploaded_images
│ │ └─ accident_api.py
│ ├─ account
│ │ ├─ account_schema.py
│ │ ├─ company_list.py
│ │ ├─ forgot_crud.py
│ │ ├─ forgot_router.py
│ │ ├─ login_crud.py
│ │ ├─ login_router.py
│ │ ├─ register_crud.py
│ │ ├─ register_router.py
│ │ ├─ register_service.py
│ │ ├─ update_account_crud.py
│ │ ├─ update_account_router_router.py
│ │ └─ update_account_service.py
│ ├─ db
│ │ ├─ db_connection.py
│ │ └─ models.py
│ ├─ fcm_notification
│ │ └─ fcm_function.py
│ ├─ marker
│ │ ├─ accident_marker_crud.py
│ │ ├─ accident_marker_router.py
│ │ └─ accident_marker_schema.py
│ ├─ processing
│ │ ├─ processing_contents_crud.py
│ │ └─ processing_contents_router.py
│ ├─ trend
│ │ ├─ accident_trend_crud.py
│ │ └─ accident_trend_router.py
│ ├─ weather
│ │ ├─ data_preprocessing.py
│ │ ├─ original data.xlsx
| | ├─ processing data.xlsx
| | ├─ weather_api_config.py
| | └─ weather_api.py
│ ├─ work
│ │ ├─ work_crud.py
│ │ └─ work_router.py
│ ├─ common.py
│ ├─ main.py
│ ├─ setup.py
│ └─ test_data_insert.py
├─ Database
│ ├─ TABLECREATE.SQL
│ └─ TABLEDROP.sql
├─ .gitignore
├─ README.md
└─ requirements.txt