바른 생각 - 바른 자세
프로젝트 소개
프로젝트 명
바른자세
프로젝트 기간
2022.3~2022.6
팀 소개
서울시립대학교 기계정보공학과 20174300** 정* (팀장)
서울시립대학교 기계정보공학과 20184300** 김*현
서울시립대학교 기계정보공학과 20184300** 김*준
서울시립대학교 기계정보공학과 20184300** 권*표
프로젝트 개요
1. 프로젝트 요약
본 프로젝트는 장시간의 집중시간을 편안한 자세로서 사용자에게 제공하는 것을 목표로 한다. 프로젝트는 모터를 통해 높이가 조절 되는 거치대를 기본으로 구성이 되어 있다. 이를 통해 사용자의 목과 팔꿈치의 부담을 줄이도록 해준다. 카메라를 통한 얼굴인식과 이를 이용한 알람 기능으로 사용자의 비집중 시간을 감지하여 알림을 제공한다. 프로젝트는 하드웨어를 제어하는 라즈베리파이 서버와 사용자의 입력을 기반으로 요청을 보내는 안드로이드 앱(클라이언트)으로 구성되어 있다. 서버와 클라이언트는 WiFi를 통해 1:1 TCP/IP통신을 한다. 사용자는 안드로이드 앱을 통해 높이 조절, 알람 시간 설정, 알람 모드 설정, 현재 촬영되는 영상 확인의 기능을 서버에게 요청할 수 있다. 또한 자신이 주로 사용하는 설정을 프로필을 만들어 저장하고, 불러올 수 있다. 서버는 클라이언트로부터 받은 요청을 바탕으로 하드웨어 제어를 하며 기능을 수행한다. 높이 조절 기능은 사용자가 요청한 높이로 모터를 제어하여 사용자가 요청한 높이로 거치대를 조절한다. 알람 기능을 사용자가 설정한 경우에는 카메라를 통해 사용자의 얼굴을 인식한다. 이 때 사용자의 얼굴이 인식되지 않으면, 사용자가 현재 집중을 하지 않고 있다고 판단하여, 시간을 측정한다. 측정한 시간이 알람 설정 시간이상이 되면 사용자가 요청한 알람 모드(소리, 진동)에 따라 알람을 제공한다. 사용자의 얼굴이 측정되지 않을 때는 LED 인디케이터를 통해 사용자에게 시작적인 알람을 제공한다. 이 때 사용자는 실제로 집중하고 있음에도 얼굴 인식이 되지 않고 있는 경우에는 자세를 바르게 하거나, 카메라 각도를 조절할 수 있게 된다. 서버는 사용자가 추가적인 요청을 보내면 현재 촬영 영상을 특정 웹주소를 통해 스트리밍한다.
2. 프로젝트의 배경 및 기대효과
가. 배경
- 현대에 이르러서는 근무 시간, 여가시간 등 다양한 이유로 장시간 책상을 이용하는 인원들이 증가하고 있다. 현재의 책상 이용 자세의 경우 머리와 목의 각도, 상완 외전 및 들어올림, 손목의 구부러짐과 신전 등 신체의 기능 구현에 있어 인체에 부담을 주고 있다. 그로 인해 VDT(Video Display Terminal)라 불리는 근골격계 질환을 겪는 현대인이 증가하고 있다.
가. 기대효과
- 책상에 앉아 장시간 업무를 진행 할 때 신체에 부담을 주는 자세를 개선하고 높은 집중 시간을 유지하는 데 도움이 되는 기구를 개발한다. 앱으로 사용자가 원하는 각도를 세밀하게 조정할 수 있고, 졸음 인식 기능과 알람 기능을 삽입하여 신체의 부담을 줄이고 효율성을 높인다.
3. 프로젝트 개발 목표
가. 기능성
- 강건성
- 본 시스템은 잦은 사용 빈도와 긴 사용 시간이 예상된다. 따라서 일정 시간 이상, 일정 반복 이후에도 정상적으로 동작해야한다. 높이 조절 기능을 위해 내구성 있는 구동부 설계가 필요하다. 서버로서 동시에 여러 프로세스가 구동하기 때문에 라즈베리 파이 프로세서의 성능안에서 오랜 시간 구동할 수 있는 서버를 설계해야한다.
- 정확성
- 제공하는 기능을 일관성 있게 사용자에게 제공할 수 있어야한다. 높이 조절, 얼굴 인식, 비집중 시간 기록 등 의도한 결과와 시스템의 구동이 일치해야한다.
- 반응성
- 사용자가 앱을 통해 입력하는 요청 사항이 서버에게 빠르게 전달되고, 그에 대한 서버의 응답 또는 동작이 빠르게 나타나여야 한다.
나. 경제성
- 간소화
- 본 제품은 비슷한 목적을 가진 시중제품과의 차별성과 스마트 가전 기구라는 특징과 함께, 실제 시장에서 경제성이 있도록 최대한 경제적인 부품 선정과 단순한 구조로 구현 해야 한다.
다. 편의성
- 직관성과 조작성
- 본 제품은 사용자 경험을 증가시키기위해 제품의 기능에 대한 직관성과 조작의 편의성을 갖추어야 한다. 이를 위하여 UX를 고려한 UI디자인을 진행할 것이다. 사용자는 앱을 통해 프로필 저장 기능을 사용할 수 있을 것이다. 프로필을 생성하면 그들의 책상 각도 설정을 쉽게 저장하고 불러올 수 있다. 이로 인해 사용자는 매번 책상 각도를 수동으로 조절하지 않을 수 있다. 또한, 여러 사용자가 동일한 책상을 공유하는 경우에도 각각의 프로필을 통해 쉽게 설정을 전환할 수 있다. LED 인디케이터와 앱 내 스트리밍 영상 덕분에 사용자는 비집중 감지의 동작 여부를 쉽게 확인할 수 있다. 알람을 통해 장시간의 비집중 시간이 감지된 사용자는 다시 집중할 수 있을 것이다.
동작 시나리오
역할분담 및 개발 일정
1. 역할분담
정* [전체 진행 및 서버 시스템 개발 총괄, 통신 시스템 개발, 하드웨어 제어 시스템 개발, 회로도 설계]
프로젝트 진행 상황을 총괄하여 부품 구매 및 관리, 역할 분담 및 일정 조율을 수행했다. 프로젝트의 진행 방향을 정하고 팀 인원들의 개발 계획 및 결과를 시스템의 요구 사항과 비교하여 불가여부를 판단했다. 서버와 클라이언트의 통신 패킷의 설계했다. 서버 시스템에서 비집중 감지 모듈을 제외한 시스템을 구현했다. 라즈베리 파이의 GPIO제어를 위한 회로도와 시스템을 설계 및 개발 했다.
김*현 [앱 시스템 개발 총괄, 앱UI, 하드웨어 개발]
앱 시스템 개발팀을 총괄하여 진행 사항 공유 및 역할 분담을 수행했다. 앱의 UI 시나리오를 설계 하고 구현했다. 앱의 프로필 시스템을 설계하고 구현했다. 높이 조절 기능을 하는 구동부의 부품 설계를 진행했다.
김*준 [하드웨어 개발 총괄, 비집중 감지 모듈 개발, 영상 스트리밍 모듈 구현]
높이 조절 기능을 하는 구동부를 전체적으로 설계했다. 구동부의 부품을 설계하고 3D프린터를 통해 구현하는 과정을 총괄 했다. 카메라를 통해 사용자의 얼굴을 인식하고, 이를 통해 비집중 시간을 감지하는 모듈을 개발했다. 카메라의 영상을 특정 웹주소를 통해 Mjpeg over HTTP 방식으로 스트리밍 하는 모듈을 구현했다.
권*표 [사전 연결 개발 총괄 앱UI, 앱 WiFi 연결 개발, 스트리밍]
사전 연결 개발 부분을 구현했다. 앱 내부 WiFi 연결 및 서버 핫스팟 연결 과정을 진행했다. 같은 와이파이 내부에서 서버의 ip탐색을 설계했다. 웹 주소를 통한 앱 내부 스트리밍 기능을 구현하고 앱 UI를 개발했다.
2. 개발 일정
구현 내용
시스템 구성
- 본 시스템의 설계 구성도는 위와 같다. 클라이언트와 서버는 WiFi환경을 기반으로 TCP/IP 통신을 진행한다. 클라이언트의 요청을 서버는 연결된 기기를 제어하여 처리한다. 카메라를 통해 사용자 얼굴을 인식하여 비집중 감지, 영상 스트리밍 등의 기능을 수행한다. 사용자의 요청을 처리함에 따라 필요한 하드웨어 출력 장치를 선택하여 제어한다.
기구부 설계 및 구현
- 하드웨어의 최종 제품은 그림 4과 같이 설계하였고 전체적으로 상판, 선반 그리고 하판으로 이루어져 있다. 상판은 사용자가 물건을 올려놓고 사용하는 공간으로 노트북이나 태블릿과 같은 여러 물건을 올려놓고 작업할 수 있도록 충분한 크기인 800×550(mm) 크기로 제작했다. 두께는 12mm로 얇은 목재를 사용하여 상판자체의 무게를 줄였다. 또한 사용자의 팔꿈치가 몸의 중심보다 뒤로 가게 하여 어깨의 부담감을 줄일 수 있도록 중앙에 홈을 파여 디자인했다.
- 선반의 경우, 너비 길이는 상판과 경첩으로 부착되므로 상판과 같은 너비로 설계했다. 모터는 상판 연결부를 들어올리는 방식을 취하고 있으므로 책상면과 선반은 평행을 이루도록 설계하였다. 모터의 선반 받침대과 결합된 선반은 회전을 하지 않고 위아래로만 움직이며, 따라서 상판의 각도를 조절하는 역할을 수행하게 된다.
- 하판 위에는 장치들과 전선들을 배치하였고, 상단에 케이스를 가려 전체적으로 깔끔한 외관을 보여 완성도 있도록 설계하였다. 이때 하판의 높이를 최소화하기 위해서 가장 얇은 두께인 12mm 목재로 구매했다.
가. 각도 설계
- 프로젝트의 하드웨어 구성 요소 중 핵심 기능인 각도 조절 설계는 그림 A와 같이 진행하였다. 상판은 선반과 경첩을 이용해 고정되어 있으며, 이 구조를 통해 선반의 상승과 하강에 따라 상판과 바닥면 사이의 각도가 동적으로 변화하는 메커니즘을 구현하였다.
- 선반의 높이는 최저 각도에서 77mm로 설정되었고, 이때의 상판 기울기는 8.04°으로 측정되었다. 선반의 상승으로 인한 최대 높이는 172mm로 제한하였으며, 이 경우에는 상판의 기울기가 18.28°로 증가한다. 또한, 세밀한 각도 조절을 위해 높이 조절 단계는 총 20단계로 구성되어 있으며, 이는 각 단계마다 약 0.5°의 기울기 변화를 의미한다. 이와 같은 각도 조절 설계를 통해 사용자의 요구에 따라 동적인 선반 높이와 상판의 각도를 조절할 수 있다.
나. 높이 조절 구동부
- 선반의 수직 이동 기능은 스텝 모터와 모터 나사선에 고정된 선반 받침대를 통해 수행된다. 이 세 구성요소는 상호작용하여 선반의 상승과 하강을 구현한다. 선반 받침대의 상단면은 선반의 하단면과 밀착해 고정되어 있으며, 스텝 모터의 나사선은 하판에 수직으로 고정되어 있다. 이 스텝 모터의 나사선은 시계방향(CW)과 반시계방향(CCW)으로 양방향 회전이 가능하다. 따라서 스텝 모터의 시계 방향 회전 동작은 선반 받침대의 상승을 초래한다(그림 (a) 참조). 이는 모터의 회전 방향이 선반 받침대의 수직 움직임에 직접적으로 영향을 미치는 것을 보여준다. 반대로, 스텝 모터가 반시계 방향으로 회전할 때에는 선반 받침대가 하강한다(그림 (b) 참조). 따라서, 이러한 스텝 모터의 정교한 제어와 연동 구조는 선반의 수직 이동 기능의 핵심 요소로 작용한다.
다. 구동부 안정화 고정대
- 모터의 시계방향 및 반시계방향 구동 시 발생할 수 있는 상판의 진동을 제어하고, 선반의 회전 토크에 대응하기 위해 선반 양쪽 끝부분에 회전 방지 장치를 설치하였다, 위 그림은 모터의 양방향 회전에 대응하여 회전 고정대가 토크 방향을 안정화하는 과정을 시각적으로 나타내고 있다
제어부 및 회로 구현
통신부 설계 및 구현
- 패킷의 설계에 앞서 HTTP 구조를 통해 패킷의 구성 요소 및 스펙을 참고했다. 경량 패킷으로서 파싱 및 내용 추가가 용이한 구조로 설계 했다. 통신의 안정성 검사를 위한 최소한의 헤더와 JSON형식을 이용한 패킷 바디로 이루어여있다. JSON의 key값은 숫자 인덱스를 사용하여 바디의 크기를 최적화했다. 위와 같은 패킷의 설계로, 서버와 클라이언트 TCP 통신을 안정적이게 진행 할 수 있었고, 통신 중에 평균 30~40byte의 패킷을 주고 받게 되었다. 각 패킷의 내용은 기본적으로 의미없는 기본값이 존재하며 서버는 이를 통해 불필요한 처리를 줄일 수 있다. 경량화를 위해 알람모드는 비트 마스크를 사용하였다.
- 헤더의 정보를 통해 패킷의 Body 길이를 알수 있다. 이를 이용해 body가 처음부터 끝까지 올바르게 왔는지 검사한다. 이 후 Body가 JSON형식인 것을 이용해 손쉽게 파싱한다.
소프트웨어 설계 및 구현
라즈베리 파이 서버
안드로이드 app 클라이언트
프로젝트 결과
최종 결과물
결과물 사진 혹은 시연 영상 등




