本方案使用 Raspberry Pi、ePaper Display、ProtoStax Enclosure 和 Python 跟踪国际空间站的当前位置和轨迹。
在这个项目中,我将向您展示如何使用 Raspberry Pi、ePaper Display、ProtoStax Enclosure 和一些 Python 跟踪和显示国际空间站 (ISS) 的当前位置及其随时间变化的轨迹。
第 1 步 - 设置树莓派
Waveshare 电子纸显示器使用 SPI 进行通信。因此,我们需要在 Raspberry Pi 上启用 SPI,如果您还没有这样做的话。
启用 SPI 的步骤
启动 raspi-config。转到“接口选项”。导航到 SPI 并按 Enter。当被问及是否要启用 SPI 接口时,请回答“是”。请参阅幻灯片中的以下步骤 - 每个图像的标题都有编号,并为每个步骤提供附加说明。
从 GitHub 存储库安装 ProtoStax ISS Tracker 代码(下面的链接)
这将安装演示代码以及必需的 Waveshare ePaper 库。
第 2 步- 仔细检查 SPI 接口是否正常工作
有些人遇到过 SPI 接口无法正确启用的问题。
仔细检查 /boot/config.txt 中的 SPI 是否实际“开启”。搜索类似以下的条目:
并检查您是否可以看到连接的 SPI 设备:
应该显示一些东西!(如上面的 /dev/spidev0.0 /dev/spidev0.1)如果没有,请尝试sudo rpi-update并重新启动。
如果 SPI 已正确启用,则 /boot/config.txt 条目应如上所示,并且在列出 SPI 设备时,您还应该看到已连接的设备。
第 3 步 - 安装其他先决条件
代码需要 Python 3+ - 如果您使用的是旧版本的 python,则需要安装 python3
代码还依赖于其他库。安装 spidev、RPi.gpio 、Pillow 并请求依赖如下:
第 4 步 - 运行 ISS 跟踪器
cd 到您在上面克隆 git 存储库时创建的目录。
运行 iss.py python 脚本(使用 python3):
如果以上所有步骤都正确完成,您应该会在电子纸显示屏上看到带有国际空间站当前位置的世界地图!每 30 秒更新一次当前位置(之前的位置被绘制为轨迹)。还添加了 15 分钟标记(红色矩形),以了解国际空间站的行进速度!
这是正在运行的 ISS 跟踪器(稍微加快了速度):
理解代码
该代码有几个细微差别需要牢记。国际空间站的位置是经纬度坐标。这些范围从 -180 到 180(经度)和 90 到 -90(纬度)。这些需要映射到我们的电子纸显示器的 XY 坐标。Waveshare 的 2.7 英寸显示屏的屏幕分辨率为 264 x 176。纵横比为 3:2
下一点要注意的是,世界地图通常没有这种纵横比。我们需要一张可以在电子纸显示器上显示的地图,并在世界地图上合理准确地描绘国际空间站的纬度和经度。我们还需要一张具有经纬度描述的相当准确的地图。
经过一番搜索,我找到了一张带有经纬度线的世界地图,我能够将其缩小到 264 x 181 的大小。由于国际空间站不会飞越两极,所以我可以放心,经纬度映射到这个坐标系上不会溢出到我们的 264x176 显示之外。
这就是我们的 XY 坐标系。(-180, 90) 应该映射到 (0, 0) 并且 (180, -90) 应该映射到 (264 x 181)。x = a。lon + b 和 y = c.lat + d。我们有两个方程,每个方程和两个未知数,每个方程都有两个数据点,因此我们可以很容易地求解(我将把它留给你作为练习!)
ISS 的位置每 30 秒更新一次,并附加到列表中。我们将每个位置的纬度、经度数据转换为我们的 XY 坐标系。
我们用黑色绘制世界地图。然后我们用红色绘制列表中的位置 - 列表中的最后一个位置是当前位置,因此我们使用 ISS 图标显示它。其他位置被绘制为小圆圈(只是绘制一个点太小我们看不到),每 15 分钟,位置被绘制为小矩形。这些 15 分钟的标记帮助我们了解国际空间站的实际移动速度!
一旦你习惯了代码示例并理解了代码,尝试通过做更多事情来扩展你的学习总是很好的。
以下是有关如何推进该项目的一些建议:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !