"베리 해적단 - 자유분발(FootReeDom)"의 두 판 사이의 차이

MIE capstone
이동: 둘러보기, 검색
(선행 시나리오)
(발로 조절 시나리오)
 
(같은 사용자의 중간 판 16개는 보이지 않습니다)
237번째 줄: 237번째 줄:
  
 
* '''App Control Characteristic'''
 
* '''App Control Characteristic'''
[[파일:App_Control_Characteristic.png|600픽셀|섬네일|가운데|그림47. App Control Characteristic]]
+
[[파일:appcontrolcharateristic_표.png|600픽셀|섬네일|가운데|그림47. App Control Characteristic]]
 
:: App Control Characteristic은 발 받침대의 높이와 각도를 제어하고, 안드로이드 앱이 데이터를 라즈베리파이에 송신하기 위해 사용된다. 안드로이드 앱이 GATT 서버에 구현된 Characteristic의 값을 바꾸기 때문에 permission을 write 권한으로 설정했다. 라즈베리파이는 메인 루프를 돌면서 앱으로 조절 모드일 때 left_angle. left_height, right_angle, right_height 변수의 값을 업데이트한다. App Control Characteristic의 데이터 값이 사용되는 시나리오는 다음과 같다.  
 
:: App Control Characteristic은 발 받침대의 높이와 각도를 제어하고, 안드로이드 앱이 데이터를 라즈베리파이에 송신하기 위해 사용된다. 안드로이드 앱이 GATT 서버에 구현된 Characteristic의 값을 바꾸기 때문에 permission을 write 권한으로 설정했다. 라즈베리파이는 메인 루프를 돌면서 앱으로 조절 모드일 때 left_angle. left_height, right_angle, right_height 변수의 값을 업데이트한다. App Control Characteristic의 데이터 값이 사용되는 시나리오는 다음과 같다.  
 
::: (1) 사용자가 ‘앱으로 조절’ 화면에서 ‘+’, ‘-’ 버튼을 사용하여 발 받침대의 높이와 각도 단계를 설정한 후 ‘이 자세로 조절하기’ 버튼을 누르면 발 받침대의 높이와 각도의 데이터가 App_control Characteristic에 write 된다. 라즈베리파이가 업데이트된 값을 통해 발 받침대의 높이와 각도를 조절한다.
 
::: (1) 사용자가 ‘앱으로 조절’ 화면에서 ‘+’, ‘-’ 버튼을 사용하여 발 받침대의 높이와 각도 단계를 설정한 후 ‘이 자세로 조절하기’ 버튼을 누르면 발 받침대의 높이와 각도의 데이터가 App_control Characteristic에 write 된다. 라즈베리파이가 업데이트된 값을 통해 발 받침대의 높이와 각도를 조절한다.
243번째 줄: 243번째 줄:
  
 
* '''Record Characteristic'''
 
* '''Record Characteristic'''
[[파일:Record_Characteristic.png|600픽셀|섬네일|가운데|그림48. Record Characteristic]]
+
[[파일:recordchracteristic_표.png|600픽셀|섬네일|가운데|그림48. Record Characteristic]]
 
:: Record Charcteristic은 사용자가 발 받침대의 높이와 각도 데이터를 저장할 때 사용된다. 안드로이드 앱이 GATT 서버에 구현된 Characteristic의 값을 읽기 때문에 permission을 read 권한으로 설정하였다. Record Charcteristic의 데이터 값이 사용되는 시나리오는 다음과 같다.
 
:: Record Charcteristic은 사용자가 발 받침대의 높이와 각도 데이터를 저장할 때 사용된다. 안드로이드 앱이 GATT 서버에 구현된 Characteristic의 값을 읽기 때문에 permission을 read 권한으로 설정하였다. Record Charcteristic의 데이터 값이 사용되는 시나리오는 다음과 같다.
 
::: (1) 사용자가 ‘발로 조절’ 화면이나 ‘앱으로 조절’ 화면에서 ‘이 자세로 저장하기’ 버튼을 누르면 라즈베리파이에서 발 받침대의 높이와 각도 데이터 값이 Record Charcteristic에 write 되고 그 값을 안드로이드 앱에서 읽어 파이어베이스에 저장한다.<br><br>
 
::: (1) 사용자가 ‘발로 조절’ 화면이나 ‘앱으로 조절’ 화면에서 ‘이 자세로 저장하기’ 버튼을 누르면 라즈베리파이에서 발 받침대의 높이와 각도 데이터 값이 Record Charcteristic에 write 되고 그 값을 안드로이드 앱에서 읽어 파이어베이스에 저장한다.<br><br>
291번째 줄: 291번째 줄:
 
:발 받침대를 여러 명이 함께 사용할 수 있으므로 프로필 기능을 사용하여 각자의 기록을 확인할 수 있다. 안드로이드 앱으로 발 받침대를 조절하기 위해서는 프로필 선택 과정이 선행되어야 한다.  먼저 안드로이드 앱을 실행하면 '프로필 선택' 화면이 뜬다. '프로필 선택' 화면에서 프로필을 선택하면 '홈' 화면으로 넘어가 '앱으로 조절' 이나 '발로 조절' 기능을 사용할 수 있다. 만약 프로필을 추가하고 싶으면 오른쪽 상단의 '프로필 추가' 버튼을 눌러 프로필을 추가할 수 있다. 프로필을 추가한 후 프로필을 선택하면 '홈' 화면으로 넘어간다.
 
