一、实验目的及要求
【实验一】实现sIoT配置并实现sIoT上mqtt消息的通讯。
【实验二】通过AppInventor结合sIoT实现手机app控制掌控板的灯和显示内容。
二、实验原理与内容
sIoT可以在局域网上实现mqtt消息的通讯。借助sIoT可以通过手机app实现局域网内的设备操控。
三、实验软硬件环境
硬件:掌控板
软件:Mind+
四、实现sIoT上mqtt消息的通讯(实验一)
4.1 SIoT平台的启动与使用
(1)下载和解压包
点击 https://mindplus.dfrobot.com.cn/siot 或 https://siot.readthedocs.io/zh_CN/latest/ 下载SIoT包,然后解压包。
解压后的文件结构如下:

(2)config.json配置文件的说明

图片的User是指登录的用户名或账号;Password是指登录的密码;WebServerAdrr是服务器地址,8888是自定义的端口号,尽量定义大一点的端口号,防止与系统其它默认的端口号冲突了(以上提及的3个属性是可以自定义的,其它的属性可以保持默认)
(3)启动SIoT
- 双击文件中的 SIoT_windows_1_2.exe 的应用程序,然后出现以下信息表示SIoT启动成功了

- 启动成功后就可以到浏览器输入 http://localhost:8888 (8888是自己在config.json文件中定义的端口号)去访问SIoT控制台页面了。
访问网址成功后先会来到登录页面如下:

- 然后输入用户名和密码就可以登录了 (用户名和密码请参考config.json文件)
登录成功后会跳转SIoT控制台首页如下:

(4)SIoT平台的使用
- 首先我们点击发送消息,然后创建一个主题(在Mind+配置初始化参数时需要用到),点击发送(主题名称要按照规则来命名,即项目ID/设备名)

- 然后我们就可以点击项目列表或设备列表查看每个设备的详细通信信息
项目列表

设备列表

4.2 Mind+上的配置与操作步骤
(1)连接设备与模式切换

(2)选择主控板

(3)添加网络服务

(4)开始图形化编程

(5)MQTT参数初始化

参数说明:通信双方(多方)服务器地址要一样;账号密码也要一样;Topic_0是甲方的主题,Topic_1是乙方的主题(所有的Topic均需要先在SIoT控制台里面去创建才能使用)
(6)完成编程

注意:MQTT发送消息是使用自己的Topic来发送;接收信息则使用对方的Topic来接收,这样才能完成双方相互的通信
4.3 代码展示
(1)核心代码
初始化所用到的Topics数组常量:
// 静态常量
const String topics[5] = {
"2018764240/汪晓婵","2018764238/马振乐","","",""};
连接手机Wi-Fi热点:
myIot.wifiConnect("MEIZU 16th", "66666666");
MQTT初始化参数:
myIot.init("192.168.43.84","602","","iot", topics, 1883);
MQTT发起连接:
myIot.connect();
按A键发送消息
void loop() {
if ((buttonA.isPressed())) {
myIot.publish(topic_0, "NBA 牛逼!");
display.setCursorLine(4);
display.printLine("发送信息成功");
rgb.write(0, 0x0000FF);
}
我成功接收到对方信息后的回调响应事件:
// 事件回调函数
void obloqMqttEventT1(String& message) {
display.setCursorLine(1);
display.printLine(message);
rgb.write(1, 0xFF9900);
}
(2)完整代码
/*!
* MindPlus
* mpython
*
*/
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void obloqMqttEventT1(String& message);
// 静态常量
const String topics[5] = {
"2018764240/汪晓婵","2018764238/马振乐","","",""};
const MsgHandleCb msgHandles[5] = {
NULL,obloqMqttEventT1,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;
// 主程序开始
void setup() {
mPython.begin();
myIot.setMqttCallback(msgHandles);
display.setCursorLine(1);
display.printLine("程序开始");
myIot.wifiConnect("MEIZU 16th", "66666666");
while (!myIot.wifiStatus()) {
yield();}
display.setCursorLine(2);
display.printLine("Wi-Fi连接成功");
myIot.init("192.168.43.84","602","","iot", topics, 1883);
myIot.connect();
while (!myIot.connected()) {
yield();}
display.setCursorLine(3);
display.printLine("MQTT连接成功");
}
void loop() {
if ((buttonA.isPressed())) {
myIot.publish(topic_0, "NBA 牛逼!");
display.setCursorLine(4);
display.printLine("发送信息成功");

本文介绍如何利用sIoT平台实现局域网内设备的MQTT消息通讯,并通过AppInventor实现手机APP远程控制设备显示内容及灯光。
最低0.47元/天 解锁文章
4383

被折叠的 条评论
为什么被折叠?



