[1. 배경 및 필요성]
수명을 단축 시키는 가장 큰 원인 중 하나는 비만이다. 일시적이고 건강하지 않은 다이어트는 경각심이 줄어들 가능성이 크고, 요요현상 및 피로함과 같은 부작용으로 신체적, 정신적 건강에 좋지 않다. 그리하여 우리는 지속적으로 다이어트에 대한 경각심을 심어주기 위하여 이 다이어트 알리미를 만들게 되었다. 여기에 더해 몸무게를 유지시키거나 빼려는 사람들에게도 도움이 되도록 만들었다.
[2. 관련 기술 현황]
이미 다양한 형태의 체중계가 존재한다. 그 중 관련 기술 현황은 대표적으로 3가지가 있다.
Ⅰ. Fibit Aria wifi 스마트 체중기
특징: 앱을 통하여 체중관리가 가능하다. 블루투스를 지원한다.
장점: 체중 관리를 통하여 다이어트의 진행정도를 핸드폰으로 확인 가능하다.
단점: 체중계의 배터리가 있어야 측정가능, 서서 체중을 제야 정확히 나옴

Ⅱ. 의자형 체중계
특징: 앉아서 체중확인이 가능한 의자 형태의 체중계이다.
장점: 앉아서 체중 확인을 할 수 있기 때문에 편리하다. 거동이 불편하거나 몸이 불편한 사용자에게 적합하다.
단점: 가격이 매우 비싸고, 체중을 쟤는 위치가 한정적이다.

Ⅲ. 체지방 측정기
특징: 미세전류로 체성분 분석 및 검사, 비만 진단, 체형 관리 가능.
장점: 사용자의 신체 상태를 구체적이고 수치적으로 알 수 있다.
단점: 가격이 매우 비싸고, 기계의 이동이 어렵다.

[3. 문제 정의]
많은 사람이 체중 관리에 관한 관심과 필요성을 느끼며 산다. 하지만 다이어트를 결심한 모든 사람이 성공하는 경우는 거의 없다. 각자의 신체 특성상이나 생활 습관이 이유가 될 수도 있지만, 우리 조는 많은 사람이 체중 관리에 대한 의지가 약하고 경각심이 부족하기 때문이라고 판단했다. 그래서 체중 관리를 하고자 하는 사람들에게 경각심을 심어주고 주기적으로 나의 체중 상태를 확인하며 관리를 할 수 있는 것을 만들고자 했다. 기존 제품과 달리 가장 큰 차별성을 둔 것은 기존의 제품들은 몸무게 측정 수치만 보여준다면, 우리의 제품은 블루투스를 이용한 앱을 통해 음성 알림을 통하여 경각심을 심어주며 추가로 나의 몸 상태를 확인 할 수 있는 것으로 두었다. 무의식적으로 방석에 앉을 때마다, 무게의 변화를 음성으로 알려주는데 무게 변화도에 따라서 음성 출력의 강도가 변하는 것이다. 또한, 키와 몸무게를 입력받아 앱인벤터 Blocks 코딩을 하여 비만도를(몸무게/(신장*신장)) 계산해서 알려주고, 기존의 몸무게와 현재의 몸무게의 차이를 알려주는 것이다. 추가로 다양한 사람들이 쓸 수 있도록 앱인벤터 코딩을 통하여 체중 증가용, 감량용, 유지용도 만드는 것이 목표로 두었다.
[4. 제안 아이디어]
제안 작품의 이름은 ‘Cushion Dite Weight Reminder’ 이다. 말그대로 방석형 다이어트 알림기 이다. 우리의 작품 중 가장 핵심적으로 생각한 것은 체중 관리의 성공률을 높이고, 경각심을 심어주기 위한 것이다. 기존에 측정한 무게와 현재 측정한 무게의 차이를 계산하여 핸드폰으로 알림과 스피커로 녹음된 음성 출력을 해주어 체중 관리의 경각심을 부여한다. 추가적인 특징으로는 앉아서 측정할 수 있고 무게 변화에 따라 음성 출력의 강도가 정해지고 무게에 따라 증가용, 유지용,감소용 선택후 운동 추천도 알려줄 수 있고 자신이 개인적으로 측정한 키를 입력하여 비만도 계산도 가능하다.
[5. 설계 내용]
<설계 전 실험>
무게 오차 분석표
사람/상태 | 바닥에 발을 대고있을 때 (서서측정무게-앉아서측정무게) |
손잡이에 손을 올려두고 쟀을 때 (바닥에 발을 안단상태) | 아빠다리를 한 상태로 쟀을 때(바닥에 방석형태) |
A(조원) | 23 Kg | 7 Kg | 0 Kg |
B(조원) | 20 Kg | 12 Kg | 0 Kg |
C(조원) | 21 Kg | 10 Kg | 0 Kg |
D(조원) | 5 Kg | 9 Kg | 0.2 Kg |
E(조원) | 9 Kg | 10 Kg | 0.1 Kg |
F(조원지인) | 18 Kg | 14 Kg | 0 Kg |
G(조원지인) | 21 Kg | 20 Kg | 0 Kg |
H(조원지인) | 8 Kg | 4 Kg | 0 Kg |
I(조원지인) | 17 Kg | 13 Kg | 0 Kg |
J(조원지인) | 10 Kg | 11 Kg | 0 Kg |
-> 표에서도 확인하듯이 바닥에 (아빠다리를 한 상태)방석형태로 하니 오차가 없었다. -> 바닥의 설치하는 방석형태 결정
<본격 설계>
1) 체중계를 분리한다.

