“Sensor-Pulse/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
第41行: 第41行:
 
*接法
 
*接法
 
**本传感器可连接到核心的以下接口:'''D2~D13'''
 
**本传感器可连接到核心的以下接口:'''D2~D13'''
 +
 +
==文档==
 +
*原理图:'''[[File: Microduino_Pulse.Zip]]'''
 +
*Touch Button datasheet:'''[[File: Microduino_Sensor-Pulse datasheet.pdf]]'''
  
 
==开发==
 
==开发==
===设备===
+
===程序下载===
{|class="wikitable"
+
*下载并解压程序'''[[File:Microduino_Sensor-Touch Pulse_Test.zip]]'''
|-
 
|模块||数量||功能
 
|-
 
|[[mCookie-CoreUSB/zh]]||1||核心板
 
|-
 
|[[mCookie-Hub/zh]]||1||传感器转接板
 
|-
 
|[[Microduino Sensor-Pulse/zh]]||1||心率传感器模块
 
|}
 
 
 
*其他硬件设备
 
**USB数据连接线  一根
 
 
 
===准备===
 
*Setup 1:将心率传感器和Hub的A0接起来。
 
[[file:mCookie-pulse-sensor.JPG|600px|center]]
 
*Setup 2:将CoreUSB,Hub,pulse连接在一起。通过USB数据线将接入电脑。
 
[[file:mCookie-pir-pc.JPG|600px|center]]
 
 
 
===实验:检测心率跳动===
 
*打开Arduino IDE,将下列代码复制到IDE中。
 
<source lang="cpp">
 
#define PIN A0
 
  
unsigned long time0;
+
===程序烧写===
unsigned long time_cache0;
+
{{Upload
bool sta = false, sta_cache = true;
+
|nameA=[[Microduino-Core/zh]]、[[Microduino-USBTTL/zh]]
unsigned long getTime0() {
+
|nameB=[[Microduino-USBTTL/zh]]
  sta_cache = sta;
+
|boardName=Microduino/mCookie-Core(328p)、Atmega328P@16M,5V
  sta = digitalRead(PIN);
+
|fileName=Microduino_Sensor-Touch Pulse_Test.ino
  delayMicroseconds(200);
+
}}
  if (sta == HIGH && sta_cache == LOW) {
 
    time_cache0 = time0;
 
    time0 = millis();
 
    return (time0 - time_cache0);
 
  }
 
  else {
 
    return 0;
 
  }
 
}
 
  
#define time1_MAX 200
+
===硬件搭建===
#define time1_MIN 50  //过快的波
+
*参考下图将Sensor-Crash传感器连接'''[[Microduino-Sensorhub/zh]]'''的数字口D6。
 +
<br>
 +
[[file:Microduino-sensorhub_Crash.JPG|thumb|400px|left]]
 +
<br style="clear: left"/>
  
unsigned long time1;
+
===效果观察===
unsigned long time1_cache;
+
*下载完毕后,打开串口监视器。
boolean time1_sta_error = false;
 
unsigned long getTime1(unsigned long _t) {
 
  time1_cache = _t;
 
  if (time1_cache) {  //有数据时才执行滤波
 
    if (time1_cache < time1_MAX) {  //滤最小阈值
 
      if (time1_cache < time1_MIN) { //若有过快的波,开启标志位
 
        //      Serial.println("make");
 
        time1_sta_error = true;
 
      }
 
      return 0;
 
    }
 
    else {
 
      //      Serial.print(".");
 
      if (time1_sta_error) {  //如果被标志 则本次波形无效
 
        //        Serial.println("make done");
 
        time1_sta_error = false;
 
        return 0;
 
      }
 
      return time1_cache;
 
    }
 
  }
 
  else {
 
    return 0;
 
  }
 
}
 
 
 
#define pulse_MIN 40
 
#define pulse_MAX 180
 
#define pulse_UPDATA  5
 
int pulse_num = 0;
 
unsigned long pulse_vol = 0;
 
unsigned long pulse_cache = 0;
 
unsigned long pulse(unsigned long _t) {
 
  if (_t) {
 
    unsigned long  _pulse_vol = 60000 / _t;
 
    //    Serial.print("_pulse_vol:");
 
    //    Serial.println(_pulse_vol);
 
    if ((_pulse_vol > pulse_MIN) && (_pulse_vol < pulse_MAX)) {
 
      pulse_vol += _pulse_vol;
 
      pulse_num++;
 
      if (pulse_num > (pulse_UPDATA - 1)) {
 
        //        Serial.println("OUTPUT");
 
        unsigned long _pulse = pulse_vol / pulse_UPDATA;
 
        pulse_num = 0;
 
        pulse_vol = 0;
 
        pulse_cache = _pulse;
 
        return _pulse;
 
      }
 
      else {
 
        return pulse_cache;
 
      }
 
    }
 
    else {
 
      pulse_num = 0;
 
      pulse_vol = 0;
 
      return 0;
 
    }
 
  }
 
  else {
 
    return 0;
 
  }
 
}
 
 
 
 
 
// the setup routine runs once when you press reset:
 
