
作者:Circuits
翻譯整理:Tony
原文地址:點擊
今天分享一朵預(yù)報天氣的云,通過顏色變化來告知天氣情況。云朵使用樹莓派Zero W制作,連接到 Yahoo Weather API 獲取天氣信息,通過變化的顏色告訴你天氣情況。
我覺得把云朵懸掛在家中的墻壁上會非常的好看,云朵顏色與天氣變化對應(yīng)如下:
- 如果第二天溫度比當(dāng)日高10%,變成紅色。
- 如果第二天溫度比當(dāng)日低10%,變成金色。
- 如果同時滿足這兩個條件,會保持紅色。
- 如果這兩個條件都不滿足,會保持藍色。
- 如果天氣預(yù)報中有雨或雪,它將閃爍。
需要注意的是,項目中使用的雅虎API會更新,更多的信息可以訪問:https://developer.yahoo.com/weather/
1. 所需器件

- 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. 切割云朵

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

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

切割文件在文末獲取。
3. 組裝云朵

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


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

在膠水干燥的過程中,我從內(nèi)部取下了組件,并先用150粒度的砂紙,然后是220粒度的砂紙將它們磨碎。擦拭干凈后,使用深核桃色的木制油漆刷滿表面,使其表面光滑并保持干燥。
這也是給頂層上色的好時機。這樣不會在整個擴散層弄臟。

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

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

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

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

將電線焊接到燈帶。

在背面插板上涂一點熱熔膠,以將燈帶固定到云朵的邊緣。將燈帶盡可能靠近背板。
5. 安裝擴散層和頂層

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

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

接線非常簡單。
Pi to Din Neopixel上的GPIO 18
從Pi到5V Neopixel的5V
從Pi到GND的GND Neopixel
如電路圖所示,接線方式非常簡單。
- 樹莓派GPIO18管腳連接到燈帶的Din
- 樹莓派的5V連接到燈帶的5V
- 樹莓派的GND連接到燈帶的GND

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

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

焊接完成的樣子如上圖所示。
7. 設(shè)置樹莓派
- 安裝系統(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的文件而不需要擴展名。
- 連接到樹莓派
在樹莓派中使用 putty 和 SSH 的程序。你可以訪問以下網(wǎng)址,找到相關(guān)的操作文檔。
https://www.raspberrypi.org/documentation/remote-access/ssh/windows.md
唯一的區(qū)別是,你可以找到樹莓派的 IP。我發(fā)現(xiàn)使用 raspberrypi.local 連接到主機更容易。
- 安裝所需要的庫
安裝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)在,所需的庫都已安裝完畢。
- 部署程序
從 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 引腳。

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

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

現(xiàn)在,云朵應(yīng)該會亮起來,在終端窗口中,你看到它輸出了今天和明天的最高溫度和最低溫度。
- 設(shè)置開機自啟動
配置自動啟動,添加下面的代碼到 rc.local 文件中。
python /home/pi/cloud.py &
所有項目代碼在文末獲取。
8. 完成組裝

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

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

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

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

給每朵云添加掛鉤和兩個橡膠墊,所有的云朵就完成了。
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