设计构建一个实时展示纽约市紧急医疗服务数据的可视化工具
扫描二维码
随时随地手机看文章
每天,纽约市紧急医疗服务调度中心都会派出救援队伍去处理成千上万的紧急求助电话。这些数据是向公众公开的,但大多数人甚至都不会去查看。
该项目将利用这些原始数据,并通过硬件进行展示。粒子光子板将从纽约市开放数据平台获取去年同一天的紧急医疗服务关键呼叫信息。这些呼叫的总数将在一个 OLED 屏幕上显示出来。连接到粒子光子板的电机将根据今天的呼叫量是否超过昨天的而停止或旋转。连接到粒子光子板的 RGB 灯将以心跳模式闪烁,但如果今天的呼叫量超过昨天的,其闪烁频率将会加快。
构建过程
第 1 步:连接硬件设备
按照以下方式连接您的插针(请参考图片以获取指导):
•RED_PIN:D2
•GREEN_PIN:D3
•BLUE_PIN:D4
•MOTOR_IN1:D5
•MOTOR_IN2:D6
•MOTOR_ENA:D7
•OLED SDA:D0
•OLED SCL:D1
在每个 LED 通道与 LED 之间连接一个晶体管。此步骤非常重要,因为 3W 的 RGB LED 消耗的电流比 Photon 引脚所能提供的电流大得多。如果让这种情况发生,Photon 将会短路或烧毁。
我建议将电线在一块印制电路板上焊接在一起,这样在组装部件时就能让整个项目更加稳固,避免部件随意脱落或意外断开的情况发生。如果要这样做的话,最好先绘制出电线的布局图,以免弄乱布局导致更大的麻烦。
第 2 步:构建 API 查询
该项目使用了来自某网站的纽约市紧急医疗服务事件调度数据集。
我们正在使用位于某网站上的纽约市紧急医疗服务事件调度数据。此数据集中的每一项都代表了多年来的每一次紧急医疗服务调度情况。在进行筛选操作时,您的第一步是选择您所拨打的紧急医疗服务电话的日期。我们需要使用当前日期和去年的日期,因为医院数据非常私密,且每年都会更新。因此,您将使用“在...之间”运算符来创建一个围绕两个时间戳的筛选条件,以定义一个特定的 24 小时时间段。在确认了您的日期筛选条件后,创建您的严重程度筛选条件。final_severity_level_code 是一个数字,它定义了每个呼叫所分配的紧急程度级别。三个最高优先级级别是代码 1、2 和 3。使用 In('1', '2', '3') 函数来筛选出这三个级别。在添加多个筛选条件时,始终要单独进行操作,并在运行每个条件之前通过浏览器进行测试。如果同时添加了两个筛选条件并收到错误消息,您可能无法确定是哪个筛选条件导致了错误。首先测试您的日期筛选条件;当它返回一些结果时,添加您的严重程度筛选条件并再次测试。
第 3 步:设置粒子网关
请在网站上打开粒子工具的控制台。
点击“集成”选项,然后选择“新建集成” > “Web Hook”。
在“设置”选项卡中输入以下代码:
将“YOUR_TOKEN”替换为您的纽约市开放数据应用程序令牌。
该响应模板仅从返回的 JSON 数据中提取这两个值,并以逗号分隔的形式将结果返回给 Photon(例如 1733, 1578)。
无论你怎么做,按下测试按钮之后都不会起作用。测试按钮会发送一个没有数据的网页表单请求,因此日期变量没有内容可填写,查询也就无法进行。请更新固件并让光子设备自然触发该操作。
第 4 步:构建固件
该固件会计算出一年前今日的日期范围。它获取这些数据并将其发布到网关,网关随后会返回数据,而该代码则会利用这些数据来决定其运行方式。
第 5 步:组装
这个项目的实际建筑/雕塑部分是由我的合作伙伴完成的。我无法对他们的工作做出确切评价,但我可以这么说:在组装过程中一定要对每个部件进行测试,以确定需要进行何种修改或调整。
经验教训
在这次构建过程中,我犯了一些错误,您应该从中吸取教训。
•在设置网关之前,先在浏览器中对每个查询进行测试
•逐一添加过滤器,这样一旦出现故障,你就能知道该如何进行修复。
•绘制一份你的线路图(可以是实际绘制在面包板上,也可以是在 Fritzing 网站上在线绘制),这样你就不会弄乱线路,也不会因为容易避免的错误而浪费太多时间去修正。
最终结果
该设备每次开机时都会从纽约市的开放数据平台获取真实数据。OLED 显示器会显示数量。如果今天(去年)挽救的生命数量多于昨天(去年)的话,电机就会启动;反之则会关闭。而 LED 的闪烁速度也会根据同样的比较结果而加快或减慢。
本文编译自hackster.io





