作者:Circuits
翻译整理:Tony
原文地址:点击
今天分享一朵预报天气的云,通过颜色变化来告知天气情况。云朵使用树莓派Zero W制作,连接到 Yahoo Weather API 获取天气信息,通过变化的颜色告诉你天气情况。
我觉得把云朵悬挂在家中的墙壁上会非常的好看,云朵颜色与天气变化对应如下:
- 如果第二天温度比当日高10%,变成红色。
- 如果第二天温度比当日低10%,变成金色。
- 如果同时满足这两个条件,会保持红色。
- 如果这两个条件都不满足,会保持蓝色。
- 如果天气预报中有雨或雪,它将闪烁。
需要注意的是,项目中使用的雅虎API会更新,更多的信息可以访问:https://developer.yahoo.com/weather/
1. 所需器件
- Neopixels 灯环(60 LED/m)
- 锯齿框架挂钩
- 3M 胶脚垫
- 1/2″ S4S 橡木板
- 1/8″ 硬质纤维板
- 1/8″ 白色半透明亚克力板
- 1/8″ 木销钉
- Watco 木制油漆
- 木胶
- 热胶枪
- 订书机
- 25ft 26AWG 红线
- 25ft 26AWG 黑线
- 25ft 26AWG 蓝线
- 树莓派Zero W
- Micro SD 卡
- USB电线
2. 切割云朵
用于切割的图纸都在svg文件中。如上图所示,云朵共有4层。
在第2层和第4层,内部路径和中间路径之间必须有1/8寸深的凹槽。这样可以将扩散层和背板插入其中。扩散层使用了半透明亚克力板,背板使用了硬质纤维板。
如上图所示,这是我的Shapeoko3上的预览图像。我们稍后会在重复使用,因此要保存好。
切割文件在文末获取。
3. 组装云朵
零件切割后即可将其粘在一起,仅需两件即可。然后将 1/8″ 木销钉插入孔中以帮助对齐。木销没有使用胶水固定,因此一旦使用就无法自由取下来了。
干燥时,使用夹子将零件固定在一起,擦去从接缝溢出的多余胶水。
在胶水干燥的过程中,我从内部取下了组件,并先用150粒度的砂纸,然后是220粒度的砂纸将它们磨碎。擦拭干净后,使用深核桃色的木制油漆刷满表面,使其表面光滑并保持干燥。
这也是给顶层上色的好时机。这样不会在整个扩散层弄脏。
胶水晾干后,使用木制油漆对主要云朵进行打磨和上色。
4. 安装灯带
为了确定所需的灯带长度,我将其放入内部并确保灯带覆盖整个云朵。测量发现使用了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电线之前,我们需要为其钻孔。根据电线直径,我用3mm的钻头钻了一个洞,以确保不要钻到灯带上。
切断没有插入计算机的公头的一端。然后去掉一些不需要的线。只需要红线(5V)和黑线(GND)。
焊接完成的样子如上图所示。
7. 设置树莓派
- 安装系统
下载树莓派系统,我是用的是:https://www.raspberrypi.org/downloads/raspbian/
使用诸如etcher.io的程序将系统镜像刻录到SD卡。完成后在启动目录中添加两个文件,以便树莓派启用ssh并提供正确的wifi信息。
使用文本编辑器打开wpa_supplicant.conf文件,输入wifi的ssid和密码。然后将文件添加到sd卡。启用ssh,我们只需要建立一个名为ssh的文件而不需要扩展名。
- 连接到树莓派
在树莓派中使用 putty 和 SSH 的程序。你可以访问以下网址,找到相关的操作文档。
https://www.raspberrypi.org/documentation/remote-access/ssh/windows.md
唯一的区别是,你可以找到树莓派的 IP。我发现使用 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
现在,所需的库都已安装完毕。
- 部署程序
从 GitHub 库中获取文件:
https://github.com/keebie81/Weather-Forecast-Cloud
你可以将内容剪切并粘贴到新文件中,或使用 WinSCP 传输文件:
https://winscp.net/eng/download.php
如果你需要剪切和粘贴,就要使用此命令制作一个新文件。
sudo nano cloud.py
然后粘贴内容到 cloud.py。
下一步,你可能需要更改一些数值。如果你使用了不同数量的 NeoPixels 或 GPIO 引脚。
如果 NeoPixels 的使用量不同,则更改 LED_COUNT。如果使用的 GPIO 引脚不同,请更改 LED_PIN。
在第 72 行,你需要更改位置,如果你使用了 sheboygan 来预测天气。
运行代码
更改完毕后,就可以测试代码。
sudo python cloud.py
现在,云朵应该会亮起来,在终端窗口中,你看到它输出了今天和明天的最高温度和最低温度。
- 设置开机自启动
配置自动启动,添加下面的代码到 rc.local 文件中。
python /home/pi/cloud.py &
所有项目代码在文末获取。
8. 完成组装
使用记号笔找到中心做好标记。然后,我将锯齿框架挂钩和两个橡胶垫安装到位。
使用热熔胶将树莓派固定到位。将一小撮热胶放在树莓派的背面,然后将其连接到背面板上。
用螺丝刀给钉书钉留出空间。
将弯曲的订书钉固定背板。
给每朵云添加挂钩和两个橡胶垫,所有的云朵就完成了。
9. 3D 打印
如果你没有木工 CNC 机床,下面提供了STL文件。其中括Autodesk Fusion 360 的设计文件。你也可以修改设计并优化打印。
文件在文末获取。
10. 作者后话
我原本想用 esp8266 开发板来实现这个项目,但是我在 Arduino IDE 和 JSON 方面的技能不如树莓派。未来这个项目还会增加一些功能,例如在扩散层后的七段显示器上显示当前温度。
我将把文件放在 GitHub 上并添加代码,如果你采用了 Pimoroni Blinkt,Pimoroni Unicorn PHAT 或 Raspberry PI Sense Hat,就可以去使用。
https://github.com/keebie81/Weather-Forecast-Cloud