:발 받침대를 여러 명이 함께 사용할 수 있으므로 프로필 기능을 사용하여 각자의 기록을 확인할 수 있다. 안드로이드 앱으로 발 받침대를 조절하기 위해서는 프로필 선택 과정이 선행되어야 한다.  먼저 안드로이드 앱을 실행하면 '프로필 선택' 화면이 뜬다. '프로필 선택' 화면에서 프로필을 선택하면 '홈' 화면으로 넘어가 '앱으로 조절' 이나 '발로 조절' 기능을 사용할 수 있다. 만약 프로필을 추가하고 싶으면 오른쪽 상단의 '프로필 추가' 버튼을 눌러 프로필을 추가할 수 있다. 프로필을 추가한 후 프로필을 선택하면 '홈' 화면으로 넘어간다.
 
[[파일:블루투스_연결.png|600픽셀|섬네일|가운데|그림50. 선행 시나리오 2]]<br/>
 
[[파일:블루투스_연결.png|600픽셀|섬네일|가운데|그림50. 선행 시나리오 2]]<br/>
:안드로이드 앱으로 발 받침대를 조절하기 위해서는 블루투스 연결을 해야 한다. '홈' 화면에서 '블루투스 연결' 버튼을 누르면 블루투스 기기를 스캔할 수 있는 화면으로 넘어간다. '블루투스 연결' 화면에서 발 받침대의 라즈베리파이가 목록에 뜬 것을 확인하고, 선택을 하면 안드로이드 앱과 라즈베리파이가 BLE 연결을 시도한다. 시도에 성공하면 블루투스 연결에 성공했다는 메세지가 뜬다. 블루투스 연결 안드로이드 앱의 모든 화면에서 블루투스 아이콘이 오른쪽 상단에 뜨는 것을 확인할 수 있다.
+
:안드로이드 앱으로 발 받침대를 조절하기 위해서는 블루투스 연결을 해야 한다. '홈' 화면에서 '블루투스 연결' 버튼을 누르면 블루투스 기기를 스캔할 수 있는 화면으로 넘어간다. '블루투스 연결' 화면에서 발 받침대의 라즈베리파이가 목록에 뜬 것을 확인하고, 선택을 하면 안드로이드 앱과 라즈베리파이가 BLE 연결을 시도한다. 연결에 성공하면 블루투스 연결에 성공했다는 메세지가 뜬다. 블루투스 연결 상태일 때에는 안드로이드 앱의 모든 화면에서 블루투스 아이콘이 오른쪽 상단에 뜨는 것을 확인할 수 있다.
  
 
===='''<span style="font-size:16px;">앱으로 조절 시나리오</span>''' ====
 
===='''<span style="font-size:16px;">앱으로 조절 시나리오</span>''' ====
299번째 줄: 299번째 줄:
 
===='''<span style="font-size:16px;">발로 조절 시나리오</span>''' ====
 
===='''<span style="font-size:16px;">발로 조절 시나리오</span>''' ====
 
[[파일:발로_조절_시나리오2.png|600픽셀|섬네일|가운데|그림52. 발로 조절 시나리오]]<br/>
 
[[파일:발로_조절_시나리오2.png|600픽셀|섬네일|가운데|그림52. 발로 조절 시나리오]]<br/>
:사용자가 '홈' 화면에서 '발로 조절' 버튼을 누르면 '발로 조절' 화면으로 넘어간다. '발로 조절' 화면에서 사용자가 '높이 고정' 버튼을 누르면 라즈베리파이로 '높이 고정' 시그널을 보낸다. 라즈베리파이는 시그널을 받아 발 받침대의 높이를 고정한다. 사용자가 '각도 고정' 버튼을 누르면 라즈베리파이로 '각도 고정' 시그널을 보낸다. 라즈베리파이는 시그널을 받아 발 받침대의 각도를 고정한다. '높이 고정' 버튼과 '발로 고정' 버튼을 누르면 파란색으로 버튼 색이 변하기 때문에 사용자는 고정 기능을 사용하고 있음을 직관적으로 알 수 있다. 또한 토글 기능을 추가하여 사용자가 '높이 고정' 버튼이나 '각도 고정' 버튼을 누른 후 다시 버튼을 누르면 고정 기능이 풀린다. 마지막으로 사용자가 '자세 저장하기' 버튼을 누르면 자세의 이름을 지정한 후 현재 발 받침대의 높이와 각도 단계 값이 파이어베이스에 저장된다. 저장된 기록은 기록 화면에서 확인할 수 있다.
+
:사용자가 '홈' 화면에서 '발로 조절' 버튼을 누르면 '발로 조절' 화면으로 넘어간다. '발로 조절' 화면에서 사용자가 '높이 고정' 버튼을 누르면 라즈베리파이로 '높이 고정' 시그널을 보낸다. 라즈베리파이는 시그널을 받아 발 받침대의 높이를 고정한다. 사용자가 '각도 고정' 버튼을 누르면 라즈베리파이로 '각도 고정' 시그널을 보낸다. 라즈베리파이는 시그널을 받아 발 받침대의 각도를 고정한다. '높이 고정' 버튼과 '발로 고정' 버튼을 누르면 파란색으로 버튼 색이 변하기 때문에 사용자는 고정 기능을 사용하고 있음을 직관적으로 알 수 있다. 또한 토글 기능이 추가되어 사용자가 '높이 고정' 버튼이나 '각도 고정' 버튼을 누른 후 다시 버튼을 누르면 고정 기능이 풀린다. 마지막으로, 사용자가 '자세 저장하기' 버튼을 누르면 자세의 이름을 지정한 후 현재 발 받침대의 높이와 각도 단계 값이 파이어베이스에 저장된다. 저장된 기록은 기록 화면에서 확인할 수 있다.
  
 
===='''<span style="font-size:16px;">자세 저장 후 불러오기 시나리오</span>''' ====
 
