# 에어팟을 암퇴치를 위한 피트니스 트래커로 만들기

> Clean Markdown view of GeekNews topic #14775. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=14775](https://news.hada.io/topic?id=14775)
- GeekNews Markdown: [https://news.hada.io/topic/14775.md](https://news.hada.io/topic/14775.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-05-13T09:53:02+09:00
- Updated: 2024-05-13T09:53:02+09:00
- Original source: [richarddas.com](https://richarddas.com/blog/turning-airpods-into-fitness-trackers-to-fight-cancer/)
- Points: 13
- Comments: 2

## Topic Body

- 영국암센터의 "하루 100회 푸시업 챌린지" 참여를 위해 앱을 찾다가, 직접 푸시업 횟수를 세는 재미있는 것을 만들어 보기로 함  
- iOS의 Core Motion 프레임워크 탐구  
  - 센서 데이터를 활용하는 방법을 모색하다가 CMHeadphoneMotionManager를 사용하여 에어팟의 움직임 데이터를 활용하기로 함  
  - Core Motion은 가속도계, 자이로스코프, 지자기 센서 등의 데이터를 제공함  
  - 정확하고 신뢰할 수 있는 움직임과 방향 측정에 유용함  
  - 사용자의 개인정보 보호를 위해 데이터 액세스 권한이 필요함  
- AI 적용 방법 고민  
  - ARKit 등의 프레임워크를 사용하는 앱은 이미 많이 있음  
  - 대신 AI가 아이디어 구현을 도와줄 수 있을 것으로 판단함  
  - Core Motion에 대해 학습시킨 GPT를 활용하여 자연어로 질문하고 해결책을 얻음  
- 앱 아키텍처 설계  
  - Motion Manager: 센서 데이터를 스트리밍하고 장치 센서 업데이트를 처리함  
  - Pushups Detector: 스트리밍된 데이터를 분석하여 미리 정의된 임계값에 따라 푸시업을 감지하고 계산함  
  - SwiftUI View: 사용자가 푸시업을 수행할 때 실시간으로 업데이트되는 반응형 UI를 제공함  
- Motion Manager 구현  
  - 델리게이트 패턴을 사용하여 업데이트되는 값에 액세스함  
  - `CMHeadphoneMotionManager`를 사용하여 장치 모션 데이터를 가져옴  
  - `startUpdates()`와 `stopUpdates()`로 센서 업데이트를 시작하고 중지함  
  - `pitch`와 `accelerationY` 값을 업데이트하고 델리게이트에 알림  
- Pushups Detector 구현  
  - "세션" 개념을 도입하여 데이터 스트림 분석을 시작하고 중지함  
  - 원시 데이터를 해석하여 사용자의 자세와 푸시업 여부를 판단함  
  - 임계값을 사용하여 푸시업의 내려가기와 올라오기를 감지하고 카운트를 증가시킴  
  - `MotionManagerDelegate`를 구현하여 가속도와 피치 값의 변화를 처리함  
- SwiftUI로 간단한 뷰 구현  
  - 세션 시작/종료 버튼과 푸시업 횟수를 표시하는 큰 숫자로 구성됨  
  - 사용자의 자세가 올바른지 여부를 표시하는 텍스트도 추가함  
- 데이터 분석 및 시각화  
  - Swift Charts를 사용하여 원시 센서 데이터를 시각화하고 패턴을 식별함  
  - Y축 가속도에서 푸시업의 내려가기(-1.0)와 올라오기(+0.5) 패턴을 발견함  
  - 실제 테스트를 통해 임계값을 조정하여 정확도를 개선함 (+0.4, -0.7)  
- 실시간 추적의 매력  
  - 에어팟을 착용하고 시작 버튼을 누르면 푸시업 횟수가 자동으로 업데이트됨  
  - 사용자의 상호작용 없이도 동작함  
- 프로젝트를 통해 배운 점  
  - 조기 검증과 반복적 개선의 중요성을 재확인함  
  - 의미 있는 것을 만드는 재미와 만족감을 느낌  
  - UI 개선과 여러 날에 걸친 푸시업 카운팅 등 개선할 점도 있음  
  - 에어팟을 통한 오디오 피드백을 추가하여 시각적 인터페이스 외에도 사용자 경험을 개선함  
- 결론  
  - Core Motion, SwiftUI, AI를 결합하여 24시간 만에 피트니스 트래킹에 새로운 차원을 더한 앱을 개발함  
  - 새로운 기술을 일상의 문제에 어떻게 적용할 수 있을지에 대한 도전이 중요함

## Comments



### Comment 25189

- Author: ing03201
- Created: 2024-05-13T10:38:30+09:00
- Points: 1

새삼 3대운동 횟수세주는 갤럭시워치가 대단하네요

### Comment 25183

- Author: jooyh1021
- Created: 2024-05-13T10:13:08+09:00
- Points: 1

몇년전에 아이폰 근접 센서를 활용한 Thirty라는 푸시업 챌린지 앱을 만들었었는데, 에어팟으로 하는 방법도 있군요.. 근접센서는 다이나믹 아일랜드 추가 이후 정확도가 다소 떨어진듯한 ㅠ