void setup() {
 
  // initialize serial communication at 9600 bits per second:
 
  pinMode(A0, INPUT);
 
  Serial.begin(9600);
 
 
 
  Serial.println("hello");
 
}
 
 
 
// the loop routine runs over and over again forever:
 
void loop() {
 
  // print out the value you read:
 
  //    Serial.print("t0:");
 
  //  Serial.print(digitalRead(A0) * 2000);
 
  long p0 = getTime0();
 
  long p1 = getTime1(p0);
 
  long p2 = pulse(p1);
 
  if (p0) {
 
    Serial.print(millis() / 1000);
 
    Serial.print(",");
 
    Serial.print(p0);
 
    Serial.print(",");
 
    Serial.print(p1);
 
    Serial.print(",");
 
    Serial.print(p2);
 
    Serial.println();
 
  }
 
  //  delay(3);        // delay in between reads for stability
 
}
 
</source>
 
*在Arduino IDE的工具(Tools)→端口(Serial Port)里面选择正确的端口号。
 
[[file:upload.JPG|600px|center]]
 
*编译完成后直接下载程序。
 
*下载完毕你可以打开串口监视器,显示的提示即反应了当前传感器检测的状态。
 
*结果
 
心率传感器会检测到由于心脏的跳动而引起指尖的血液变化情况,将一些不稳定的情况通过算法滤掉,从而得到一个较准确的值。
 
 
 
===程序调试===
 
  
 +
*心率传感器会检测到由于心脏的跳动而引起指尖的血液变化情况,将一些不稳定的情况通过算法滤掉,从而得到一个较准确的值。
  
 
==应用==
 
==应用==
第200行: 第74行:
  
 
===项目===
 
===项目===
 
+
[https://forum.microduino.cn/topic/259/microduino%E5%BF%83%E8%B7%B3%E6%A8%A1%E5%9D%97%E4%B8%AD%E6%96%AD%E6%B3%95%E6%B5%8B%E9%87%8F%E4%B8%A4%E5%88%99%E7%AE%80%E4%BB%8B 心跳模块中断法测量]
  
  

2016年8月30日 (二) 07:02的版本

Language English
Microduino-Pulse

Microduino-Pulse 的产品编号是:MSDI31

Microduino-Pulse是一块光电原理的心率传感器模块。利用特定波长红外线对血管末端血液微循环产生的血液容积的变化的敏感特性,检测由于心脏的跳动,引起指尖的血液变化,

经过信号放大、调整等电路处理,输出反映指尖血容积变化的完整的脉搏波电压信号。


传感器引脚说明

Sensor backpin.png
  • 传感器的引脚:
    • PIN1:GND
    • PIN2:VCC
    • 一般信号引脚:
      • PIN3(IO1):数字信号/模拟信号
      • PIN4(IO2):NC(空)
    • 特殊信号引脚:
      • 若为IIC:IO1/IO2 分别为 SDA/SCL
      • 若为软串口:IO1/IO2 分别为 tx/rx
  • 针对Sensor-Pulse/zh传感器引脚
    • PIN1:GND
    • PIN2:VCC
    • PIN3(IO1):数字信号输入
    • PIN4(IO2):NC


mCookie传感器可通过连接Microduino-Module Sensor Hub/zh来和核心模块通讯

特色

  • SON7015传感器超功耗,耗电为0.2毫安;
  • 体积小,易安装;
  • 模拟信号;

规格

  • 电器规格
    • 输入电压:3.3~5V,最大6V
    • 工作电流:15uA
    • 工作温度:-20~85℃
    • 输出电压:高电平5V,低电平0V
  • 传感器大小
    • 板子大小:23.5mm*13mm
    • 1.27mm间距的4Pin接口与sensorhub相连
    • 传感器CAD图纸:文件:Sensor CAD.zip
  • 功能描述
    • 皮肤按紧传感器后,数字输出会随血液的变化而输出1或0。
  • 接法
    • 本传感器可连接到核心的以下接口:D2~D13

文档

开发

程序下载

程序烧写

    • 用数据线连接其中的Microduino-USBTTL/zh准备上传程序
    • 注意:最好不要将所有模块堆叠在一起之后再上传程序
  • 打开Arduino IDE for Microduino,环境,(搭建参考:AVR核心:Getting started/zh
  • 点击【工具】,确认开发板/处理器(Microduino/mCookie-Core(328p)、Atmega328P@16M,5V)选择无误,并选中对应端口号(COMX)
  • 点击【文件】->【打开】,浏览到项目程序地址,点击“Microduino_Sensor-Touch Pulse_Test.ino”程序打开
  • 几项都无误后,点击"→"按钮下载程序到开发板上

硬件搭建


Microduino-sensorhub Crash.JPG


效果观察

  • 下载完毕后,打开串口监视器。
  • 心率传感器会检测到由于心脏的跳动而引起指尖的血液变化情况,将一些不稳定的情况通过算法滤掉,从而得到一个较准确的值。

应用

  • 实时心率检测


项目

心跳模块中断法测量


购买

历史

图库

  • 正面
Microduino-Pulse sensor Front
  • 背面
Microduino-Pulse sensor Back