跳过主要内容

如何用树莓派制作飞机跟踪器

树莓派飞机追踪器
(图片来源:Tom’s Hardware)

现在很有可能有飞机飞过你的房子。使用一个覆盆子π我们可以创建自己的“雷达”,显示这些飞机的实时位置,如果我们有一个投影仪,我们可以把它投射到天花板上。否则,我们可以在普通屏幕上追踪它。

对ads - b技术

(图片来源:Tom’s Hardware)

许多飞机都配备了一种被称为ADS-B的装置。它是“自动依赖监视-广播”的缩写,是一种允许飞机将自己的位置信息发送给其他飞机、地面基站,甚至卫星基站的技术。对于无法安装更复杂的避撞技术的小型飞机来说,ADS-B发射器和接收器可以大大提高飞行安全性。

装有ADS-B发射器(这在越来越多的国家成为法律)的飞机,可以传送各种位置数据,如高度、GPS坐标和地面速度数据。幸运的是,所有的数据都是用标准频率传输的,而且没有加密。这意味着我们可以通过一个小型USB适配器和一个树莓派,监听附近飞机的位置信息

这个项目你需要什么

  • 树莓4π或带电源适配器的树莓派3
  • 8gb(或更大)microSD卡withRaspberryπOS。查看我们的列表覆盆子派最好的microSD卡
  • ads - b接收设备(天线和USB狗)这一个
  • 显示器或投影仪使用HDMI和电源线。如果你想在天花板上投影,你需要一台投影仪。

(图片来源:Tom’s Hardware)

如何用树莓派追踪本地飞机

在你开始之前,确保你已经设置好了Raspberry Pi操作系统。如果您以前没有这样做过,请参阅我们关于如何做的文章设置一个树莓派第一次或如何做一个无头树莓派安装(没有键盘和屏幕)。

1.更新树莓派操作系统在命令提示符处输入下面的命令。这几乎是不言而喻的,但却是一个很好的实践。

Sudo apt-get update -y

2.安装基础组件我们需要与ADS-B接收器通信,并使用Python显示飞机位置。

Sudo apt-get install build-essential debhelper librtlsdr-dev pkg-config dh-systemd libncurses5-dev libbladerf-dev libhackrf-dev liblimesuite-dev libsdl2-ttf-2.0-0

3.克隆dump1090存储库放到主目录中。Dump1090是一个解码器,可以让我们将ADS-B消息解码成可读的JSON。

CD ~/ git clone https://github.com/flightaware/dump1090.git

4.构建dump1090.这可能需要一些时间,这取决于你的树莓派的类型。

cd dump1090使

5.连接ADS-B接收器到树莓派的USB接口。

(图片来源:Tom’s Hardware)

6.运行dump1090从它的目录中。

/ dump1090——互动

您应该会在控制台中看到一个表格,其中的不同行填充了头顶飞机的数据,包括它们的高度和航班号。

现在我们已经安装了ADS-B解码器,我们可以下载投影代码了。我用python和pygame库编写了一个简单的程序,它显示飞机的实时位置,以及它们的航班号和高度(都来自dump1090)。我们非常欢迎您对其进行修改或自行构建。

7.克隆树莓派飞行跟踪器git

CD ~/ git clone https://github.com/rydercalmdown/raspberry_pi_flight_tracker.git

8.建立一个虚拟环境使用python3作为飞行跟踪器。

CD raspberry_pi_flight_tracker virtualenv -p python3 env . exe

9.激活虚拟环境,安装python需求

Source env/bin/activate PIP install -r src/requirements.txt

10.将environment.sample.sh重命名为environment.sh打开新文件进行编辑。

Mv environment.sample.sh environment.sh #使用nano environment.sh编辑文件

11.编辑文件以设置值为当前纬度和经度,以及最大纬度和经度。最大值将决定你的位置周围有多少区域要显示。获取纬度和经度值的一个简单方法是使用谷歌Maps。首先,找到您的位置并右击它以显示一个菜单-单击纬度和经度值以将它们复制到剪贴板。

(图片来源:Tom’s Hardware)

接下来,从当前位置缩小。选择当前位置以北的一个点,并将值复制到剪贴板。然后将第一个值(纬度)以LAT_MAX的形式复制到environment.sh文件中(如下所示为43.680222)。对当前位置以南的位置执行同样的操作,并将environment.sh文件中的第一个值填写为LAT_MIN。这些值表示跟踪在您的位置向北和向南延伸的距离。

(图片来源:Tom’s Hardware)

接下来,选择当前位置以西的一个点,并将坐标复制到剪贴板。使用第二个值(上面显示为-79.49174)来填充LON_MAX值。对您所在位置以东的一个点和LON_MIN执行同样的操作。这些值表示从您当前位置向东西方向延伸多远。

完成后,environment.sh文件看起来应该是这样的(带有坐标)。