===='''<span style="font-size:16px;">자세 저장 후 불러오기 시나리오</span>''' ====
309번째 줄: 309번째 줄:
 
== '''<span style="font-size:24px;">팀원 역할 분담 및 개발 일정</span>''' ==
 
== '''<span style="font-size:24px;">팀원 역할 분담 및 개발 일정</span>''' ==
 
=== '''<span style="font-size:20px;">팀원 역할 분담</span>''' ===
 
=== '''<span style="font-size:20px;">팀원 역할 분담</span>''' ===
{| cellpadding="10" cellspacing="0" border="1" width="100%"
+
{| cellpadding="10" cellspacing="0" border="1" width="50%" style = "margin: 12px auto" text-align: center;
 
|-
 
|-
 
! 팀원
 
! 팀원
 
! 역할
 
! 역할
 
|-
 
|-
| 고*민
+
| style="text-align:center;"|고*민
| 하드웨어 제작, 하드웨어 분석
+
| style="text-align:center;"|하드웨어 제작, 하드웨어 분석
 
|-
 
|-
| 이*겸
+
| style="text-align:center;"|이*겸
| 센서 모듈 구현, 구동 모듈 구현, 센서-구동 모듈 통합
+
| style="text-align:center;"|센서 모듈 구현, 구동 모듈 구현, 센서-구동 모듈 통합
 
|-
 
|-
| 이*훈
+
| style="text-align:center;"|이*훈
| 앱-라즈베리파이 통신 구현, 앱 UI 구현
+
| style="text-align:center;"|앱-라즈베리파이 통신 구현, 앱 UI 구현
 
|-
 
|-
| 최*현
+
| style="text-align:center;"|최*현
| 배선 구축, 하드웨어 분석, 일정 관리
+
| style="text-align:center;"|배선 구축, 하드웨어 분석, 일정 관리
 
|-
 
|-
| 최*환
+
| style="text-align:center;"|최*환
| 앱-라즈베리파이 통신 구현, 배선 구축
+
| style="text-align:center;"|앱-라즈베리파이 통신 구현, 배선 구축
 
|-
 
|-
| 전  원
+
| style="text-align:center;"|전  원
| 시스템 통합
+
| style="text-align:center;"|시스템 통합
 
|}
 
|}
  
339번째 줄: 339번째 줄:
 
==='''<span style="font-size:20px;">평가항목 및 결과</span>'''===
 
==='''<span style="font-size:20px;">평가항목 및 결과</span>'''===
  
{| cellpadding="10" cellspacing="0" border="1" width="100%"
+
{| cellpadding="10" cellspacing="0" border="1" width="90%" style = "margin: 12px auto" text-align: center;
 
|-
 
|-
 
! 평가 항목
 
! 평가 항목
349번째 줄: 349번째 줄:
 
! 목표 달성률(%)
 
! 목표 달성률(%)
 
|-
 
|-
| 높이 제어 정확성
+
| style="text-align:center;"|높이 제어 정확성
| 임의의 높이로 제어 후 높이 오차 측정
+
| style="text-align:center;"|임의의 높이로 제어 후 높이 오차 측정
| <1.1cm
+
| style="text-align:center;"|<1.1cm
| 30%
+
| style="text-align:center;"|30%
| 18회
+
| style="text-align:center;"|18회
| 평균 0.65cm
+
| style="text-align:center;"|평균 0.65cm
| 100%
+
| style="text-align:center;"|100%
 
|-
 
|-
| 각도 제어 정확성
+
| style="text-align:center;"|각도 제어 정확성
| 임의의 각도로 제어 후 각도 오차 측정
+
| style="text-align:center;"|임의의 각도로 제어 후 각도 오차 측정
| <2°
+
| style="text-align:center;"|<2°
| 30%
+
| style="text-align:center;"|30%
| 18회
+
| style="text-align:center;"|18회
| 평균 0.87°
+
| style="text-align:center;"|평균 0.87°
| 100%
+
| style="text-align:center;"|100%
 
|-
 
|-
| 응답시간
+
| style="text-align:center;"|응답시간
| 발로 조절 시 조작에 따른 응답 시간 측정
+
| style="text-align:center;"|발로 조절 시 조작에 따른 응답 시간 측정
| <400ms
+
| style="text-align:center;"|<400ms
| 30%
+
| style="text-align:center;"|30%
| 10회
+
| style="text-align:center;"|10회
| 평균 100ms
+
| style="text-align:center;"|평균 100ms
| 100%
+
| style="text-align:center;"|100%
 
|-
 
|-
| 무게
+
| style="text-align:center;"|무게
| 전체 무게 측정
+
| style="text-align:center;"|전체 무게 측정
| <8kg
+
| style="text-align:center;"|<8kg
| 5%
+
| style="text-align:center;"|5%
| -
+
|style="text-align:center;"|-
| 7.6kg
+
| style="text-align:center;"|7.6kg
| 100%
+
| style="text-align:center;"|100%
 
|-
 
|-
| 소음
+
| style="text-align:center;"|소음
| 액추에이터와 1m 거리에서 dB 측정
+
| style="text-align:center;"|액추에이터와 1m 거리에서 dB 측정
| <50dB
+
| style="text-align:center;"|<50dB
| 5%
+
| style="text-align:center;"|5%
| 5회
+
| style="text-align:center;"|5회
| 평균 59dB
+
| style="text-align:center;"|평균 59dB
| 82%
+
| style="text-align:center;"|82%
 
|}
 
|}
 
