构建你自己的 Raspberry Pi 龙卷风预警系统

了解如何使用 Raspberry Pi 制作天气收音机。
9 位读者喜欢这篇文章。
Raspberry Pi model B+

路易斯·伊巴涅斯

1989 年 11 月 15 日下午 4:30,一场 F4 级龙卷风袭击了阿拉巴马州亨茨维尔市,造成 21 人死亡。幸亏琼斯谷小学课后项目的工作人员反应迅速,情况本可能更糟。停电后,他们立即将孩子们带到楼梯下。他们幸存了下来,尽管顶楼被夷为平地。一位来到学校接孩子的母亲不幸成为 21 名遇难者之一。

那是我哥哥的学校。我的教堂和其他几座教堂被摧毁了。在我家重建和清理该区域的几个月里,我上学的路线都改变了。这些都是你在人均龙卷风发生率第一的地方生活时会收集到的故事。正是这些故事让人对龙卷风产生了健康的敬畏之心,并听从龙卷风警报。

对龙卷风警报的敬畏让我详细思考了它们是如何运作的。重要的方面包括通知如何到达、如何了解警报是否适用于你的特定位置以及警报的紧迫性。这促使我学习如何构建和编写物联网 (IoT) 设备的代码,以便在龙卷风警报时发出警报。

Raspberry Pi tornado alerter

你如何收到警报?在 1990 年代后期,我花了 50 美元买了一台天气收音机,它只为我的县发出警报,这与我的旧收音机不同,旧收音机为电台范围内的任何县发出警报。它告诉我龙卷风警报、强雷暴警报和其他天气事件。这太棒了。但随后在 2007 年,国家气象局开始发布基于风暴的警报,其中包括多边形,以便更精确地匹配受风暴威胁的区域,而与政治边界无关。知道警报是否在我们的县里固然很好,但我们仍然必须弄清楚我们是否在受警报区域内,因此需要更多时间来处理警报并躲避。

在我家,这种不确定性是可以容忍的,因为只需 10 秒钟即可查看雷达并躲避。但在工作场所,要求更高的精度是完全合理的。你不想在警报不是针对你所在区域的情况下停止生产,而且你也不想错过警报,因为你需要保证人们的安全。律师们不太相信业余气象学家。

手机运营商现在通过其网络向受警报区域内的基站范围内的手机发送龙卷风警报,但这些系统往往会过度警报,可能包括向县内所有人发出警报,即使警报仅针对县内的一个区域。

然后出现了 Raspberry Pi,它具有计算能力和第三方天气收音机板。国家气象局在互联网上发布基于风暴的警报的多边形,而不是在天气收音机上发布。下一步显而易见:当我的区域有龙卷风警报时通知我,而不是针对其他任何情况。

(还有一些其他有趣的事情,即时警报可能会很有用。墨西哥有一个使用相同技术的地震预警系统,加利福尼亚州正在开发类似的系统。极少数情况下,强雷暴会伴随直线风,强度足以保证就地避难,但这种情况并不常见。龙卷风警报足够频繁且足够客观,可以采取自动化行动。)

要自己制作天气收音机,请按照 GitHub 上的说明进行操作

如何构建原型 1

首先,让我建议先获得可能因你专注于项目而受到影响的其他家庭成员的支持。然后列出零件清单。我咨询了一位比我更有物联网经验的朋友,以弄清楚这部分。你需要

  • 一块 Raspberry Pi 3 B+
  • AIWIndustries 天气收音机板和配件
  • 一个电源
  • 一张 micro SD 卡

在你等待其他零件到达期间,将 Raspbian 加载到 SD 卡中。零件到达后,尽快将它们组装在一起,并运行示例代码。开始清理示例代码,例如 Pi_4707,然后几乎从头开始重写它,因为它对于你的应用程序来说不够健壮。

测试

接下来,弄清楚如何接收和处理来自国家气象局的消息:短信、CAP 消息以及各种来源。在风暴系统期间捕获来自各种来源的一系列消息,并使用这些消息来评估风暴系统处理。各种库可能能够帮助处理 NWS 消息,但所有这些库似乎都与它们的特定用例密不可分。

测试一切。创建无线电芯片的模拟,以便与你的代码一起使用——因为你不能合法地模拟进入芯片的消息——而且你真的不想以这种方式测试芯片本身。为每个挑战编写测试。你可以将模拟设置为比真实无线电运行得更快,并让你的测试套件更快完成。确保你的代码可以长时间运行。编写单元测试和集成测试。

Storm system test.

测试收集消息并评估特定位置的有效信息。使用那些捕获的消息并重放风暴系统,以确保它工作正常。找到边缘条件,或发明一些。

代码仓库

将项目放在 GitHub 或其他代码仓库上。我的项目在 Raspberry Pi NOAA 天气收音机 (NWR)。由于多家公司希望支持开源开发,你可以发布你的代码并使用 Travis.ci 等工具在多个环境中运行你的构建,并使用 coveralls.io 检查你的测试的代码覆盖率。它们非常容易设置。

使用你的设备

然后你就到了棘手的部分:集成来自无线电和互联网的消息,并解决在各种情况下该怎么做。

输入组件和事件库。考虑 ZopeCircuits Framework,前者已建立但也是一个成熟的 Web 应用程序服务器,后者是一个也支持 Web I/O 的事件框架。我想要小而简单的,所以我选择了 Circuits。编写验收测试以确保它以你想要的方式运行,因为你的系统只有在其框架可靠的情况下才可靠。

在这一点上,我花了一些时间尝试用 Circuits 改造无线电代码,但发现这并非易事,因为对于要向芯片发出的各种命令和所选框架,存在一些细微不同的思考方式。我稍后必须再来处理这个问题。

将无线电代码包装在 Circuits 的适配器中,并设置框架以从最简单的互联网馈送(如 国家气象局)生成网络消息。

最后,构建一个用于模拟来自无线电和互联网的事件的机制,以及用于触发继电器和播放音频警报的警报代码。

瞧!我们现在有了一台可用的警报机器。连接一个扬声器,它就可以发出警告了。

最终想法

还有更多工作要做:服务器端监控和警报、建立更新流程、为 SOHO 模型添加可视化显示以显示天气和警报状态,以及用于提高可靠性和可能更快发出警报的附加互联网馈送。另一种选择是连接到火灾报警公共广播系统,这需要 UL 2572 认证。

如果你不想遇到任何麻烦,只想获得通知,请联系我以获取更多信息。

User profile image.
吉姆来自美国人均龙卷风热点地区阿拉巴马州亨茨维尔市,他将对龙卷风严重性的理解、作为安全管理员对 Red Hatter 同事安全的关注以及 20 多年的软件开发经验结合起来,投入到夜间编码工作中,创造了终极龙卷风预警设备。

3 条评论

这是一个令人难以置信的项目。我写过很多关于恶劣天气警报如何传播的咆哮^W 经过深思熟虑的文章,像这样的东西在这方面将是一个很大的帮助。我期待着更深入地研究它。

感谢这篇精彩的文章!我个人在发现一位名叫 Pecos Hank 的 YouTube 用户观察龙卷风后,就对龙卷风着迷了。龙卷风在他人心中既能引发敬畏,也能引发恐惧,当试图决定是躲避还是逃跑时,这可能是危险的。我认为这个项目可以帮助人们获得做出明智决定所需的知识。=]

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.