export LAT_MAX=43.680222 export LAT_MIN=43.63501 export LON_MAX=-79.49174 export LON_MIN=-79.37080 export CURRENT_LAT=43.64611 export CURRENT_LON=-79.37929

12.启动dump1090服务器和使用相同命令的投影代码:

bash entrypoint.sh

(图片来源:Tom’s Hardware)

如果一切顺利,片刻之后你将看到一个空白屏幕,屏幕中央有一个圆点指示你的当前位置,你周围的飞机将在屏幕上以移动圆点的形式出现。

如果你收不到信号,试着把天线移到能看到清晰天空的地方,比如楼上的窗户。

(图片来源:Tom’s Hardware)

13.如果你在用投影仪,把它指向天花板在屏幕上方与你的磁北对齐。

这就是答案。你自己的私人飞机“雷达”系统。

  • Suncoast骑自行车
    神奇的!

    我住的地方离一个相当大的机场很近,可以看到几架飞机降落和起飞,除了头顶上的飞机。

    更有趣的是,在飞行跟踪程序中输入航班号,查看出发地和目的地信息。

    连我妻子都觉得很有趣。
    回复
  • Benni00x
    管理说:
    在天花板上投射当前飞机的地图。

    如何用树莓派创建飞机跟踪器:阅读更多
    你好,
    如果我输入bash entrypoint.sh,窗口将开始打开一秒钟。然后我得到这样的消息“FileNotFoundError: No such file or directory: '/home/pi/raspberry_pi_flight_tracker/src/../data'”
    回复
  • Suncoast骑自行车
    Benni00x说:
    你好,
    如果我输入bash entrypoint.sh,窗口将开始打开一秒钟。然后我得到这样的消息“FileNotFoundError: No such file or directory: '/home/pi/raspberry_pi_flight_tracker/src/../data'”

    同样的事情发生在我第一次尝试它,所以我只是手动创建了丢失的'data'目录,现在一切工作。
    回复
  • Benni00x
    Suncoast骑自行车说:
    同样的事情发生在我第一次尝试它,所以我只是手动创建了丢失的'data'目录,现在一切工作。
    好的,谢谢你。我明天就去试试。
    回复
  • NightTripper
    你把文件夹放在哪里?有什么权限?
    回复
  • Suncoast骑自行车
    NightTripper说:
    你把文件夹放在哪里?有什么权限?
    我收到的错误信息有路径'/home/pi/raspberry_pi_flight_tracker/src/../数据”。data目录应该在主项目目录'/home/pi/raspberry_pi_flight_tracker'中

    因为这显然是针对简单的数据文件,所以我不担心权限问题,只采用默认设置。一旦创建了目录,程序将能够创建它们需要运行的所有数据文件。
    回复
  • OrbisGoose
    试图构建,但在无法找到软件包limesuite, liblimesuite-dev, .....

    你能告诉我正确的位置吗?
    回复
  • zer0cool300
    Suncoast骑自行车说:
    我收到的错误信息有路径'/home/pi/raspberry_pi_flight_tracker/src/../数据”。data目录应该在主项目目录'/home/pi/raspberry_pi_flight_tracker'中

    因为这显然是针对简单的数据文件,所以我不担心权限问题,只采用默认设置。一旦创建了目录,程序将能够创建它们需要运行的所有数据文件。

    当我尝试运行程序时,我也得到了类似的消息。这是它的垃圾。任何帮助都将不胜感激。我对任何非寡妇的东西都是新手


    pi@raspberrypi:~/raspberry_pi_flight_tracker $ bash entrypoint.sh
    启动服务器……
    从地图……
    pygame 2.0.1 (SDL 2.0.9, Python 3.7.3)
    来自pygame社区的你好。https://www.pygame.org/contribute.htmlTraceback(最近一次电话):
    文件"src/app.py",第10行,在
    main ()
    文件"src/app.py",第6行,在main
    renderer.run_screen ()
    文件"/home/pi/raspberry_pi_flight_tracker/src/renderer.py",第43行,在run_screen
    对于decoder.get_aircraft()中的aircraft_json:
    文件"/home/pi/raspberry_pi_flight_tracker/src/decoder.py",第23行,在get_aircraft
    clean_up_directory ()
    文件"/home/pi/raspberry_pi_flight_tracker/src/decoder.py",第16行,在clean_up_directory
    对于os.listdir(get_data_directory_path())中的file_name:
    FileNotFoundError: No such file or directory: '/home/pi/raspberry_pi_flight_tracker/src/../data'
    回复
  • OrbisGoose
    OrbisGoose说:
    试图构建,但在无法找到软件包limesuite, liblimesuite-dev, .....

    你能告诉我正确的位置吗?
    我得告诉巴斯特所有文件的位置。然而,也需要手动更新PyGames,以使图像正常工作。
    回复
  • equati0n
    即使在创建了数据目录之后,文件仍然是。无法找到Json。很酷的项目,但本教程在遵循指导后不能工作。
    回复