制作一个室内外天气监测器
我想要一个小巧的桌面显示屏,无需解锁手机即可回答两个简单问题:
1. 我旁边这里有多暖和潮湿啊?
2. 目前香港的户外天气如何?
室内数据来自电路板上的真实传感器,而户外数据则来自开放天气API Open-Meteo。电路板通过以太网连接互联网,仅将电脑用作桥接设备(Wi-Fi共享至以太网端口)。正常使用时无需手机应用或电脑“推送天气”程序。
它做什么
•室内模式(左键,PA8):来自AHT20的实时温度和湿度。
•室外模式(右键,PC7):来自Open-Meteo的香港天气数据。
•屏幕顶部显示一个大型时钟。
•温度和湿度以两个清晰的卡片形式呈现。
•当Open-Meteo报告有降雨时,两页都会切换为灰色的雨天背景,并带有雨迹;晴天则保持蓝天和阳光。
室内数据每两秒更新一次。室外天气在启动时获取,之后每五分钟更新一次。
为什么使用以太网+电脑?
许多开发板通过Wi-Fi联网。本设计采用W55MH32的以太网接口替代Wi-Fi。
该开发板连接至电脑的以太网端口,而电脑仍保持Wi-Fi连接。Windows的互联网连接共享(ICS)功能为开发板分配DHCP地址,并将网络流量通过电脑转发。这是在桌面上无需额外添加路由器跳转的情况下,快速实现开发板联网的实用方法。
一旦DHCP正常工作,开发板便会建立一个普通的HTTP连接到Open-Meteo,读取温度、湿度、天气代码和降水情况,然后更新显示屏内容。
硬件
主板
•W55MH32-ADK 运行 MicroPython
•内置以太网(固件使用的 W5500 风格接口)
•两个用户按钮,用于室内外切换
传感器
软件
代码位于 `micropython` 下。
流程:
1. main.py 读取传感器和按钮,调用 net_weather 获取户外数据,并将数值传递给 UI 进行绘图。
2. main.py 先启动室内模式,然后开启以太网。每约2秒更新一次AHT20;每约5分钟重新获取一次Open-Meteo数据。PA8 = 室内,PC7 = 户外。
3. net_weather.py 会重置 W5500,通过 DHCP 获取 IP 地址,使用普通 HTTP 请求获取 Open-Meteo 数据,解析温度、湿度、天气和降水信息,并将最后的结果保存到 `/outdoor.txt` 文件中。
4. ui.py 负责绘制页面。Rain 是两种模式共用的主题,仅重新绘制已更改的部分,以保持 SPI 更新的轻量。
5. tools/rain_test.py 可在无网络的情况下预览雨景图形。
源代码中的逐步指导
上述每个主文件都包含代码内的详细步骤说明(启动顺序、以太网/DHCP、HTTP获取、UI重绘)。打开 .py 文件,按照这些注释进行引导式操作。
请阅读注释和 README 文件以获取更多信息。
如何从电脑共享互联网
1. 在 Windows 上,打开 `ncpa.cpl`。
2. 打开 Wi-Fi → 属性 → 共享。
3. 允许其他用户通过此计算机的互联网连接进行连接。
4. 选择以太网作为家庭网络连接。
5. 确认以太网地址约为 `192.168.137.1`。
6. 将板子的以太网线连接到电脑。
当板子启动时,你应该能看到DHCP成功,然后在串行控制台中看到Open-Meteo获取数据成功。
如何日常使用
1. 通过USB为电路板供电。
2. 等待室内页面出现。
3. 按下右侧按钮查看香港户外天气。
4. 按下左键返回室内。
5. 如果香港正在下雨,就尽情享受(或忍受)两页中那灰蒙蒙的雨景吧。
本文编译自hackster.io





