一朵预报天气的云,基于树莓派+3D打印


MAKER:keebie81/译:趣无尽 Cherry(转载请注明出处)

卧室有朵彩色的云会不会很可爱呢?就像晴天娃娃一样告诉你今天的天气。云朵基于树莓派 Zero W 构建,连接到 Yahoo Weather API 获取天气信息,再通过设定的不断变化的颜色告诉你天气变化的情况。我觉得把云朵悬挂在家中的墙壁上会非常的好看。

云朵颜色变化所代表的天气信息如下:

  • 如果第二天温度比当日高 10%,就会变成红色。
  • 如果第二天温度比当日低 10%,就会变成金色。
  • 如果同时满足这两个条件,会保持红色。
  • 如果这两个条件都不满足,会保持蓝色。
  • 如遇雨或雪,它将会闪烁。

温馨提示:
项目中使用的雅虎的 API 会中断。所以要随时注意更新。更多的信息可以访问:https://developer.yahoo.com/weather/ 。

材料清单

树莓派 Zero W × 1
Micro SD 卡 × 1
USB 电线(白色) × 1
Neopixels 灯环(60 LED/每米) × 若干
锯齿框架挂钩(双孔) × 若干
3M 胶脚垫 × 若干
1/2″ S4S 橡木板 × 若干
6″ S4S 橡木板 × 若干
3″ S4S 橡木板 × 若干
1/8″ 硬质纤维板 × 若干
1/8″ 白色半透明亚克力板 × 若干
1/8″ 木销钉 × 若干
Watco 木制油漆 × 1
25ft 26AWG 红线 × 若干
25ft 26AWG 黑线 × 若干
25ft 26AWG 蓝线 × 若干
木胶 × 1
热胶枪 × 1
订书机 × 1

切割云朵

所有切割的图纸都在 svg 文件中。如图所示,云朵一共有四层。在第二层和第四层,内部路径和中间路径之间包含有 1/8″ 深的凹层。以便将扩散层和背板嵌入其中。扩散层使用半透明亚克力板,用于光的漫反射,背板使用硬质纤维板。

如图所示,这是未切割前的在 Shapeoko3 上的预览图像。稍后会重复使用到,请保存好。

云朵形状的来源:
http://www.softicons.com/web-icons/vector-stylish-weather-icons-by-bartosz-kaszubowski/cloud-icon
切割文件请在项目文件库中下载。
https://make.quwj.com/project/232

组装云朵

1、将切割好的组件粘在一起,只需要将中间的两层粘连起来即可。

2、将 1/8″ 木销钉插入孔中以便对齐。木销没有使用胶水固定,因此一旦使用就无法自由取下来了。

3、干燥时,使用夹子将组件固定在一起并擦去溢出的多余胶水。

4、在等待胶水干燥的过程中,我从内部取下组件,并先用 150 粒度的砂纸打磨再使用 220 粒度的砂纸打磨。擦拭干净后,使用深核桃色的木制油漆刷满表面,使其表面光滑并保持干燥。

这是给顶层上色的好时机。而且不会将整个扩散层弄脏。

5、给主云朵上色。胶水晾干后,使用木制油漆对主要云朵进行打磨和上色。

安装 Neopixel 灯环

1、将灯带放入云朵中确定所需要的长度,要让灯带覆盖到整个云朵。经过测量,需要要十九条灯带,考虑到要粘合的部分,最好预留一些长度,最终采用了二十条。

2、拆除灯带周围的橡胶保护带,再将电线添加到插排上以便连接到树莓派 Zero W 上。

3、将焊条的末端与电线的末端提前焊接在一起效果会更好。

4、将电线焊接到灯带。

5、在背面插板上涂一点热熔胶,以将 NeoPixel 灯条带固定到云朵的边缘。尽量的使条带尽可能靠近背板。如图所示,我应该在灯条上使用另一个 LED。

安装扩散层和顶层

1、将扩散层放置在图中的位置,并在顶部周围涂抹少量胶水。

2、将顶层固定好。确保其尽可能的与其他层对齐,并擦去多余的胶水。

焊接

1、如图所示,接线方式非常简单。
树莓派上 GPIO 18 针脚连接到 Din Neopixel
树莓派的 5V 连接到 Neopixel 的 5V
树莓派的 GND 连接到 Neopixel 的 GND

2、在焊接 USB 电线之前,需要先为其钻孔。我的线是 3mm 粗的线,所以我用 3mm 的钻头钻洞,并确保不要钻到 neopixel 灯带上。

3、切断没有插入计算机的公头的一端。然后去掉一些不需要的线。项目只需要红线(5V)和黑线(GND)。

4、焊接完成后的样子。

设置树莓派

将操作系统下载至 SD 卡。我使用的是:
https://www.raspberrypi.org/downloads/raspbian/

使用 etcher.io 的程序将图像刻录到 SD 卡。完成后,在启动目录中添加两个文件,以便树莓派启用 ssh 并提供正确的 wifi 信息。

使用文本编辑器打开 wpa_supplicant.conf 文件,输入 wifi 的 ssid 和密码。然后将文件添加到 sd 卡,启用 ssh。我们需要建立一个标有 ssh 的文件,因为 sd 卡上没有扩展名。

具体的详情你可以参考:
https://shumeipai.nxez.com/2017/09/13/raspberry-pi-network-configuration-before-boot.html

连接到树莓派
在树莓派中使用 putty 和 SSH 的程序。你可以访问以下网址,找到相关的操作文档。https://shumeipai.nxez.com/2013/09/07/using-putty-to-log-in-to-the-raspberry-pie.html

唯一的区别是,你可以找到树莓派的 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 &

所需的代码请在项目文件库中下载。
https://make.quwj.com/project/232

完成组装

1、使用记号笔找到中心做好标记。然后,我将锯齿框架挂钩和两个橡胶垫安装到位。

2、使用热熔胶将树莓派固定到位。将一小撮热胶放在树莓派的背面,然后将其连接到背面板上。

3、用螺丝刀给钉书钉留出空间。

4、将弯曲的订书钉固定背板。

5、给每朵云添加挂钩和两个橡胶垫,所有的云朵就完成了。

3D 打印

如果你没有木工 CNC 机床的访问权限,下面提供了 STL 文件。其中括 Autodesk Fusion 360 的设计文件。你也可以修改设计并优化打印。
STL 文件请在项目文件库中下载。
https://make.quwj.com/project/232

作者后话

我原本想用 esp8266 开发板来实现这个项目,但是我在 Arduino IDE 和 JSON 方面的技能不如树莓派。未来这个项目还会增加一些功能,例如在扩散层后的七段显示器上显示当前温度。

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

via

这是一篇发布于 4年 前的文章,其中的信息可能已经有所发展或是发生改变,请了解。


2 评论

  1. 你用树莓派的GPIO直接驱动这么多led确定可以? 是很容易烧坏板子的,还是这种密闭环境,运行时间长安全风险很大啊。你可以另加一个驱动芯片或者直接电源供电led

发表评论

你的邮件地址不会公开


*