+
각 평가 항목에 대해 개발 목표치를 설정하고 개발 결과물의 목표 달성률을 확인하였다.
 +
* '''높이 제어 정확성'''
 +
: 높이 제어 각 단계의 정확한 구분을 위해 각 단계의 절반인 1.1cm를 개발 목표치로 설정하였으며 실제 오차는  평균0.65cm로 목표 달성률은 100%이다.
 +
* '''각도 제어 정확성'''
 +
: 각도 제어 각 단계의 정확한 구분을 위해 각 단계의 절반인 2°를 개발 목표치로 설정하였으며 실제 오차는  평균0.87°로 목표 달성률은 100%이다.
 +
* '''응답시간'''
 +
: 발로 조절 모드에서 불편함을 느끼지 않을 정도를 목표로 하여 성인 남성의 반응속도인 0.3초에서 조금의 여유를 두어 400ms를 개발 목표치로 설정하였으며 실제 응답시간은 평균 100ms로 목표 달성률은 100%이다.
 +
* '''무게'''
 +
: 초기 발 받침대의 위치를 옮길 때 불편하지 않을 무게를 목표로 하여 8kg을 개발 목표치로 설정하였으며 실제 7.6kg으로 측정되어 목표 달성률은 100%이다.
 +
* '''소음'''
 +
: 조용한 사무실에서 사용할 때 문제 없을 정도를 목표로 하여 50dB를 개발 목표치로 설정하였으나 실제 소음은 평균 59dB로 목표 달성률은 82%이다.
  
 
==='''<span style="font-size:20px;">만족도 조사 결과</span>'''===
 
==='''<span style="font-size:20px;">만족도 조사 결과</span>'''===
[[파일:자유분발_만족도_조사(1).png|600픽셀|섬네일|가운데|그림56. 만족도 조사 결과]]
+
[[파일:자유분발_만족도_조사(1).png|800픽셀|섬네일|가운데|그림56. 만족도 조사 결과]]
 +
만족도 조사 각 항목의 중요도를 상, 중, 하로 나누어 4점, 3점, 2점으로 목표 점수를 설정하였다.
 +
* '''발로 조절(주황색)'''
 +
: 각 항목의 중요도는 '상', '상', '중'으로 목표 점수 3.5점 중 4.8점의 만족도 조사 결과를 얻었다.
 +
* '''앱으로 조절(하늘색)'''
 +
: 각 항목의 중요도는 '상', '상', '상'으로 목표 점수 4점 중 4.9점의 만족도 조사 결과를 얻었다.
 +
* '''편의성(핑크색)'''
 +
: 각 항목의 중요도는 '상', '상'으로 목표 점수 4점 중 5점의 만족도 조사 결과를 얻었다.
 +
* '''기타(갈색)'''
 +
: 각 항목의 중요도는 '하', '중', '상'으로 목표 점수 3점 중 4.1점의 만족도 조사 결과를 얻었다.
  
 
== '''<span style="font-size:24px;">결과</span>''' ==
 
== '''<span style="font-size:24px;">결과</span>''' ==
 
==== '''<span style="font-size:20px;">최종 결과물</span>'''====
 
==== '''<span style="font-size:20px;">최종 결과물</span>'''====
 
[[파일:최종 결과물 베리해적단.png|600픽셀|섬네일|가운데|그림57. 발 받침대 최종 결과물]]
 
[[파일:최종 결과물 베리해적단.png|600픽셀|섬네일|가운데|그림57. 발 받침대 최종 결과물]]
 +
 +
==== '''<span style="font-size:20px;">사용 메뉴얼</span>'''====
 +
[[파일:베리해적단 메뉴얼.png|600픽셀|섬네일|가운데|그림58. 발 받침대 사용 메뉴얼]]
 +
  
 
==== '''<span style="font-size:20px;">발표 포스터</span>'''====
 
==== '''<span style="font-size:20px;">발표 포스터</span>'''====
[[파일:베리해적단 포스터 별.pdf|800픽셀|섬네일|가운데|그림58. 발표 포스터]]
+
[[파일:베리해적단 포스터 별.pdf|800픽셀|섬네일|가운데|그림59. 발표 포스터]]
  
 
==== '''<span style="font-size:20px;">제작 영상</span>'''====
 
==== '''<span style="font-size:20px;">제작 영상</span>'''====
426번째 줄: 449번째 줄:
  
 
=== '''<span style="font-size:20px;">최*환</span>''' ===
 
=== '''<span style="font-size:20px;">최*환</span>''' ===
 +
