raspberry pi
1989年11月15日下午4:30,F4龙卷风在阿拉巴马州的亨茨维尔肆虐,炸死21人。 除非在琼斯谷小学(Jones Valley Elementary)开展课外学习的人们Swift思考,否则情况可能会更糟。 一旦断电,他们就把孩子们带到楼梯下。 他们幸存下来,尽管顶层被从建筑物上撕下了。 21名伤亡者中有一位前来接孩子的母亲。
那是我兄弟的学校。 我的教堂和其他几个教堂被毁。 当他们重建并清理该地区时,我上学的路线改变了几个月。 这些是您收集的生活在人均龙卷风第一位的故事。 这些故事灌输了对龙卷风的健康尊重,并注意龙卷风的警告。
对龙卷风警告的尊重使我详细考虑了它们如何工作。 重要方面是通知如何到达,如何理解警告是否适用于您的特定位置以及警告的紧急程度。 这使我学习了如何构建和编码物联网(IoT)设备以警告龙卷风警告。
您如何获得警告? 在1990年代后期,我花了50美元购买了一台气象广播 ,它只能向我所在的县发出警报,而我以前的那台气象广播则向该电台范围内的任何县发出警报。 它告诉我龙卷风警告,严重的雷暴警告和其他天气事件。 太好了。 但随后在2007年,国家气象局开始发布基于暴风雨的警告,其中包括多边形,以更精确地匹配暴风雨威胁的地区,而与政治边界无关。 很高兴知道警告是否在我们县内,但我们仍然必须弄清楚我们是否在受警告的地区,因此花了更多时间来处理警告和躲藏。 天气电台使用我熟悉的地理区域名称广播了此信息,但仍存在不确定性。
我家的不确定性是可以忍受的,在那里我需要花费10秒钟检查雷达并掩盖。 但是在工作场所中,要求更高的精度是很合理的。 除非警告是针对您所在的地区,否则您不希望停止生产,并且您不想错过警告,因为您需要确保人员安全。 律师对扶手椅气象学家的信任度不高。
现在,手机运营商会在网络上向受警告区域的塔楼范围内的电话发出龙卷风警告,但是这些系统往往会发出过度警告,包括可能在县的一个区域出现警报时到达县内的所有人。
然后是具有计算功能和第三方天气广播板的Raspberry Pi。 国家气象局在互联网上而不是在天气广播中发布基于风暴的警告的多边形。 下一步很明显:当我需要知道我所在地区何时有龙卷风警告时,提醒我,而不是其他任何事情。
(还有一些其他有趣的事情可能需要立即发出警报。墨西哥拥有使用相同技术的地震预警系统,而加利福尼亚州也在开发类似的系统。在极少数情况下,强烈的雷暴伴随有足够强的直线风以确保有适当的庇护场所,但并不经常。龙卷风警告足够频繁且客观,足以采取自动行动。)
要为自己制作天气广播,请遵循GitHub上的说明 。
如何制作原型1
首先,让我建议从其他家庭成员那里买入,他们可能会在项目工作中因您的分心而受到影响。 然后列出零件清单。 我咨询了一位朋友,他做的物联网工作比我要弄清楚的这部分还要多。 你需要:
- Raspberry Pi 3 B +
- AIWIndustries气象广播板和配件
- 电源
- 微型SD卡
等待其他部件到达时,用Raspbian加载SD卡。 零件到达时,将它们按短顺序放在一起,然后运行示例代码。 开始清理像Pi_4707这样的示例代码,然后几乎从头开始重写它,因为它对您的应用程序不够强大。
测试中
接下来,弄清楚如何从国家气象局接收和处理消息:文本消息,CAP消息和各种来源。 在风暴系统中捕获来自各种来源的消息,然后使用它们来评估风暴系统的处理。 各种库也许能够帮助处理NWS消息,但是它们似乎都与它们的特定用例密不可分。
测试一切。 创建一个可与代码一起使用的无线电芯片模型,因为您无法合法地模拟进入芯片的消息,并且您实际上并不想以这种方式测试芯片。 为每个挑战编写测试。 您可以将模拟程序设置为比真实广播程序运行得更快,并使测试套件更早完成。 确保您的代码可以运行很长时间。 编写单元测试和集成测试。
测试收集消息并评估特定位置的影响。 使用这些捕获的消息并重播风暴系统以确保其正常工作。 寻找边缘条件,或发明一些条件。
代码库
将项目放在GitHub或其他代码存储库上。 我在Raspberry Pi NOAA天气广播(NWR)上有我的。 由于各公司要支持开源的发展,可以释放你的代码和使用工具,如Travis.ci运行你的构建在多个环境和coveralls.io检查你的测试代码覆盖率。 它们的设置非常简单。
使用您的设备
然后进入棘手的部分:集成来自广播和Internet的消息,并解决在各种情况下的操作。
输入组件和事件库。 考虑一下Zope and Circuits框架 ,前者既已建立,又是功能完善的Web应用程序服务器,而后者是一个事件框架,它也支持Web I / O。 我想要小而简单,所以我选择了Circuits。 编写验收测试以确保其行为符合您想要的方式,因为您的系统仅与其框架一样可靠。
在这一点上,我花了一些时间尝试用Circuits改造无线电代码,但是发现这并不是一件容易的事,因为存在一些微妙的不同方式来考虑要发布给芯片和所选框架的各种命令。 我得稍后再讲。
将无线电代码包装在Circuits适配器中,并设置框架以从最简单的Internet提要(如国家气象局)生成网络消息。
最后,建立一种机制来模拟来自无线电和Internet的事件,并建立警报代码以触发中继并播放音频警报。
瞧! 现在,我们有了可用的警报器。 接通扬声器,即可发出警告了。
最后的想法
还有更多工作要做:服务器端监视和警报,建立更新过程,为SOHO模型添加可视显示以显示天气和警报状态,以及其他Internet提要以提高可靠性和更快警报的潜力。 另一种选择是连接到需要获得UL 2572认证的火灾报警公共广播系统。
如果您不想有任何麻烦,而只是收到通知,请与我联系以获取更多信息。
翻译自: https://opensource.com/life/16/10/build-your-own-raspberry-pi-tornado-warning-system
raspberry pi