37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验九十一:XD-58C pulsesensor光学心率脉搏生物模拟传感器 脉搏传感器是用来测试心跳速率的传感器,学生、艺术家、运动员、创造者、游戏或者移动终端开发人员,可以开发出和心率有关的互动作品。传感器可以戴在手指或者耳垂上,通过互联线可以与Arduino相连。它还有一个开源的app程序,可以实时的把您的心率用图线显示出来。实质是一款集成了放大电路和噪声消除电路的光学心率传感器。 脉搏(英语:Pulse) 为人体表可触摸到的动脉搏动。人体循环系统由心脏、血管、血液所组成,负责人体氧气、二氧化碳、养分及废物的运送。血液经由心脏的左心室收缩而挤压流入主动脉,随即传递到全身动脉。动脉为富有弹性的结缔组织与肌肉所形成管路。当大量血液进入动脉将使动脉压力变大而使管径扩张,在体表较浅处动脉即可感受到此扩张,即所谓的脉搏。正常人的脉搏和心跳是一致的。正常成人为60到100次/分,常为每分钟70-80次,平均约72次/分。老年人较慢,为55到60次/分。脉搏的频率受年龄和性别的影响,胎儿每分钟110—160次,婴儿每分钟120-140次,幼儿每分钟90-100次,学龄期儿童每分钟80-90次。 脉搏即动脉搏动,脉搏频率即脉率。正常人脉率规则,不会出现脉搏间隔时间长短不一的现象。正常人脉搏强弱均等,不会出现强弱交替的现象。另外,运动和情绪激动时可使脉搏增快,而休息,睡眠则使脉搏减慢。成人脉率每分钟超过100次,称为心动过速;每分钟低于60次,称为心动过缓。临床上有许多疾病,特别是心脏病可使脉搏发生变化。因此,测量脉搏对病人来讲是一个不可缺少的检查项目。中医更将切脉作为诊治疾病的主要方法。心动周期中,由于心室收缩和舒张的交替进行脉管发生周期性扩张和回位的搏动。病情危重,特别是临终前脉搏的次数和脉率都会发生明显的变化。脉搏的变化也是医生对病人诊断的其中一项依据。 光电式脉搏传感器的原理 光学脉搏波传感器的原理是通过检测绿色LED发出的光随血管容积的变化,光的吸收量也发生变化,从而得到了脉搏波。根据郎伯-比尔(lamber-beer)定律,物质在一定波长处的吸光度和他的浓度成正比,当恒定波长的光照射到人体组织上时,通过人体组织吸收、反射衰减后测量到的光强在一定程度上反映了被照射部位组织的结构特征。脉搏主要由人体动脉舒张和收缩产生的,在人体指尖,组织中的动脉成分含量高,而且指尖厚度相对其他人体组织而言比较薄,透过手指后检测到的光强相对较大,因此光电式脉搏传感器的测量部位通常在人体指尖。手指组织可以分成皮肤、肌肉、骨骼等非血液组织和血液组织,其中非血液组织的光吸收量是恒定的,而在血液中,静脉血的搏动相对于动脉血是十分微弱的,可以忽略,因此可以认为光透过手指后的变化仅由动脉血的充盈而引起的,那么在恒定波长的光源的照射下,通过检测透过手指的光强可以间接测量到人体的脉搏信号。 脉搏传感器 指的是用于检测脉搏相关信号的传感器。脉搏指的是动脉搏动,脉搏传感器即是用来检测动脉搏动时产生的压力变化,将之转换成可以被更直观观察和检测的电信号。脉搏传感器按照输出方式有模拟输出、数字输出两种。按照采集信号的方式主要可以分为压电式、压阻式、光电式等三种。其中压电式和压阻式通过微压力型的材料(压电片、电桥等)将脉搏跳动的压力过程转换为信号输出。光电式脉搏传感器则通过反射或对射式的方式,将血管在脉搏跳动过程中透光率的变化转换为信号输出。脉搏传感器主要应用在医疗设备、教学设备,教学实训等领域,如血氧测量、心率监测、中医脉象诊断等等。脉搏传感器按照输出方式有模拟输出、数字输出两种。按照采集信号的方式主要可以分为压电式、压阻式、光电式等三种,其中光电式多数为红外光。红外脉搏传感器,利用特定波长红外线(典型的有570、870um)对血管末端血液微循环产生的血液容积的变化的敏感特性,检测由于心脏的跳动,引起指尖的血液中血氧蛋白含量变化,经过信号放大、调整等电路处理后,可以输出同步于脉搏跳动的脉冲信号,从而计算出脉率,也可以输出反映指尖血容积变化的完整的脉搏波波形信号。主要应用于临床上脉率的测量、监测和脉搏波的病理分析。还可计算血氧饱和度。 一般用绿光-- 红光作为测量光源 早起多数采用红光为光源,随着进一步的研究和对比,绿光作为光源得到的信号更好,信噪比也比其他光源好些,所以现在大部分穿戴设备采用绿光为光源。但是考虑到皮肤情况的不用(肤色、汗水),高端产品会根据情况自动使用换绿光、红光和IR多种光源。绿光作为光源的几个特点: 1. 皮肤的黑色素会吸收大量波长较短的波 2. 皮肤上的水份也会吸收大量的UV和IR部分的光 3. 进入皮肤组织的绿光(500nm)-- 黄光(600nm)大部分会被红细胞吸收 4. 红光和接近IR的光相比其他波长的光更容易穿过皮肤组织 5. 血液要比其他组织吸收更多的光 6. 相比红光,绿(绿-黄)光能被氧合血红蛋白和脱氧血红蛋白吸收 PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于 手指或耳垂等处,通过导线连接可将采集到的模拟信号传输给 Arduino 等单片 机用来转换为数字信号,再通过 arduino 单片机简单计算后就可以得到心率数 值,此外还可将脉搏波形上传到电脑上显示波形。PulseSensor 是一款开源硬 件,目前国外官网上已有其对应的 arduino 程序和上位机 Processing 程序, 其适用于心率方面的科学研究和教学演示,也非常适合用于二次开发。 模块参数 电路板直径:16mm 电路板厚度:1.6mm(普通 PCB 板厚度) LED 峰值波长:515nm 供电电压:3.3v 或 5v 均可 输出信号类型:模拟信号 输出信号大小:0~3.3v(3.3v 电源)或 0~5v(5v 电源) 实验接线示意图 【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程) 实验九十一:pulsesensor光学心率脉搏生物模拟传感器 实验开源代码 /* 【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程) 实验九十一:pulsesensor光学心率脉搏生物模拟传感器 */ int ledPin = 13; int sensorPin = 0; double alpha = 0.75; int period = 20; double change = 0.0; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(115200); } void loop() { static double oldValue = 0; static double oldChange = 0; int rawValue = analogRead(sensorPin); double value = alpha * oldValue + (1 - alpha) * rawValue; Serial.println(value); oldValue = value; delay(period); delay(10); } 实验串口返回情况 实验注意事项 1、保持指尖与传感器接触良好 2、不要太用力按, 否则血液循环不畅会影响测量结果 3、保持镇静, 测量时身体不要过多移动,这个会影响测量结果 4、不要用冰凉的手指进行测试,因为血液循环不好会让测量结果不准确 5、本模块515nm 的波长适合采集皮肤表微动脉的搏动信号(比如手指),而手腕处的动脉采集到的信号很小,不是很理想,建议可以考虑更改放大倍数或者振动类的传感器。 实验开源图形编程(Mind+、Mixly、编玩边学) 实验串口返回情况 实验开源仿真编程(Linkboy V4.62)