用樹莓派制作一朵預(yù)報天氣的云

作者:Circuits
翻譯整理:Tony
原文地址:點擊

今天分享一朵預(yù)報天氣的云,通過顏色變化來告知天氣情況。云朵使用樹莓派Zero W制作,連接到 Yahoo Weather API 獲取天氣信息,通過變化的顏色告訴你天氣情況。

我覺得把云朵懸掛在家中的墻壁上會非常的好看,云朵顏色與天氣變化對應(yīng)如下:

  • 如果第二天溫度比當(dāng)日高10%,變成紅色。
  • 如果第二天溫度比當(dāng)日低10%,變成金色。
  • 如果同時滿足這兩個條件,會保持紅色。
  • 如果這兩個條件都不滿足,會保持藍色。
  • 如果天氣預(yù)報中有雨或雪,它將閃爍。

需要注意的是,項目中使用的雅虎API會更新,更多的信息可以訪問:https://developer.yahoo.com/weather/

1. 所需器件

image
  • Neopixels 燈環(huán)(60 LED/m)
  • 鋸齒框架掛鉤
  • 3M 膠腳墊
  • 1/2″ S4S 橡木板
  • 1/8″ 硬質(zhì)纖維板
  • 1/8″ 白色半透明亞克力板
  • 1/8″ 木銷釘
  • Watco 木制油漆
  • 木膠
  • 熱膠槍
  • 訂書機
  • 25ft 26AWG 紅線
  • 25ft 26AWG 黑線
  • 25ft 26AWG 藍線
  • 樹莓派Zero W
  • Micro SD 卡
  • USB電線

2. 切割云朵

image

用于切割的圖紙都在svg文件中。如上圖所示,云朵共有4層。
在第2層和第4層,內(nèi)部路徑和中間路徑之間必須有1/8寸深的凹槽。這樣可以將擴散層和背板插入其中。擴散層使用了半透明亞克力板,背板使用了硬質(zhì)纖維板。

image

如上圖所示,這是我的Shapeoko3上的預(yù)覽圖像。我們稍后會在重復(fù)使用,因此要保存好。

image

切割文件在文末獲取。

3. 組裝云朵

image

零件切割后即可將其粘在一起,僅需兩件即可。然后將 1/8″ 木銷釘插入孔中以幫助對齊。木銷沒有使用膠水固定,因此一旦使用就無法自由取下來了。

image
image

干燥時,使用夾子將零件固定在一起,擦去從接縫溢出的多余膠水。

image

在膠水干燥的過程中,我從內(nèi)部取下了組件,并先用150粒度的砂紙,然后是220粒度的砂紙將它們磨碎。擦拭干凈后,使用深核桃色的木制油漆刷滿表面,使其表面光滑并保持干燥。

這也是給頂層上色的好時機。這樣不會在整個擴散層弄臟。

image

膠水晾干后,使用木制油漆對主要云朵進行打磨和上色。

4. 安裝燈帶

image

為了確定所需的燈帶長度,我將其放入內(nèi)部并確保燈帶覆蓋整個云朵。測量發(fā)現(xiàn)使用了19個燈的長度是可以的,但考慮到粘合部分,最終使用20個燈的長度。

image

然后拆下燈帶周圍的橡膠護套。將電線添加到插排上以連接到樹莓派Zero W。


image

將焊條的末端與電線的末端焊接在一起,效果會更好。

image

將電線焊接到燈帶。

image

在背面插板上涂一點熱熔膠,以將燈帶固定到云朵的邊緣。將燈帶盡可能靠近背板。

5. 安裝擴散層和頂層

image

將擴散層放置在圖中位置,并在頂部周圍涂抹少量膠水。

image

將頂層固定好,確保其盡可能的與其他層對齊,并擦去多余的膠水。

6. 焊接電路

image

接線非常簡單。

Pi to Din Neopixel上的GPIO 18

從Pi到5V Neopixel的5V

從Pi到GND的GND Neopixel

如電路圖所示,接線方式非常簡單。

  • 樹莓派GPIO18管腳連接到燈帶的Din
  • 樹莓派的5V連接到燈帶的5V
  • 樹莓派的GND連接到燈帶的GND
image

在焊接USB電線之前,我們需要為其鉆孔。根據(jù)電線直徑,我用3mm的鉆頭鉆了一個洞,以確保不要鉆到燈帶上。

