项目>行空板 K10>行空板 K10 WiFi 与 SIoT 物联网

行空板 K10 WiFi 与 SIoT 物联网

摘要:讲清 K10 物联网链路上的几个卡点:SIoT 服务怎么启动、K10 怎么连 WiFi 与 MQTT、数据发到哪个主题、网页里去哪里看。图形化与 MicroPython 各给一套带预期结果的步骤,另附多板主题划分与消息格式的做法。

从 SIoT 到网页看板的完整链路

K10 做物联网,走的是一条连续链路:电脑上启动 SIoT 服务,K10 连入同一个局域网的 WiFi,作为 MQTT 客户端连上 SIoT,向主题发布数据,最后在浏览器里查看。图形化和 MicroPython 两种方式都能走通,下面按顺序给出每一步的操作与预期结果。

电脑和 K10 必须处在同一个局域网,这是整条链路成立的前提。

电脑端启动 SIoT 服务

SIoT 是 Mind+ 配套的本地 MQTT 服务端,跑在自己电脑上,发上来的数据会保存进数据库。第一步把它跑起来:

  1. 在电脑上运行 SIoT_V2 目录里的 start SIoT.bat,启动本地 SIoT 服务。
  2. 记下这台电脑的局域网 IP,在浏览器地址栏输入该 IP 加端口 8080,打开 SIoT 网页。
  3. 用默认账号 siot、默认密码 dfrobot 登录。这对凭据是 SIoT 服务的默认值,登录网页和后面 K10 连 MQTT 用的是同一套。

预期结果:网页正常打开并登录成功。电脑的局域网 IP 记下来,K10 连接 MQTT 时服务器地址填的就是它。

图形化:Mind+ 里连 WiFi 并发消息

  1. Mind+ 中加载 WiFi 与 MQTT 模块。
  2. 填入热点名与密码,让 K10 连上和电脑同一个局域网的 WiFi。
  3. MQTT 连接里,服务器填电脑的局域网 IP,账号 siot、密码 dfrobot。
  4. 用「MQTT发送消息…保存数据库(SIoT V2)」积木,把数值发到主题。

主题以 siot/ 开头,后面接自己起的名字,比如 siot/env。预期结果:发送后刷新 SIoT 网页,能看到这个主题以及刚发出去的消息。

官方 FAQ 提醒:屏幕显示类积木不要放进回调函数、线程、MQTT 接收这类 hat 积木里。收到消息先把值存进变量,回到主循环再刷新界面。

MicroPython:WiFi 与 MQTT 代码

官方 MicroPython 固件把 WiFi 和 MQTT 放在 k10_base 库里,示例代码如下:

from k10_base import WiFi,MqttClient
wifi = WiFi()
wifi.connect(ssid="DFRobot-guest",psd="dfrobot@2017",timeout=50000)
wifi.status()   # True/False
wifi.info()     # IP、子网掩码、网关等
mqttclient.connect(server="192.168.9.172", port=1883, client_id="", user="siot", psd="dfrobot")
mqttclient.received(topic='siot/test', callback=received_1ffdf0jpLa)
mqttclient.publish(topic='siot/test', content='hello')

预期结果:连接成功后 wifi.status() 返回 True,wifi.info() 打印出 IP、子网掩码、网关等信息;publish 执行后,SIoT 网页的 siot/test 主题下出现一条 hello。received 用来订阅主题,收到消息时执行 callback 指定的处理函数,函数名换成自己定义的即可,只发数据不接收时可以不用它。

代码里的热点名、密码、服务器 IP 都是官方示例的演示值,动手时要换成自己的 WiFi 名称、密码与电脑 IP;timeout 默认 10000 毫秒,示例中的 50000 只是给较慢的网络多留时间。

在 Thonny 里要把程序保存为 main.py 到 MicroPython 设备,只存在本地时重启后会丢。这套固件官方说明仍在测试阶段,可能有 bug;跑过之后想切回 Mind+ 图形化,要在 Mind+ V1 里「恢复初始设置」,或用 Mind+ V2 连接 K10 后「擦除」,恢复时先按住 BOOT 键再接数据线,识别出端口后松开。

多块板与大屏的消息设计

公开课程案例里有几条通用做法。多块板分区域监测时,各发各的主题,例如 siot/env_zone1、siot/env_zone2,大屏放多个图表组件分别订阅。温湿度想画在同一张图上,用逗号把两个值拼成一条「温度,湿度」消息,此时大屏图表的数据列数必须设为 2、列名对应温度与湿度,否则画不出双曲线。采样间隔按数据变化速率区分:光照变化快,一秒采一次也可以;温湿度变化慢,间隔可以拉长。做阈值告警时加一个变量记录上次的告警状态,只在状态变化时才发送,避免每轮采样都刷出一条相同的告警。

连不上时怎么查

  • 现象:wifi.status() 一直是 False。原因:K10 的 WiFi 只支持 2.4 GHz,路由器只开 5 GHz 时连不上。解法:确认 2.4 GHz 频段已开启。
  • 现象:SIoT 网页打不开或登录失败。原因:地址、端口或凭据不对。解法:访问电脑 IP 加 8080 端口,默认账号 siot、密码 dfrobot。
  • 现象:网页正常、K10 也联网了,消息却迟迟不到。原因:电脑与 K10 不在同一局域网,或 MQTT 服务器地址填错。解法:把两台设备接入同一个网络,并核对 server 填的电脑 IP。

链路走通之后,把传感器读数接进 publish,再按上面的主题划分与消息格式组织数据,就能搭出一套多点位的环境监测项目。

资料来源

  • Mind+ 官方文档
  • 行空板 K10 官方快速使用教程
  • 行空板 K10 官方 FAQ

相关内容

给特斯拉自动插枪的小车、“陆空两栖”四足机器人、到点捞菜的火锅机器实践基于行空板K10的地震波模拟探测装置实践行空板K10制作旋转展示台:语音控制灯光与转盘实践STEM教育 · 行空板M10:3D智能客厅课堂项目实践BME688传感器配行空板K10:室内环境监测实战实践ESP-Mosaico智能套件上手:AI编码与模块化扩展实践