亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于树莓派的行星查找器

发布时间:2021-09-05
分享到:

基于树莓派的行星查找器

发布时间:2021-09-05
分享到:

我所在城市的科学中心外面有一个大型金属结构,它可以转动并指向天空中的行星。我从未见过它起作用,但我一直认为知道这些无法到达的其他世界与我的小我的关系实际上在哪里会很神奇。

当我最近走过这个久违的展览时,我想“我打赌我能做到”,所以我做到了!

这是一个关于如何制作 Planet Finder(以月球为特色)的指南,因此当您对太空感到敬畏时,您也可以知道该往哪里看。

零件清单:

  • 1 x Raspberry Pi
  • 1 x LCD 屏幕 
  • 2 x 带驱动器的步进电机 (28-BYJ48)
  • 3 个按钮
  • 2 x 法兰耦合器
  • 1 x 按钮指南针
  • 8 x M3 螺栓和螺母
  • 外壳和望远镜的 3D 打印部件

第 2 步:行星坐标

有几种不同的方式来描述天文物体在天空中的位置。

对我们来说,最有用的是水平坐标系,如上图所示。此图片来自链接此处的维基百科页面:

https://en.wikipedia.org/wiki/Horizo​​ntal_coordinat...

水平坐标系为您提供了一个从北方(方位角)和从地平线向上(海拔)的角度,因此它会因您在世界上的位置而有所不同。所以我们的行星探测器需要考虑位置,并有某种方式找到北方作为参考。

我们将使用 Raspberry Pi 上的 wifi 连接来查找来自 NASA 的数据,而不是尝试计算随时间和位置而变化的高度和方位角。

第 3 步:访问行星数据

我们正在从 NASA 喷气推进实验室 (JPL) 获取数据 - https://ssd.jpl.nasa.gov/?horizo​​ns

为了访问这些数据,我们使用了一个名为 AstroQuery 的库,它是一组用于查询天文 Web 表单和数据库的工具。该库的文档可在此处找到:https://astroquery.readthedocs.io/en/latest/jplhor...

如果这是您的第一个 Raspberry Pi 项目,请按照以下设置指南开始:https://projects.raspberrypi.org/en/projects/raspb...

如果您在 Raspberry Pi 上使用 Raspbian(如果您按照上面的指南进行操作),那么您已经安装了 python3,请确保安装了最新版本(我使用的是 3.7.3 版)。我们需要使用它来获取 pip。打开终端并键入以下内容:

sudo apt install python3-pip

然后我们可以使用pip来安装astroquery的升级版本。

pip3 install --pre --upgrade astroquery

在继续本项目的其余部分之前,请尝试使用简单的 Python 脚本访问此数据,以确保已正确安装所有正确的依赖项。

from astroquery.jplhorizo​​ns import Horizo​​ns 

mars = Horizo​​ns(id=499, location='000', epochs=None, id_type='majorbody') 

eph = mars.ephemerides() 

print(eph)

这应该会向您显示火星位置的详细信息!

您可以使用此站点来查看这些数据是否正确以查找实时行星位置:https : //theskylive.com/planetarium

稍微分解一下这个查询,id 是 JPL 数据中与火星相关的数字,epochs 是我们想要数据的时间(None 表示现在),而 id_type 是询问太阳系的主要天体。该位置目前设置为英国,因为“000”是格林威治天文台的位置代码。其他位置可以在这里找到:https://minorplanetcenter.net//iau/lists/ObsCodesF...

故障排除:

如果出现错误: No module named 'keyring.util.escape'

在终端中尝试以下命令:

pip3 install --upgrade keyrings.alt

第 4 步:代码

此步骤附带的是此项目中使用的完整 python 脚本

要为您的位置找到正确的数据,请转到函数 getPlanetInfo 并使用上一步中的天文台列表更改位置

行星查找器.py

第 5 步:连接硬件

使用面包板和跳线,连接两个步进电机、LCD 屏幕和三个按钮,如上图所示

要了解 Raspberry Pi 上的引脚编号,请转到终端并键入

这应该向您显示上面的图像,其中包含 GPIO 编号和电路板编号。我们使用板号来定义代码中使用的引脚,因此我将引用括号中的数字

  • 第一个步进电机 - 7, 11, 13, 15
  • 第二步进电机 - 40, 38, 36, 32
  • 按钮 1 - 33
  • 按钮 2 - 37
  • 按钮 3 - 35
  • 液晶屏 - 26, 24, 22, 18, 16, 12
  • 当这一切都连接好后,运行 python 脚本

