esp8266 天气_基于树莓派打造一朵预报天气的云

由于公众号文章的推送规则已经改成了不按照发布时间排序,所以为了大家能够准时收到我们的文章推送,请记得猛戳右下角的「在看」,并点击公号主页右上角的“ ... ”将 程序员极客实验室 设为星标~这样就不会错过每一篇精彩的推送啦~

作者:keebie81 转自/译者:趣无尽

c24acdb46515865acc8253cca2e9fefa.png

卧室有朵彩色的云会不会很可爱呢?就像晴天娃娃一样告诉你今天的天气。云朵基于树莓派 Zero W 构建,连接到 Yahoo Weather API 获取天气信息,再通过设定的不断变化的颜色告诉你天气变化的情况。 我觉得把云朵悬挂在家中的墙壁上会非常的好看。 云朵颜色变化所代表的天气信息如下:
  • 如果第二天温度比当日高 10%,就会变成红色。

  • 如果第二天温度比当日低 10%,就会变成金色。

  • 如果同时满足这两个条件,会保持红色。

  • 如果这两个条件都不满足,会保持蓝色。

  • 如遇雨或雪,它将会闪烁。

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

材料清单

3d77ff4d97ac42419f7395e6eaaf7d42.png

  • 树莓派 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

切割云朵

af0a1d4229dc3738f4ba758fdf12cd64.png

所有切割的图纸都在 svg 文件中。如图所示,云朵一共有四层。在第二层和第四层,内部路径和中间路径之间包含有 1/8″ 深的凹层。

以便将扩散层和背板嵌入其中。扩散层使用半透明亚克力板,用于光的漫反射,背板使用硬质纤维板。

989297a3bee2330764e281a8eeafc257.png

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

322581ad14e7f001a4baa814ea60eb6d.png

云朵形状的来源:http://www.softicons.com/web-icons/vector-stylish-weather-icons-by-bartosz-kaszubowski/cloud-icon

切割文件请在项目文件库中下载。https://make.quwj.com/project/232

组装云朵

f4353b8b67ed104ed5e38d5dd2fc8291.png

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

7aa720198c26e1b749cdadce9f0259e0.png

749f0015984045fb56cb0adc10471be8.png

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

c15af29bdf494d978675c89fa93c6e71.png

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

8eafc1d11fc59ac0b5caffff1512b6d6.png

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

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

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

安装 Neopixel 灯环

278e13adf88a2b9a6d704ea60de60100.png

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

c5919e23f0c07ffb5972c406912cdf71.png

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

7d6030c3937cd396e6cd6427499a387b.png

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

247b17e6f645fa8b07bdaa208b387055.png

4、将电线焊接到灯带。

aae4148742309fc5537f82e590aae4f5.png

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

安装扩散层和顶层

8333547b6ead08cfaad40eac7f40a8d9.png

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

c7bcc48745590157f0470952565cf735.png

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

焊接

254554af630986b1fd826789a196cf54.png

1、如图所示,接线方式非常简单。

树莓派上 GPIO 18 针脚连接到 Din Neopixel
树莓派的 5V 连接到 Neopixel 的 5V
树莓派的 GND 连接到 Neopixel 的 GND

13585b902d7cceeb1bb52c51608aef7e.png

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

c81134410c4105343e6b2c4c883bf22b.png

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

3a62a72d9cacbd7182d7f5046a2111be.png

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 引脚。

7c2228c71df8718d5e1a88bd65183565.png

如果 NeoPixels 的使用量不同,则更改 LED_COUNT。如果使用的 GPIO 引脚不同,请更改 LED_PIN。

be807d9796b6696db91cdc324bb2c62f.png

在第 72 行,你需要更改位置,如果你使用了 sheboygan 来预测天气。

运行代码

更改完毕后,就可以测试代码。

sudo python cloud.py

85722277aa30243ee696025827ce2009.png

现在,云朵应该会亮起来,在终端窗口中,你看到它输出了今天和明天的最高温度和最低温度。

设置开机自动运行

配置自动启动,添加下面的代码到 rc.local 文件中。

python /home/pi/cloud.py &

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

完成组装

49550eca2aa0799085b63ea38c24bf74.png

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

653d05989df8672153a39d34d6c81eee.png

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

f124ff6b0c31b2093cdaaabb2e8e3ea1.png

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

346aa6ca79cc70a912dbe8edeb60ab04.png

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

985ac722031fb5a8448e578b7659866f.png

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

本项目文件库地址:

http://maker.quwj.com/project/232

via instructables.com/id/Weather-Forecast-Cloud/

推荐阅读:(点击标题可跳转)


击败酷睿i9,苹果M1芯片为何如此优秀? 牛人 DIY 20000W 电灯,结果“亮”了 用树莓派自制云服务器,放进口袋随身带!

0c5a537d0ea8a982e4ff128ffd72b8ec.png

点赞和在看就是最大的支持

db22a0e990e55da1d4e4a1e7230d59f9.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值