지금까지 여러 프로젝트를 진행하였지만 기계, 정보 융합적 성격을 가진 종합 설계 프로젝트는 처음해보는 큰 도전이었다. 이번 프로젝트에서는 통신과 배선을 맡았는데 진행 중 여러 문제사항이 발생했다. 통신 부분 에서는 블루투스 통신을 활용하여 안드로이드 앱과 라즈베리파이 간의 데이터를 주고받는 시스템을 구현했다. BLE 통신을 통해 데이터를 송수신하는 과정을 직접 구현하면서 통신 프로토콜에 대해 깊이 이해할 수 있었다. 또한 초기에 와이파이를 사용하려 했으나 중간에 블루투스로 변경했던 과정에서는 예상치 못한 문제들이 발생했다. 하지만 이를 해결하면서, 통신 방식의 변경은 시스템 전체에 큰 영향을 미칠 수 있으므로, 초기 단계에서 신중하게 결정해야 한다는 것을 배웠다. 또한, 새로운 기술을 배우고 적용하는 데 두려워하지 말아야 한다는 점도 깨달았다. 배선 및 회로 설계를 처음 진행할 때는 배선이 단순히 각 부품을 연결하는 작업이라고 여겼지만, 실제로는 안정적인 전력 공급과 신호 전달을 위한 세심한 설계가 필요했다. 특히 다양한 센서와 액추에이터를 연결하는 과정에서 배선의 최적 경로를 설정하고, 전력 공급의 안정성을 확인하는 일이 매우 중요하다는 것을 깨달았다. 이러한 경험은 앞으로의 프로젝트에서 전기적 안정성을 고려한 설계를 진행하는 데 큰 도움이 될 것이다. 팀원들이 모두 설계를 끝내고 통합하며 실물을 제작하는 단계에서는 많은 보람을 느꼈다. 특히, 내가 설계한 시스템이 실제로 동작하는 모습을 보았을 때 성취감을 느꼈다. 이번 프로젝트를 통해 배선, 회로, 통신 등 다양한 기술적 측면에서 많은 것을 배웠다. 프로젝트 초기 설계 단계부터 최종 완성품을 제작하기까지의 모든 과정을 직접 경험하면서, 이론과 실제의 차이를 몸소 체감할 수 있었고 팀원들과의 협력을 통해 문제를 해결하는 과정에서 큰 성장을 이룰 수 있었다.

2024년 6월 22일 (토) 06:07 기준 최신판

프로젝트 명 자유분발(FootReeDom)
팀 명 베리해적단(BerryPirates)
팀 로고
BerryPirates.png

프로젝트 개요

프로젝트 요약

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

프로젝트 배경 및 기대효과

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

프로젝트 목표

그림1. 목적 계통도

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

동작 시나리오

선행 동작 시나리오

그림2. 선행 동작 시나리오

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

발로 조절 동작 시나리오

그림3. 발로 조절 동작 시나리오

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

앱으로 조절 동작 시나리오

그림4. 앱으로 조절 동작 시나리오

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

기록 버튼 동작 시나리오

그림5. 기록 버튼 동작 시나리오

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

시스템 개략도

그림6. 시스템 개략도

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

구현 내용

기구부

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

메커니즘 설계

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

기구부 설계

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

회로

전력 공급 개요

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

전력 공급 안정성 검증

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

라즈베리파이 결선

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

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

PCB기판 브레드보드 결선

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

배선

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

배선 실물 제작

  • 그림30. 발 받침대 밑판의 배선 모습
  • 그림31. 발 받침대 밑판에 덮개를 덮은 모습
  • 그림32. 최적 경로에 배선한 모습

발 받침대 중앙의 공간에 SMPS, 라즈베리파이, 모터 드라이버, 컨버터를 위치시켜 보관하였다. 주요 배선 부품을 보관한 공간 위에는 덮개를 덮고 센서, 구동부와 연결되는 선들은 발 받침대 하부의 공간을 지나가는 경로로 배선하여 겉에서 보이지 않게 하였다. 또한 [그림29]와 같이 배선하여 발 받침대의 높이와 각도가 변화하는 모든 구간에서 전선을 안정적으로 고정하였다.

센서

초음파 센서

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

압력 센서

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

로터리 가변저항

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

구동

제어 모듈 구조

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

초기화

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

앱으로 조절

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

발로 조절

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

통신

GAP(Generic Access Profile) 구현

그림43. GAP 개략도
장치 간 양방향 데이터 교환을 위해 Connection 모드로 구현하였다. Peripheral(Slave) 장치는 자신의 존재를 알리고 중앙 장치가 상호 작용할 수 있는 데이터나 서비스를 제공하기 때문에 그에 해당하는 라즈베리파이로 선정하였다. Central(Master) 장치는 BLE 장치를 검색하고 주변 장치와 상호 작용하는 역할을 수행하기 때문에 그에 해당하는 안드로이드 앱으로 선정하였다.

GATT(Generic Attribute Profile) 구현

