“锻炼记录仪”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
目的
 
(未显示同一用户的2个中间版本)
第4行: 第4行:
 
|
 
|
 
==目的==
 
==目的==
做一个能提醒运动时间,并给各种运动计数。
+
设定锻炼时间,蜂鸣器就会响起,只有完成规定数量的运动才能关闭,利用Motion模块记录你的动作并计数。
[[File:Exercise_record.jpg|600px|center|excercise]]
+
[[File:Exercise_record-image.jpg|600px|center]]
  
 
==原理==
 
==原理==
通过姿态传感器检测运动变化,当计数一次蜂鸣器响一次。通过RTC时钟模块对每次运动时间计时,可记录4次运动量。在OLED显示屏上显示数据,同时可显示当前日期和时间,并且可通过蓝牙手机自动校准时间。
+
通过RTC设定运动时间,到了时间蜂鸣器就响。通过姿态传感器检测运动变化来计数,达到规定数量的运动才关闭蜂鸣器。平时OLED显示屏上显示显示当前日期和时间,运动状态下显示还需要运动的运动量。
 +
[[File:Exercise_record-sch.jpg|600px|center]]
 +
 
 
==设备==
 
==设备==
 
{|class="wikitable"
 
{|class="wikitable"
第14行: 第16行:
 
|模块||数量||功能
 
|模块||数量||功能
 
|-
 
|-
|[[Microduino-CoreUSB/zh]]||1||核心板
+
|[[mCookie-CoreUSB/zh]]||1||核心板
|-
 
|[[Microduino-Sensorhub/zh]]||1||传感器转接板
 
 
|-
 
|-
|[[Microduino-Motion/zh]]||1||姿态检测模块
+
|[[mCookie-Hub/zh]]||1||传感器转接板
 
|-
 
|-
|[[Microduino-BT/zh]]||1||蓝牙模块
+
|[[mCookie-Motion/zh]]||1||姿态检测模块
 
|-
 
|-
|[[Microduino-OLED/zh]]||1||显示模块
+
|[[mCookie-OLED/zh]]||1||显示模块
 
|-
 
|-
|[[Microduino-RTC/zh]]||1||时钟模块
+
|[[mCookie-RTC/zh]]||1||时钟模块
 
|-
 
|-
| [[Microduino-BM/zh]]||1||电池管理
+
| [[mCookie-BM/zh]]||1||电池管理
 
|-
 
|-
| [[Microduino-Duo-V/zh]]||1||扩展板
+
| [[mCookie-Duo-V/zh]]||1||扩展板
 
|-
 
|-
 
| [[Microduino-Buzzer/zh]]||1||蜂鸣器
 
| [[Microduino-Buzzer/zh]]||1||蜂鸣器
 
|}
 
|}
 
 
*其他设备:
 
*其他设备:
 
**电池1个
 
**电池1个
 
**乐高外壳
 
**乐高外壳
 
