项目之夜:孤独之心俱乐部
作者:Noah Crowley / 产品,用例,开发者
2018年4月16日
导航至
人们经常在不知情的情况下与时间序列数据进行交互,无论是天气预报、股价变动,还是您的包裹从仓库到您家门的地理位置。如果您在电视或网站上看到图表,那么Y轴很可能是时间轴。即便如此,人们并不一定熟悉将这些各种数据集视为具有相似特征,使用跨应用工具和技术的想法——但是存在共性:统计方法、计算机科学算法、各种软件、数据可视化词汇表以及其他各种工具和流程。
如果您对时间序列数据及其在各个行业中的应用感兴趣,请查看您所在城市是否有时间序列 Meetup!
3月份,我有机会在纽约大学主持一个研讨会,该研讨会通过开源硬件和软件,带领参与者了解时间序列数据的测量、收集、存储和可视化。
我们使用脉搏传感器来测量每个参与者的心跳,并将这些数据发送到云端运行的 InfluxDB 实例。心跳是时间序列数据;每个人都知道心电图因其流行文化中的使用而广为人知。作为时间序列的一个例子,心跳易于获取,并且提供了对数据的直接个人联系。
感知心跳
在研讨会上,我们没有直接测量心跳;事实上,观察心脏本身以了解其跳动的方法非常少。例如,上述心电图测量的是心脏肌肉的电脉冲。我们使用的技术称为光电容积描记法,这与苹果在 Apple Watch 中使用的技术相同。他们在他们的支持页面上对这一过程有很好的描述
血液是红色的,因为它反射红色光并吸收绿色光。Apple Watch 使用绿色LED灯与光敏光电二极管配合,以检测在任何给定时刻您手腕中流动的血液量。当您的心脏跳动时,您手腕中的血流——以及绿色光的吸收——会增加。在跳动之间,它会减少。
脉搏传感器和 Arduino
幸运的是,pulsesensor.com提供了一个优秀的开源光电容积描记仪传感器,附带示例项目和示例代码。它有一个绿色LED和一个光电二极管,以及一些模拟电路。它输出一个模拟信号,该信号与检测到的血液量相关;血流越多,值越高。这实际上意味着信号是接收到的光的倒数,因为血流越高,吸收的光线越多。你可以在他们网站的开源硬件页面上了解更多关于脉搏传感器的信息。
由于脉搏传感器硬件是模拟信号,我们还需要一种方法将信号转换为标准笔记本电脑可以理解的东西。大多数现代微控制器平台都内置了模数转换器;这些设备可以将模拟信号转换为数字。许多微控制器也内置了USB功能,因此我们可以将ADC上的数字从我们的笔记本电脑上取下来,以便进行下一步处理。
Arduino平台是一套易于使用的标准和软件,可以让你快速使用微控制器,并且已经有代码可以读取脉搏传感器。Arduino有各种形态和能力,许多Arduino兼容板非常适合这种应用。在本文的其余部分,我们将使用经典的Arduino Uno R3作为示例,但你可以使用你喜欢的任何板子。只需确保它具有内置的ADC,并且你有方法将数据传输到你的笔记本电脑,无论是通过内置USB还是其他连接。
Arduino以非常小的间隔测量来自脉搏传感器的电压,每次测量之间等待1/10秒。这个间隔在Arduino草图中被定义,但我们将不会改变它,因为它提供了足够的分辨率,可以看到单个心跳。
在研讨会之前,脉搏传感器连接到预先加载了入门项目草图的Arduino上,该草图点亮Arduino的内置LED,并基于从传感器收集的读数输出串行数据。
软件
我们还需要一些可以读取USB连接上的数据并将其传递出去的东西。为此,我们将使用一个简单的Python脚本relay.py,以及pyserial库。
从串行端口读取数据后,脚本添加一些元数据并将测量结果转发到Telegraf,然后Telegraf将处理与InfluxDB的连接。我们也可以使用influxdb-python库,但Telegraf的额外功能使其成为时间序列工具箱中的宝贵工具。Telegraf是一个集合代理,具有基于插件的架构,有近140个插件可供处理各种输入、输出、处理和聚合。我们在研讨会中使用了其中之一:多才多艺的socket_listener插件,该插件可以监听UDP或TCP,以解析Telegraf可以解析的任何格式的数据。
最后,我们使用运行在云中虚拟机上的InfluxDB和Chronograf的实例来存储和可视化所有与会者的数据。
参加...
我们将再次举办研讨会,既在时间序列聚会中,也在全国各地的其他活动中。下一场研讨会安排在下周三在时间序列丹佛聚会。
如果您有兴趣让我们在您的组织举办研讨会,您始终可以通过Twitter联系我们@InfluxDB。
...或者组织起来!
希望你们中的一些人会对亲自举办这个研讨会感兴趣!如果是这样的话,我们非常乐意听到您的声音,并提供我们所能提供的任何支持。请联系我们!