BLE GATT(Generic Attribute Profile) 프로파일을 통해 데이터를 송수신하는 사용자 정의 서비스를 구현했다. GAP을 통해 BLE 장치가 서로 연결되고 데이터 통신 준비가 끝나면, GATT 방식으로 데이터를 주고받는다. GATT에서는 안드로이드 앱이 GATT Client가 되고, Peripheral 기기인 라즈베리파이가 GATT Server가 된다. 따라서 GATT Client인 안드로이드 앱이 라즈베리파이에 요청을 보내고, 라즈베리파이는 그 요청에 응답한다.
그림44. GATT 구성도
GATT Server(Profile)인 라즈베리파이가 제공하는 서비스(Service, 기능 대분류)와 특성(Characteristic) 데이터를 정의하였다. 데이터는 전체 시스템 레벨에서 사용하는 신호(Main Signal), 발로 조절 모드에서 사용하는 신호(Foot Control Signal), 앱에서 조절 모드에서 사용하는 데이터 신호(App Control), 자세 저장을 위한 데이터 신호(Record)로 이루어져 있으며 [그림44]과 같이 계층 구조로 구성되어 있다. 모든 Characteristic의 데이터는 배열 형식으로 각 열에 데이터 값을 담아 통신한다.

  • Main Signal Characteristic
그림45. Main Signal Characteristic
Main Signal Characteristic은 안드로이드 앱에서 보낸 시그널을 라즈베리파이가 받기 위해 사용된다. 안드로이드 앱이 GATT 서버에 구현된 Characteristic의 값을 바꾸기 때문에 permission을 write 권한으로 설정했다. 라즈베리파이는 메인 루프를 돌면서 power_off, foot_control_on, app_control_on 변수의 값을 업데이트한다. Main Signal의 데이터 값이 사용되는 시나리오는 다음과 같다.
(1) 사용자가 홈 화면에서 전원 off 버튼을 누르면 power_off 변수의 값이 false에서 true로 바뀐다. 라즈베리파이가 이를 확인하고 전원을 종료한다.
(2) 사용자가 홈 화면에서 ‘발로 조절’ 버튼을 누르면 foot_control_on 변수의 값이 false에서 true로 바뀐다. 라즈베리파이가 업데이트된 변수로 main 함수의 if 문을 통해 발로 조절 모듈이 실행된다.
(3) 사용자가 홈 화면에서 ‘앱으로 조절’ 버튼을 누르면 app_control_on 변수의 값이 false에서 true로 바뀐다. 라즈베리파이가 업데이트된 변수로 main 함수의 if 문을 통해 앱으로 조절 모듈이 실행된다.

  • Foot Control Signal Characteristic
그림46. Foot Control Signal Characteristic
Foot Control Signal Characteristic은 발로 조절 모드에서 안드로이드 앱이 보낸 시그널을 라즈베리파이가 받기 위해 사용된다. 안드로이드 앱이 GATT 서버에 구현된 Characteristic의 값을 바꾸기 때문에 permission을 write 권한으로 설정했다. 라즈베리파이는 메인 루프를 돌면서 발로 조절 모드일 때 fix_angular, fix_height, save_pose변수의 값을 업데이트 한다. Foot Control Signal Characteristic의 데이터 값이 사용되는 시나리오는 다음과 같다.
(1) 사용자가 ‘발로 조절’ 화면에서 ‘각도 고정’ 버튼을 누르면 fix_angular가 false에서 true로 바뀐다. 라즈베리파이에서 업데이트된 값을 통해 발 받침대의 각도를 고정한다.
(2) 사용자가 ‘발로 조절’ 화면에서 ‘높이 고정’ 버튼을 누르면 fix_height가 false에서 true로 바뀐다. 라즈베리파이에서 업데이트된 값을 통해 발 받침대의 높이를 고정한다.
(3) 사용자가 ‘발로 조절’ 화면에서 ‘이 자세로 저장하기’ 버튼을 누르면 save_pose가 가 false에서 true로 바뀐다. 라즈베리파이에서 업데이트된 값을 통해 발 받침대의 높이와 각도 데이터를 Record Characteristic에 담는다.

  • App Control Characteristic
그림47. App Control Characteristic
App Control Characteristic은 발 받침대의 높이와 각도를 제어하고, 안드로이드 앱이 데이터를 라즈베리파이에 송신하기 위해 사용된다. 안드로이드 앱이 GATT 서버에 구현된 Characteristic의 값을 바꾸기 때문에 permission을 write 권한으로 설정했다. 라즈베리파이는 메인 루프를 돌면서 앱으로 조절 모드일 때 left_angle. left_height, right_angle, right_height 변수의 값을 업데이트한다. App Control Characteristic의 데이터 값이 사용되는 시나리오는 다음과 같다.
(1) 사용자가 ‘앱으로 조절’ 화면에서 ‘+’, ‘-’ 버튼을 사용하여 발 받침대의 높이와 각도 단계를 설정한 후 ‘이 자세로 조절하기’ 버튼을 누르면 발 받침대의 높이와 각도의 데이터가 App_control Characteristic에 write 된다. 라즈베리파이가 업데이트된 값을 통해 발 받침대의 높이와 각도를 조절한다.
(2) 사용자가 ‘기록’ 화면에서 원하는 기록을 고른 후 ‘이 자세로 조절하기’ 버튼을 누르면 발 받침대의 높이와 각도의 데이터가 App_control Characteristic에 write 된다. 라즈베리파이가 업데이트된 값을 통해 발 받침대의 높이와 각도를 감지하여 Record Characteristic에 write 하는 모듈이 실행된다.

  • Record Characteristic
