I don't know when to quit! But I know when do I quit!

Diy -자작

아두이노(M5Stack)로.. 운동용 타이머 만들기

dudals_jung 2023. 1. 20. 11:09

집에서 홈 트레이닝을 합니다.

개인적으로 14가지 정도 되는 단계로 50분 정도 운동을 하는데요.

운동- 30초 휴식 이렇게 한 단계입니다.

 

이렇게 운동을 하다보니 중간에 단계를 잊을 때도 있고 목표치에 대한 시각적인 부분이 필요하게 되었습니다.

그래서 처음에는 동전과 주방용 타이머를 이용했습니다.

 

 

한쪽에 동전을 쌓아놓고 한 단계 마칠 때마다 한 개 옮기고 타어머 동작 시키고... 이렇게요.

한 2주 정도 이렇게 운동을 했는데, 사실 이것도 귀찮을 때가 있습니다.

땀이 비 맞은 듯 흐르고 숨이 가빠지면 동전 옮기는 걸 잊을 때도 있고요.

 

그래서 만들었습니다.

 

일단 타이머나 횟수 정보를 봐야하니 LCD등이 있어야겠고, 

시작/멈춤 등을 조작하려면 버튼이 있어야겠고,

나중에 런닝용으로 사용을 해볼 생각도 있으니 따로 전원 연결을 안해도 사용이 가능해야해서 배터리가 내장되어있어야겠고...

그래서 고른 것이 M5Stack 라는 모듈입니다.

 

ESP32 라는 칩을 사용하고 아두이노 기반으로 개발이 가능합니다.

 

 

가격은 공식 홈에서 45달러 정도네요 .

전 오래 전부터 개인적으로 사용하던 제품이라 구석에 있던.. 애를 꺼냈습니다.

 

M5Stack Core 2 라고 버튼 대신 터치 스크린이 있는 제품이 최근에 나왔는데, 일반 M5Stack Core  도 충분히 쓸만 합니다.

 

몇 차례 실제 사용에 대한 개정을 거쳐 최종적으로 나온 부분에 대한 것을 공유합니다.

 

먼저 동작 화면입니다.

 

 

상단에는 운동한 단계별로 사각 박스로 표시됩니다.

붉은 색은 현재 운동 중, 녹색은 이전 단계, 노란 색은 휴식 중 표시입니다.

아래 Workout 부분은 운동 횟수 - 휴식 횟수 입니다.

Total 은 운동을 한 전체 시간.

Wating 부분은 지금은 시작 전이라는 표시고,

운동 중일 때는 Workout, 휴식 중일 때는 Rest 라고 표시가 됩니다.

하단의 버튼은 Start, Pause, Next 이렇게 3개로 구성됩니다.

Start 는 운동 시작과 종료, Pause 는 물을 마시거나 화장실에 가는 등 운동을 잠시 쉴 때, Next 는 운동->휴식->운동등 다음 단계로 이동 할 때입니다.

운동은 숫자가 증가를 하고

휴식은 30초 카운트 다운을 하는 방식으로 되어 있습니다.

 

 

Start 버튼을 누르면 운동 단계부터 시작을 합니다. Workout 이라고 뜨면서 시간이 0부터 증가하기 시작합니다.

좌측 상단에 현재 단계가 운동 중이라는 붉은 박스가 보입니다.

 

 

만일 화장실을 가거나 물을 마시기 위해 잠시 Pause 를 누르면 Paused 가 나타나고 모든 시간 정보는 멈춥니다.

 

 

지금 단계의 운동을 마친 후 Next 버튼을 누르면 Rest ( 휴식 ) 단계로 넘어가고 30초 카운트 다운이 시작 됩니다.

좌측 상단에 현재 단계가 휴식 중이라는 노란 박스가 보입니다.

 

 

휴식 단계는 30초 카운트 다운으로 10초 이하가 남았을 경우 붉은 색 글자가 점멸, 5초 이하가 남았을 경우 비프음으로 알려 줍니다.

