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

行空板K10助力小区可视化服务展示平台 简单

头像 _深蓝_ 2025.02.12 26 0

一、项目背景与意义

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

图片.png
图片.png

二、项目简介

        学生将利用行空板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线具有数据传输功能。

62721d8a91dff6b26abda3ab84232e43.png

(二)行空板K10简介

b7e2da36299546823f8be1109a326c5e.png

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

969bc49876f1d677023387eaed32507c.png

行空板K10的主要特点包括:

集成摄像头与内置算法:可进行离线图像检测,如人脸、宠物及二维码识别。

离线语音识别与合成:双麦降噪设计确保高识别率,支持自定义命令词,可合成文字、数字等多种信息。

2.8英寸全彩显示屏:数据展示更清晰,为创意提供无限可能。

接口丰富,扩展性强:支持板载接口、金手指接口以及Gravity接口,便于连接各种外部设备。

多种编程方式:支持Mind+图形化编程和MicroPython编程,适合不同层次的学习者。

 

(三)、软件

使用Mind+图形化编程。Mind+是一款拥有自主知识产权的国产青少年编程软件,集成各种主流主控板及上百种开源硬件,支持人工智能(AI)与物联网(IoT)功能,既可以拖动图形化积木编程,还可以使用Python/C/C++等高级编程语言,是青少年学习编程和探索智能硬件的理想工具。

下载地址:

下载行空板K10公测版Mind+压缩包:

 

(四)、项目原理

新课标中,八年级主题为“物联网实践与探索”,物联网的原理架构如下图。

151206maa22m0tc33pakua.png

本例中行空板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。

61c2dddfacf4ac038e9937e8e5de7850.png

在浏览器输入10.189.57.57:8080打开网页端口,登录账号为siot,密码为dfrobot,打开后可以新建Topic或查看消息。10.189.57.57为本机IP。

2.绘制可视化大屏平台

通过使用简单的模块,将居民盼望知道的数据展示到大屏平台中,初步绘制图如下所示。

图片.png

 

3.项目编程

 

主程序:

图片.png

将行空板K10采集的数据上传到服务器中,并在可视化大屏中显示出来。

当夜晚需要采光时,可以通过可视化大屏系统打开照明。

图片.png

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

图片.png

 

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

图片.png

 

四、项目效果

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

IMG_20250213_003109.jpg

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

图片.png
图片.png
图片.png

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

图片.png

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

图片.png
图片.png
IMG_20250213_003620.jpg

 

五、项目改进

本项目有以下改进的方面

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);
}

评论

user-avatar