2) 표시한 부분의 납을 녹인다

3) 점퍼케이블은 로드셀 3선 메인기판에 연결해준다.

(메인기판에 점퍼선을 연결한모습)
4) 납땜을 해서 불안정 하지 않게 고정 시킨다.
5) 메인기판에서 hx711에 연결

체중계 hx711 E+ > E+ E- > E- A+ > S+ A- > S- |
6) Hx711에서 아두이노연결


(HX711에서 아두이노로 연결한모습)
Hx711 아두이노 Vcc > 5v Gnd > Gnd DT > A1 SCK > A0 |
7) 연결 후 선 고정 및 정리를 한다.(케이블타이 및 글루건 사용)

8) 플라스틱 컵으로 지지대 설치.


(지지대의 설치이유는 양쪽끝의 불안함을 없애기 위해 제작하였고 단단한 플라스틱 제질이고 무게센서의 분산을 막기위해 높이는 로드셀 센서보다 2mm정도 낮게 제작)
9) 아크릴판 위에 요가 매트를 붙임

10) 매트 위에 올라가 아두이노코드 조정값 찾은 후 다시 고정


[6. 구현 및 결과]
<물리적 현상 내부도>

이 위에 매트와 밑에 아두이노 부착

<앱과 매트의 구현>

1. 무게 차이의 따라 계산하는 스크린
2. 비만율을 계산하는 스크린
3. 무게 (증,유,감)에 따라 자신의 BMI의 맞게 운동추천 해주는 스크린
실제 체중측정과 블루투스 연결장면
[7. 성능 평가]
기술적 차별성 | 전에 쟀던 몸무게와 현재 몸무게를 비교하여 음성으로 알려준다는 점과 bmi측정, 운동 추천이 차별성이 있다. |
외형적 차별성 | 방석 형태여서 앉아서 몸무게를 재서 편리하다는 차별성이 있다. |
정확성 | 방석으로 체중을 잰 값이 앱으로 정확하게 전달 된다. |
기술 다양성 | ⓵ bmi측정으로 자신의 비만율을 앱으로 확인할 수 있어서 편리하다. ⓶ 운동 추천 기능이 다양한 상황에 따라 적절하게 잘 되어있다. ⓷ 전에 쟀던 몸무게를 입력할 시 현재 몸무게와 비교하여 음성으로 알려주는 기능이 있어서 단순한 수치 표시가 아닌 청각적 자극이 된다. |
내구성 | 아크릴의 휘는 현상 때문에 부러질 가능성이 존재하여 내구성이 부족하다. |
편리성 | 바닥에 놓는 방석 형태로 사용하기가 번거롭지 않다. 다만, 양반다리를 하고 앉아야만 정확한 무게 측정이 된다는 단점이 있다. |
[8. 팀 역할 소개]
- S/W -> 팀장 우00: 앱 인벤터 제작 및 디자인, 프로젝트 진행 및 팀원 의견 조율, 마지막 절차 확인 담당, 발표자 서포트 및 발표, 동영상 편집
- H/W -> 서기 유00: 앱 인벤터 전반적인 디자인, 회의록 작성 ,발표자 서포트 및 발표
- S/W -> 보고서 작성자 조00: 아두이노 코딩, 보고서 작성 및 제출, 개인 설계노트 취합 및 제출
- H/W -> 기술자 손00: 납땜, 물리적 현상 제작, PPT작성
- H/W -> 기술자 차00: 물리적 현상 설계도 제작, 필요 부품 사전 자료 제작 및 주문
-전체적인 역할: 자료조사, 물리적 현상 제작, 회의후 보고서 분할 작성
[9. 현실적 제한조건 반영]
체중계의 압력센서가 매우 작았기에 해체 후 위의 판을 넓게 하여 양반다리로 앉았을 때 넓고 편하게 앉을 수 있는 편의성과 우리에게 주어진 제약환경에서 해결법을 찾았고 , 앉았을 때의 방석의 판 끝자락이 움직일 시 위험성과 무게의 분산을 막기 위하여 지지대를 사용하였다
[10. 참고문헌]
https://blog.danggun.net/7562 -> HX711연결
https://blog.danggun.net/7566 -> 3선 로드셀 배선 방법
https://blog.danggun.net/7562#recentComments -> 로드셀 아두이노 데이터 받기
https://allhpy35.tistory.com/37 -> 아두이노 블루투스 연결
[11. 부록]
<소스 코드>
-앱 인벤터 블루투스 코드-

