818浏览
查看: 818|回复: 17

[K10项目分享] 【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

[复制链接]
【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1

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

主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好


【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图2

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 17:48:51

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

网络服务 MQTT相关积木

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1

网络服务 Wi-Fi 相关积木


【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 17:50:10

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

辅助:屏幕显示相关积木

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 17:51:19

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

知识点:MQTT

MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,广泛应用于物联网(IoT)设备之间的数据通信。以下是一些关于MQTT的关键知识点:
1. 基本概念
发布/订阅模式:MQTT 采用发布/订阅的消息传输方式。设备可以向主题发布消息(发布者),也可以订阅主题来接收消息(订阅者)。
主题(Topic):主题是消息的分类标签,发布者和订阅者通过主题进行消息的传递和接收。主题结构类似目录路径,如 home/livingroom/temperature。
消息代理(Broker):MQTT 代理是服务器,负责接收发布者发送的消息并将其转发给相应的订阅者。

2. 特点
轻量级:MQTT 设计非常轻量,适用于资源受限的设备,如嵌入式系统和传感器。
低带宽需求:由于消息头部较小,MQTT 非常适合网络带宽有限的环境。
可靠性:MQTT 提供三种服务质量(QoS)级别,确保消息的可靠传输:
QoS 0:最多一次(消息可能丢失或重复)
QoS 1:至少一次(消息可能重复)
QoS 2:只有一次(确保消息不丢失且不重复)

3. 工作原理
连接建立:客户端与 MQTT 代理建立连接。
消息发布:发布者向代理发送消息,并指定消息的主题。
消息转发:代理将消息转发给所有订阅了该主题的客户端。
连接断开:客户端与代理断开连接。

4. 常见应用场景
物联网设备通信:用于传感器数据收集、设备状态监控和控制指令发送。
智能家居:用于连接智能家居设备,实现设备之间的数据交互和控制。
远程监控:用于远程监控和控制工业设备、环境参数等。

5. 安全性
身份验证:通过用户名和密码进行客户端身份验证。
加密通信:使用 TLS/SSL 加密客户端与代理之间的通信,确保数据传输的安全性。
访问控制:使用访问控制列表(ACL)控制客户端对主题的发布和订阅权限。

6. 实现方式
客户端库:许多编程语言(如 Python、C、JavaScript 等)都有 MQTT 客户端库,方便开发者使用。
代理软件:常见的 MQTT 代理软件有 Mosquitto、HiveMQ、EMQ X 等,提供强大的消息传输和管理功能。

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 17:53:35

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

知识点:Siot 平台

SIoT(Simple Internet of Things)平台是一个开源的、跨平台的MQTT服务器程序,专为教育和物联网应用设计。以下是关于SIoT平台的关键知识点:
1. 基本概念
SIoT:全称为Simple Internet of Things,旨在简化物联网设备之间的通信和数据传输。
MQTT协议:SIoT平台基于MQTT协议,采用发布/订阅模式,适用于资源受限的设备和网络环境。

2. 特点
跨平台:支持多种操作系统,包括Windows、Mac、Linux等。
一键启动:无需复杂的配置和安装,下载解压后即可使用。
开源免费:SIoT平台是开源的,用户可以自由下载、使用和修改。
易于使用:适合中小学物联网技术教学,帮助学生理解物联网原理并开发创意应用。

3. 工作原理
发布/订阅模式:设备通过主题(Topic)进行消息的发布和订阅,消息代理(Broker)负责接收和转发消息。
数据存储:支持SQLite和MySQL数据库,所有物联网消息数据都可以在线导出。

4. 应用场景
教育:帮助中小学生理解物联网原理,进行物联网项目开发。
智能家居:连接和控制智能家居设备,实现自动化和远程控制。
环境监测:收集和分析环境数据,如温度、湿度、空气质量等。

5. 安装与配置
下载与安装:从官方渠道下载SIoT平台,解压后运行即可使用。
配置:通过浏览器访问SIoT管理页面,进行主题和设备的配置。

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 18:38:51

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

一、下载siot:https://mindplus.dfrobot.com.cn/siot

SIoT为一个为中小学STEM教育定制的跨平台的开源MQTT服务器程序,S指科学(Science)、简单(Simple)的意思。SIoT支持Win10、Win7、Mac、Linux等操作系统,支持虚谷号、树莓派等迷你电脑,一键启动,无需注册和设置即可使用。


【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 18:40:27

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

二、启动siot

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 18:55:27

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

三、关闭防火墙

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:12:08

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

