베리 해적단 - 자유분발(FootReeDom)

MIE capstone
EmSys2024A (토론 | 기여)님의 2024년 6월 22일 (토) 00:12 판 (발로 조절 시나리오)
이동: 둘러보기, 검색

프로젝트 개요

프로젝트 요약

자유분발(FootReeDom)은 사용자가 발로 직접 높이와 각도를 조절하거나 앱에서 높이와 각도를 조절할 수 있어 의자에 앉은 상태에서 조작이 가능하다. 사용자가 원하는 자세는 저장하고 불러올 수 있어 간편한 조작 기능을 제공한다. 더하여, 프로필 기능을 통해 여러 사용자가 함께 사용할 수 있으며 개인의 취향에 맞는 자세를 저장할 수 있다.

프로젝트 배경 및 기대효과

  • 배경
현대 사회는 컴퓨터 작업이나 공부, 업무 등을 위해 많은 시간을 의자에서 보낸다. 이에 따라 의자에 앉는 자세는 일상에서 중요한 요소가 되었으며 고정된 자세나 불편한 자세로 의자에 앉는 것이 건강에 미치는 영향을 확인하는 연구가 진행되었다. 대표적으로 의자에 앉는 높이와 발의 각도가 다리 부종에 미치는 영향을 확인한 연구[1], 고정된 자세를 오랜 시간 유지하면 심부 정맥 혈전증을 야기하며 높은 의자에 앉는 경우 다리를 꼬고 앉을 가능성이 높아지는 사실을 확인한 연구[2], 다리를 꼬고 앉는 시간이 길어질수록 어깨경사, 골반 외측 경사와 같은 문제를 유발할 수 있음을 확인한 연구[3]가 있다. 따라서 주기적으로 자세를 바꿀 수 있으며 개개인에 적합한 자세를 유도할 수 있는 발 받침대를 제안한다.
  • 기대 효과
자유도가 높은 발 받침대를 활용하면 고정된 자세와 불편한 자세로 인해 발생하는 심부 정맥 혈전증과 다리 부종을 예방할 수 있다. 또한 발 받침대를 사용했을 때 의자의 등받이 사용과 바른 자세를 유도한다는 연구 결과[4]를 참고하면 다리를 꼬고 앉아 생기는 어깨 경사나 골반의 외측 경사 문제를 예방하는 효과를 기대할 수 있다. 시제품과의 차이점으로 발 받침대의 유연한 높이 조절이 가능하다는 점과 앱을 통해 높이 및 각도를 조절할 수 있다는 점, 사용자가 앱을 통해 원하는 자세를 간단하게 사용할 수 있다는 점이 있다. 이를 통해 신체의 건강뿐만 아니라 사용자의 편의성까지 개선할 수 있을 것으로 기대한다.

프로젝트 목표

그림1. 목적 계통도
  • 편의성
(1) 직관성
자세 조절이 불가능하거나, 자세 조절이 가능하더라도 이를 위해 사용자가 불편한 자세를 취해야 하는 기존의 발 받침대와 달리 어플리케이션과 발을 통한 조작으로 손쉽게 발 받침대의 자세를 조절할 수 있다. 어플리케이션을 통한 조작으로 사용자는 수치를 입력하여 발 받침대의 높이와 각도를 조절할 수 있으며, 발을 통한 조작으로 사용자는 발 받침대에 약간의 힘을 가해 발 받침대의 높이와 각도를 조절할 수 있다. 이를 통해 사용자는 자신에게 가장 편안하고, 건강에 좋은 자세를 손쉽게 찾고 설정할 수 있다.
(2) 조작성
사용자가 마음에 들어하는 자세를 저장하는 기능을 제공하여 사용자가 이전에 만족했던 자세를 찾기 위해 쏟는 노력을 줄일 수 있으며, 저장한 자세를 발 받침대에 바로 적용할 수 있어 사용자에게 최적화된 조작이 가능하다.
  • 기능성
(1) 정확성
본 프로젝트에서 제작하는 발 받침대는 한 쪽마다 두 개의 리니어 액추에이터가 사용되며 각각의 리니어 액추에이터는 발 받침대의 높이, 각도를 제어한다. 안드로이드 앱으로 발 받침대의 높이와 각도를 조절하는 경우 발 받침대의 높이 제어를 보조하기 위해 초음파센서, 각도 제어를 보조하기 위해 로터리 가변저항이 사용된다. 각각의 센서에서 얻는 값을 피드백으로 하여 제어가 이루어지며 이를 통해 사용자가 설정한 높이, 각도와 실제 발 받침대의 높이, 각도 사이의 오차를 최소화한다.
(2) 반응성
발로 직접 발 받침대의 높이와 각도를 조절하는 경우 사용자의 의도를 파악하기 위해 발판에 위치한 압력센서가 사용된다. 전방 압력센서와 후방 압력센서 측정값의 절대적인 크기와 차이값을 통해 사용자의 의도를 도출한다. 이에 따라 발 받침대의 높이와 각도가 조절되며 적절한 임계값을 통해 사용자의 의도에 맞게 높이 또는 각도를 조절한다.
  • 안정성
