物联网实验二- 实现mind+下Easy IoT上mqtt消息的通讯
程序员文章站
2022-06-09 08:55:50
...
Easy IoT实现mqtt实验
一、实验目的及要求
【实验一】实现Easy IoT配置。
【实验二】实现上mqtt消息的通讯。
二、实验原理与内容
实现mind+下Easy IoT上mqtt消息的通讯。
三、实验软硬件环境
硬件:掌控板
软件:Mind+
四、Easy IoT的注册和配置:
4.1.Easy IoT的注册地址
Easy IoT的注册地址,都大学生了,自行注册
4.2.Easy IoT的配置:
4.3.尝试发送并接收信息:
五、Mind+的初始配置:
注意:上传到设备再在掌控板上触发运行。
六、代码:
6.1.核心代码截图:
连手机热点(电脑可不连网):
接收信息的Easy IoT订阅的topics和账号密码:
发送到对方Easy IoT的信息:
通过这个函数可以在控制板上看到发送出去的信息:
6.2.完整代码:
/*!
* MindPlus
* mpython
*
*/
#include <MPython.h>
#include <DFRobot_Iot.h>
// 函数声明
void obloqMqttEventT0(String& message);
// 静态常量
const String topics[5] = {"lVY85mFGg","f43DtiKGg","","",""};
const MsgHandleCb msgHandles[5] = {obloqMqttEventT0,NULL,NULL,NULL,NULL};
// 创建对象
DFRobot_Iot myIot;
// 主程序开始
void setup() {
mPython.begin();
myIot.setMqttCallback(msgHandles);
myIot.wifiConnect("oppo", "12345678");
while (!myIot.wifiStatus()) {yield();}
display.setCursorLine(1);
display.printLine("wifi连接成功");
rgb.write(0, 0x00FF00);
myIot.init("iot.dfrobot.com.cn","OD-85mFGg","","OvaUciFGgz",topics,1883);
myIot.connect();
while (!myIot.connected()) {yield();}
rgb.write(1, 0x0000FF);
display.setCursorLine(2);
display.printLine("MQTT连接成功");
}
void loop() {
if ((buttonB.isPressed())) {
myIot.publish(topic_0, "许乐煌");
display.setCursorLine(3);
display.printLine("发送成功");
delay(3000);
display.fillInLine(1, 0);
rgb.write(2, 0xCC0000);
}
}
// 事件回调函数
void obloqMqttEventT0(String& message) {
display.setCursorLine(4);
display.printLine(message);
buzz.play(DADADADUM, Once);
}
七、实验效果图:
队友的Easy IoT收到我通过MQTT发过去的信息:
我的Easy IoT收到队友通过Easy IoT发过来的信息:
八、实验结论与体会:
1.发送方的Easy IoT订阅的topic和接收方的要一样,比如接收方添加了topic0,发送方要订阅接收方的topic0, 而不是topic2或者其他,否则接收方收不到。
2.特别注意:不能跳过Mind++中MQTT初始化参数中的topic0而直接去设置topic1,即不设置topic0设置topic1,就会出现这种情况(发送不了信息):
因此即使你不使用topic0也不能留空。