+
[[File:Exercise_record-module.jpg|600px|center]]
==搭建硬件==
+
==准备==
*Setup 1:将CoreUSB接到电脑。打开示例程序,选择好板卡和串口下载程序。
+
*Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。
[https://github.com/Microduino/Microduino_Tutorials/blob/master/MCookie_Tutorial/sport_10dof/sport_10dof.ino sport_motion]
+
[[Image:CoreUSB_Ble_pc.jpg|600px|center]]
*Setup2:将所有模块叠加,需要用到Duo-V扩展板来转接OLED和Sensorhub。
+
*Setup 2:点击Files > Examples > mCookie > _305_PersonalTrainer, 加载程序。
[[File: Exercise_record_setup_1.jpg|600px|center|thumb]]
+
[[File: _305_PersonalTrainer_load.jpg|600px|center]]
*Setup3:将两个Buzzer蜂鸣器模块接到Sensorhub的D6的引脚上。
+
* Setup 3:加载代码,选择好板卡和COM端口下载程序。出现下载成功(Done Uploading)提示,表示程序已经写进CoreUSB模块中了。
[[file:Microduino-sensorhub_rule.JPG|thumb|800px|center]]
+
[[File: _305_PersonalTrainer_load-ok.jpg|600px|center]]
[[file: Exercise_record_6.JPG|thumb|800px|center]]
 
*Setup4:将电池接到BM上
 
[[file: music_boxz _bm.JPG|thumb|800px|center]]
 
  
 
==软件调试==
 
==软件调试==
*函数说明
+
*运动判断
**“bluetooth()”接收手机蓝牙数据,用于时钟校准。
 
**“time_long()”计算运动时间。
 
**“large_time()”运动时间根据运动量的大小排序。
 
**“lagre()”运动量从大到小排序。
 
**“draw()”OLED显示屏显示函数。
 
**“setRtcTime”时钟时间设置函数。
 
 
 
*蓝牙串口使用
 
 
<source lang="cpp">
 
<source lang="cpp">
#include <SoftwareSerial.h>
+
change_gx = (abs(gx) + abs(gy) + abs(gz)) / 3;
SoftwareSerial mySerial(4, 5); // RX, TX
+
  //Serial.println(change_gx);
 
+
  if (change_gx > 80 && !sport_en)
//#define my_Serial mySerial
+
    sport_en = true;
#define my_Serial Serial1
+
  else if (change_gx <= 10&&!sport_num)
 +
  {
 +
    timer_0 = millis();
 +
    sport_num = true;
 +
  }
 +
  if (sport_num)
 +
  {
 +
    if (millis()-timer_0 > 1000)
 +
    {
 +
      change_gx = (abs(gx) + abs(gy) + abs(gz)) / 3;
 +
      if (change_gx <= 10)
 +
      {
 +
        sport_num= false;
 +
        sport_en = false;
 +
        timer_0 = millis();
 +
      }
 +
    }
 +
  }
 
</source>
 
</source>
 
 
*运动计数
 
*运动计数
 
<source lang="cpp">
 
<source lang="cpp">
  if (gy > 80 && ax > -50)
+
if (sport_change != sport_en && time_en)
    sport_en = true;
 
  else if (gy < -80 && ax < -50)
 
    sport_en = false;
 
 
 
  if (sport_change != sport_en)
 
 
   {
 
   {
 
     if (sport_en)
 
     if (sport_en)
 
     {
 
     {
       num += 1;
+
       Sport_num -= 1;
 
       tone(buzzer_pin, 300);
 
       tone(buzzer_pin, 300);
       Serial.println(num);
+
       if (Sport_num == 0)
 +
      {
 +
        time_en = false;
 +
        noTone(buzzer_pin);
 +
      }
 
     }
 
     }
     else
+
     //else
      noTone(buzzer_pin);
+
    //  noTone(buzzer_pin);
 
+
    //Serial.println(sport_en);
 
     sport_change = sport_en;
 
     sport_change = sport_en;
 
   }
 
   }
 
</source>
 
</source>
 +
*
 +
==搭建硬件==
 +
*Setup1:将Buzzer蜂鸣器模块接到Hub的D6的引脚上。
 +
[[file: Exercise_record_6.jpg |800px|center]]
 +
*Setup 2:将激活后的电池盒与BM模块相连.
 +
[[File:CoreUSB_Ble_steup2.jpg|600px|center]]
 +
*Setup 3:将所有模块堆叠在一起,顺序随意,电路部分搭建完成。
 +
[[File: Exercise_record _steup3.jpg|600px|center]]
  
 +
==调试代码==
 +
[[File: Exercise_record _debug1.jpg|600px|center]]
 +
1.初次使用需要通过程序为RTC模块设定初始时间,找到上图这段代码,按照当地时间进行设置,将程序通过CoreUSB载入RTC模块。
 +
[[File: Exercise_record _debug2.jpg|600px|center]]
 +
2.载入完成后,在这段代码前面加上 //,整段代码会变成灰色,此时再次将程序载入RTC模块,之后就可以自行纪录时间了。
 +
[[File: Exercise_record _debug3.jpg|600px|center]]
 +
3.找到上图这段代码,可以设定锻炼时间,设定好之后载入CoreUSB模块,之后一到这个时间,蜂鸣器就会响。
 +
[[File: Exercise_record _debug4.jpg|600px|center]]
 +
4. 找到上图这段代码,可以设定锻炼次数,设定好之后载入CoreUSB模块,蜂鸣器一响,屏幕就会切换到运动次数显示,完成后蜂鸣器就会停止。不要偷懒啊!
 
==结果==
 
==结果==
 
可以对仰卧起坐、哑铃等运动计数。
 
可以对仰卧起坐、哑铃等运动计数。
 +
[[File:Exercise_record.jpg|600px|center|excercise]]
  
 
==视频==
 
==视频==
  
 
|}
 