(1) 구조안정성
모든 하드웨어 모듈이 쉽게 분리될 수 있도록 설계되어 있어, 부품 고장 발생 시 신속한 대처가 가능하게 해야 한다. 또한 디스펜서를 간단히 분리할 수 있어 정기적인 세척과 칵테일 재료 보충이 용이해야 한다.
(2) 유지보수성
발 받침대의 라즈베리파이, smps, 센서가 모두 교체하기 용이한 장소에 부착된다. 따라서 부품을 교체할 때 보수성이 뛰어나다. 또한 스마트폰과 라즈베리파이는 파이어베이스를 이용하여 데이터를 주고 받는다. 따라서 기타 기능을 추가할 때는 파이어베이스의 구조를 변경하거나 스마트폰 어플리케이션을 업데이트 하면 되기 때문에 유지보수성에 용이하다.
  • 경제성
(1) 재료비
대중적으로 사용되는 발 받침대와 비교하여 경쟁력이 있어야 하므로 편의성, 기능성, 안정성을 보장하는 선에서 재료비를 최소화한다.

동작 시나리오

선행 동작 시나리오

선행 동작 시나리오
  • 사용자 프로필 선택
사용자는 안드로이드 앱을 통해 프로필을 선택할 수 있다. 각 프로필마다 저장되어 있는 자세 정보가 다르며 이후 자세를 저장할 때 선택한 프로필에 자세가 저장된다.
  • 블루투스 연결
프로필 선택 이후 안드로이드 앱을 이용하고자 하는 스마트폰과 블루투스 연결을 진행한다. 블루투스 연결이 완료된 상태에서 앱을 사용할 수 있으며 블루투스 연결 상태가 변화하면 토스트 메세지가 출력된다.
  • 발로 조절 선택
프로필 선택과 블루투스 연결 이후 발로 조절을 선택하면 발로 조절 동작 시나리오에 따라 시스템이 동작한다.
  • 앱으로 조절 선택
프로필 선택과 블루투스 연결 이후 앱으로 조절을 선택하면 앱으로 조절 동작 시나리오에 따라 시스템이 동작한다.
  • 기록 버튼 선택
프로필 선택과 블루투스 연결 이후 기록 버튼을 선택하면 기록 버튼 동작 시나리오에 따라 시스템이 동작한다.

발로 조절 동작 시나리오

발로 조절 동작 시나리오
  • 발로 조절 선택
발로 조절을 선택하면 발 받침대 시스템이 발으로 직접 조절할 수 있는 상태가 된다.
  • 높이 고정
높이 고정 버튼을 누르면 발 받침대 시스템의 높이가 고정되어 조절할 수 없는 상태가 된다. 높이 고정 버튼을 한번 더 누르면 높이 고정이 풀리며 높이를 조절할 수 있는 상태가 된다.
  • 각도 고정
각도 고정 버튼을 누르면 발 받침대 시스템의 각도가 고정되어 조절할 수 없는 상태가 된다. 각도 고정 버튼을 한번 더 누르면 각도 고정이 풀리며 각도를 조절할 수 있는 상태가 된다
  • 자세 저장하기
자세 저장하기 버튼을 누르면 초음파 센서로부터 현재 자세의 높이 정보를 받고 로터리 가변저항으로부터 현재 각도 정보를 받아 해당 정보를 데이터베이스에 저장한다.

앱으로 조절 동작 시나리오

앱으로 조절 동작 시나리오
  • 앱으로 조절 선택
앱으로 조절을 선택하면 발 받침대 시스템을 앱으로 조절할 수 있는 상태가 된다. 앱에서는 높이와 각도의 단계를 설정해 발 받침대 시스템을 조절할 수 있다.
  • 양발 동시에 조절하기
양발 동시에 조절하기 버튼을 누른 상태에서는 높이와 각도를 설정할 때 왼발 또는 오른발의 높이, 각도를 변경하면 변경한 높이, 각도 값이 왼발과 오른발에 동일하게 설정된다.
  • 이 자세로 발 받침대 조절하기
이 자세로 발 받침대 조절하기 버튼을 누르면 현재 안드로이드 앱에 설정되어 있는 왼발, 오른발의 높이, 각도 설정에 맞게 실제 발 받침대가 동작한다.
  • 자세 저장하기
자세 저장하기 버튼을 누르면 초음파 센서로부터 현재 자세의 높이 정보를 받고 로터리 가변저항으로부터 현재 각도 정보를 받아 해당 정보를 데이터베이스에 저장한다.

기록 버튼 동작 시나리오

기록 버튼 동작 시나리오
  • 기록 버튼 선택
기록 버튼을 선택하면 현재 프로필에 저장되어 있는 자세를 불러와 안드로이드 앱 화면에 출력한다.
  • 저장된 기록 선택
