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

那么让我们开始制作吧,希望你玩得开心!
步骤1: 准备工具材料
电子元件:
- Arduino Nano
- 9克舵机
- MAX30100血氧和心率传感器模块

- 4.7K欧电阻 (x3)
- MicroUSB数据线
- 洞洞板
- 若干公母排线头
紧固件:
- M3x10螺丝(x40)
- M3x25螺丝(x4)
- M3螺帽(x50)
其他材料:
- 亚克力板
- 隔离柱40mm(x2)
- 隔离柱25mm(x4)
- 直径2mmm16.5cm长铜柱
工具:
- 焊铁
- 3D打印机
步骤2:3D打印结构件

总共有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: 舵机改造

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

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




小贴示:你可以用其他的心率传感器,但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心跳观察器就完成来,你可以让你的同学,家人都来试玩一下!只要把手指放在传感器上,观察器就同步显示你的心跳频率。可以比一比你们谁的心跳最快,谁的心跳最慢。你也可以对比刚运动完或者刚休息完时候的心跳。

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
















