sIoT及安卓app实现mqtt实验

一、实验目的及要求

【实验一】实现sIoT配置并实现sIoT上mqtt消息的通讯。
【实验二】通过AppInventor结合sIoT实现手机app控制掌控板的灯和显示内容。

二、实验原理与内容

sIoT可以在局域网上实现mqtt消息的通讯。借助sIoT可以通过手机app上的数值调整来实现局域网内的设备(掌控板)的灯光操控。

三、实验软硬件环境

硬件:掌控板
软件:Mind+

四、实验过程(实验步骤、记录、数据、分析)

1.Mind上的图块代码截图:

实验一:

连接WIFI热点和MQTT并验证连接成功;当触摸P键后MQTT发送信息“2018764210/肖显超”至Topic_1,并显示发送成功。
在这里插入图片描述
当mqtt接收到Topic_0的消息,屏幕显示MQTT消息并亮蓝灯,播放音乐。
在这里插入图片描述

实验二:

连接WIFI热点和MQTT并验证连接成功;在这里插入图片描述

设置两个逗号,里面分隔有三组数字(字符串),(从左到右)依次是红光、绿光、蓝光的数值显示。当通过手机的app上数值拖动调整时,屏幕会显示对应的颜色数值变化。
在这里插入图片描述

2.主要代码显示

实验一:

/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void obloqMqttEventT0(String& message);
// 静态常量
const String topics[5] = {"2018764221/吴炳辉","2018764210/肖显超","","",""};
const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;

// 主程序开始
void setup() {
 mPython.begin();
 myIot.setMqttCallback(msgHandles);
 display.setCursorLine(1);
 display.printLine("连接中");
 myIot.wifiConnect("gshh", "shwh2295");
 while (!myIot.wifiStatus()) {yield();}
 display.setCursorLine(1);
 display.printLine(myIot.getWiFiLocalIP());
 myIot.init("192.168.43.8","602","","iot", topics, 1883);
 myIot.connect();
 while (!myIot.connected()) {yield();}
 display.setCursorLine(1);
 display.printLine("mqtt ok");
}
void loop() {
 if ((touchPadP.isTouched())) {
  myIot.publish(topic_1, "2018764210/肖显超");
  display.setCursorLine(1);
  display.printLine("发送成功");
 }
}

// 事件回调函数
void obloqMqttEventT0(String& message) {
 display.setCursorLine(1);
 display.printLine(message);
 rgb.write(0, 0x0000FF);
 buzz.play(ENTERTAINER, Once);
}

实验二:

// 主程序开始
void setup() {
mPython.begin();
myIot.setMqttCallback(msgHandles);
display.fillScreen(0);
display.drawImage(39, 7, 50, 50, imageMatrix[0]);
myIot.wifiConnect("HUAWEI nova 2 Plus", "987654321ab");
while (!myIot.wifiStatus()) {yield();}
display.fillScreen(0);
display.setCursor(0, 0);
display.print("WIFI已连接");
myIot.init("192.168.43.8","602","","iot", topics, 1883);
myIot.connect();
while (!myIot.connected()) {yield();}
display.fillScreen(0);
display.setCursor(0, 0);
display.print("连接成功");
}
void loop() {
}
 
// 事件回调函数
void obloqMqttEventT0(String& message) {
display.setCursor(0, 22);
display.print("                                                    ");
display.setCursor(0, 22);
display.print(message);
mind_n_DouHao1 = (dfstring.indexOf(",",message));
mind_n_DouHao2 = (dfstring.lastIndexOf(",",message));
display.setCursor(0, 44);
display.print((dfstring.substring(message,0,1,0,mind_n_DouHao1)));
mind_n_R = (String((dfstring.substring(message,0,1,0,mind_n_DouHao1))).toInt());
display.setCursor(40, 44);
display.print((dfstring.substring(message,0,(mind_n_DouHao1 + 1),0,mind_n_DouHao2)));
mind_n_G = (String((dfstring.substring(message,0,(mind_n_DouHao1 + 1),0,mind_n_DouHao2))).toInt());
display.setCursor(80, 44);
display.print((dfstring.substring(message,0,(mind_n_DouHao2 + 1),0,(String(message).length()))));
mind_n_B = (String((dfstring.substring(message,0,(mind_n_DouHao2 + 1),0,(String(message).length())))).toInt());
rgb.write(-1, rgbToColor(round(mind_n_R), round(mind_n_G), round(mind_n_B)));
}
 
// 静态函数
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);
}

3.实验效果图

实验一:

(1)连接中——>连接成功(mqtt ok)
在这里插入图片描述
(2)触摸P键发送信息——>发送成功
在这里插入图片描述
此时sIoT网页也显示发送的信息
在这里插入图片描述
(3)当MQTT收到Topic_0的消息
在这里插入图片描述
掌控板也显示MQTT的消息并亮蓝灯,播放音乐。
在这里插入图片描述

实验二:

手机app上的数值显示,以及颜色调整
在这里插入图片描述
当掌控板连接成功,未调整颜色前,掌控板显示
在这里插入图片描述
调整灯光颜色值为红色,掌控板显示红灯
在这里插入图片描述
调整灯光颜色值为绿色,掌控板显示绿灯
在这里插入图片描述
调整灯光颜色值为蓝色,掌控板显示蓝灯
在这里插入图片描述
当绿色和蓝色调整数值为一样时,掌控板显示白灯
在这里插入图片描述

五、实验结论与体会

此次是运用掌控板和Mind+软件学会了实现sIoT配置和sIoT上mqtt消息的通讯,同时还有学习了通过AppInventor结合sIoT实现手机app控制掌控板的灯和显示内容。我们所要知道的就是这个实验的思路,这次实验就是和小组成员在同一个局域网内,每人负责一个topic,当触摸P键后,我的topic_0发送信息到他的topic_1上时,他的掌控板上会显示我发送的消息,同时反之他发送也是一样。同时,我们可以在同一个局域网下,通过sIoT上的连接配置,使手机app和掌控板都有了连接,就可以在手机app上的颜色调整来控制掌控板的灯光了。这样即可完成本次实验。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值