안드로이드 앱 화면에 출력된 자세를 선택하면 '이 자세로 발 받침대 조절하기', '자세 삭제하기', '이름 변경하기'중 원하는 동작을 실행할 수 있다.
  • 이 자세로 발 받침대 조절하기
이 자세로 발 받침대 조절하기 버튼을 누르면 선택한 자세에 대한 정보를 이용해 해당 자세에 맞게 발 받침대가 동작한다.
  • 자세 삭제하기
자세 삭제하기 버튼을 누르면 선택한 자세 정보를 데이터베이스에서 삭제한다.
  • 이름 변경하기
이름 변경하기 버튼을 누르면 선택한 자세 정보의 이름을 변경할 수 있으며 해당 자세를 변경된 이름으로 데이터베이스에 저장한다.

시스템 개략도

시스템 개략도

시스템 개략도
본 시스템의 개략도는 다음과 같다. 안드로이드 앱과 파이어베이스는 WIFI를 이용해 '기록' 기능과 관련된 정보를 주고 받으며 안드로이드 앱과 라즈베리파이는 BLE(Bluetooth Low Energy) 이용해 '발로 조절', '앱으로 조절' 기능과 관련된 정보를 주고 받는다.
라즈베리파이는 센서부, 구동부로 구성하였다. 센서부로는 초음파 센서, 압력 센서, 로터리 가변저항이 있으며 압력 센서와 로터리 가변저항은 아날로그 값을 반환하므로 ADC Converter를 통해 디지털 값으로 변환하여 측정값을 읽는다. 초음파 센서의 경우, 디지털 값을 반환하기 때문에 라즈베리파이와 직접 연결하여 사용한다. 구동부인 리니어 액추에이터는 모터 드라이버를 통해 간편하게 제어할 수 있도록 구성하였다.

구현 내용

기구부

전체 기구부
중앙에 라즈베리파이와 SMPS를 위치시킬 수 있는 공간이 있으며 양쪽으로 발 받침대가 있다. 발 받침대 하부에는 공간을 두어 배선이 용이한 형태로 설계하였다. 전체 프레임은 아크릴은 사용해 가공이 쉬우며 강성이 높은 형태로 만들었다. 리니어 액추에이터가 움직임에 따라 출력되는 움직임은 알루미늄 프로파일과 규격에 맞는 슬라이드 너트, 스테인레스 브래킷을 사용해 안정된 상태를 유지하며 부드러운 동작이 가능하도록 구성하였다. 또한 리니어 액추에이터, 프레임, 알루미늄 프로파일은 볼트로 연결되어 큰 하중도 버틸 수 있도록 설계하였다.

메커니즘 설계

  • 높이 조절 메커니즘
높이 조절 리니어 액추에이터
본 시스템은 기계식 리프트 메커니즘을 활용한다. 리니어 액추에이터에 연결된 'X'형태 프레임을 통해 높낮이를 조절한다. 'X'형태 프레임은 알루미늄 프로파일 내부를 움직일 수 있는 너트와 함께 장볼트로 연결되어 있다. 선형 운동을 하는 리니어 액추에이터의 길이가 줄어들면 발판의 높이가 낮아지며 리니어 액추에이터의 길이가 늘어나면 발판의 높이가 높아진다.
초음파 센서
발 받침대의 높이를 실시간으로 확인하기 위해 초음파 센서를 사용한다. 초음파 센서는 각 발에 한 개씩 사용하며 발 받침대 하부에 위치해있다. 발 받침대 상부 프레임에는 초음파 센서 반사판이 설치되어 있고 초음파 센서와 반사판 사이의 거리가 초음파 센서 측정 거리인 2cm ~ 500cm 내부에 있도록 설계하였다.
  • 각도 조절 메커니즘:
각도 조절 리니어 액추에이터
발판의 경우 상부 프레임의 중심과 발판 끝 부분에 액추에이터를 설치하여 액추에이터의 길이가 변하며 발판이 회전운동하는 메커니즘을 활용한다. 발판은 -20°에서 +20°까지 회전할 수 있도록 설계하였다.
로터리 가변저항
로터리 가변저항은 각 발에 한 개씩 사용하며 알루미늄 프로파일에 브라켓과 함께 고정되어 발판과 기어를 통해 연결되어 있다. 발판의 각도가 변함에 따라 발판 회전부의 각도가 변화하고 평기어를 통해 해당 각도 변화가 로터리 가변저항에 입력되어 각도를 확인할 수 있다. 평기어와 로터리 가변저항 연결부의 기어비는 1:1이며 로터리 가변저항의 최대 측정 각도 범위가 300°임을 고려하면 각도 변화를 측정하기에 충분하다.