image

切斷沒有插入計算機的公頭的一端。然后去掉一些不需要的線。只需要紅線(5V)和黑線(GND)。

image

焊接完成的樣子如上圖所示。

7. 設(shè)置樹莓派

  1. 安裝系統(tǒng)

下載樹莓派系統(tǒng),我是用的是:https://www.raspberrypi.org/downloads/raspbian/

使用諸如etcher.io的程序?qū)⑾到y(tǒng)鏡像刻錄到SD卡。完成后在啟動目錄中添加兩個文件,以便樹莓派啟用ssh并提供正確的wifi信息。

使用文本編輯器打開wpa_supplicant.conf文件,輸入wifi的ssid和密碼。然后將文件添加到sd卡。啟用ssh,我們只需要建立一個名為ssh的文件而不需要擴展名。

  1. 連接到樹莓派

在樹莓派中使用 putty 和 SSH 的程序。你可以訪問以下網(wǎng)址,找到相關(guān)的操作文檔。

https://www.raspberrypi.org/documentation/remote-access/ssh/windows.md

唯一的區(qū)別是,你可以找到樹莓派的 IP。我發(fā)現(xiàn)使用 raspberrypi.local 連接到主機更容易。

  1. 安裝所需要的庫

安裝pip,運行如下命令:

sudo apt-get install python-pip

安裝requests模塊:

pip install requests

安裝 NeoPixels 所需的項目。這些步驟的說明來源于:
https://learn.adafruit.com/neopixels-on-raspberry-pi?view=all#software

sudo apt-get install build-essential python-dev git scons swig

運行命令:

git clone https://github.com/jgarff/rpi_ws281x.git
cd rpi_ws281x
scons

接下來

cd python
sudo python setup.py install

現(xiàn)在,所需的庫都已安裝完畢。

  1. 部署程序

從 GitHub 庫中獲取文件:
https://github.com/keebie81/Weather-Forecast-Cloud

你可以將內(nèi)容剪切并粘貼到新文件中,或使用 WinSCP 傳輸文件:
https://winscp.net/eng/download.php

如果你需要剪切和粘貼,就要使用此命令制作一個新文件。

sudo nano cloud.py

然后粘貼內(nèi)容到 cloud.py。

下一步,你可能需要更改一些數(shù)值。如果你使用了不同數(shù)量的 NeoPixels 或 GPIO 引腳。

image

如果 NeoPixels 的使用量不同,則更改 LED_COUNT。如果使用的 GPIO 引腳不同,請更改 LED_PIN。

image

在第 72 行,你需要更改位置,如果你使用了 sheboygan 來預(yù)測天氣。
運行代碼
更改完畢后,就可以測試代碼。

sudo python cloud.py

現(xiàn)在,云朵應(yīng)該會亮起來,在終端窗口中,你看到它輸出了今天和明天的最高溫度和最低溫度。

  1. 設(shè)置開機自啟動

配置自動啟動,添加下面的代碼到 rc.local 文件中。

python /home/pi/cloud.py &

所有項目代碼在文末獲取。

8. 完成組裝

image

使用記號筆找到中心做好標(biāo)記。然后,我將鋸齒框架掛鉤和兩個橡膠墊安裝到位。

image

使用熱熔膠將樹莓派固定到位。將一小撮熱膠放在樹莓派的背面,然后將其連接到背面板上。

image

用螺絲刀給釘書釘留出空間。

image

將彎曲的訂書釘固定背板。

image

給每朵云添加掛鉤和兩個橡膠墊,所有的云朵就完成了。

9. 3D 打印

如果你沒有木工 CNC 機床,下面提供了STL文件。其中括Autodesk Fusion 360 的設(shè)計文件。你也可以修改設(shè)計并優(yōu)化打印。

文件在文末獲取。

10. 作者后話

我原本想用 esp8266 開發(fā)板來實現(xiàn)這個項目,但是我在 Arduino IDE 和 JSON 方面的技能不如樹莓派。未來這個項目還會增加一些功能,例如在擴散層后的七段顯示器上顯示當(dāng)前溫度。

我將把文件放在 GitHub 上并添加代碼,如果你采用了 Pimoroni Blinkt,Pimoroni Unicorn PHAT 或 Raspberry PI Sense Hat,就可以去使用。
https://github.com/keebie81/Weather-Forecast-Cloud

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容