【DigiKey好物畅享】Seeed Wio Terminal 接入互联网获取天气数据

Wio Terminal 是 Seeed 推出的一块掌心大小的 Arduino/CircuitPython 兼容开发板,无线网络使用了 Realtek 的 RTL8720DN,支持 2.4GHz & 5GHz Wi-Fi和蓝牙5.0。

本项目使用 Wio Terminal 通过无线网络接入互联网获取实时的天气数据。

使用的天气数据 API 为腾讯天气,免费且可查询多种数据,weather_type 参数传入要查询的数据即可,可选的类型有:当前天气(observe)、未来48小时预报(forecast_1h)、未来七日预报(forecast_24h)、生活指数(index)、预警(alarm)、提示(tips)、日出日落时间(rise)、空气质量数据(air),多参数查询使用“|”分割。

这里为了方便开发,在 PC 上运行了一个服务端转发从天气 API 获取的数据:

在局域网内访问 PC 的 5000 端口即可获得天气 API 返回的数据,避免了 Wio Terminal 直接访问天气 API 需要进行 SSL 认证的问题。如果不想在 PC 上运行一个中间层,直接在 Wio Terminal 上请求 HTTPS 网站也很简单,只需要使用命令“openssl s_client -showcerts -verify 5 -connect www.example.com:443 < /dev/null”就可以获得指定网站的根证书(需要安装 openssl),在 Wio Terminal 网络请求程序前使用 client.setCACert(root_ca) 设置证书即可。

Seeed 官方的 LCD 屏幕库存在 BUG,所以这里使用了 LovyanGFX 库,LovyanGFX 比官方库相比支持更多高级用法。

同时,利用 Wio Terminal 的按键实现翻页效果显示更多数据:

为了高效处理网络请求和屏幕绘图,使用了 FreeRTOS,由于官方 Wi-Fi 库底层使用了 FreeRTOS,所以在使用 Wi-Fi 库时,无需手动引入 FreeRTOS,直接使用 xTaskCreate() 创建任务即可。