기구부 설계

  • 아크릴판 가공 부품
  1. 발 받침대 받침 : 발 받침대 하부에는 배선을 용이하게 할 수 있도록 공간이 마련된 밑판이 존재한다. 중앙에는 SMPS, 라즈베리파이, 모터드라이브, 컨버터를 보관하는 공간이 있다. 발 받침대를 견고하게 받쳐줄 수 있으며 가공이 쉬운 재질인 아크릴판을 레이저 컷팅 가공을 통해 제작하였다. 아크릴판에 구멍을 뚫어 놓은 이유는 알루미늄 브라켓과 볼트 접합을 통한 구조물의 견고한 조립과 간편한 해체를 하기 위함이다.
    발 받침대 밑판
  2. x bar 프레임: 발 받침대의 프레임 하단부와 상단부를 직접적으로 연결해주는 부분 x bar 프레임은 아크릴판을 레이저 컷팅 가공을 통해 제작되었다. 초기 설계에서는 3T 아크릴판을 10mm 두께로 가공하여 2장을 겹쳐 사용하는 방법이 채택되었다. 하지만 발 받침대의 자중과 발에 의한 하중을 견딜 수 없다고 판단하였다. 따라서 최종적으로 20mm 두께의 아크릴을 3장을 겹치는 방식으로 재설계하였다. 추가로 모든 x bar와 장볼트가 연결되는 부분에는 너트와 와셔를 조립해 견고한 형태로 만들었다. 이후 테스트 해본 결과, 사용자가 발을 올린 상황에서도 충분히 견딜 수 있음을 확인했다.
    • 기존 10mm x bar 프레임
    • 변경된 20mm x bar 프레임
  3. 발판: 사용자가 발 받침대에 직접적으로 발을 올리는 발판은 가공이 쉬운 아크릴판으로 제작되었다. 발판의 크기 성인 남성의 발을 충분히 수용하는 수치인 320mm * 150mm로 가공해 2장 겹쳐 사용한다. 사용자가 발을 올려 놓았을 때 각도 조절 액추에이터가 있는 부분에는 무리가 없는 반면 반대쪽 아크릴판은 직접적인 지지대가 없어 휘는 현상이 발생하였다. 발판이 휘지 않게 하기 위해서 3d 프린트 출력물을 부착해 안정성을 보완하였다. 발로 조절 모드를 위해 발 앞꿈치와 뒷꿈치에 힘을 주더라도 발판이 휘지 않도록 설계하였다. 추가로 발판 위에서 발이 미끄러지지 않게 포맥스를 부착하였다.
    발판
  • 3d 프린터 출력물
  1. 액추에이터 지지대: 높이 조절 리니어 액추에이터가 직선 운동을 할 때 발 받침대가 좌우로 흔들리지 않도록 하기 위한 보조 장치로 3D 프린터 출력물을 선택했다. 밑판에 설치할 수 있으며 액추에이터를 보다 견고하게 지탱하여 발 받침대의 안정성을 향상시켰다.
    • 액추에이터 지지대 모델링
    • 액추에이터 지지대
  2. 발판 회전부: 발판이 각도 조절 액추에이터에 의해 회전하며 실시간으로 각도 값을 받아오기 위해서는 로터리 가변저항이 발판에 연결되어 있어야 한다. 이를 위한 매개체로 3d 프린터 출력물을 선택했다. 발판에 연결할 기어가 달린 부품과 로터리 가변저항에 연결할 1대1 기어비의 평기어를 3d 프린터를 통해 출력하였다.
    • 발판 회전부 모델링
    • 발판 회전부
  • 알루미늄 프로파일
발 받침대의 주요 프레임인 알루미늄 프로파일은 고속절단기로 가공하여 사용한다. 알루미늄 프로파일은 장볼트의 위치를 고정하거나 높이 조절 시 장볼트의 경로를 제한한다. 브라켓을 사용하여 알루미늄 프로파일간 조립이 간편하고 무게가 가볍고 단단한 재질로 구성되어 있어 선택하였다.

회로

전력 공급 개요

전력 공급 개요
다수의 모터와 센서를 사용하기 때문에 전력 소모가 많은 상황에서 효과적인 SMPS를 메인 전원 공급 장치로 선정하였다. 또한 동작 전압이 가장 높은 부품은 리니어 액추에이터로 12V를 사용하므로 12V인 SMPS를 선정하였다. 과전류를 방지하기 위해 센서부, 제어부, 구동부의 공급 전원을 분리하여 회로를 설계하였다. 각 전압에 맞는 강압 컨버터를 SMPS에 연결하여 센서부와 제어부에 전원을 공급한다. 구동부는 모터 드라이버를 이용해 SMPS에서 공급되는 12V를 그대로 이용한다.

전력 공급 안정성 검증

전력 공급 안정성 검증 표
센서부, 제어부, 구동부에서의 각각 부품들의 총 사용 전류량보다 큰 전류를 공급할 수 있는 컨버터를 선정하였다. 또한 모든 부품들의 총 사용 전력 보다 큰 전력을 공급할 수 있는 SMPS를 선정하였다. 전력 여유가 제일 적은 부분은 SMPS인데 사용 전력보다 약25%더 높은 전력을 공급할 수 있으므로 전체 회로설계가 안전할 것으로 보인다.

라즈베리파이 결선

  • 라즈베리파이 pinmap
  • GPIO 핀 대체 기능 표