그림48. Record Characteristic
Record Charcteristic은 사용자가 발 받침대의 높이와 각도 데이터를 저장할 때 사용된다. 안드로이드 앱이 GATT 서버에 구현된 Characteristic의 값을 읽기 때문에 permission을 read 권한으로 설정하였다. Record Charcteristic의 데이터 값이 사용되는 시나리오는 다음과 같다.
(1) 사용자가 ‘발로 조절’ 화면이나 ‘앱으로 조절’ 화면에서 ‘이 자세로 저장하기’ 버튼을 누르면 라즈베리파이에서 발 받침대의 높이와 각도 데이터 값이 Record Charcteristic에 write 되고 그 값을 안드로이드 앱에서 읽어 파이어베이스에 저장한다.

데이터베이스

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


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

안드로이드 앱

선행 시나리오

그림49. 선행 시나리오 1

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

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

앱으로 조절 시나리오

그림51. 앱으로 조절 시나리오

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

발로 조절 시나리오

그림52. 발로 조절 시나리오

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

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

그림53. 기록 시나리오 1

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


그림54. 기록 시나리오 2

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

팀원 역할 분담 및 개발 일정

팀원 역할 분담

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

개발 일정

그림55. 개발 일정

평가 항목

평가항목 및 결과

평가 항목 평가 방법 개발 목표치 중요도 실험 횟수 실재 개발치 목표 달성률(%)
높이 제어 정확성 임의의 높이로 제어 후 높이 오차 측정 <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%

각 평가 항목에 대해 개발 목표치를 설정하고 개발 결과물의 목표 달성률을 확인하였다.

  • 높이 제어 정확성
높이 제어 각 단계의 정확한 구분을 위해 각 단계의 절반인 1.1cm를 개발 목표치로 설정하였으며 실제 오차는 평균0.65cm로 목표 달성률은 100%이다.
  • 각도 제어 정확성
각도 제어 각 단계의 정확한 구분을 위해 각 단계의 절반인 2°를 개발 목표치로 설정하였으며 실제 오차는 평균0.87°로 목표 달성률은 100%이다.
  • 응답시간
발로 조절 모드에서 불편함을 느끼지 않을 정도를 목표로 하여 성인 남성의 반응속도인 0.3초에서 조금의 여유를 두어 400ms를 개발 목표치로 설정하였으며 실제 응답시간은 평균 100ms로 목표 달성률은 100%이다.
  • 무게
초기 발 받침대의 위치를 옮길 때 불편하지 않을 무게를 목표로 하여 8kg을 개발 목표치로 설정하였으며 실제 7.6kg으로 측정되어 목표 달성률은 100%이다.
  • 소음
조용한 사무실에서 사용할 때 문제 없을 정도를 목표로 하여 50dB를 개발 목표치로 설정하였으나 실제 소음은 평균 59dB로 목표 달성률은 82%이다.

만족도 조사 결과

그림56. 만족도 조사 결과

만족도 조사 각 항목의 중요도를 상, 중, 하로 나누어 4점, 3점, 2점으로 목표 점수를 설정하였다.

  • 발로 조절(주황색)
각 항목의 중요도는 '상', '상', '중'으로 목표 점수 3.5점 중 4.8점의 만족도 조사 결과를 얻었다.
  • 앱으로 조절(하늘색)
각 항목의 중요도는 '상', '상', '상'으로 목표 점수 4점 중 4.9점의 만족도 조사 결과를 얻었다.
  • 편의성(핑크색)
각 항목의 중요도는 '상', '상'으로 목표 점수 4점 중 5점의 만족도 조사 결과를 얻었다.
  • 기타(갈색)
각 항목의 중요도는 '하', '중', '상'으로 목표 점수 3점 중 4.1점의 만족도 조사 결과를 얻었다.

결과

최종 결과물

그림57. 발 받침대 최종 결과물

사용 메뉴얼

그림58. 발 받침대 사용 메뉴얼


발표 포스터

그림59. 발표 포스터

제작 영상

베리해적단 자유분발 제작 영상

제작 과정 - Notion

베리해적단 제작 과정 - 노션

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

최*현

한 학기 동안 팀장의 역할로 팀 구성원 간의 조율, 일정 관리를 하고 배선, 하드웨어를 담당했다. 프로젝트 초기, 무리 없이 역할을 수행하였지만 재료를 구매하고 실물을 만드는 과정에서 배선, 하드웨어를 제작하며 역할 수행에 어려움을 겪었다. 밑바닥부터 하드웨어를 제작한 경험이 없던 터라 실물 제작 기간을 적절히 예상하지 못하였고 결과적으로 일정 관리에 신경을 덜 쓰게 되었다. 이에 따라 프로젝트의 진행에 어려움을 겪을 수 있었으나 팀 구성원 모두가 맡은 역할을 열심히 진행해 주었으며 함께 일정 관리를 진행해 문제 없이 프로젝트를 마무리할 수 있었다. 난이도가 높은 프로젝트 주제였음에도 불구하고 포기하지 않고 끝까지 진행해준 팀원들에게 고마움을 전하고 싶다. 추가로 일정 관리가 미흡했던 기간, 프로젝트 진행 상황이 정리가 안되는 것을 느끼며 일정 관리의 중요성을 느꼈고 하드웨어 조립, 배치 등 실물 제작 과정에서 성장할 수 있는 경험을 했기에 보람찬 프로젝트였다고 생각한다.

고*민

