要做的东西
一块 K10、一根数据线、一台跑着 SIoT 的电脑,不外接任何模块。板子周期性读温湿度与环境光,本地屏幕显示数值,超阈值时亮 RGB 灯并推一条告警,同时把数据发到局域网的 SIoT,电脑大屏上看曲线。
这个形态在官方与公开课程案例里很常见,校园气象站、智能温室大棚、桌面智慧台历都是同一套骨架。好处是几乎把 K10 的板载资源全用上了,又不依赖额外硬件,特别适合做阶段性的综合练习。
先画数据流再写程序
- 上电连 WiFi,注意只支持 2.4 GHz
- 连接 SIoT 服务,确认账号、密码与主题名
- 循环读取温湿度与环境光
- 本地判断阈值,异常时亮灯并推送告警
- 把数值发到数据主题,屏幕在循环末尾统一刷新
- 加延时,按数据变化快慢分别设采样周期
关键是把采集、判断、上报、显示拆成四段,任何一段出问题都能单独测。别一上来就写成一个大循环,出了毛病根本定位不到。
主题怎么分
| 主题 | 内容 | 大屏组件 |
|---|---|---|
| siot/light | 环境光单值 | 仪表盘或数值 |
| siot/env | 温度与湿度,逗号拼接 | 图表,数据列数设为 2 |
| siot/alert | 告警文本 | 提醒组件 |
温湿度两个数要拼成一条形如「温度,湿度」的消息,大屏图表的数据列数必须设成 2、列名分别对应温度与湿度,否则画不出双曲线。这是整个项目最容易卡住的一处配置,数值发对了却看不到曲线,先查这里。
最小可运行示例:读值、显示、上报各跑一遍
按 MicroPython 路线分两段跑。第一段不依赖网络,先在板上读三个板载传感器并把数值显示到屏幕;第二段再按「行空板 K10 WiFi 与 SIoT 物联网」页的官方示例把数值发到 SIoT。
from unihiker_k10 import temp_humi, light, screen
screen.init(dir=2)
temp = temp_humi.read_temp()
humi = temp_humi.read_humi()
lux = light.read()
screen.draw_text(text="T:%s H:%s L:%s" % (temp, humi, lux), x=10, y=0, font_size=24, color=0xFF0000)
screen.show_draw()
上报前先在电脑上用 start SIoT.bat 启动 SIoT,浏览器打开电脑 IP 的 8080 端口,用默认账号 siot、密码 dfrobot 登录。上报这一段沿用「行空板 K10 WiFi 与 SIoT 物联网」页的官方示例:先按该页的 WiFi 与 MQTT 代码连上 WiFi 和局域网里的 SIoT 服务,再用 mqttclient.publish(topic="siot/env", content="%s,%s" % (temp, humi)) 把上面读到的温度、湿度按「温度,湿度」格式发到 siot/env。官方示例里的 mqttclient.connect(...) 片段,以及服务器 IP、账号 siot、密码 dfrobot,都在该页逐字列出;示例里的热点名、密码、服务器 IP 都是演示值,照做时换成自己的 WiFi 名称、密码与电脑 IP。
按运行顺序,每一步的预期结果:
- 读值:temp_humi.read_temp()、read_humi() 拿到摄氏温度与相对湿度,light.read() 拿到环境光数值。
- 屏幕显示:draw_text 把三个读数写进缓存,show_draw() 提交后屏幕显示这一行读数。
- 上报:mqttclient.publish 把温度、湿度按「温度,湿度」发到 siot/env,刷新 SIoT 网页能看到这个主题和刚发出的消息。
整体验下来,屏幕留着那行读数、网页 siot/env 下出现一条消息,这一轮就算通了,可以按联调顺序往下加阈值告警和大屏组件。要持续监测,把读值、显示与上报这一轮放进循环,按前面数据流里定的采样周期加延时。
三个让项目变稳的细节
- 采样间隔分开设:光照变化快可以一秒一次,温湿度变化慢可以拉长,既省算力也让曲线更好看
- 告警加状态变量:只在从正常变成异常时发一次,避免每轮循环重复刷屏
- 界面统一在主循环刷新:MQTT 收到消息先存变量,别在接收回调里直接刷屏
板载温湿度传感器会受主板自身发热影响,若要更高精度,可按站内实测文章的做法外接温湿度传感器做校正。
联调顺序
- 先只做本地读值加屏幕显示,完全不联网
- 再加 WiFi 与 SIoT 连接,确认网页能收到一条数据
- 再加阈值告警与 RGB 灯反馈
- 最后配大屏组件与曲线
每轮只加一个变量,比全功能一起上快得多。前面各页讲过的端口、烧录、2.4 GHz、TF 卡这些坑,在这个阶段会集中冒出来,按现象回故障排查页查就行。
还能往哪扩
- 多台 K10 用不同主题,比如 siot/env_zone1 与 siot/env_zone2,大屏放多个图表做分区监测
- 加语音播报或二维码识别,做成交互入口
- 由大屏下发指令反向控制设备,形成双向闭环
这些都是公开案例里验证过的方向,按需要挑一个加就好,别一次全堆上。
下一步
项目跑通后若遇到异常,去行空板 K10 常见问题与故障排查按现象排查;想回看整体路线,参考行空板 K10 快速开始。