-BMI 계산 코드-
-무게 변화도 계산코드와 무게추천 영상 스크린 이동-

-블루투스로 센서값 받은후 무게 차이에따라 음성출력 코드-
아두이노 블루투스 로드셀 센서 연결 코드
#include <SoftwareSerial.h>
#include "HX711.h" //HX711정의
#define calibration_factor 25130 //찾은 조정값
#define LOADCELL_DOUT_PIN 11 //DT
#define LOADCELL_SCK_PIN 12 //SCK(CLK)
HX711 scale;
const int rxPin = 2; //블루투스 핀
const int txPin = 3;
SoftwareSerial BTSerial(rxPin, txPin);
float value = 12; //센서 신호값
int nValueCount = 10; //최대 개수(평균)
float fValue[10]; //최대 배열 수(평균)
double res;
float fValueTemp = 0.0; //임시 저장값
float fValueSum = 0.0; //합산값
void setup()
{
Serial.begin(9600);
BTSerial.begin(9600);
Serial.println("HX711 kg demo");
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); //HX711객체 초기화
scale.set_scale(calibration_factor); //조정 값 설정
scale.tare(); //현재 값 0으로 둠
Serial.println("Readings:");
}
void loop()
{
Serial.print("Reading: ");
float temp = analogRead(value);
fValueTemp = scale.get_units(); //scale.get_units() returns a float
fValueSum = fValueTemp; //읽은 값을 합산 값에 저장
int i;
for(i = 0; i < nValueCount; i = i + 1)
{
if(i > 0)
{//0보다 클때만 계산
//앞번호일수록 오래된 데이터
fValueSum = fValueSum + fValue[i]; //저장된 값 합산
fValue[i - 1] = fValue[i]; //값 한칸씩 앞으로 밀기
}
}
fValue[nValueCount - 1] = fValueTemp; //가장 최신 저장값
res = fValueSum / nValueCount; //합산값 평균
Serial.print(res, 1);
Serial.print(" kg");
Serial.println();
temp = res;
Serial.println(temp); //센서값 아두이노 COM으로 전달
BTSerial.println(temp); //센서값 블루투스로 전달
delay(50); // 0.05초 마다 센서값 받기
}
}
'App Inventor(앱인벤터)' 카테고리의 다른 글
[앱인벤터] App inventor 학교 쓰레기통 관리 시스템 (0) | 2022.09.07 |
---|---|
App Inventor 스마트 마스크 쓰레기통 (1) | 2022.09.07 |