그리고 카운트 다운이 끝나면 Next 버튼을 눌러 주기를 기다립니다.

 

 

Next 버튼을 눌러 단계들을 빨리 이동을 해봤습니다.

이렇게 표시가 됩니다.

 

실제 운동에 적용을 하면 이렇습니다.

 

 

간단히 정리를 하면 운동을 시작 할 때 Start 버튼을 누르고, 운동<-> 휴식등으로 넘어 갈 때 Next버튼을 눌러 주면 됩니다.

 

개발 및 설치 방법

1. M5Stack Core 구매

아래 링크에서 구매를 하시면 됩니다.

알리 : https://www.aliexpress.com/item/32836393710.html

공식 홈 : https://shop.m5stack.com/collections/m5-core/products/grey-development-core

 

2. 개발툴

아두이노 툴을 설치합니다.

https://www.arduino.cc/en/software

 

여기 1,2단계를 사실상 가장 쉽습니다.

 

3. 아두이노 툴에 m5stack 을 사용하기 위한 라이브러리 및 HW 정보 추가 작업입니다.

말은 어렵지만 작업은 쉬운 편입니다.

 

 

아두이노 환경 설정에서 [ 추가적인 보드 매니저 URLs ] 옆의 작은 버튼을 클릭하면 창이 뜨는데

아래 정보를 입력합니다.

 

https://arduino.esp8266.com/stable/package_esp8266com_index.json

https://dl.espressif.com/dl/package_esp32_index.json

 

 

아두이노 메뉴에서 보드 매니저를 선택합니다.

 

 

 

esp32 를 입력하고 설치를 합니다. ( 저는 설치 되어 있어서 설치 버튼이 보이지 않습니다. )

 

 

다시 보드 매니저 메뉴에 보면 ESP32 Arduino 라는 것이 보입니다.

거기에서 M5Stack-Core-ESP32 를 선택합니다.

 

여기 까지가 가장 기본적인 셋팅 부분입니다.

 

본 소스를 사용하려면 한 가지 라이브러리를 추가해야하는데, 주의가 필요합니다.

타이머 동작을 위해 SimpleTimer 라는 것을 사용하는데 이것이 2종류입니다.

아두이노 라이브러리 매니져에서 찾을 수 있는 버전과 Github 를 통해 구할수 있는 버전입니다.

저는 Github 를 통해 구할수 있는  버전을 사용했습니다.

왜냐면 콜백 함수 및 다수의 타이머 지원이 되기 때문입니다.

 

https://playground.arduino.cc/Code/SimpleTimer/

https://github.com/marcelloromani/Arduino-SimpleTimer/tree/master/SimpleTimer

 

 

아두이노가 설치된 폴더에 보면 libraries 라는 폴더가 있습니다.

거기에 SimpleTimer 라는 폴더를 만들고 Github 에서 받은 자료를 넣으시면 됩니다.

 

4. 제가 만든 소스는 여기에 있습니다.

사용하면서 몇차례 기능등을 변경하다보니 깔끔하지는 않습니다. 

https://github.com/dudals-jung/M5Stack_WorkoutTimer3

 

받으셔서 M5Stack_WorkoutTimer3  폴더에 .ino 파일을 넣으시면 됩니다.

 

아두이노는 프로젝트/소스 파일인 .ino 파일과 폴더명이 같아야 합니다.

 

5. 이제 M5Stack 과 PC를 연결합니다.

 

 

연결을 하면 시리얼 포트로 연결이 됩니다.

메뉴 아래 있는 화살표를 누르면 컴파일이 되고, 문제가 없으면 자동으로 다운로드가 진행됩니다.

 

자료 링크

https://playground.arduino.cc/Code/SimpleTimer/

https://github.com/marcelloromani/Arduino-SimpleTimer/tree/master/SimpleTimer

https://github.com/dudals-jung/M5Stack_WorkoutTimer3