【花雕动手做】行空板K10系列实验之通过Siot物联网服务平台读取MQTT发送的光强消息
实验开源代码

  1. #include <DFRobot_Iot.h>  // 引入DFRobot_Iot库,用于Wi-Fi连接及MQTT通信
  2. #include "unihiker_k10.h" // 引入UNIHIKER_K10库,用于控制行空板K10系列硬件,如屏幕显示、画布操作等
  3. // 函数声明
  4. void obloqMqttEventTqguh5(String& message);  // 声明一个回调函数,用于处理MQTT接收到的消息
  5. // 静态常量
  6. const String topics[5] = {"K10/001","K10/002","","",""};  // 定义一个包含5个主题的静态常量数组,用于存储MQTT主题
  7. const MsgHandleCb msgHandles[5] = {obloqMqttEventTqguh5,NULL,NULL,NULL,NULL};  // 定义一个包含5个回调函数的静态常量数组,用于处理不同主题的消息
  8. // 创建对象
  9. uint8_t screen_dir = 3;           // 定义屏幕方向变量,设置为3
  10. UNIHIKER_K10 k10;                 // 创建UNIHIKER_K10对象,用于操作行空板K10功能
  11. DFRobot_Iot myIot;                // 创建DFRobot_Iot对象,用于处理Wi-Fi连接及MQTT通信功能
  12. // 主程序开始
  13. void setup() {
  14.     k10.begin();                          // 初始化k10硬件
  15.     myIot.setMqttCallback(msgHandles);    // 设置MQTT回调函数数组
  16.     k10.initScreen(screen_dir);           // 配置屏幕方向,参数为screen_dir
  17.     k10.creatCanvas();                    // 创建并初始化画布,用于显示文本和图形
  18.     // 在画布上显示实验标题
  19.     k10.canvas->canvasText("行空板K10系列实验之MQTT", 3, 0xFF0000); // 显示实验标题,字体大小为3,颜色为红色(0xFF0000)
  20.     // 连接Wi-Fi网络
  21.     myIot.wifiConnect("zhz3", "z6156721"); // 调用myIot对象的wifiConnect方法,连接Wi-Fi网络,参数为SSID "zhz3"和密码 "z6156721"
  22.     // 等待Wi-Fi连接成功
  23.     while (!myIot.wifiStatus()) {}
  24.     // Wi-Fi连接成功后,显示相关信息
  25.     k10.canvas->canvasText("Wi-Fi 连接成功", 4, 0x0000FF); // 显示Wi-Fi连接成功提示,字体大小为4,颜色为蓝色(0x0000FF)
  26.     k10.canvas->canvasText((String("IP地址:") + String(myIot.getWiFiLocalIP())), 5, 0x0000FF); // 显示IP地址信息,字体大小为5,颜色为蓝色(0x0000FF)
  27.     k10.canvas->updateCanvas();  // 更新画布,将上面的文本刷新至屏幕上
  28.     // 初始化MQTT连接
  29.     myIot.init("192.168.28.178","siot","5334955888049981","dfrobot", topics, 1883); // 初始化MQTT连接参数,包含服务器地址、客户端ID、用户名、密码、主题数组及端口号
  30.     myIot.connect(); // 连接MQTT服务器
  31.     // 等待MQTT连接成功
  32.     while (!myIot.connected()) {}
  33.     // MQTT连接成功后,显示相关信息
  34.     k10.canvas->canvasText("Siot 平台搭建成功", 6, 0x0000FF); // 显示MQTT连接成功提示,字体大小为6,颜色为蓝色(0x0000FF)
  35.     k10.canvas->updateCanvas();  // 更新画布,将上面的文本刷新至屏幕上
  36. }
  37. void loop() {
  38.     myIot.publish(topics[0], k10.readALS()); // 发布环境光强度的消息到主题topics[0]
  39.     delay(1000); // 延迟1秒,等待下一个循环
  40. }
  41. // 事件回调函数
  42. void obloqMqttEventTqguh5(String& message) {
  43.     // 当接收到消息时,在画布上显示环境光强度的信息
  44.     k10.canvas->canvasText((String("读取消息-环境光强度:") + String(message)), 7, 0xFF6666); // 显示接收到的消息内容,字体大小为7,颜色为粉红色(0xFF6666)
  45.     k10.canvas->updateCanvas(); // 更新画布,将上面的文本刷新至屏幕上
  46. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:13:26

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

代码解读

1、库的引入与对象创建

代码首先引入了两个库:DFRobot_Iot.h 用于Wi-Fi连接和MQTT通信,unihiker_k10.h 用于K10硬件控制。

创建了三个主要对象:screen_dir 定义屏幕方向,k10 用于操作K10功能,myIot 用于处理Wi-Fi连接和MQTT通信。

定义了两个静态常量数组:topics 用于存储MQTT主题,msgHandles 用于处理不同主题的消息回调函数。

2、初始化设置(setup 函数)

在 setup() 函数中,调用 k10.begin() 初始化K10硬件,配置屏幕方向,创建画布。

使用 myIot.wifiConnect("zhz3", "z6156721") 连接指定的Wi-Fi网络,通过 while (!myIot.wifiStatus()) {} 循环等待Wi-Fi连接成功。

成功连接后,使用 canvasText 方法在画布上显示Wi-Fi连接成功的信息和本机IP地址,然后调用 updateCanvas 刷新屏幕。

初始化MQTT连接参数,并通过 myIot.connect() 连接MQTT服务器,通过 while (!myIot.connected()) {} 循环等待MQTT连接成功。

成功连接后,使用 canvasText 方法在画布上显示MQTT连接成功的信息,然后调用 updateCanvas 刷新屏幕。

3、主循环处理(loop 函数)

每次 loop() 运行时,通过 myIot.publish(topics[0], k10.readALS()) 方法发布环境光强度的消息到主题 topics[0],然后延迟1秒。

事件回调函数

定义回调函数 obloqMqttEventTqguh5(String& message),用于处理接收到的MQTT消息。每当接收到消息时,使用 canvasText 方法在画布上显示环境光强度的信息,并调用 updateCanvas 刷新屏幕。

该代码展示了如何通过Wi-Fi连接网络并使用MQTT协议与Siot平台进行通信,同时在K10设备屏幕上显示连接状态和接收到的消息。这对于物联网设备的连接和数据通信非常有用。

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:15:38

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

Mind+图形编程

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图2
【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:22:37

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

实验场景图  动态图

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1


【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:24:18

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

实验场景图  动态图

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:32:39

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息


在手机端打开浏览器,输入服务器IP地址:192.168.28.178:8080

登录:账号:siot    密码:dfrobot

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:35:56

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

登录 Siot 后台

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:38:06

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

查看接收到的消息

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:39:34

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

查看消息图形波形

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2025-3-10 19:41:21

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息

【花雕动手做】行空板K10系列实验读取MQTT发送光强消息图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail