锻炼记录仪

来自Microduino Wikipedia
1304410487@qq.com讨论 | 贡献2015年9月22日 (二) 09:25的版本 目的
跳转至: 导航搜索
Language English

目的

做一个能提醒运动时间,并给各种运动计数。

原理

通过姿态传感器检测运动变化,当计数一次蜂鸣器响一次。通过RTC时钟模块对每次运动时间计时,可记录4次运动量。在OLED显示屏上显示数据,同时可显示当前日期和时间,并且可通过蓝牙手机自动校准时间。

设备

模块 数量 功能
Microduino-CoreUSB/zh 1 核心板
Microduino-Sensorhub/zh 1 传感器转接板
Microduino-Motion/zh 1 姿态检测模块
Microduino-BT/zh 1 蓝牙模块
Microduino-OLED/zh 1 显示模块
Microduino-RTC/zh 1 时钟模块
Microduino-BM/zh 1 电池管理
Microduino-Duo-V/zh 1 扩展板
Microduino-Buzzer/zh 1 蜂鸣器
  • 其他设备:
    • 电池1个
    • 乐高外壳

搭建硬件

  • Setup 1:将CoreUSB接到电脑。打开示例程序,选择好板卡和串口下载程序。

sport_motion

  • Setup2:将所有模块叠加,需要用到Duo-V扩展板来转接OLED和Sensorhub。
  • Setup3:将两个Buzzer蜂鸣器模块接到Sensorhub的D6的引脚上。
Microduino-sensorhub rule.JPG
  • Setup4:将电池接到BM上

软件调试

  • 函数说明
    • “bluetooth()”接收手机蓝牙数据,用于时钟校准。
    • “time_long()”计算运动时间。
    • “large_time()”运动时间根据运动量的大小排序。
    • “lagre()”运动量从大到小排序。
    • “draw()”OLED显示屏显示函数。
    • “setRtcTime”时钟时间设置函数。
  • 蓝牙串口使用
#include <SoftwareSerial.h>
SoftwareSerial mySerial(4, 5); // RX, TX

//#define my_Serial mySerial
#define my_Serial Serial1
  • 运动计数
  if (gy > 80 && ax > -50)
    sport_en = true;
  else if (gy < -80 && ax < -50)
    sport_en = false;

  if (sport_change != sport_en)
  {
    if (sport_en)
    {
      num += 1;
      tone(buzzer_pin, 300);
      Serial.println(num);
    }
    else
      noTone(buzzer_pin);

    sport_change = sport_en;
  }

结果

可以对仰卧起坐、哑铃等运动计数。

视频