当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]这个项目是为我物理计算课程中的数据可视化项目而设计的。其核心理念是通过 LED 灯带来展示飞机在天空中的位置,每盏 LED 灯都代表着一个位置。这些灯光会随着飞机的活动而移动并改变颜色。

这个项目是为我物理计算课程中的数据可视化项目而设计的。其核心理念是通过 LED 灯带来展示飞机在天空中的位置,每盏 LED 灯都代表着一个位置。这些灯光会随着飞机的活动而移动并改变颜色。

我为这个项目使用了 Particle Photon 2,因为它非常出色,而且能非常轻松地将这个微控制器连接到互联网。这绝对是一款出色的微控制器,我会强烈推荐(我还买了另外两个)。

所有跑道均以芝加哥奥黑尔国际机场(ORD)为参照标准。

Webhook/ API

查询

这是通过使用 OpenSky 网络及其 REST API 来完成的,该 API 的详细文档可在此处查阅。

这个 API 如何运作的最简单且最易于演示的例子,可以通过一个匿名的 API 请求来实现,该请求遵循基本的查询设置,并将其输入到网络浏览器中。例如,要查找位于 28C/10C 圆形区域内所有飞机的查询,其格式应如下所示:

树莓派继电器

理想情况下,应该能够将该内容以 GET 请求服务的形式(比如使用 Particle 的服务)提交出去。但对我来说,这似乎从未奏效。无论我尝试何种身份验证方式,无论使用何种访问令牌,无论设置何种参数、头信息还是响应模板,都无法让我摆脱“ETIMEDOUT”错误(即当 API 回复时间过长时出现的 Particle 错误)。我把它发到了 OpenSky 的 Discord 和 Particle 论坛,但都没有效果。如果您找到了解决办法,请告知我;那样会让这一切变得简单得多。

为了解决这个问题,我使用了我手头有一台旧的 Raspberry Pi 3 来从 OpenSky API 获取数据,然后使用 Particle.publish() 函数将这些数据推送到我的 Particle 设备上。该代码可以在本项目的“代码”部分中查看。

一个优点是这种接力方式确实可行。另一个优点是它能为我提供 OAuth2 客户端凭证,这样我每天就能获得 4000 个 API 信用额度。但有一个缺点是,如果我想要更改跑道的地理围栏,我就得进入树莓派并自行修改代码。

“光子 2 编程”

这就是一切精彩内容的开始。我将为大家展示每个步骤的具体操作过程,并且不会深入讲解编程本身的内容。如需了解更多详情,请查看下面这个项目的“主”代码部分。我用内嵌注释对其进行了详细的记录,这样您就可以跟着实际的代码一起操作了(如果您愿意的话)。我会标注行号,以便于您更好地理解。

解析数据

首先,OpenSky API 返回的 JSON 文件包含了整个虚拟区域内所有的飞机信息。所有的飞机。在空中飞行的、起飞的、在地面的……所有内容都在其中。所以首先我们必须对其进行排序!我用这个来获取每个数据值,还用这个便捷的工具让我的工作变得轻松些。下面是我是如何操作的(第 45 行):

需要指出的是,当我确定这架飞机正是我想要的那一架后,我会获取其所有数据并将其存储到一个“飞机”对象中,这样我就再也不需要再接触 JSON 数据了。这个飞机对象的结构如下:

这些对象被添加到一个数组中,这样我就能方便地对其进行存储和排序了。

整理飞机停放位置

我不太清楚 OpenSky API 在返回 JSON 数据时是依据什么标准对飞机进行排序的,但可以肯定的是,它并非依据距离奥尔德姆机场的远近来进行排序。因此,我必须将这些混乱的对象数组整理成一个能触发警报的数组。

需要指出的是,存储混乱排列的飞机对象的数组长度总是会小于表示灯光的数组长度。我有 8 个灯,所以它由一个 7 个索引的数组来表示。每个灯代表 1.5 英里的空域。所以它看起来是这样的:

飞机的数量绝不会超过 4 架,因为如果超过了,那一定是空中交通管制员搞错了。因为根据美国联邦航空局的 JO 7110.65 5-5-4 规定,飞行器之间必须保持 3 英里的间隔。这意味着最多每 3 个间隔才能有一架飞机。

那么如何对其进行排序呢?其实很简单。这个过程发生在第 100 行到第 156 行之间,通过一系列“if”语句来实现。每架飞机都会被检查其经度,并被放置到相应位置的正确数组槽中。如果没有飞机在那里,就会创建一个假飞机,其高度设为 -1000 米,以便于更容易地识别出来。这就是您能得到的所有解释了:)

打开灯

很简单。首先,关闭所有没有对应飞机的灯。然后,如果这个灯有对应的飞机,就将其打开,并将颜色设置为代表飞机所处高度的样式。我使用了 switch-case 结构,因为我是个酷家伙(第 182 行至 219 行)。

结论

就是这样啦!如果拆解开来的话,其实挺简单的,但从零开始进行编程可不是一件容易的事!虽然仍有几处关于神秘飞机和奇怪的地理围栏错误的问题,但总体来说这个项目已经达到了 98% 的功能性。

根据 Raspberry Pi 代码的最后一行设定,数据每 10 秒更新一次,而灯也会随之相应地变化,因为“光子”始终处于循环状态。即便以这样的频率运行,我每天 4000 个 API 信用额度也需要大约 12 个小时的持续使用才会用完。我的 Pi 电脑连接到一个智能插座,这样我就可以从家里远程开关它,而且在我不需要它的时候它也不会消耗我的信用额度。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