基于树莓派打造智能的行星观测器
由于公众号文章的推送规则已经改成了不按照发布时间排序,所以为了大家能够准时收到我们的文章推送,请记得猛戳右下角的「在看」,并点击公号主页右上角的“ ... ”将 程序员极客实验室 设为星标~这样就不会错过每一篇精彩的推送啦~
材料清单
树莓派 3B ×1
16×2 LCD 屏幕 ×1
带驱动器的步进电机 28-BYJ48 ×2
按钮 ×3
法兰联轴器 5mm ×2
按钮指南针 ×1
M3 螺栓/螺母 ×8
3D 打印外壳 ×1
3D 打印望远镜 ×1
行星坐标数据
这里将介绍两种定位行星的方法。
1、使用水平坐标系。它可以从北方(方位角)向上方倾斜和从地平线(高度)向上方倾斜,因此是以你的位置而定,所以角度会有所不同。此方法以北方作为参考。
请点击链接查看:
https://en.wikipedia.org/wiki/Horizontal_coordinate_system
2、将树莓派连上 WiFi 后,直接连接到 NASA 获得数据。
访问行星数据
从 NASA 喷气推进实验室(JPL)获取数据:
https://ssd.jpl.nasa.gov/?horizons
访问数据前需要安装 AstroQuery 库,用于查询行星网络表单和数据库的工具。
请点击下载安装:
https://astroquery.readthedocs.io/en/latest/jplhorizons/jplhorizons.html
请确保安装最新版本的 Raspbian(我使用的是3.7.3版)。打开终端运行命令:
sudo apt install python3-pip
然后使用 pip 安装 astroquery 的升级版本。
pip3 install --pre --upgrade astroquery
在继续完成项目前,请使用简单的 Python 脚本访问该数据,确保正确安装了所有的依赖项。
from astroquery.jplhorizons import Horizons
mars = Horizons(id=499, location='000', epochs=None, id_type='majorbody')
eph = mars.ephemerides()
print(eph)
接下来会显示火星的详细位置。
请点击该链接查看火星定位是否正确:
https://theskylive.com/planetarium
为了方便查询,我会做简化处理。其中 id 表示是 JPL 数据中与火星的数据,epochs 表示获取数据的时间,id_type 表示询问太阳系主体。“000”在格林威治天文台的位置代码中表示英国的位置。
其他位置可点击查看:
https://minorplanetcenter.net//iau/lists/ObsCodesF.html
故障排除:
如果出现报错:No module named ‘keyring.util.escape’
可以在终端中输入以下命令:
pip3 install --upgrade keyrings.alt
编程
为了找到精确的坐标数据,在 getPlanetInfo 方法修改位置信息(使用上一步中的天文台的列表修改这里的 location)
def getPlanetInfo(planet):
obj = Horizons(id=planet, location='000', epochs=None, id_type='majorbody')
eph = obj.ephemerides()
return eph
完整的 python 脚本,请在项目文件库中下载:
https://make.quwj.com/project/240
连接硬件
在该步骤中,要连接面包板、跳线、两个步进电机、LCD 屏幕和三个按钮。
在树莓派上找到引脚,在终端上输入
pinout
它会可以显示 GPIO 编号和板子编号。
连接方式如下:
第一个进电机 – 7、11、13、15
第二个进电机 – 40、38、36、32
按钮 1 – 33
按钮 2 – 37
按钮 3 – 35
显示屏 – 26、24、22、18、16、12
全部连接后,运行 python 脚本
python3 planetFinder.py
在屏幕上会显示设置文本,并且按钮可以启动步进电机。
3D 打印外壳
1、3D 打印外壳。
所有打印 STL 文件,请在项目文件库下载:
https://make.quwj.com/project/240
2、测试外壳
外壳组装到位后,进行其他组件的安装。将按钮安装到位,固定显示幕和步进电机,打磨外壳,确保所有组件都能正常使用。
安装电子组件
1、安装步进电机
步进电机将控制位于外壳上方的望远镜的仰角,因此需要延长电线以便旋转。请如图进行安装。
接线完成后,运行 python 脚本,检查是否一切正常。
然后将电线放回管内,直到步进电机就位,再将步进电机固定在外壳上,然后将外壳粘合。
2、安装按钮和 LCD 屏幕
如图所示安装按钮,在焊接前使用螺母使其固定到位。
再使用 M3 螺栓和螺母固定 LCD 显示器。请将 LCD 其中一个引脚焊接到电位计上。
在将所有的组件粘合之前,再次测试代码,确保所有能够正常工作,因为该阶段更容易修复。
3、添加法兰联轴器
将 3D 打印的底座连接到步进电机。
将法兰联轴器安装在步进电机的顶部,并用螺钉固定到位。
将望远镜安装到旋转塔顶上的电机很简单,因为有足够的空间可以将小螺钉固定到位。
一个法兰器粘连在旋转塔架的底座上,另一个安装在望远镜上。
再次测试,如果有问题,马上修复并确保所有连线正确。
启动
因为想把它独立运行,而不是每次手动代码寻找行星,因此将其设置为在树莓派开启时运行代码。
在终端中输入。
crontab -e
在打开的文件中,在文件末尾,另起一行输入。
@reboot python3 /home/pi/PlanetFinder/planetFinder.py &
代码保存在 PlanetFinder 文件夹中,因此文件位置为:/home/pi/PlanetFinder/planetFinder.py。如果你保存在其他地方,请在此处更改。
说明:它允许代码在后台运行,因此它在启动时不会阻止其他进程。
完成组装
将小指南针添加到旋转底座的中间,最后,将所有的组件安装到位。
使用方法
1、当望远镜开始启动时,调整垂直轴。按下向上和向下按钮可以移动望远镜,调整好后按下 OK 按钮即可(位于底部)。
2、调整旋转角度,使用按钮旋转望远镜,直到小指南针将望远镜指向北,然后按下 OK 按钮即可。
现在,你可以使用向上、向下按钮选择行星,确定好后按下 OK 按钮即可。它将显示选定行星的高度和方位角,指向它几秒后再转向北。
目前为止,项目就完成了。你会去寻找哪一颗行星呢?!
本项目文件库地址:
http://maker.quwj.com/project/240
via instructables.com/id/Raspberry-Pi-Planet-Finder/
推荐阅读:(点击标题可跳转)
看完视频,不妨来个分享、在看加点赞再走