라즈베리파이 pinmap은 [그림47]과 같다. 본 프로젝트에서 라즈베리파이와 결선이 필요한 장치는 ADC, 모터 드라이버, 초음파 센서이다. ADC는 2개를 사용하며 결선을 위해 필요한 핀의 기능은 SDA, SCL이다. 모터 드라이버는 2개를 사용하며 각 모터드라이버에서 리니어 액추에이터를 2개씩 제어한다. 각 리니어 액추에이터는 방향과 속도 제어를 위해 GPIO핀 3개와 연결되며 필요한 핀의 기능은 디지털 입출력과 PWM이다. 초음파 센서는 2개를 사용하며 각 초음파 센서는 디지털 입출력을 제공하는 핀 2개와 연결된다.

라즈베리파이 결선도

모터 드라이버, 초음파 센서에서 사용하는 디지털 입출력과 PWM기능은 라즈베리파이의 모든 GPIO핀에서 제공한다. 한편, ADC에서 사용하는 SDA, SCL기능의 경우 [그림48]와 같이 BCM핀 번호0, 1, 2, 3에서 제공한다. 따라서 ADC는 SDA를 제공하는 핀인 GPIO0과 GPIO2, SDL을 제공하는 핀인 GPIO1과 GPIO3에 연결한다. 라즈베리파이의 결선은 [그림49]와 같다. 핀 번호는 ‘물리적 핀번호(BCM 핀번호)’와 같은 형식으로 표기하였다. ADC는 아날로그 디지털 컨버터, MOTOR는 리니어 액추에이터, ULTRA는 초음파 센서를 의미하며 L, R을 통해 좌측과 우측 장치를 구분하였다. 리니어 액추에이터의 경우 L, R과 결합된 1은 높이 조절 리니어 액추에이터, 2는 각도 조절 리니어 액추에이터를 의미하며 가장 마지막 숫자를 통해 결선에 필요한 선의 개수를 표시하였다.

PCB기판 브레드보드 결선

  • PCB 기판 브레드보드
  • PCB_기판 브레드보드 결선도

본 프로젝트에서 사용한 PCB기판 브레드보드는 [그림50]과 같으며 실제 결선도는 [그림51]과 같다. 좌측 2개 열과 우측 2개 열은 (+), (-)로 연결되어 있으며 전압강하를 통해 공급받은 3.3V를 연결한다. 3.3V를 이용해 모터 드라이버, 초음파 센서, 로터리 가변저항, 압력 센서에 전원을 공급한다. 또한, 1행을 연결하여 12V (+)를 모터에 연결하며 3행을 연결하여 모터에 12V (-)를 연결한다.

배선

  • 발 받침대 최대높이
  • 발 받침대 최소높이
배선 최적 경로

발 받침대의 높이와 각도가 변화하며 발 받침대와 연결된 리니어 액추에이터, 센서의 전선이 함께 움직일 수 있어 전선의 고정이 필요하다. 각도 조절 리니어 액추에이터를 통해 각도가 변화하는 경우는 발판에 부착된 센서의 전선이 움직이기 때문에 해당 전선을 발판에 부착하여 고정한다. 한편, 높이 조절 리니어 액추에이터를 통해 높이가 변화하는 경우 [그림52]와 [그림53]을 왕복운동한다. 왕복운동의 모든 구간에서 전선을 안정적으로 고정하기 위해 길이가 변하지 않는 구조를 따라 전선을 고정한다. 따라서 발 받침대의 높이와 각도가 변화하는 모든 구간에서 전선을 안정적으로 고정하기 위해 [그림54]의 A-B-C-D-E-F-G 경로를 따라 전선을 고정한다.

배선

  • 발 받침대 최대높이
  • 발 받침대 최소높이
배선 최적 경로



센서

초음파 센서

초음파 센서 회로도
초음파 센서 동작방식
초음파 센서는 ‘앱으로 조절’, ‘발로 조절’ 두 가지 모드에서 모두 사용되며, 그림16 또는 그림17의 초음파 센서와 초음파 센서를 반사하는 판까지의 거리를 측정한다. ‘앱으로 조절 모드’에서는 발 받침대의 높이 제어를 보조하고 ‘발로 조절 모드’에서 자세 저장시에 저장할 높이값을 읽어오는 역할을 한다.
사용 모델명은 HC-SR04으로, 출력값은 대상과의 거리, 측정 거리는 2cm ~ 500cm에 해당한다. 실제 테스트 결과 +- 1cm 정도의 오차가 생겼으며, 거리가 측정될 때 50번 중 1번 꼴로 비정상적인 거리가 측정됨을 확인하였다. +-1cm 정도의 오차는 발 받침대의 높이 제어 정확성에 영향을 미치지 않는다고 판단하였고, 가끔씩 비정상적인 거리가 측정되는 것은 노이즈 필터 역할을 하는 코드를 작성함으로써 해결할 수 있다.

압력 센서