第 6 步:设计外壳

该表壳设计为易于 3D 打印。一旦电子设备固定到位,它就会分解成单独的部分,然后将这些部分粘在一起。孔的大小适合我使用的按钮和 M3 螺栓。我将望远镜分成几部分打印出来,然后将它们粘在一起以避免过多的支撑结构。

STL 文件附加到此步骤。

Base_turret.stl

BoxBack.stl

箱库文件

BoxFace.stl

BoxSides.stl

Stepper_Housing.stl

Stepper_Housing_Lid.stl

望远镜1.stl

望远镜2.stl

望远镜3.stl

望远镜4.stl

TelescopeWhole.stl

第 7 步:测试打印

打印完所有内容后,在进行任何粘合之前,请确保所有内容都紧密贴合在一起。

将按钮安装到位,并用 M3 螺栓固定屏幕和步进电机,让所有东西都摆动良好。在下一步之前,将任何粗糙的边缘锉掉,再次将所有东西分开。

第 8 步:扩展步进电机

控制望远镜仰角的步进电机将位于主外壳上方,并且需要在电线中放松一些才能旋转。需要通过在步进器和驱动板之间切割它们并在它们之间焊接新长度的电线来延长电线。

我使用一根线将新电线插入支撑塔中,以帮助将其穿过,因为我使用的电线很硬并且一直卡住。一旦通过,它就可以焊接到步进电机上,确保跟踪连接的是哪种颜色,以便在另一端重新连接正确的颜色。不要忘记为电线添加热缩!

焊接后,运行 python 脚本检查一切是否仍在工作,然后将电线推回管子,直到步进电机就位。然后,在将外壳背面粘合到位之前,可以使用 M3 螺栓和螺母将其连接到步进电机外壳上。

第 9 步:安装按钮和 LCD 屏幕

在焊接前插入按钮并拧紧螺母以将它们固定到位。我喜欢使用在它们之间运行的公共接地线以保持整洁。

用 M3 螺栓和螺母固定 LCD 屏幕。LCD 需要在它的一个引脚上安装一个电位计,我也在这个阶段焊接了它。

再次测试代码!在我们将所有内容粘合在一起之前,请确保一切仍然有效,因为在此阶段修复要容易得多。

第 10 步:添加底座

为了将 3D 打印部件连接到步进电机,我们使用了一个 5 毫米底座联轴器,该联轴器安装在步进电机末端的顶部,并通过小螺钉固定到位。一个底座粘在旋转塔的底座上,另一个粘在望远镜上。将望远镜连接到旋转塔顶部的电机很简单,因为有很多空间可以接触到将其固定到位的小螺钉。另一个法兰更难固定,但主箱和旋转塔的底座之间有足够的间隙来安装小内六角扳手并拧紧螺丝。

现在一切都应该正常工作,因为它将处于最终状态。如果不是,现在是修复错误并确保连接安全的时候了。确保裸露的电线没有相互接触,用电工胶带绕一圈并修补可能导致问题的任何地方。

第 11 步:启动时运行

与其每次我们想要寻找行星时都手动运行代码,我们希望它作为一个独立的展览运行,所以我们将设置它以在 Raspberry Pi 开启时运行我们的代码。

在终端中,输入

crontab -e

在打开的文件中,将以下内容添加到文件末尾,然后换行。

@reboot python3 /home/pi/PlanetFinder/planetFinder.py &

我的代码保存在一个名为 PlanetFinder 的文件夹中,所以 /home/pi/PlanetFinder/planetFinder.py 是我文件的位置。如果您的保存在其他地方,请确保在此处进行更改。

最后的 & 很重要,因为它让代码在后台运行,所以它不会阻止在启动时也发生的其他进程。

第12步:把它们粘在一起!

现在应该固定所有尚未粘合到位的东西。

最后,将小指南针添加到旋转底座的中间。

第 13 步:使用

当行星查找器打开时,它会提示用户调整垂直轴。按向上和向下按钮将移动望远镜,尝试使其水平,指向右侧,然后按确定按钮(在底部)。

然后用户将被要求调整旋转,使用按钮旋转望远镜直到它根据小指南针指向北方,然后按确定。

您现在可以使用向上/向下按钮在行星之间循环,然后使用确定按钮选择您想要找到的行星。它将显示行星的高度和方位角,然后指向它几秒钟,然后再转回面向北方。

第 14 步:完成

全部完成!希望您能喜欢我的项目

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论