在这个项目中,将会为大家展示如何使用 Raspberry Pi、ePaper Display、ProtoStax Enclosure 和一些 Python, 跟踪和显示国际空间站 (ISS) 的当前位置及其随时间变化的轨迹。
项目中用到的东西
-
树莓派 3 型号 B+:也可以使用 Raspberry Pi Model 4B
-
树莓派4 B型:也可以使用 1B+/2B/3B/3B+
-
用于 Raspberry Pi B+ / 4B 型的 ProtoStax 外壳
-
2.7inch e-Paper HAT
第 1 步 - 设置树莓派
项目通过Waveshare 电子纸显示器显示显示国际空间站的位置图像。Waveshare 电子纸显示器与树莓派之前通过 SPI 进行通信。因此,需要在 Raspberry Pi 上启用 SPI。
启用 SPI 的步骤
启动 raspi-config。转到“接口选项”,导航到 SPI 并按 Enter。当被问及是否要启用 SPI 接口时,选择“是”。具体操作参照下图,可左右移动:
导航到 raspi-config 中的“接口选项”
从 GitHub 存储库安装 ProtoStax ISS Tracker 代码(下面的链接)
这将安装演示代码以及必需的 Waveshare ePaper 库。
步骤 2 - 仔细检查 SPI 接口是否正常工作
有些人会遇到过 SPI 接口无法正确启用的问题。
仔细检查 /boot/config.txt 中的 SPI 是否实际“开启”。搜索类似以下的条目:
并检查是否可以看到连接的 SPI 设备:
当看到dev/spidev0.0 /dev/spidev0.1,就说明已经启动了SPI接口。如果输入命令行$ ls /dev/spi* ,,没有显示,需要尝试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 分钟标记(红色矩形),以了解国际空间站的行进速度!
理解代码
该项目的代码可以在“达尔闻说”微信回复:国际空间站,获取。
国际空间站的位置是经纬度坐标。这些范围从 -180 到 180(经度)和 90 到 -90(纬度)。这些需要映射到我们的电子纸显示器的 XY 坐标。Waveshare 的 2.7 英寸显示屏的屏幕分辨率为 264 x 176,纵横比为 3:2,需要做到对应。
另外,世界地图通常也没有这种纵横比,因此需要一张具有经纬度描述的相当准确的地图。最后还得将其缩小到 264 x 181 的大小,这样国际空间站不会飞越两极,溢出到我们的 264x176 显示之外。
ISS 的位置每 30 秒更新一次,需要附加到列表中。我们将每个位置的纬度、经度数据转换为我们的 XY 坐标系。
在显示屏上,用黑色绘制世界地图,用红色绘制列表中的位置,即国际空间站的位置,其他位置被绘制为小圆圈(只是绘制一个点太小,看不到)。每 15 分钟,就会绘制标记位置,这些标记帮助我们了解国际空间站的实际移动速度!空间站约 90 分钟完成一个完整的轨道的飞行,每天不到 16 圈。
如果大家下载并理解了代码,就可来扩展这个项目,从中得到更多经验,以下都是可以在后期改进的:
-
反转颜色 - 以红色显示世界地图,以黑色显示国际空间站的位置和轨迹。
-
同时在屏幕上以文本形式显示当前位置时间和纬度、经度
-
存储您的位置坐标,每次国际空间站靠近您时,将其打印在显示屏上,或执行其他一些操作,例如向您发送推文或电子邮件,或打开 LED。
-
使脚本在后台运行,这样即使您从 Pi 注销,脚本也会继续运行并更新您的位置(提示:使用 nohup)
-
使脚本在启动时运行,以便在您启动 Pi 时它会自动启动!