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

知识点: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 等,提供强大的消息传输和管理功能。

知识点:OneNET平台
OneNET平台是中国移动推出的物联网开放平台,旨在帮助开发者和企业用户轻松实现设备接入与设备连接,提供综合性的物联网解决方案。
1、平台概述:
OneNET平台支持多种协议(如MQTT、CoAP、HTTP、LwM2M等)和多种设备类型的接入。
平台提供设备管理、数据存储、数据分析和可视化等功能。
2、主要功能:
设备管理: 提供设备状态监控、远程升级、SIM卡信息管理等服务。
数据分析: 提供全域数据集成、统一数据管理、图形化数据任务编排等功能,帮助客户提升数据价值。
消息服务: 提供低时延、高并发的消息中间件,保障应用平台与OneNET数据交互的即时可靠性。
位置服务: 提供智能硬件定位、轨迹查询及快速的地图展示应用服务。
3、应用场景:
智慧城市: OneNET平台可用于构建城市物联网平台,支持市政、能源、公共安全、环保、消防、交通等多个行业的感知终端接入。
工业物联网: 面向制造业数字化、网络化、智能化需求,提供基于海量数据采集、汇聚、分析的工业物联网服务体系。
智能家居: 提供智能家居场景下的设备接入和控制,如灯、开关、门锁、空气净化器等。
4、开发支持:
OneNET平台提供易读、易用的开发文档,帮助开发者快速上手。
平台还提供丰富的SDK和API,支持多种协议和设备的快速接入。

打开OneNET平台
网址:https://open.iot.10086.cn/

注册,登录,通过实名认证


进入个人平台

创建产品


设备接入

完成产品创建

添加设备


设备ID为100001


至此,取得OneNET平台的初始化参数

