本帖最后由 驴友花雕 于 2026-6-8 10:53 编辑
代码解读
一、整体功能
本程序让行空板 K10 连接 WiFi,从云端服务器在线查询福州天气预报(天气状况、最高温、最低温);同时读取外接 AHT20 温湿度传感器、板载环境光传感器的实时数据,所有信息实时显示在屏幕上,程序循环刷新内容。
二、头文件与对象定义
- // 引入WiFi物联网库,实现无线网络连接
-
- #include <DFRobot_Iot.h>
-
- // 行空板K10核心库,负责屏幕、画布、板载传感器等硬件控制
-
- #include "unihiker_k10.h"
-
- // 网络天气查询专用库,对接云端天气接口
-
- #include <mPython_Weather.h>
-
- // NTP网络授时库,可同步标准北京时间(本程序暂未调用时间功能)
-
- #include <MPython_NtpTime.h>
-
-
-
- // 实例化K10主控对象,操作主板所有硬件
-
- UNIHIKER_K10 k10;
-
- // 设置屏幕旋转方向为2,适配设备摆放角度
-
- uint8_t screen_dir=2;
-
- // 实例化WiFi对象,用于配网和联网状态检测
-
- DFRobot_Iot myIot;
-
- // 实例化天气查询对象,发起网络天气请求
-
- mPython_Weather myWeather;
-
- // 实例化网络时间对象
-
- MPython_NtpTime ntptime;
-
- // 实例化AHT20温湿度传感器对象,读取环境温湿度
-
- AHT20 aht20;
复制代码
三、setup () 初始化函数(上电仅执行 1 次)
- void setup() {
-
- // 初始化K10底层硬件
-
- k10.begin();
-
- // 按设定方向初始化显示屏
-
- k10.initScreen(screen_dir);
-
- // 创建绘图画布,屏幕文字都绘制在画布上
-
- k10.creatCanvas();
-
- // 设置屏幕背景色为浅草绿色(0x66FF99)
-
- k10.setScreenBackground(0x66FF99);
-
-
-
- // 连接WiFi:WiFi名称zhz3,密码z6156721
-
- myIot.wifiConnect("zhz3", "z6156721");
-
-
-
- // 初始化天气接口:依次填写服务器地址、用户编号、接口密钥,完成云端对接
-
- myWeather.init("server.mindplus.top", "31982666", "E6MtBcxQ");
-
-
-
- // 配置网络授时:东八区北京时间,使用国内教育网时间服务器
-
- ntptime.setNtpTime(ntptime.UTCEast8_t, "edu.ntp.org.cn");
-
-
-
- // 循环等待,直到WiFi连接成功,才继续执行后续代码
-
- while (!myIot.wifiStatus()) {}
-
- }
复制代码
四、loop () 主循环函数(无限循环运行,实时刷新数据)
- void loop() {
-
- // 第3行、红色字体,显示实验标题
-
- k10.canvas->canvasText("K10系列实验之天气", 3, 0xFF0000);
-
-
-
- // 第5行、蓝色字体:查询城市编码101230101(福州)的天气状况并显示
-
- k10.canvas->canvasText((String("福州天气:") + String(myWeather.getWeather("weather", "101230101"))), 5, 0x0000FF);
-
- // 第6行、红色字体:查询福州当日最高气温
-
- k10.canvas->canvasText((String("最高温度:") + String(myWeather.getWeather("temperaturHigh", "101230101"))), 6, 0xFF0000);
-
- // 第7行、蓝色字体:查询福州当日最低气温
-
- k10.canvas->canvasText((String("最低温度:") + String(myWeather.getWeather("temperaturLow", "101230101"))), 7, 0x0000FF);
-
-
-
- // 刷新画布,将上方天气内容显示到屏幕
-
- k10.canvas->updateCanvas();
-
-
-
- // 第9行、蓝色字体:读取AHT20采集的实时摄氏温度
-
- k10.canvas->canvasText((String("实际温度:") + String(aht20.getData(AHT20::eAHT20TempC))), 9, 0x0000FF);
-
- // 第10行、红色字体:读取AHT20采集的实时空气湿度
-
- k10.canvas->canvasText((String("实际湿度:") + String(aht20.getData(AHT20::eAHT20HumiRH))), 10, 0xFF0000);
-
- // 第11行、蓝色字体:读取K10板载光敏传感器,获取环境亮度值
-
- k10.canvas->canvasText((String("实际亮度:") + String(k10.readALS())), 11, 0x0000FF);
-
-
-
- // 再次刷新画布,把温湿度、亮度数据显示到屏幕
-
- k10.canvas->updateCanvas();
-
- }
复制代码
五、关键知识点补充
1、城市编码
101230101 是气象专用编码,固定对应福州市,更换城市只需修改该编码。
2、天气查询函数
getWeather(查询项,城市编码)
weather:获取晴、阴、雨等天气现象
temperaturHigh:当日最高气温
temperaturLow:当日最低气温
3、传感器说明
AHT20:外接数字温湿度传感器,采集本地实时温湿度;
ALS 光敏:K10 板载传感器,数值越大代表环境光线越亮。
4、颜色格式
采用 0xRRGGBB 十六进制色值:FF0000红色、0000FF蓝色、66FF99浅绿。
5、运行前提
设备必须连接名称为zhz3的 WiFi,否则无法联网获取天气数据。
|