一、项目背景与意义
随着物联网技术的飞速发展,智能化生活正在逐步普及,深刻改变着人们的日常生活方式。物联网通过将各种设备连接到互联网,实现了设备之间的互联互通,极大地提升了生活便利性和效率。在此背景下,本项目紧密结合《义务教育信息科技课程标准(2022年版)》中八年级“物联网应用探索”单元的教学要求,以“在线数字气象站”为主题,聚焦小区的实际需求,开展深入探究。通过物联网技术,设计并实现一个“小区可视化服务展示平台”系统,选用K10行空板和Mind+平台作为技术支撑,借助物联网SIOT V2可视化面板数据大屏,实现数据的实时采集、传输与展示。通过MQTT协议的设置,学生能够直观地理解物联网技术在居民小区生活中的实际应用,掌握物联网设备之间的通信机制,从而提升学生的信息科技素养和跨学科实践能力。本项目不仅有助于学生将理论知识与实际应用相结合,还能激发学生对物联网技术的兴趣,培养他们的创新思维和解决实际问题的能力。通过亲身体验物联网技术在小区服务中的应用,学生能够更好地理解物联网技术的价值和潜力,为未来的学习和生活打下坚实的基础。


二、项目简介
学生将利用行空板K10设计并实现一个“小区电子展示平台设计”,通过物联网siotV2可视化面板数据大屏实时展示当时温度、湿度、光线值,在拓展提升环节,还可以让同学们加入声强传感器、空气质量传感器、测量空气PM2.5传感器等。本例仅通过行空板k10自带的温度传感器、湿度传感器和光强传感器检测温湿度和光线值,并把数据发送到物联网SIOT平台,管理人员可以调试行空板K10实时监测的数据。在SIOT平台发布公告,以及地震预警信息,也可以通过地震预警按钮将地震信息发送到K10客户端或者其他接入该SIOT平台的用户端。
三、项目制作过程
(一)硬件
行空板K10 购买链接:https://www.dfrobot.com.cn/goods-4014.html
本项目在选择主控时,第一考虑功能齐全,主控需要有部分传感器,可以连接wifi网络,加入mqtt服务等物联要求。第二考虑足够简单,不必复杂的接线。以及区分数字信号或模拟信号。连接I2C口或者其他端口。学生在有限的时间里,将全部的精力投入到物联网的规划和编程里边。
基于以上考虑,我选择行空板K10作为运行该项目的主控,连接该主控更简单,使用官方数据线将行空板K10连接到电脑即可。请确保USB线直接插到电脑的USB口,不要使用延长线或者拓展坞等中间组件,确保USB线具有数据传输功能。

(二)行空板K10简介

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

行空板K10的主要特点包括:
集成摄像头与内置算法:可进行离线图像检测,如人脸、宠物及二维码识别。
离线语音识别与合成:双麦降噪设计确保高识别率,支持自定义命令词,可合成文字、数字等多种信息。
2.8英寸全彩显示屏:数据展示更清晰,为创意提供无限可能。
接口丰富,扩展性强:支持板载接口、金手指接口以及Gravity接口,便于连接各种外部设备。
多种编程方式:支持Mind+图形化编程和MicroPython编程,适合不同层次的学习者。
(三)、软件
使用Mind+图形化编程。Mind+是一款拥有自主知识产权的国产青少年编程软件,集成各种主流主控板及上百种开源硬件,支持人工智能(AI)与物联网(IoT)功能,既可以拖动图形化积木编程,还可以使用Python/C/C++等高级编程语言,是青少年学习编程和探索智能硬件的理想工具。
下载地址:
下载行空板K10公测版Mind+压缩包:
- 网页下载(20250103版):点击下载
- 百度网盘下载(20250103版): https://pan.baidu.com/s/15ORx5VbobeZjiQvOxar21g?pwd=d2aa 提取码: d2aa
- 夸克网盘下载(20250103版): https://pan.quark.cn/s/db00cf6ae510
- 详细安装介绍请打开行空板K10维基百科:https://wiki.dfrobot.com.cn/_SKU_DFR0992_%E8%A1%8C%E7%A9%BA%E6%9D%BFK10#4.%E8%BD%AF%E4%BB%B6%E5%87%86%E5%A4%87
(四)、项目原理
新课标中,八年级主题为“物联网实践与探索”,物联网的原理架构如下图。
本例中行空板K10搭载的传感器采集数据,上传到物联网平台,即扮演了传感器的角色,又可以从可视化大屏反馈信息,如开灯等,扮演了执行器的角色。角色合二为一,简化了项目。
(五)、项目siot服务器安装及Mind+编程
1.siot服务器安装(MQTT设置)
下载SIoT V2版本 :
下载链接:
腾讯微云下载(推荐):
链接: https://share.weiyun.com/6SFhgLQj
百度云盘下载:
链接:https://pan.baidu.com/s/17clVjJXWTZh02FteKy3mcA?pwd=mind
提取码:mind
阿里云盘下载:
https://www.aliyundrive.com/s/tCqwJwGtZzL
提取码: 3h4x
谷歌云盘下载:
链接: 点击下载
启动SIoT V2
在电脑上运行SIoT,在Windows上运行时容易出现网络连接问题,不推荐,优点是不依赖其他硬件。下载后win版本的SIoT V2解压,双击start SIoT.bat**即可启动新版SIoT,启动之后会弹出小黑窗启动服务器。注意运行的是start SIoT.bat而不是main.exe。