【花雕动手做】行空板K10系列实验之MQTT网络服务搭建OneNET平台连接物联网
实验开源代码
#include <DFRobot_Iot.h>
#include "unihiker_k10.h"
// 静态常量
const String topics[5] = {"qUOAwGhNR", "", "", "", ""};
// 定义一个包含五个字符串的数组,用于存储 MQTT 话题
// 创建对象
UNIHIKER_K10 k10; // 创建 UNIHIKER_K10 类的对象 行空板k10
uint8_t screen_dir = 3; // 定义一个无符号 8 位整数,用于设置屏幕方向
DFRobot_Iot myIot; // 创建 DFRobot_Iot 类的对象 myIot,用于处理 IoT 功能
// 主程序开始
void setup() {
k10.begin(); // 初始化 K10 模块
k10.initScreen(screen_dir); // 使用屏幕方向初始化屏幕
k10.creatCanvas(); // 创建绘图画布
k10.setScreenBackground(0xFFFFFF); // 将画布背景颜色设置为白色
k10.canvas->canvasText("行空板K10系列实验之MQTT", 3, 0xFF0000); // 在画布上以红色显示文本
myIot.wifiConnect("zhz3", "z6156721"); // 连接到 Wi-Fi 网络
while (!myIot.wifiStatus()) {} // 等待 Wi-Fi 连接成功
k10.canvas->canvasText("Wi-Fi 连接成功", 5, 0x0000FF); // 以蓝色显示 Wi-Fi 连接成功消息
k10.canvas->canvasText((String("IP地址:") + String(myIot.getWiFiLocalIP())), 6, 0x0000FF); // 以蓝色显示本地 IP 地址
k10.canvas->updateCanvas(); // 更新画布以显示更改
myIot.init("mqtt.heclouds.com", "T1t86iaVTg", "100001", "FUHjl9sp1bVZPZvRReHLA1Hh23nvl1PF38U7BVsNGWM=", topics, 6002); // 初始化 MQTT 客户端并连接到 OneNET 平台
myIot.connect(); // 连接到 MQTT 服务器
while (!myIot.connected()) {} // 等待 MQTT 连接成功
k10.canvas->canvasText("OneNET 平台搭建成功!", 7, 0xFF6666); // 以粉红色显示 OneNET 平台搭建成功消息
k10.canvas->updateCanvas(); // 更新画布以显示更改
}
void loop() {
// 主循环(当前为空)
// 此处可以添加需要循环执行的代码
}
代码解读
这段代码是为 UNIHIKER K10 行空板编写的,它利用 Wi-Fi 连接和 MQTT 协议与 OneNET 平台通信。
1、导入库和定义常量:
```cpp
#include <DFRobot_Iot.h>
#include "unihiker_k10.h"
const String topics[5] = {"qUOAwGhNR","","","",""};
```
DFRobot_Iot.h 和 unihiker_k10.h 是该代码所需的库,用于处理 IoT 功能和 K10 模块。
定义了一个包含 5 个字符串的数组 topics,用于 MQTT 话题。
2、创建对象:
```cpp
UNIHIKER_K10 k10;
uint8_t screen_dir=3;
DFRobot_Iot myIot;
```
创建 UNIHIKER_K10 类的对象 k10,用于操作 K10 模块。
定义一个无符号 8 位整数 screen_dir,用来设置屏幕方向。
创建 DFRobot_Iot 类的对象 myIot,用于处理 IoT 功能。
3、主程序开始:
```cpp
void setup() {
k10.begin();
k10.initScreen(screen_dir);
k10.creatCanvas();
k10.setScreenBackground(0xFFFFFF);
k10.canvas->canvasText("行空板K10系列实验之MQTT", 3, 0xFF0000);
myIot.wifiConnect("zhz3", "zy156721");
while (!myIot.wifiStatus()) {}
k10.canvas->canvasText("Wi-Fi 连接成功", 5, 0x0000FF);
k10.canvas->canvasText((String("IP地址:") + String(myIot.getWiFiLocalIP())), 6, 0x0000FF);
k10.canvas->updateCanvas();
myIot.init("mqtt.heclouds.com","T1t86iaVTg","100001","FUHjl9sp1bVZPZvRReHLA1Hh23nvl1PF38U7BVsNGWM=",topics,6002);
myIot.connect();
while (!myIot.connected()) {}
k10.canvas->canvasText("OneNET 平台搭建成功!", 7, 0xFF6666);
k10.canvas->updateCanvas();
}
```
setup 函数在程序启动时执行一次。
k10.begin() 初始化 K10 模块。
k10.initScreen(screen_dir) 以指定方向初始化屏幕。
k10.creatCanvas() 创建一个画布。
k10.setScreenBackground(0xFFFFFF) 将画布背景颜色设置为白色。
k10.canvas->canvasText("行空板K10系列实验之MQTT", 3, 0xFF0000) 在画布上以红色显示文本。
myIot.wifiConnect("zhz3", "zy156721") 连接到 Wi-Fi 网络。
while (!myIot.wifiStatus()) {} 等待 Wi-Fi 连接成功。
k10.canvas->canvasText("Wi-Fi 连接成功", 5, 0x0000FF) 在画布上以蓝色显示 Wi-Fi 连接成功消息。
k10.canvas->canvasText((String("IP地址:") + String(myIot.getWiFiLocalIP())), 6, 0x0000FF) 显示本地 IP 地址。
k10.canvas->updateCanvas() 更新画布以显示更改。
myIot.init(...) 初始化 MQTT 客户端并连接到 OneNET 平台。
myIot.connect() 连接到 MQTT 服务器。
while (!myIot.connected()) {} 等待 MQTT 连接成功。
k10.canvas->canvasText("OneNET 平台搭建成功!", 7, 0xFF6666) 在画布上以粉红色显示 OneNET 平台搭建成功消息。
k10.canvas->updateCanvas() 更新画布以显示更改。
4、主循环:
```cpp
void loop() {
// 目前为空
}
```
loop 函数是主循环,会不断执行。当前未定义任何操作。
这个程序的总体流程是初始化硬件和网络连接,然后在屏幕上显示连接状态和 IP 地址信息,并建立 MQTT 连接。
Mind+图形编程

实验场景图 (OneNET平台未搭建成功)

关于秘钥,尝试了设备秘钥和用户Accesskey,初步分析,是Apikey的问题

评论