압력 센서 회로도
압력 센서 동작방식
압력 센서는 ‘발로 조절’ 모드에서 사용되며, “4.2.3 센서 배치”에서 볼 수 있듯이 발 받침대 가장 상단의 발판에서 사용자가 발로 가하는 힘을 측정함으로써 발 받침대의 높이, 각도 제어를 보조하는 역할을 한다. 압력센서의 출력 신호는 아날로그 신호이기 때문에 라즈베리파이에서 해당 출력 신호를 수신하려면 추가적인 아날로그 신호 수신기가 필요하다. 이를 지원하기 위해 아날로그 디지털 컨버터(ADC)를 사용한다.
압력센서는 SEN0047 모델을 사용하며, 출력값은 전압, 측정 가능 무게는 0.1kg ~ 10kg에 해당한다. 실제 테스트 결과 출력값이 전압으로 나오기 때문에 센서에 가해지는 정확한 힘은 확인할 수 없었지만 힘의 변화에 따른 출력 전압의 변화가 유의미한 관계를 가지는 것을 확인하였다.
아날로그 디지털 컨버터는 ADS1115 모델을 사용하며, 라즈베리파이에서 해당 제품을 사용하기 위해서는 해당 제품에 대한 모듈이 필요하다. 모듈 설치는 github를 참고하였다.[2]

로터리 가변저항

로터리 가변저항 회로도
로터리 가변저항 동작방식
로터리 가변저항은 ‘앱으로 조절’, ‘발로 조절’ 두 가지 모드에서 사용되며, 발 받침대 가장 상단의 발판의 각도를 측정한다. ‘앱으로 조절 모드’에서는 발 받침대의 각도 제어를 보조하고 ‘발로 조절 모드’에서 자세 저장 시에 저장할 각도 값을 읽어오는 역할을 한다. 로터리 가변저항의 출력 신호는 압력센서와 마찬가지로 아날로그 신호이기 때문에 아날로그 디지털 컨버터인 ADS1115를 추가적으로 사용한다.
로터리 가변저항은 10K RV1601-15SP-B10K 모델을 사용하며 출력 값은 전압, 측정 가능 전압은 0V부터 입력전압까지에 해당한다. 로터리 가변저항을 시계 방향으로 돌릴수록 입력 전압이 지나게 되는 저항이 줄어들고, 반시계 방향으로 돌릴수록 입력 전압이 지나게 되는 저항이 커지게 된다. 로터리 가변저항을 “4.2.3 센서 배치”에 나와있는 것처럼 연결하게 되면 발 받침대의 각도 변화에 따라 로터리 가변저항의 출력 전압이 변하게 된다.

구동

제어 모듈 구조도

제어 모듈 구조
제어모듈은 크게 초기화, 앱으로 조절, 발로 조절로 나뉘어져 있으며, ‘(2)-센서’ 에서 언급한 센서 모듈을 통해 실질적인 발 받침대의 제어를 담당한다.

초기화

제어 모듈 초기화
초기화 부분에서는 발 받침대의 제어에 필요한 리니어 액추에이터, 초음파 센서, 압력 센서, 가변저항 모듈을 임포트하여 모든 센서에 대한 객체를 만든다. 이를 통해 ‘우측 높이 조절 리니어 액추에이터’, ‘우측 각도 조절 리니어 액추에이터’, ‘좌측 높이 조절 리니어 액추에이터’, ‘좌측 각도 조절 리니어 액추에이터’, ‘우측 초음파센서’, ‘좌측 초음파센서’, ‘좌측 우측 가변저항(첫 번째 ADS)’, ‘좌측 우측 앞 뒤 압력센서(두 번째 ADS)’ 에 대한 객체가 생성된다. 또한 앱으로 조절 모드에서 사용할 거리, 각도 한계값과 위치제어가 끝났는지를 표현하는 flag를 설정한다.

앱으로 조절

앱으로 조절


앱으로 조절 모드 함수는 사용자가 앱을 통해 설정한 발 받침대의 자세를 인자로 받는다. 해당 값을 기준값으로 설정하고 현재 발 받침대의 자세와의 오차를 구해 오차를 최소화하는 방향으로 ‘오른쪽 높이 조절 리니어 액추에이터’, ‘오른쪽 각도 조절 리니어 액추에이터’, ‘왼쪽 높이 조절 리니어 액추에이터’, ‘왼쪽 각도 조절 리니어 액추에이터’를 제어하게 된다. 오른쪽 왼쪽의 높이 각도에 대한 제어가 모두 끝났다면 전체 제어가 끝나게 된다.

발로 조절

제어 모듈 발로 조절
발로 조절 모드 함수는 사용자가 앱을 통해 설정한 높이 고정 신호, 각도 고정 신호를 인자로 받는다. 압력센서 모듈의 사용자 의도 추정 메소드를 호출하여 사용자가 발 받침대를 어떻게 움직이고 싶은지 파악한다. 이후 사용자의 의도에 따라 리니어 액추에이터를 조절하지만 높이 고정 신호, 각도 고정 신호에 따라 리니어 액추에이터를 고정시킬 수 있다. 해당 함수는 발로 조절 모드인지에 대한 시그널과 각도, 높이 고정 시그널을 매번 받아야 하므로 전체 시스템 메인 코드에서의 반복문을 통해 반복 실행된다.

