作者: sharathnaik / 翻译:爱上Arduino我们都感到或听到了我们的心脏跳动,但大部分人没有亲眼见过。这就是我个项目的初衷:一方面用心率检测传感器让人简单直观的看见心脏的跳动,另一方面可以学会一些基本的电路和机械原理。


orchestrator心跳检测 心跳检测器_orchestrator心跳检测

那么让我们开始制作吧,希望你玩得开心!

步骤1: 准备工具材料

电子元件:


  • Arduino Nano
  • 9克舵机
  • MAX30100血氧和心率传感器模块

orchestrator心跳检测 心跳检测器_arduino nano 蓝牙_02

  • 4.7K欧电阻 (x3)
  • MicroUSB数据线
  • 洞洞板
  • 若干公母排线头

紧固件:


  • M3x10螺丝(x40)
  • M3x25螺丝(x4)
  • M3螺帽(x50)

其他材料:


  • 亚克力板
  • 隔离柱40mm(x2)
  • 隔离柱25mm(x4)
  • 直径2mmm16.5cm长铜柱

工具:


  • 焊铁
  • 3D打印机

步骤2:3D打印结构件


orchestrator心跳检测 心跳检测器_orchestrator心跳检测_03

总共有17个独立的结构件需要打印。尽管大部分都比较小,但还是需要耗费19个小时(具体耗时根据你的3D打印机而定)。我用的是白色PLA材料,层高2mm,100%填充。你可以根据实际情况微调数值。但为了强度考虑,还是建议内部100%填充。所有的结构件STL文件可以在这里下载:


https://www.thingiverse.com/thing:4266297/zip

所有结构件都打印出来后,你可以用砂纸和小刀清理一下边角,尤其是零件连接处。平滑的接头让机械运动更流畅同时减少舵机的阻力。小建议:你可以用M3的钻头把3D打印件的孔位都通一通,防止3D打印时的支撑材料堵住了螺丝孔,方便之后安装螺丝。

步骤3: 制作底座制作底座需要一张2.5mm或者3mm厚的亚克力板。如果你有激光切割机,那你可以直接使用下面的dxf文件切割。如果没有,那就得靠亚克力割刀和手艺了。孔位用3mm钻头。


https://content.instructables.com/ORIG/FS7/EUY4/K8OO3PSQ/FS7EUY4K8OO3PSQ.pdfhttps://content.instructables.com/ORIG/FSB/ZLWS/K8OO3PSR/FSBZLWSK8OO3PSR.dxfhttps://content.instructables.com/ORIG/FP8/H3J3/K8OO3PSS/FP8H3J3K8OO3PSS.dxf


步骤4: 舵机改造


orchestrator心跳检测 心跳检测器_arduino nano 蓝牙_04

舵机一般买了都带舵机臂,但这个项目里我们需要改造一下,定制特殊的舵机臂。首先如图把舵机臂的齿帽部分和排孔部分用美工刀切分开。然后将齿帽部分和我们3D打印的舵机臂部件用强力胶水粘合在一起。这样我们就完成了舵机臂的改造,把舵机臂和舵机用M3螺丝紧固起来。最终的行程效果参加下面的动图(注意舵机的位置和方向)。


orchestrator心跳检测 心跳检测器_#include_05


步骤5: 电路控制部分我使用一块洞洞板(原型板)把所有电子元件都焊在上面,你也可以用面包板和跳线来制作电路部分。下图是电子元件的连接图:


orchestrator心跳检测 心跳检测器_舵机_06

orchestrator心跳检测 心跳检测器_orchestrator心跳检测_07

orchestrator心跳检测 心跳检测器_3D_08

orchestrator心跳检测 心跳检测器_舵机_09

小贴示:你可以用其他的心率传感器,但MAX30100通常有更好但降噪能力,这样检测心跳时会更稳定些。我用同一个电源给传感器、Arduino和舵机供电,一点问题都没有。但如果你用的舵机比较高级,力矩比较大的话,建议你给Arduino和舵机单独供电。还有就是,通电前要检查所有接线和针脚是否都对,防止短路。

步骤6: 上传Arduino代码首先,我们需要安装必要的依赖库让心率传感器工作。


https:///oxullo/Arduino-MAX30100/archive/master.zip
https:///oxullo/Arduino-MAX30100/archive/master.zip

库文件安装好以后让我们来检验一下是否安装成功。打开文件->示例-> MAX30100 -> MAX30100 Tester,  在工具-> 开发板 里选择Arduino Nano。选择正确的串口上传成功后,打开串口监视器,选择115200波特率。 然后把你的手指放在传感器上,如果串口监视器里的数值产生变动的话,那么恭喜你,最难的部分就完成了。接下去新建一个ino,复制黏贴下面的代码。


#include #include "MAX30100_PulseOximeter.h"#include #include #define REPORTING_PERIOD_MS     1000PulseOximeter pox;const int SERVO1_PIN = 9;uint32_t tsLastReport = 0;Servo Servo1;void onBeatDetected(){Serial.println("Beat!");  if (Servo1.read()== 10) {      Servo1.write(170);   }  else {      Servo1.write(10);  }}void setup(){    Serial.begin(115200);    Serial.print("Initializing pulse oximeter..");    if (!pox.begin()) {        Serial.println("FAILED");        for(;;);    } else {        Serial.println("SUCCESS");    }        pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);    pox.setOnBeatDetectedCallback(onBeatDetected);     /**************************************************     * Set servos to start position.     * This is the position where the movement starts.     *************************************************/    Servo1.write(100);    Serial.print("servo done");}void loop(){    // Make sure to call update as fast as possible   pox.update();}

上传成功后,打开串口监视器,放上手指。你应该会看到输出Beat同时,舵机会根据心跳频率来回运动。

步骤7:  完成组装现在所有的部件都准备好了,我们就可以开始组装它们了。由于这部分比较长,我制作了一个视频来说明。组装过程可能有点让人抓狂,需要一些耐心。因为大部分零件都需要在很小的空间里完成拼接,但当你完成了,你会很有成就感的!这个观察器我是用充电宝来供电的,但理论上任何5V的电源都可以。小贴示:你可以在关节连接处抹一些齿轮润滑油来润滑和减少噪音。螺帽不要拧地过紧,保证连接处可以自由运动。

步骤8:  玩得开心(结语)至此Arduino心跳观察器就完成来,你可以让你的同学,家人都来试玩一下!只要把手指放在传感器上,观察器就同步显示你的心跳频率。可以比一比你们谁的心跳最快,谁的心跳最慢。你也可以对比刚运动完或者刚休息完时候的心跳。


orchestrator心跳检测 心跳检测器_orchestrator心跳检测_10

如果你想自己改进或者有任何的问题。欢迎到我的页面留言提问: