回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

使用行空板K10快速搭建《京师宣实小型在线数字气象站》 | MQTT 简单

头像 程军老师 2025.01.19 65 0

1.项目背景

        随着科技的发展,人工智能走进我们的生活,与我们息息相关。特别是在2024年第教育部办公厅公布的《教育部办公厅关于加强中小学人工智能教育的通知》里强调了要在2030年前要全面普及人工智能教育,文件还分项解释了具体实施步骤。

        《京师宣实小型在线数字气象站》是义务教育信息科技科技标准(2022年版)里跨学科主题第四学段“在线数字气象站”。

image.png

 

2.器材介绍

2.1 行空板K10

        行空板K10是一款专为快速体验和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等人工智能项目。

image.png

 

3.需求分析

        在创作前期与地理学科老师有过沟通,希望能够有采集设备实时读取当前环境的信息(含温/湿度、光照、气压等),无人值守完成读取并储存一天的气象数据值,探究当日在四季中气象数据的变化。设备放在校园开阔、平坦的路面,且采集设备无遮挡。

 

3.1采集设备

        行空板K10板载较多传感器,因此本作品使用K10用作采集设备。

 

3.2服务端

        使用MQTT协议进行数据通信,采用SIOT V2,此前已经测试过两种方式,一是使用行空板M10用作服务端(注:行空板M10默认SIOT V1,需要手动升级);二是使用Windows批处理开启SIOT V2服务端。

        本作品使用第二种。

 

3.3.可视化大屏

        使用Mind+图形化(类Scratch)用作编程工具,在软件内内置可视化大屏入口,更有丰富的组件供用户选择。

 

4.硬件清单/说明

        板载传感器

image.png

 

4.1温度传感器 * 1 (板载)

        读取的数值实时发送到MQTT服务器。受行空板发热影响,经测试,读取温度比实际温度高10-15度,因此在处理数据时做适当降低。

 

4.2湿度传感器 * 1 (板载)

        读取的数值实时发送到MQTT服务器。

 

4.3光照传感器 * 1 (板载)

        读取的光照值用作反应当天的光线强度,因此还需要创建函数进行光线分析,不仅要将读取的数值实时发送到MQTT服务器,还要将分析的结果值发送给MQTT。例如:较弱、强烈、一般等等。

 

4.4气压传感器 * 1 (扩展)

        读取的数值为ka,但数据较大,需要将数据除以1000并取2为小数。然后将处理的数据实时发送到MQTT服务器。

image.png

 

4.5水分传感器 * 1 (扩展)

        水分传感器反应的是当前环境下雨的概率情况,所以不仅要将数据进行传输,而且还需要创建函数,分析降水概率,并将降水概率百分比数值发送到MQTT。

image.png

 

4.6海拔高度 * 1 (附加)

        海拔高度的获取依附MEB280传感器获取,作为扩展项,数值向下或向上取整,并传输到MQTT。

 

5.设计过程

        行空板K10板载温/湿度传感器、环境光传感器,将MEB280传感器插入K10的4pin IIC口、水分传感器插入3pin的P0/1口。此时行空板还多出一个P口,可以预留。

 

5.1传感器数据获取

        串口打印获取的传感器数据,调试无误后输出在屏幕。此处注意,由于温度传感器板载,受发热影响,温度需要减10-15,此处推荐先减10做调试。

 

5.2 MQTT协议

        我们可以先看一下百科对于MQTT协议的支持

image.png

        因此我们可以利用MQTT协议完成的事情很多,你可以用硬件来局域网内的其他智能硬件,也可以用局域网后台来控制连接订阅MQTT协议的其他设备,可玩性非常高,可以完成的创客作品也丰富多样。蘑菇云为我们推荐了一些经典案例,如“智能家居”、“物联网农业”等等,也非常推荐大家去阅览。

 

6.具体实施

        我想利用行空板K10实现监测校园的温度、湿度、光感强度等信息,实时显示在屏幕上,同时将数据传输到后台可视化看板,在线监测。

 

6.1行空板K10布局

        先从最简单的页面布局开始:标题|模块

image.png

        页面内容属于静态模块化,在这里也非常推荐进行封装,定义成函数。

        有很多同学提出,为什么在屏幕上写完字后有灰色的背景块?

image.png

        关闭“自动清除”即可。

image.png

 

6.2连接局域网和MQTT

        在设计此功能时,最初想法是创建变量,默认是“未获取到”/“未连接”,等到获取到了,再更新变量,变成IP和“MQTT连接成功”。但是在实际操作时,不知道为什么所有的文字堆到一个屏幕后,怎么文字不显示,非常让人恼火,不过后来想到咱们可以转变思路,改成用板载LED灯显示状态不就行了吗?

        默认3颗亮红灯,WIFI连接成功,第2颗LED亮绿灯,MQTT也完成了连接,3颗灯全亮绿灯。这是一个非常不错的方法,也非常大家使用。

image.png

 

6.3数据获取

        将获取到的传感器数据值显示在行空板上,针对每一组数据,封装一个函数,方便调用。

image.png

        温度做调整,减去板载温度的误差。

image.png

        注意:环境光不仅要获取数值,还要进行判断处于什么范围,表达的是什么内容,以下判断根据实际得出的结论。

image.png

 

6.4行空板画面预览

image.png

 

6.5 MQTT创建与订阅

        在前面说过,使用SIOT V2有两种方式,本实验使用Windows开启MQTT,用作服务端。

image.png

        查看服务器IP地址,现在是将电脑当作服务器,因此将本机的IP在网页中,添加端口号查看8080。

        根据命令窗口提示,在浏览器中打开:

        192.168.31.185:8080

image.png

        账号:siot

        密码:dfrobot

image.png

        在这里遇到一些问题,为什么MQTT无法进入,我总结了一些方法供各位参考

        (1).本机防火墙是否关闭

        (2).防火墙是否放行了MQTT的BAT批处理文件

        (3).是否安装虚拟机软件,如Vmware、vbox等,使用前请先禁用他们的网卡

image.png

        创建主题。

image.png

        创建后,需要在程序内订阅与数据储存。

image.png

        MQTT参数里的Topic最多可以设置5个,0-4,那如果不够用怎么办?需要再手动订阅。

image.png

 

6.6可视化面板

image.png

        创建气象站项目

image.png

        选择好MQTT服务器的信息

image.png

 

7.完整积木

image.png

 

8.可视化数据看板

image.png

        此前可视化大屏获取不到数据,需要查看是否保存到数据库这个选项,需要选择!

 

9.行空板数据

image.png

 

10.设备部署

        部署前需要考虑外接电源情况,可以使用Type-C连接充电宝,也可以使用2pin口连接行空板K10电源接口。本实验使用外接电源。

image.png

 

11.采集设备全貌

image.png
image.png
image.png
image.png
image.png

 

评论

user-avatar