통신

데이터베이스

발 받침대 기록 저장 데이터베이스
collection document field type 설명
프로필 이름 사용자가 지정한 자세 이름 documentName string 사용자가 지정한 자세 이름
left_angle int 왼발 각도 단계 값
right_angle int 오른발 각도 단계 값
left_height int 왼발 높이 단계 값
right_height int 오른발 높이 단계 값


데이터베이스는 파이어베이스를 사용한다. 파이어베이스는 클라우드 형태이기 때문에 사용자가 안드로이드 앱을 삭제하거나 스마트폰을 분실해도 기록을 유지할 수 있다. 파이어베이스는 collection, document, filed로 구성되어 있다. 파이어베이스는 사용자가 발 받침대의 높이와 각도 데이터를 저장할 때 사용된다. collection은 사용자가 설정한 프로필마다 생성된다. collection의 이름은 사용자가 설정한 프로필의 이름이다. field는 총 5개로, documentName은 string 타입의 사용자가 지정한 자세 이름이다. 나머지 4개의 필드는 사용자가 저장한 발 받침대의 각도와 높이 단계 값이다.
사용자가 안드로이드 앱의 '발로 조절' 화면이나 ‘앱으로 조절' 화면에서 '이 자세로 저장하기' 버튼을 누르면 발 받침대의 높이와 각도 데이터 값이 collection의 field에 저장된다. 이때 저장하기 전 사용자가 자세의 이름을 지정할 수 있도록 한다. 자세의 이름은 document의 id 값이 된다.

안드로이드 앱

선행 시나리오

프로필 추가 시나리오4.png

발 받침대를 여러 명이 함께 사용할 수 있으므로 프로필 기능을 사용하여 각자의 기록을 확인할 수 있다. 안드로이드 앱으로 발 받침대를 조절하기 위해서는 프로필 선택 과정이 선행되어야 한다. 먼저 안드로이드 앱을 실행하면 '프로필 선택' 화면이 뜬다. '프로필 선택' 화면에서 프로필을 선택하면 '홈' 화면으로 넘어가 '앱으로 조절' 이나 '발로 조절' 기능을 사용할 수 있다. 만약 프로필을 추가하고 싶으면 오른쪽 상단의 '프로필 추가' 버튼을 눌러 프로필을 추가할 수 있다. 프로필을 추가한 후 프로필을 선택하면 '홈' 화면으로 넘어간다.
블루투스 연결.png

안드로이드 앱으로 발 받침대를 조절하기 위해서는 먼저 블루투스 연결은 해야 한다. '홈' 화면에서 '블루투스 연결' 버튼을 누르면 블루투스 기기를 스캔할 수 있는 화면으로 넘어간다. '블루투스 연결' 화면에서 발 받침대의 라즈베리파이가 목록에 뜬 것을 확인하고, 선택을 하면 안드로이드 앱과 라즈베리파이가 BLE 연결을 시도한다. 시도에 성공하면 블루투스 연결에 성공했다는 메세지가 뜬다. 블루투스 연결 후 안드로이드 앱의 모든 화면에서 블루투스 아이콘이 오른쪽 상단에 뜨는 것을 확인할 수 있다.

앱으로 조절 시나리오

앱으로 조절 시나리오2.png

사용자가 '홈' 화면에서 '앱으로 조절' 버튼을 누르면 '앱으로 조절' 화면으로 넘어간다. '앱으로 조절' 화면에서 사용자가 '+', '-' 버튼을 눌러 왼발과 오른발의 높이와 각도를 조절할 수 있다. 높이는 0~5단계, 각도는 –5~5단계로 설정되어있다. 사용자가 ‘양발 동시에 조절하기' 버튼을 누르면 양발의 높이나 각도 단계를 동시에 조절할 수 있다. 사용자가 단계를 설정한 후 ‘이 자세로 발 받침대 조절하기’ 버튼을 누르면 라즈베리파이로 사용자가 설정한 발 받침대의 높이와 각도 단계 값이 전달된다. 라즈베리파이는 앱에서 송신한 발 받침대의 데이터에 맞게 발 받침대를 조절한다. 사용자가 '자세 저장하기' 버튼을 누르면 자세의 이름을 지정한 후 현재 발 받침대의 높이와 각도 값이 파이어베이스에 저장된다. 저장된 기록은 '기록' 화면에서 확인할 수 있다.

발로 조절 시나리오

발로 조절 시나리오2.png