학기 초, 팀 프로젝트에서 역할 분담을 위해 나의 강점이 무엇인지, 내가 관심 있어 하는 분야가 무엇인지에 대해 돌아보는 시간이 주어졌다. 이미 다른 동료들이 하고 싶은 분야, 잘 하는 분야를 알고 있는 것에 비해 나는 나에 대해 잘 모르고 있다는 사실을 깨달았다. 때문에 내가 하드웨어 제작을 담당하게 됐었을 때 자신감이 많이 하락되어 있던 상태였다. 처음부터 기구를 설계하고 메커니즘을 설계하는 과정은 매우 어려웠지만 동료들과 함께 아이디어를 제시하고 해결책을 찾는 과정은 무척 즐거웠다. 또한 하드웨어 제작 중에 문제점이 발생할 때마다 괴로웠지만 새로운 대책을 제시하고 보완하는 과정 자체는 값진 경험이라고 생각한다. 이번 프로젝트는 나 혼자서는 절대로 해낼 수 없고, 동료들과 힘을 합쳤기에 포기하지 않고 성공적으로 완성시킬 수 있다고 생각한다. 나는 비록 다른 동료들에 비해 경험이 적고, 학습하며 성장하는 속도가 더딜 수는 있어도 팀 프로젝트를 진행 중에 무언가를 도전하는 욕구와 흥미가 있는 분야에 푹 빠져있는 나 자신을 발견했다. 한 학기 동안 목표를 설정하고, 계획을 세우고, 무수한 수정과 보완을 거치며 완성품을 만들어내 굉장히 뿌듯하다. 이런 기회를 제공하게 해준 임베디드 시스템 교수님, 조교님들 그리고 팀 동료들에게 감사함을 느낀다.

이*겸

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

이*훈

주제를 자유롭게 선정하고 설계를 한 후 직접 제품을 만든 경험이 이번이 처음이었기 때문에 힘들었지만 많은 것을 배울 수 있었다. 이번 프로젝트에서 통신과 안드로이드 앱 파트를 담당했다. 통신은 원래 와이파이를 활용하기로 결정했다가 중간에 블루투스 통신으로 방식을 변경하였다. 이 과정에서 블루투스에 대한 다양한 지식을 습득할 수 있었고, 중간에 방식이 크게 바뀌면 어떤 시행착오를 겪는 지도 알 수 있었다. 안드로이드 앱을 제작하는 것은 처음이었기에 차근차근 학습하였고, 블루투스 통신을 안드로이드 앱에 구현하는 것이 가장 난이도가 높았다. 마지막에 내가 맡은 부분이 제대로 작동하는 것을 보고 큰 성취감을 느낄 수 있었다. 프로젝트 기간 막바지에는 팀원 모두가 하드웨어 파트에 참여하였다. 움직이는 하드웨어를 구현하는 것이 얼마나 어렵고 힘든 일인지 알게 되었고, 결국은 팀원 모두가 노력한 덕분에 좋은 결과물이 나와서 뿌듯했다. 또한 노션과 github와 같은 팀원과 협업할 수 있는 툴을 사용하면서 협업 능력을 기를 수 있었다. 결론적으로 지금까지 들은 과목 중 가장 힘들었지만 가장 배울 점이 많고 뿌듯했던 수업이었다.

최*환

지금까지 여러 프로젝트를 진행하였지만 기계, 정보 융합적 성격을 가진 종합 설계 프로젝트는 처음해보는 큰 도전이었다. 이번 프로젝트에서는 통신과 배선을 맡았는데 진행 중 여러 문제사항이 발생했다. 통신 부분 에서는 블루투스 통신을 활용하여 안드로이드 앱과 라즈베리파이 간의 데이터를 주고받는 시스템을 구현했다. BLE 통신을 통해 데이터를 송수신하는 과정을 직접 구현하면서 통신 프로토콜에 대해 깊이 이해할 수 있었다. 또한 초기에 와이파이를 사용하려 했으나 중간에 블루투스로 변경했던 과정에서는 예상치 못한 문제들이 발생했다. 하지만 이를 해결하면서, 통신 방식의 변경은 시스템 전체에 큰 영향을 미칠 수 있으므로, 초기 단계에서 신중하게 결정해야 한다는 것을 배웠다. 또한, 새로운 기술을 배우고 적용하는 데 두려워하지 말아야 한다는 점도 깨달았다. 배선 및 회로 설계를 처음 진행할 때는 배선이 단순히 각 부품을 연결하는 작업이라고 여겼지만, 실제로는 안정적인 전력 공급과 신호 전달을 위한 세심한 설계가 필요했다. 특히 다양한 센서와 액추에이터를 연결하는 과정에서 배선의 최적 경로를 설정하고, 전력 공급의 안정성을 확인하는 일이 매우 중요하다는 것을 깨달았다. 이러한 경험은 앞으로의 프로젝트에서 전기적 안정성을 고려한 설계를 진행하는 데 큰 도움이 될 것이다. 팀원들이 모두 설계를 끝내고 통합하며 실물을 제작하는 단계에서는 많은 보람을 느꼈다. 특히, 내가 설계한 시스템이 실제로 동작하는 모습을 보았을 때 성취감을 느꼈다. 이번 프로젝트를 통해 배선, 회로, 통신 등 다양한 기술적 측면에서 많은 것을 배웠다. 프로젝트 초기 설계 단계부터 최종 완성품을 제작하기까지의 모든 과정을 직접 경험하면서, 이론과 실제의 차이를 몸소 체감할 수 있었고 팀원들과의 협력을 통해 문제를 해결하는 과정에서 큰 성장을 이룰 수 있었다.