太強(qiáng)了!樹莓派打造智能的行星觀測(cè)器
最近的日環(huán)食吸引了一大波天文愛好者。在我所居住城市的科技中心大樓外就有一臺(tái)大型的天文望遠(yuǎn)鏡,它可以鳥瞰宇宙中的其他星球。我一直認(rèn)為那些真實(shí)存在、又遙不可及的外太空與微小的我有著某種神秘的聯(lián)系。
我準(zhǔn)備用樹莓派和天文望遠(yuǎn)鏡復(fù)制一臺(tái)智能的行星觀測(cè)器。從 NASA 獲取已知行星的坐標(biāo)數(shù)據(jù),然后這臺(tái)儀器就可以自動(dòng)調(diào)整角度,聚焦這顆行星,讓我可以很方便地觀測(cè)它們。相信它將很好地帶你觀看和感受地球之外的外太空世界。
視頻演示
材料清單
樹莓派 3B ×1
16×2 LCD 屏幕 ×1
帶驅(qū)動(dòng)器的步進(jìn)電機(jī) 28-BYJ48 ×2
按鈕 ×3
法蘭聯(lián)軸器 5mm ×2
按鈕指南針 ×1
M3 螺栓/螺母 ×8
3D 打印外殼 ×1
3D 打印望遠(yuǎn)鏡 ×1
行星坐標(biāo)數(shù)據(jù)
這里將介紹兩種定位行星的方法。
1、使用水平坐標(biāo)系。它可以從北方(方位角)向上方傾斜和從地平線(高度)向上方傾斜,因此是以你的位置而定,所以角度會(huì)有所不同。此方法以北方作為參考。
請(qǐng)點(diǎn)擊鏈接查看:
https://en.wikipedia.org/wiki/Horizontal_coordinate_system
2、將樹莓派連上 WiFi 后,直接連接到 NASA 獲得數(shù)據(jù)。
訪問行星數(shù)據(jù)
從 NASA 噴氣推進(jìn)實(shí)驗(yàn)室(JPL)獲取數(shù)據(jù):
https://ssd.jpl.nasa.gov/?horizons
訪問數(shù)據(jù)前需要安裝 AstroQuery 庫(kù),用于查詢行星網(wǎng)絡(luò)表單和數(shù)據(jù)庫(kù)的工具。
請(qǐng)點(diǎn)擊下載安裝:
https://astroquery.readthedocs.io/en/latest/jplhorizons/jplhorizons.html
請(qǐng)確保安裝最新版本的 Raspbian(我使用的是3.7.3版)。
打開終端運(yùn)行命令:
sudo apt install python3-pip
然后使用 pip 安裝 astroquery 的升級(jí)版本。
pip3?install?--pre?--upgrade?astroquery
在繼續(xù)完成項(xiàng)目前,請(qǐng)使用簡(jiǎn)單的 Python 腳本訪問該數(shù)據(jù),確保正確安裝了所有的依賴項(xiàng)。
from astroquery.jplhorizons import Horizons
mars = Horizons(id=499, location='000', epochs=None, id_type='majorbody')
eph = mars.ephemerides()
print(eph)
接下來(lái)會(huì)顯示火星的詳細(xì)位置。
請(qǐng)點(diǎn)擊該鏈接查看火星定位是否正確:
https://theskylive.com/planetarium
為了方便查詢,我會(huì)做簡(jiǎn)化處理。其中 id 表示是 JPL 數(shù)據(jù)中與火星的數(shù)據(jù),epochs 表示獲取數(shù)據(jù)的時(shí)間,id_type 表示詢問太陽(yáng)系主體?!?00”在格林威治天文臺(tái)的位置代碼中表示英國(guó)的位置。其他位置可點(diǎn)擊查看:
https://minorplanetcenter.net//iau/lists/ObsCodesF.html
故障排除:
如果出現(xiàn)報(bào)錯(cuò):No module named ‘keyring.util.escape’
可以在終端中輸入以下命令:
pip3?install?--upgrade?keyrings.alt
編程
為了找到精確的坐標(biāo)數(shù)據(jù),在 getPlanetInfo 方法修改位置信息(使用上一步中的天文臺(tái)的列表修改這里的 location)
def getPlanetInfo(planet):
obj = Horizons(id=planet, location='000', epochs=None, id_type='majorbody')
eph = obj.ephemerides()
return eph
完整的 python 腳本,請(qǐng)?jiān)陧?xiàng)目文件庫(kù)中下載:
https://make.quwj.com/project/240
連接硬件
在該步驟中,要連接面包板、跳線、兩個(gè)步進(jìn)電機(jī)、LCD 屏幕和三個(gè)按鈕。
在樹莓派上找到引腳,在終端上輸入
pinout
它會(huì)可以顯示 GPIO 編號(hào)和板子編號(hào)。
連接方式如下:
第一個(gè)進(jìn)電機(jī) – 7、11、13、15
第二個(gè)進(jìn)電機(jī) – 40、38、36、32
按鈕 1 – 33
按鈕 2 – 37
按鈕 3 – 35
顯示屏 – 26、24、22、18、16、12
全部連接后,運(yùn)行 python 腳本
python3 planetFinder.py
在屏幕上會(huì)顯示設(shè)置文本,并且按鈕可以啟動(dòng)步進(jìn)電機(jī)。
3D 打印外殼
1、3D 打印外殼。
所有打印 STL 文件,請(qǐng)?jiān)陧?xiàng)目文件庫(kù)下載:
https://make.quwj.com/project/240
2、測(cè)試外殼
外殼組裝到位后,進(jìn)行其他組件的安裝。將按鈕安裝到位,固定顯示幕和步進(jìn)電機(jī),打磨外殼,確保所有組件都能正常使用。
安裝電子組件
1、安裝步進(jìn)電機(jī)
步進(jìn)電機(jī)將控制位于外殼上方的望遠(yuǎn)鏡的仰角,因此需要延長(zhǎng)電線以便旋轉(zhuǎn)。請(qǐng)如圖進(jìn)行安裝。
接線完成后,運(yùn)行 python 腳本,檢查是否一切正常。
然后將電線放回管內(nèi),直到步進(jìn)電機(jī)就位,再將步進(jìn)電機(jī)固定在外殼上,然后將外殼粘合。
2、安裝按鈕和 LCD 屏幕
如圖所示安裝按鈕,在焊接前使用螺母使其固定到位。
再使用 M3 螺栓和螺母固定 LCD 顯示器。請(qǐng)將 LCD 其中一個(gè)引腳焊接到電位計(jì)上。
在將所有的組件粘合之前,再次測(cè)試代碼,確保所有能夠正常工作,因?yàn)樵撾A段更容易修復(fù)。
3、添加法蘭聯(lián)軸器
將 3D 打印的底座連接到步進(jìn)電機(jī)。
將法蘭聯(lián)軸器安裝在步進(jìn)電機(jī)的頂部,并用螺釘固定到位。
將望遠(yuǎn)鏡安裝到旋轉(zhuǎn)塔頂上的電機(jī)很簡(jiǎn)單,因?yàn)橛凶銐虻目臻g可以將小螺釘固定到位。
一個(gè)法蘭器粘連在旋轉(zhuǎn)塔架的底座上,另一個(gè)安裝在望遠(yuǎn)鏡上。
再次測(cè)試,如果有問題,馬上修復(fù)并確保所有連線正確。
啟動(dòng)
因?yàn)橄氚阉?dú)立運(yùn)行,而不是每次手動(dòng)代碼尋找行星,因此將其設(shè)置為在樹莓派開啟時(shí)運(yùn)行代碼。
在終端中輸入。
1crontab -e
在打開的文件中,在文件末尾,另起一行輸入。
1@reboot python3 /home/pi/PlanetFinder/planetFinder.py &
代碼保存在 PlanetFinder 文件夾中,因此文件位置為:
/home/pi/PlanetFinder/planetFinder.py。如果你保存在其他地方,請(qǐng)?jiān)诖颂幐摹?/span>
說明:它允許代碼在后臺(tái)運(yùn)行,因此它在啟動(dòng)時(shí)不會(huì)阻止其他進(jìn)程。
完成組裝
將小指南針添加到旋轉(zhuǎn)底座的中間,最后,將所有的組件安裝到位。
使用方法
1、當(dāng)望遠(yuǎn)鏡開始啟動(dòng)時(shí),調(diào)整垂直軸。按下向上和向下按鈕可以移動(dòng)望遠(yuǎn)鏡,調(diào)整好后按下 OK 按鈕即可(位于底部)。
2、調(diào)整旋轉(zhuǎn)角度,使用按鈕旋轉(zhuǎn)望遠(yuǎn)鏡,直到小指南針將望遠(yuǎn)鏡指向北,然后按下 OK 按鈕即可。
現(xiàn)在,你可以使用向上、向下按鈕選擇行星,確定好后按下 OK 按鈕即可。它將顯示選定行星的高度和方位角,指向它幾秒后再轉(zhuǎn)向北。
目前為止,項(xiàng)目就完成了。你會(huì)去尋找哪一顆行星呢?!
-END-
MAKER:snowbiscuit/譯:趣無(wú)盡 Cherry(轉(zhuǎn)載請(qǐng)注明出處)
https://shumeipai.nxez.com/2020/07/23/raspberry-pi-planet-finder.html
|?整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有?|
|?如有侵權(quán),請(qǐng)聯(lián)系刪除?|
【1】國(guó)內(nèi)MCU能替代國(guó)外產(chǎn)品嗎?MCU的未來(lái)又將如何?
【2】35歲真的是程序員的坎兒?jiǎn)幔?/span>
【3】不同編程語(yǔ)言能耗不同?看這27種語(yǔ)言對(duì)比!
【4】超長(zhǎng)干貨為你解析:從串口驅(qū)動(dòng)到Linux驅(qū)動(dòng)模型,嵌入式必會(huì)!
【5】本文把TCP/IP講絕了!
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!