在浏览器输入10.189.57.57:8080打开网页端口,登录账号为siot,密码为dfrobot,打开后可以新建Topic或查看消息。10.189.57.57为本机IP。
2.绘制可视化大屏平台
通过使用简单的模块,将居民盼望知道的数据展示到大屏平台中,初步绘制图如下所示。

3.项目编程
主程序:

将行空板K10采集的数据上传到服务器中,并在可视化大屏中显示出来。
当夜晚需要采光时,可以通过可视化大屏系统打开照明。

当有地震来临时,管理员可以按可视化大屏的地震预警按钮,在可视化大屏公告栏中和行空板K10可视化平台数据中心会出现有地震预警消息。

同时管理员也可以登录siotv2数据管理平台,到公告主题下发布公告。

四、项目效果
1.项目完成了行空板K10采集温湿度和光照度。

2.行空板K10将温湿度和光照度数据上传并保存到数据库。



3.可视化大屏可以展示本地温湿度和光照度,光照度通过水波图更清晰的展示光照的变化。

4.可视化大屏可以展示管理员发的公告信息。管理员可以从大屏系统控制行空板K10用来采光。



五、项目改进
本项目有以下改进的方面
1.本项目使用传感器较少,不能满足居民对居住环境质量数据采集的需求。可以加入扩展板,加入更多的传感器用来采集数据。
2.本项目并未从居民的角度出发,应该为居民设置告知的设备,如门禁连接的可视化屏幕。将公告和警报接入居民的家中,方便接收数据和警报。
3.本项目可视化大屏系统美化和行空板K10数据中心的美化欠缺,后期可以让学生从这几个方面下功夫,让项目焕然一新。
六、程序代码
/*!
* MindPlus
* esp32s3bit
*
*/
#include <DFRobot_Iot.h>
#include "unihiker_k10.h"
// 函数声明
void DF_K10JieMian();
void obloqMqttEventTsiot472903126126(String& message);
uint32_t rgbToColor(uint8_t r, uint8_t g, uint8_t b);
void obloqMqttEventTsiot472084421578(String& message);
// 静态常量
const String topics[5] = {"siot/噪声强弱等级","siot/湿度","siot/温度","",""};
// 创建对象
DFRobot_Iot myIot;
UNIHIKER_K10 k10;
AHT20 aht20;
uint8_t screen_dir=2;
// 主程序开始
void setup() {
k10.begin();
k10.initScreen(screen_dir);
k10.creatCanvas();
myIot.setCustomMqttCallback(obloqMqttEventTsiot472903126126, "siot/照明");
myIot.setCustomMqttCallback(obloqMqttEventTsiot472084421578, "siot/公告");
DF_K10JieMian();
Serial.begin(9600);
myIot.wifiConnect("ChinaNet-Q4Yt", "gyqwnfpt");
while (!myIot.wifiStatus()) {}
if (myIot.wifiStatus()) {
myIot.init("192.168.1.26","siot","03196459731381163","dfrobot", topics, 1883);
myIot.connect();
while (!myIot.connected()) {}
if (myIot.connected()) {
Serial.println("连接Mqtt");
myIot.subscribeTopic("siot/照明");
myIot.subscribeTopic("siot/公告");
while (1) {
myIot.publish("siot/温度", aht20.getData(AHT20::eAHT20TempC), 1);
myIot.publish("siot/湿度", aht20.getData(AHT20::eAHT20HumiRH), 1);
myIot.publish("siot/环境光", k10.readALS(), 1);
k10.canvas->canvasText((String("温度:") + String(aht20.getData(AHT20::eAHT20TempC))), 3, 0x0000FF);
k10.canvas->canvasText((String("湿度:") + String(aht20.getData(AHT20::eAHT20HumiRH))), 4, 0x0000FF);
k10.canvas->canvasText((String("光照度:") + String(k10.readALS())), 5, 0x0000FF);
k10.canvas->updateCanvas();
delay(5000);
}
}
}
else {
k10.canvas->canvasText("网络不成功", 0, 0, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
k10.canvas->updateCanvas();
}
}
void loop() {
}
// 自定义函数
void DF_K10JieMian() {
k10.canvas->canvasClear();
k10.canvas->canvasText("小区可视化平台数据中心", 1, 0x0000FF);
k10.canvas->canvasText("传感器数据:", 2, 0x0000FF);
k10.canvas->canvasText("公告:", 7, 0x0000FF);
}
// 事件回调函数
void obloqMqttEventTsiot472903126126(String& message) {
if ((message==String("on"))) {
k10.rgb->write(-1, rgbToColor(round(255), round(255), round(255)));
}
if ((message==String("off"))) {
k10.rgb->write(-1, rgbToColor(round(0), round(0), round(0)));
}
}
void obloqMqttEventTsiot472084421578(String& message) {
k10.canvas->canvasText(message, 8, 0x0000FF);
k10.canvas->updateCanvas();
}
// Static functions
uint32_t rgbToColor(uint8_t r, uint8_t g, uint8_t b)
{
return (uint32_t)((((uint32_t)r<<16) | ((uint32_t)g<<8)) | (uint32_t)b);
}
评论