|}

2015年10月13日 (二) 10:09的最新版本

Language English

目的

设定锻炼时间,蜂鸣器就会响起,只有完成规定数量的运动才能关闭,利用Motion模块记录你的动作并计数。

原理

通过RTC设定运动时间,到了时间蜂鸣器就响。通过姿态传感器检测运动变化来计数,达到规定数量的运动才关闭蜂鸣器。平时OLED显示屏上显示显示当前日期和时间,运动状态下显示还需要运动的运动量。

设备

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

准备

  • Setup 1:用USB线将CoreUSB模块与PC/Mac相连,并打开Arduino IDE。
  • Setup 2:点击Files > Examples > mCookie > _305_PersonalTrainer, 加载程序。
  • Setup 3:加载代码,选择好板卡和COM端口下载程序。出现下载成功(Done Uploading)提示,表示程序已经写进CoreUSB模块中了。

软件调试

  • 运动判断
change_gx = (abs(gx) + abs(gy) + abs(gz)) / 3;
  //Serial.println(change_gx);
  if (change_gx > 80 && !sport_en)
    sport_en = true;
  else if (change_gx <= 10&&!sport_num)
  {
    timer_0 = millis();
    sport_num = true;
  }
  if (sport_num)
  {
    if (millis()-timer_0 > 1000)
    {
      change_gx = (abs(gx) + abs(gy) + abs(gz)) / 3;
      if (change_gx <= 10)
      {
        sport_num= false;
        sport_en = false;
        timer_0 = millis();
      }
    }
  }
  • 运动计数
if (sport_change != sport_en && time_en)
  {
    if (sport_en)
    {
      Sport_num -= 1;
      tone(buzzer_pin, 300);
      if (Sport_num == 0)
      {
        time_en = false;
        noTone(buzzer_pin);
      }
    }
    //else
    //  noTone(buzzer_pin);
    //Serial.println(sport_en);
    sport_change = sport_en;
  }

搭建硬件

  • Setup1:将Buzzer蜂鸣器模块接到Hub的D6的引脚上。
  • Setup 2:将激活后的电池盒与BM模块相连.
CoreUSB Ble steup2.jpg
  • Setup 3:将所有模块堆叠在一起,顺序随意,电路部分搭建完成。

调试代码

1.初次使用需要通过程序为RTC模块设定初始时间,找到上图这段代码,按照当地时间进行设置,将程序通过CoreUSB载入RTC模块。

2.载入完成后,在这段代码前面加上 //,整段代码会变成灰色,此时再次将程序载入RTC模块,之后就可以自行纪录时间了。

3.找到上图这段代码,可以设定锻炼时间,设定好之后载入CoreUSB模块,之后一到这个时间,蜂鸣器就会响。

4. 找到上图这段代码,可以设定锻炼次数,设定好之后载入CoreUSB模块,蜂鸣器一响,屏幕就会切换到运动次数显示,完成后蜂鸣器就会停止。不要偷懒啊!

结果

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

视频