사용자가 '홈' 화면에서 '발로 조절' 버튼을 누르면 '발로 조절' 화면으로 넘어간다. '발로 조절' 화면에서 사용자가 '높이 고정' 버튼을 누르면 라즈베리파이로 '높이 고정' 시그널을 보낸다. 라즈베리파이는 시그널을 받아 발 받침대의 높이를 고정한다. 사용자가 '각도 고정' 버튼을 누르면 라즈베리파이로 '각도 고정' 시그널을 보낸다. 라즈베리파이는 시그널을 받아 발 받침대의 각도를 고정한다. '높이 고정' 버튼과 '발로 고정' 버튼을 누르면 파란색으로 버튼 색이 변하기 때문에 사용자는 고정 기능을 사용하고 있음을 직관적으로 알 수 있다. 또한 토글 기능을 추가하여 사용자가 '높이 고정' 버튼이나 '각도 고정' 버튼을 누른 후 다시 버튼을 누르면 고정 기능이 풀린다. 마지막으로 사용자가 '자세 저장하기' 버튼을 누르면 자세의 이름을 지정한 후 현재 발 받침대의 높이와 각도 단계 값이 파이어베이스에 저장된다. 저장된 기록은 기록 화면에서 확인할 수 있다.

자세 저장 후 불러오기 시나리오

기록 시나리오1.png

사용자가 '앱으로 조절' 화면이나 '발로 조절' 화면에서 '자세 저장하기' 버튼을 누르면 자세를 저장할 수 있다. 먼저 사용자가 원하는 자세 이름을 적을 수 있다. 그 후 '저장' 버튼을 누르면 발 받침대의 높이와 각도 단계 값이 파이어베이스에 저장된다.


기록 시나리오2.png

사용자가 네비게이션 바의 '기록' 버튼을 누르면 '기록' 화면으로 넘어간다. '기록' 화면에서는 사용자가 저장한 자세 목록이 나타난다. 사용자가 원하는 자세를 선택하고 ‘이 자세로 발 받침대 조절하기' 버튼을 누르면 라즈베리파이로 사용자가 설정한 발 받침대의 높이와 각도 단계 값들이 전달된다. 라즈베리파이는 앱에서 송신한 발 받침대의 데이터에 맞게 발 받침대를 조절한다. 또한 사용자는 '자세 삭제하기' 버튼을 눌러 자세 기록을 삭제할 수 있고, '이름 변경하기' 버튼을 눌러 자세의 이름을 변경할 수 있다.

팀원 역할 분담 및 개발 일정

팀원 역할 분담

팀원 역할
고강민 하드웨어 제작, 하드웨어 분석
이태겸 센서 모듈 구현, 구동 모듈 구현, 센서-구동 모듈 통합
이태훈 앱-라즈베리파이 통신 구현, 앱 UI 구현
최강현 배선 구축, 하드웨어 분석, 일정 관리
최규환 앱-라즈베리파이 통신 구현, 배선 구축
전 원 시스템 통합

개발 일정

평가 항목

평가항목 및 결과

평가 항목 평가 방법 개발 목표치 중요도 실험 횟수 실재 개발치 목표 달성률(%)
높이 제어 정확성 임의의 높이로 제어 후 높이 오차 측정 <1.1cm 30% 18회 평균 0.65cm 100%
각도 제어 정확성 임의의 각도로 제어 후 각도 오차 측정 <2° 30% 18회 평균 0.87° 100%
응답시간 발로 조절 시 조작에 따른 응답 시간 측정 <400ms 30% 10회 평균 100ms 100%
무게 전체 무게 측정 <8kg 5% - 7.6kg 100%
소음 액추에이터와 1m 거리에서 dB 측정 <50dB 5% 5회 평균 59dB 82%

만족도 조사 결과

만족도 조사 결과

결과

발표 포스터

발표 포스터

프로젝트를 진행하며 느낀 점

최*현

고*민

이*겸

처음으로 프로젝트를 진행함에 있어서 하드웨어 설계, 소프트웨어 설계, 전력 공급을 모두 총괄해야 하는 프로젝트는 처음이였기 때문에 프로젝트를 진행하며 어려움을 느꼈다. 스마트 발 받침대의 주요 기능 중 하나인 위치제어를 수행하기 위해서는 엔코더가 탑재된 리니어 액추에이터를 사용해야 했지만 금전적인 상황으로 인해 사용하지 못하였고, 로터리 가변저항과 초음파센서 등 다양한 센싱 시스템을 활용하여 위치제어를 수행하도록 설계하는것이 특히나 어려워 많은 시행 착오를 겪었다. 이렇게 힘든 부분도 많은 프로젝트였지만, 이전에는 경험해보지 못했던 것들을 직접 수행하고 해결함으로써 소프트웨어 하드웨어를 통합한 설계에 대한 안목을 늘릴 수 있었고, 팀원들과 지속적으로 소통함으로써 문제 해결 방안을 마련하는 능력을 기를 수 있었다. 다양한 요소들이 유기적으로 연결되어 있는 하나의 시스템을 만드는 데 있어서 '기계정보공학과' 에서 배우는 소프트웨어 및 하드웨어 지식들이 많은 도움이 되었고 그렇기에 우리 학과의 장점에 대해서 다시 한 번 알아가는 프로젝트라고 생각한다.

이*훈

최*환